@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
|
@@ -17,22 +17,29 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/
|
|
|
17
17
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
|
18
18
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
|
19
19
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
20
|
-
var
|
|
20
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
21
21
|
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
22
22
|
var _constants = require("../constants");
|
|
23
23
|
var _request = _interopRequireDefault(require("./request"));
|
|
24
|
+
/*!
|
|
25
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/* eslint-disable class-methods-use-this */
|
|
29
|
+
/* globals window */
|
|
30
|
+
|
|
24
31
|
var DEFAULT_TIMEOUT = 3000;
|
|
25
32
|
var VIDEO_MESH_TIMEOUT = 1000;
|
|
26
33
|
|
|
27
|
-
/**
|
|
28
|
-
* @class Reachability
|
|
29
|
-
* @export
|
|
34
|
+
/**
|
|
35
|
+
* @class Reachability
|
|
36
|
+
* @export
|
|
30
37
|
*/
|
|
31
38
|
var Reachability = /*#__PURE__*/function () {
|
|
32
|
-
/**
|
|
33
|
-
* Creates an instance of Reachability.
|
|
34
|
-
* @param {object} webex
|
|
35
|
-
* @memberof Reachability
|
|
39
|
+
/**
|
|
40
|
+
* Creates an instance of Reachability.
|
|
41
|
+
* @param {object} webex
|
|
42
|
+
* @memberof Reachability
|
|
36
43
|
*/
|
|
37
44
|
function Reachability(webex) {
|
|
38
45
|
(0, _classCallCheck2.default)(this, Reachability);
|
|
@@ -41,31 +48,31 @@ var Reachability = /*#__PURE__*/function () {
|
|
|
41
48
|
(0, _defineProperty2.default)(this, "clusterLatencyResults", void 0);
|
|
42
49
|
this.webex = webex;
|
|
43
50
|
|
|
44
|
-
/**
|
|
45
|
-
* internal request object for the server
|
|
46
|
-
* @instance
|
|
47
|
-
* @type {Array}
|
|
48
|
-
* @private
|
|
49
|
-
* @memberof Reachability
|
|
51
|
+
/**
|
|
52
|
+
* internal request object for the server
|
|
53
|
+
* @instance
|
|
54
|
+
* @type {Array}
|
|
55
|
+
* @private
|
|
56
|
+
* @memberof Reachability
|
|
50
57
|
*/
|
|
51
58
|
this.reachabilityRequest = new _request.default(this.webex);
|
|
52
59
|
|
|
53
|
-
/**
|
|
54
|
-
* internal object of clusters latency results
|
|
55
|
-
* @instance
|
|
56
|
-
* @type {object}
|
|
57
|
-
* @private
|
|
58
|
-
* @memberof Reachability
|
|
60
|
+
/**
|
|
61
|
+
* internal object of clusters latency results
|
|
62
|
+
* @instance
|
|
63
|
+
* @type {object}
|
|
64
|
+
* @private
|
|
65
|
+
* @memberof Reachability
|
|
59
66
|
*/
|
|
60
67
|
this.clusterLatencyResults = {};
|
|
61
68
|
}
|
|
62
69
|
|
|
63
|
-
/**
|
|
64
|
-
* fetches reachability data
|
|
65
|
-
* @returns {Object} reachability data
|
|
66
|
-
* @public
|
|
67
|
-
* @async
|
|
68
|
-
* @memberof Reachability
|
|
70
|
+
/**
|
|
71
|
+
* fetches reachability data
|
|
72
|
+
* @returns {Object} reachability data
|
|
73
|
+
* @public
|
|
74
|
+
* @async
|
|
75
|
+
* @memberof Reachability
|
|
69
76
|
*/
|
|
70
77
|
(0, _createClass2.default)(Reachability, [{
|
|
71
78
|
key: "gatherReachability",
|
|
@@ -118,11 +125,11 @@ var Reachability = /*#__PURE__*/function () {
|
|
|
118
125
|
}
|
|
119
126
|
return gatherReachability;
|
|
120
127
|
}()
|
|
121
|
-
/**
|
|
122
|
-
* fetches reachability data and checks for cluster reachability
|
|
123
|
-
* @returns {boolean}
|
|
124
|
-
* @public
|
|
125
|
-
* @memberof Reachability
|
|
128
|
+
/**
|
|
129
|
+
* fetches reachability data and checks for cluster reachability
|
|
130
|
+
* @returns {boolean}
|
|
131
|
+
* @public
|
|
132
|
+
* @memberof Reachability
|
|
126
133
|
*/
|
|
127
134
|
}, {
|
|
128
135
|
key: "isAnyClusterReachable",
|
|
@@ -143,17 +150,17 @@ var Reachability = /*#__PURE__*/function () {
|
|
|
143
150
|
return reachable;
|
|
144
151
|
}
|
|
145
152
|
|
|
146
|
-
/**
|
|
147
|
-
* Generate peerConnection config settings
|
|
148
|
-
* @param {object} cluster
|
|
149
|
-
* @returns {object} peerConnectionConfig
|
|
150
|
-
* @private
|
|
151
|
-
* @memberof Reachability
|
|
153
|
+
/**
|
|
154
|
+
* Generate peerConnection config settings
|
|
155
|
+
* @param {object} cluster
|
|
156
|
+
* @returns {object} peerConnectionConfig
|
|
157
|
+
* @private
|
|
158
|
+
* @memberof Reachability
|
|
152
159
|
*/
|
|
153
160
|
}, {
|
|
154
161
|
key: "buildPeerConnectionConfig",
|
|
155
162
|
value: function buildPeerConnectionConfig(cluster) {
|
|
156
|
-
var iceServers =
|
|
163
|
+
var iceServers = _lodash.default.uniq([].concat((0, _toConsumableArray2.default)(cluster.udp), (0, _toConsumableArray2.default)(cluster.tcp))).map(function (url) {
|
|
157
164
|
return {
|
|
158
165
|
username: '',
|
|
159
166
|
credential: '',
|
|
@@ -167,12 +174,12 @@ var Reachability = /*#__PURE__*/function () {
|
|
|
167
174
|
};
|
|
168
175
|
}
|
|
169
176
|
|
|
170
|
-
/**
|
|
171
|
-
* Creates an RTCPeerConnection
|
|
172
|
-
* @param {object} cluster
|
|
173
|
-
* @returns {RTCPeerConnection} peerConnection
|
|
174
|
-
* @private
|
|
175
|
-
* @memberof Reachability
|
|
177
|
+
/**
|
|
178
|
+
* Creates an RTCPeerConnection
|
|
179
|
+
* @param {object} cluster
|
|
180
|
+
* @returns {RTCPeerConnection} peerConnection
|
|
181
|
+
* @private
|
|
182
|
+
* @memberof Reachability
|
|
176
183
|
*/
|
|
177
184
|
}, {
|
|
178
185
|
key: "createPeerConnection",
|
|
@@ -191,12 +198,12 @@ var Reachability = /*#__PURE__*/function () {
|
|
|
191
198
|
}
|
|
192
199
|
}
|
|
193
200
|
|
|
194
|
-
/**
|
|
195
|
-
* Gets total elapsed time
|
|
196
|
-
* @param {RTCPeerConnection} peerConnection
|
|
197
|
-
* @returns {Number} Milliseconds
|
|
198
|
-
* @private
|
|
199
|
-
* @memberof Reachability
|
|
201
|
+
/**
|
|
202
|
+
* Gets total elapsed time
|
|
203
|
+
* @param {RTCPeerConnection} peerConnection
|
|
204
|
+
* @returns {Number} Milliseconds
|
|
205
|
+
* @private
|
|
206
|
+
* @memberof Reachability
|
|
200
207
|
*/
|
|
201
208
|
}, {
|
|
202
209
|
key: "getElapsedTime",
|
|
@@ -206,12 +213,12 @@ var Reachability = /*#__PURE__*/function () {
|
|
|
206
213
|
return (0, _now.default)() - startTime;
|
|
207
214
|
}
|
|
208
215
|
|
|
209
|
-
/**
|
|
210
|
-
* creates offer and generates localSDP
|
|
211
|
-
* @param {object} clusterList cluster List
|
|
212
|
-
* @returns {Promise} Reachability latency results
|
|
213
|
-
* @private
|
|
214
|
-
* @memberof Reachability
|
|
216
|
+
/**
|
|
217
|
+
* creates offer and generates localSDP
|
|
218
|
+
* @param {object} clusterList cluster List
|
|
219
|
+
* @returns {Promise} Reachability latency results
|
|
220
|
+
* @private
|
|
221
|
+
* @memberof Reachability
|
|
215
222
|
*/
|
|
216
223
|
}, {
|
|
217
224
|
key: "getLocalSDPForClusters",
|
|
@@ -260,11 +267,11 @@ var Reachability = /*#__PURE__*/function () {
|
|
|
260
267
|
});
|
|
261
268
|
}
|
|
262
269
|
|
|
263
|
-
/**
|
|
264
|
-
* Get list of all unreachable clusters
|
|
265
|
-
* @returns {array} Unreachable clusters
|
|
266
|
-
* @private
|
|
267
|
-
* @memberof Reachability
|
|
270
|
+
/**
|
|
271
|
+
* Get list of all unreachable clusters
|
|
272
|
+
* @returns {array} Unreachable clusters
|
|
273
|
+
* @private
|
|
274
|
+
* @memberof Reachability
|
|
268
275
|
*/
|
|
269
276
|
}, {
|
|
270
277
|
key: "getUnreachablClusters",
|
|
@@ -280,13 +287,13 @@ var Reachability = /*#__PURE__*/function () {
|
|
|
280
287
|
return unreachableList;
|
|
281
288
|
}
|
|
282
289
|
|
|
283
|
-
/**
|
|
284
|
-
* Attach an event handler for the icegatheringstatechange
|
|
285
|
-
* event and measure latency.
|
|
286
|
-
* @param {RTCPeerConnection} peerConnection
|
|
287
|
-
* @returns {undefined}
|
|
288
|
-
* @private
|
|
289
|
-
* @memberof Reachability
|
|
290
|
+
/**
|
|
291
|
+
* Attach an event handler for the icegatheringstatechange
|
|
292
|
+
* event and measure latency.
|
|
293
|
+
* @param {RTCPeerConnection} peerConnection
|
|
294
|
+
* @returns {undefined}
|
|
295
|
+
* @private
|
|
296
|
+
* @memberof Reachability
|
|
290
297
|
*/
|
|
291
298
|
}, {
|
|
292
299
|
key: "handleIceGatheringStateChange",
|
|
@@ -305,13 +312,13 @@ var Reachability = /*#__PURE__*/function () {
|
|
|
305
312
|
};
|
|
306
313
|
}
|
|
307
314
|
|
|
308
|
-
/**
|
|
309
|
-
* Attach an event handler for the icecandidate
|
|
310
|
-
* event and measure latency.
|
|
311
|
-
* @param {RTCPeerConnection} peerConnection
|
|
312
|
-
* @returns {undefined}
|
|
313
|
-
* @private
|
|
314
|
-
* @memberof Reachability
|
|
315
|
+
/**
|
|
316
|
+
* Attach an event handler for the icecandidate
|
|
317
|
+
* event and measure latency.
|
|
318
|
+
* @param {RTCPeerConnection} peerConnection
|
|
319
|
+
* @returns {undefined}
|
|
320
|
+
* @private
|
|
321
|
+
* @memberof Reachability
|
|
315
322
|
*/
|
|
316
323
|
}, {
|
|
317
324
|
key: "handleOnIceCandidate",
|
|
@@ -328,14 +335,14 @@ var Reachability = /*#__PURE__*/function () {
|
|
|
328
335
|
};
|
|
329
336
|
}
|
|
330
337
|
|
|
331
|
-
/**
|
|
332
|
-
* An event handler on an RTCPeerConnection when the state of the ICE
|
|
333
|
-
* candidate gathering process changes. Used to measure connection
|
|
334
|
-
* speed.
|
|
335
|
-
* @private
|
|
336
|
-
* @param {RTCPeerConnection} peerConnection
|
|
337
|
-
* @param {number} timeout
|
|
338
|
-
* @returns {Promise}
|
|
338
|
+
/**
|
|
339
|
+
* An event handler on an RTCPeerConnection when the state of the ICE
|
|
340
|
+
* candidate gathering process changes. Used to measure connection
|
|
341
|
+
* speed.
|
|
342
|
+
* @private
|
|
343
|
+
* @param {RTCPeerConnection} peerConnection
|
|
344
|
+
* @param {number} timeout
|
|
345
|
+
* @returns {Promise}
|
|
339
346
|
*/
|
|
340
347
|
}, {
|
|
341
348
|
key: "iceGatheringState",
|
|
@@ -384,11 +391,11 @@ var Reachability = /*#__PURE__*/function () {
|
|
|
384
391
|
});
|
|
385
392
|
}
|
|
386
393
|
|
|
387
|
-
/**
|
|
388
|
-
* Make a log of unreachable clusters.
|
|
389
|
-
* @returns {undefined}
|
|
390
|
-
* @private
|
|
391
|
-
* @memberof Reachability
|
|
394
|
+
/**
|
|
395
|
+
* Make a log of unreachable clusters.
|
|
396
|
+
* @returns {undefined}
|
|
397
|
+
* @private
|
|
398
|
+
* @memberof Reachability
|
|
392
399
|
*/
|
|
393
400
|
}, {
|
|
394
401
|
key: "logUnreachableClusters",
|
|
@@ -399,12 +406,12 @@ var Reachability = /*#__PURE__*/function () {
|
|
|
399
406
|
});
|
|
400
407
|
}
|
|
401
408
|
|
|
402
|
-
/**
|
|
403
|
-
* Calculates time to establish connection
|
|
404
|
-
* @param {array} iceResults iceResults
|
|
405
|
-
* @returns {object} reachabilityMap
|
|
406
|
-
* @private
|
|
407
|
-
* @memberof Reachability
|
|
409
|
+
/**
|
|
410
|
+
* Calculates time to establish connection
|
|
411
|
+
* @param {array} iceResults iceResults
|
|
412
|
+
* @returns {object} reachabilityMap
|
|
413
|
+
* @private
|
|
414
|
+
* @memberof Reachability
|
|
408
415
|
*/
|
|
409
416
|
}, {
|
|
410
417
|
key: "parseIceResultsToReachabilityResults",
|
|
@@ -432,12 +439,12 @@ var Reachability = /*#__PURE__*/function () {
|
|
|
432
439
|
return reachabilityMap;
|
|
433
440
|
}
|
|
434
441
|
|
|
435
|
-
/**
|
|
436
|
-
* fetches reachability data
|
|
437
|
-
* @param {object} clusterList
|
|
438
|
-
* @returns {Promise<localSDPData>} reachability check results
|
|
439
|
-
* @private
|
|
440
|
-
* @memberof Reachability
|
|
442
|
+
/**
|
|
443
|
+
* fetches reachability data
|
|
444
|
+
* @param {object} clusterList
|
|
445
|
+
* @returns {Promise<localSDPData>} reachability check results
|
|
446
|
+
* @private
|
|
447
|
+
* @memberof Reachability
|
|
441
448
|
*/
|
|
442
449
|
}, {
|
|
443
450
|
key: "performReachabilityCheck",
|
|
@@ -462,13 +469,13 @@ var Reachability = /*#__PURE__*/function () {
|
|
|
462
469
|
});
|
|
463
470
|
}
|
|
464
471
|
|
|
465
|
-
/**
|
|
466
|
-
* Records latency and closes the peerConnection
|
|
467
|
-
* @param {RTCPeerConnection} peerConnection
|
|
468
|
-
* @param {number} elapsed Latency in milliseconds
|
|
469
|
-
* @returns {undefined}
|
|
470
|
-
* @private
|
|
471
|
-
* @memberof Reachability
|
|
472
|
+
/**
|
|
473
|
+
* Records latency and closes the peerConnection
|
|
474
|
+
* @param {RTCPeerConnection} peerConnection
|
|
475
|
+
* @param {number} elapsed Latency in milliseconds
|
|
476
|
+
* @returns {undefined}
|
|
477
|
+
* @private
|
|
478
|
+
* @memberof Reachability
|
|
472
479
|
*/
|
|
473
480
|
}, {
|
|
474
481
|
key: "setLatencyAndClose",
|
|
@@ -496,11 +503,11 @@ var Reachability = /*#__PURE__*/function () {
|
|
|
496
503
|
peerConnection.elapsed = elapsed;
|
|
497
504
|
}
|
|
498
505
|
|
|
499
|
-
/**
|
|
500
|
-
* utility function
|
|
501
|
-
* @returns {undefined}
|
|
502
|
-
* @private
|
|
503
|
-
* @memberof Reachability
|
|
506
|
+
/**
|
|
507
|
+
* utility function
|
|
508
|
+
* @returns {undefined}
|
|
509
|
+
* @private
|
|
510
|
+
* @memberof Reachability
|
|
504
511
|
*/
|
|
505
512
|
}, {
|
|
506
513
|
key: "setup",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_loggerProxy","_interopRequireDefault","require","_constants","_request","DEFAULT_TIMEOUT","VIDEO_MESH_TIMEOUT","Reachability","webex","_classCallCheck2","default","_defineProperty2","reachabilityRequest","ReachabilityRequest","clusterLatencyResults","_createClass2","key","value","_gatherReachability","_asyncToGenerator2","_regenerator","mark","_callee","_window","_window$localStorage","clusters","results","wrap","_callee$","_context","prev","next","setup","window","localStorage","removeItem","REACHABILITY","LoggerProxy","logger","error","abrupt","getClusters","sent","performReachabilityCheck","setItem","_stringify","log","t0","concat","stop","gatherReachability","apply","arguments","isAnyClusterReachable","reachable","reachabilityData","getItem","reachabilityResults","JSON","parse","_values","some","result","_result$udp","_result$tcp","udp","tcp","e","buildPeerConnectionConfig","cluster","iceServers","_uniq2","_toConsumableArray2","map","url","username","credential","urls","iceCandidatePoolSize","iceTransportPolicy","createPeerConnection","config","peerConnection","RTCPeerConnection","peerConnectionError","getElapsedTime","startTime","begin","_now","getLocalSDPForClusters","clusterList","_this","_keys","_ref","_callee2","description","_callee2$","_context2","createOffer","offerToReceiveAudio","setLocalDescription","iceGatheringState","isVideoMesh","catch","iceGatheringStateError","_x","_promise","all","then","parseIceResultsToReachabilityResults","reachabilityLatencyResults","logUnreachableClusters","getUnreachablClusters","unreachableList","forEach","unreachable","push","handleIceGatheringStateChange","_this2","onicegatheringstatechange","COMPLETE","ICE_GATHERING_STATE","iceConnectionState","elapsed","setLatencyAndClose","handleOnIceCandidate","_this3","onicecandidate","SERVER_REFLEXIVE","candidate","String","type","toLowerCase","timeout","_this4","ELAPSED","resolve","peerConnectionProxy","Proxy","get","target","property","targetMember","bind","set","clusterId","Reflect","setTimeout","CLOSED","CONNECTION_STATE","connectionState","list","iceResults","reachabilityMap","_ref2","latencyResult","latencyInMilliseconds","toString","_this5","length","localSDPData","_intialState","REACHABLE","UNREACHABLE","resultKey","intialState","close","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 class-methods-use-this */\r\n/* globals window */\r\nimport _ from 'lodash';\r\n\r\nimport LoggerProxy from '../common/logs/logger-proxy';\r\nimport {ICE_GATHERING_STATE, CONNECTION_STATE, REACHABILITY} from '../constants';\r\n\r\nimport ReachabilityRequest from './request';\r\n\r\nconst DEFAULT_TIMEOUT = 3000;\r\nconst VIDEO_MESH_TIMEOUT = 1000;\r\n\r\n/**\r\n * @class Reachability\r\n * @export\r\n */\r\nexport default class Reachability {\r\n webex: object;\r\n reachabilityRequest: any;\r\n clusterLatencyResults: any;\r\n\r\n /**\r\n * Creates an instance of Reachability.\r\n * @param {object} webex\r\n * @memberof Reachability\r\n */\r\n constructor(webex: object) {\r\n this.webex = webex;\r\n\r\n /**\r\n * internal request object for the server\r\n * @instance\r\n * @type {Array}\r\n * @private\r\n * @memberof Reachability\r\n */\r\n this.reachabilityRequest = new ReachabilityRequest(this.webex);\r\n\r\n /**\r\n * internal object of clusters latency results\r\n * @instance\r\n * @type {object}\r\n * @private\r\n * @memberof Reachability\r\n */\r\n this.clusterLatencyResults = {};\r\n }\r\n\r\n /**\r\n * fetches reachability data\r\n * @returns {Object} reachability data\r\n * @public\r\n * @async\r\n * @memberof Reachability\r\n */\r\n public async gatherReachability() {\r\n this.setup();\r\n\r\n // Remove stored reachability results to ensure no stale data\r\n if (window?.localStorage?.removeItem) {\r\n window.localStorage.removeItem(REACHABILITY.localStorage);\r\n } else {\r\n LoggerProxy.logger.error(\r\n 'Reachability:index#gatherReachability --> Error in accessing LocalStorage.'\r\n );\r\n\r\n return {};\r\n }\r\n\r\n // Fetch clusters and measure latency\r\n try {\r\n const clusters = await this.reachabilityRequest.getClusters();\r\n\r\n // Perform Reachability Check\r\n const results = await this.performReachabilityCheck(clusters);\r\n\r\n window.localStorage.setItem(REACHABILITY.localStorage, JSON.stringify(results));\r\n\r\n LoggerProxy.logger.log(\r\n 'Reachability:index#gatherReachability --> Reachability checks completed'\r\n );\r\n\r\n return results;\r\n } catch (getClusterError) {\r\n LoggerProxy.logger.error(\r\n `Reachability:index#gatherReachability --> Error in calling getClusters(): ${getClusterError}`\r\n );\r\n\r\n return {};\r\n }\r\n }\r\n\r\n /**\r\n * fetches reachability data and checks for cluster reachability\r\n * @returns {boolean}\r\n * @public\r\n * @memberof Reachability\r\n */\r\n isAnyClusterReachable() {\r\n let reachable = false;\r\n const reachabilityData = window.localStorage.getItem(REACHABILITY.localStorage);\r\n\r\n if (reachabilityData) {\r\n try {\r\n const reachabilityResults = JSON.parse(reachabilityData);\r\n\r\n reachable = Object.values(reachabilityResults).some(\r\n (result: any) => result.udp?.reachable === 'true' || result.tcp?.reachable === 'true'\r\n );\r\n } catch (e) {\r\n LoggerProxy.logger.error(\r\n `Roap:request#attachReachabilityData --> Error in parsing reachability data: ${e}`\r\n );\r\n }\r\n }\r\n\r\n return reachable;\r\n }\r\n\r\n /**\r\n * Generate peerConnection config settings\r\n * @param {object} cluster\r\n * @returns {object} peerConnectionConfig\r\n * @private\r\n * @memberof Reachability\r\n */\r\n private buildPeerConnectionConfig(cluster: any) {\r\n const iceServers = _.uniq([...cluster.udp, ...cluster.tcp]).map((url) => ({\r\n username: '',\r\n credential: '',\r\n urls: [url],\r\n }));\r\n\r\n return {\r\n iceServers: [...iceServers],\r\n iceCandidatePoolSize: '0',\r\n iceTransportPolicy: 'all',\r\n };\r\n }\r\n\r\n /**\r\n * Creates an RTCPeerConnection\r\n * @param {object} cluster\r\n * @returns {RTCPeerConnection} peerConnection\r\n * @private\r\n * @memberof Reachability\r\n */\r\n private createPeerConnection(cluster: any) {\r\n const {key, config} = cluster;\r\n\r\n try {\r\n const peerConnection = new window.RTCPeerConnection(config);\r\n\r\n // @ts-ignore\r\n peerConnection.key = key;\r\n\r\n return peerConnection;\r\n } catch (peerConnectionError) {\r\n LoggerProxy.logger.log(\r\n `Reachability:index#createPeerConnection --> Error creating peerConnection: ${peerConnectionError}`\r\n );\r\n\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Gets total elapsed time\r\n * @param {RTCPeerConnection} peerConnection\r\n * @returns {Number} Milliseconds\r\n * @private\r\n * @memberof Reachability\r\n */\r\n private getElapsedTime(peerConnection: any) {\r\n const startTime = peerConnection.begin;\r\n\r\n delete peerConnection.begin;\r\n\r\n return Date.now() - startTime;\r\n }\r\n\r\n /**\r\n * creates offer and generates localSDP\r\n * @param {object} clusterList cluster List\r\n * @returns {Promise} Reachability latency results\r\n * @private\r\n * @memberof Reachability\r\n */\r\n private getLocalSDPForClusters(clusterList: object) {\r\n let clusters: any[] = [...Object.keys(clusterList)];\r\n\r\n clusters = clusters.map(async (key) => {\r\n const cluster = clusterList[key];\r\n const config = this.buildPeerConnectionConfig(cluster);\r\n const peerConnection = this.createPeerConnection({key, config});\r\n const description = await peerConnection.createOffer({offerToReceiveAudio: true});\r\n\r\n // @ts-ignore\r\n peerConnection.begin = Date.now();\r\n peerConnection.setLocalDescription(description);\r\n\r\n return this.iceGatheringState(\r\n peerConnection,\r\n cluster.isVideoMesh ? VIDEO_MESH_TIMEOUT : DEFAULT_TIMEOUT\r\n ).catch((iceGatheringStateError) => {\r\n LoggerProxy.logger.log(\r\n `Reachability:index#getLocalSDPForClusters --> Error in getLocalSDP : ${iceGatheringStateError}`\r\n );\r\n });\r\n });\r\n\r\n return Promise.all(clusters)\r\n .then(this.parseIceResultsToReachabilityResults)\r\n .then((reachabilityLatencyResults) => {\r\n this.logUnreachableClusters();\r\n\r\n // return results\r\n return reachabilityLatencyResults;\r\n });\r\n }\r\n\r\n /**\r\n * Get list of all unreachable clusters\r\n * @returns {array} Unreachable clusters\r\n * @private\r\n * @memberof Reachability\r\n */\r\n private getUnreachablClusters() {\r\n const unreachableList = [];\r\n const clusters = this.clusterLatencyResults;\r\n\r\n Object.keys(clusters).forEach((key) => {\r\n const cluster = clusters[key];\r\n\r\n if (cluster.unreachable && !cluster.reachable) {\r\n unreachableList.push(key);\r\n }\r\n });\r\n\r\n return unreachableList;\r\n }\r\n\r\n /**\r\n * Attach an event handler for the icegatheringstatechange\r\n * event and measure latency.\r\n * @param {RTCPeerConnection} peerConnection\r\n * @returns {undefined}\r\n * @private\r\n * @memberof Reachability\r\n */\r\n private handleIceGatheringStateChange(peerConnection: RTCPeerConnection) {\r\n peerConnection.onicegatheringstatechange = () => {\r\n const {COMPLETE} = ICE_GATHERING_STATE;\r\n\r\n if (peerConnection.iceConnectionState === COMPLETE) {\r\n const elapsed = this.getElapsedTime(peerConnection);\r\n\r\n // @ts-ignore\r\n LoggerProxy.logger.log(\r\n // @ts-ignore\r\n `Reachability:index#onIceGatheringStateChange --> Successfully pinged ${peerConnection.key}:`,\r\n elapsed\r\n );\r\n this.setLatencyAndClose(peerConnection, elapsed);\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * Attach an event handler for the icecandidate\r\n * event and measure latency.\r\n * @param {RTCPeerConnection} peerConnection\r\n * @returns {undefined}\r\n * @private\r\n * @memberof Reachability\r\n */\r\n private handleOnIceCandidate(peerConnection: RTCPeerConnection) {\r\n peerConnection.onicecandidate = (e) => {\r\n const SERVER_REFLEXIVE = 'srflx';\r\n\r\n if (e.candidate && String(e.candidate.type).toLowerCase() === SERVER_REFLEXIVE) {\r\n const elapsed = this.getElapsedTime(peerConnection);\r\n\r\n LoggerProxy.logger.log(\r\n // @ts-ignore\r\n `Reachability:index#onIceCandidate --> Successfully pinged ${peerConnection.key}:`,\r\n elapsed\r\n );\r\n this.setLatencyAndClose(peerConnection, elapsed);\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * An event handler on an RTCPeerConnection when the state of the ICE\r\n * candidate gathering process changes. Used to measure connection\r\n * speed.\r\n * @private\r\n * @param {RTCPeerConnection} peerConnection\r\n * @param {number} timeout\r\n * @returns {Promise}\r\n */\r\n private iceGatheringState(peerConnection: RTCPeerConnection, timeout: number) {\r\n const ELAPSED = 'elapsed';\r\n\r\n return new Promise((resolve) => {\r\n const peerConnectionProxy = new window.Proxy(peerConnection, {\r\n get(target, property) {\r\n const targetMember = target[property];\r\n\r\n if (typeof targetMember === 'function') {\r\n return targetMember.bind(target);\r\n }\r\n\r\n return targetMember;\r\n },\r\n set: (target, property, value) => {\r\n // only intercept elapsed property\r\n if (property === ELAPSED) {\r\n // @ts-ignore\r\n resolve({clusterId: peerConnection.key, elapsed: value});\r\n\r\n return true;\r\n }\r\n\r\n // pass thru\r\n return window.Reflect.set(target, property, value);\r\n },\r\n });\r\n\r\n // Using peerConnection proxy so handle functions below\r\n // won't be coupled to our promise implementation\r\n this.handleIceGatheringStateChange(peerConnectionProxy);\r\n this.handleOnIceCandidate(peerConnectionProxy);\r\n\r\n // Set maximum timeout\r\n window.setTimeout(() => {\r\n const {CLOSED} = CONNECTION_STATE;\r\n\r\n // Close any open peerConnections\r\n if (peerConnectionProxy.connectionState !== CLOSED) {\r\n this.setLatencyAndClose(peerConnectionProxy, null);\r\n }\r\n }, timeout);\r\n });\r\n }\r\n\r\n /**\r\n * Make a log of unreachable clusters.\r\n * @returns {undefined}\r\n * @private\r\n * @memberof Reachability\r\n */\r\n private logUnreachableClusters() {\r\n const list = this.getUnreachablClusters();\r\n\r\n list.forEach((cluster) => {\r\n LoggerProxy.logger.log(\r\n `Reachability:index#logUnreachableClusters --> No ice candidate for ${cluster}.`\r\n );\r\n });\r\n }\r\n\r\n /**\r\n * Calculates time to establish connection\r\n * @param {array} iceResults iceResults\r\n * @returns {object} reachabilityMap\r\n * @private\r\n * @memberof Reachability\r\n */\r\n private parseIceResultsToReachabilityResults(iceResults: Array<any>) {\r\n const reachabilityMap = {};\r\n\r\n iceResults.forEach(({clusterId, elapsed}) => {\r\n let latencyResult;\r\n\r\n if (elapsed === null) {\r\n latencyResult = {reachable: 'false'};\r\n } else {\r\n latencyResult = {\r\n reachable: 'true',\r\n latencyInMilliseconds: elapsed.toString(),\r\n };\r\n }\r\n\r\n reachabilityMap[clusterId] = {\r\n udp: latencyResult,\r\n tcp: latencyResult,\r\n };\r\n });\r\n\r\n return reachabilityMap;\r\n }\r\n\r\n /**\r\n * fetches reachability data\r\n * @param {object} clusterList\r\n * @returns {Promise<localSDPData>} reachability check results\r\n * @private\r\n * @memberof Reachability\r\n */\r\n private performReachabilityCheck(clusterList: object) {\r\n if (!clusterList || !Object.keys(clusterList).length) {\r\n return Promise.resolve({});\r\n }\r\n\r\n return new Promise((resolve) => {\r\n this.getLocalSDPForClusters(clusterList)\r\n .then((localSDPData) => {\r\n if (!localSDPData || !Object.keys(localSDPData).length) {\r\n // TODO: handle the error condition properly and try retry\r\n LoggerProxy.logger.log(\r\n 'Reachability:index#performReachabilityCheck --> Local SDP is empty or has missing elements..returning'\r\n );\r\n resolve({});\r\n } else {\r\n resolve(localSDPData);\r\n }\r\n })\r\n .catch((error) => {\r\n LoggerProxy.logger.error(\r\n `Reachability:index#performReachabilityCheck --> Error in getLocalSDPForClusters: ${error}`\r\n );\r\n resolve({});\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Records latency and closes the peerConnection\r\n * @param {RTCPeerConnection} peerConnection\r\n * @param {number} elapsed Latency in milliseconds\r\n * @returns {undefined}\r\n * @private\r\n * @memberof Reachability\r\n */\r\n private setLatencyAndClose(peerConnection: RTCPeerConnection, elapsed: number) {\r\n const REACHABLE = 'reachable';\r\n const UNREACHABLE = 'unreachable';\r\n const {CLOSED} = CONNECTION_STATE;\r\n // @ts-ignore\r\n const {key} = peerConnection;\r\n const resultKey = elapsed === null ? UNREACHABLE : REACHABLE;\r\n const intialState = {[REACHABLE]: 0, [UNREACHABLE]: 0};\r\n\r\n if (peerConnection.connectionState === CLOSED) {\r\n LoggerProxy.logger.log(\r\n `Reachability:index#setLatencyAndClose --> Attempting to set latency of ${elapsed} on closed peerConnection.`\r\n );\r\n\r\n return;\r\n }\r\n\r\n this.clusterLatencyResults[key] = this.clusterLatencyResults[key] || intialState;\r\n this.clusterLatencyResults[key][resultKey] += 1;\r\n\r\n // Set to null in case this fired from\r\n // an event other than onIceCandidate\r\n peerConnection.onicecandidate = null;\r\n peerConnection.close();\r\n // @ts-ignore\r\n peerConnection.elapsed = elapsed;\r\n }\r\n\r\n /**\r\n * utility function\r\n * @returns {undefined}\r\n * @private\r\n * @memberof Reachability\r\n */\r\n private setup() {\r\n this.clusterLatencyResults = {};\r\n }\r\n}\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_lodash","_interopRequireDefault","require","_loggerProxy","_constants","_request","DEFAULT_TIMEOUT","VIDEO_MESH_TIMEOUT","Reachability","webex","_classCallCheck2","default","_defineProperty2","reachabilityRequest","ReachabilityRequest","clusterLatencyResults","_createClass2","key","value","_gatherReachability","_asyncToGenerator2","_regenerator","mark","_callee","_window","_window$localStorage","clusters","results","wrap","_callee$","_context","prev","next","setup","window","localStorage","removeItem","REACHABILITY","LoggerProxy","logger","error","abrupt","getClusters","sent","performReachabilityCheck","setItem","_stringify","log","t0","concat","stop","gatherReachability","apply","arguments","isAnyClusterReachable","reachable","reachabilityData","getItem","reachabilityResults","JSON","parse","_values","some","result","_result$udp","_result$tcp","udp","tcp","e","buildPeerConnectionConfig","cluster","iceServers","_","uniq","_toConsumableArray2","map","url","username","credential","urls","iceCandidatePoolSize","iceTransportPolicy","createPeerConnection","config","peerConnection","RTCPeerConnection","peerConnectionError","getElapsedTime","startTime","begin","_now","getLocalSDPForClusters","clusterList","_this","_keys","_ref","_callee2","description","_callee2$","_context2","createOffer","offerToReceiveAudio","setLocalDescription","iceGatheringState","isVideoMesh","catch","iceGatheringStateError","_x","_promise","all","then","parseIceResultsToReachabilityResults","reachabilityLatencyResults","logUnreachableClusters","getUnreachablClusters","unreachableList","forEach","unreachable","push","handleIceGatheringStateChange","_this2","onicegatheringstatechange","COMPLETE","ICE_GATHERING_STATE","iceConnectionState","elapsed","setLatencyAndClose","handleOnIceCandidate","_this3","onicecandidate","SERVER_REFLEXIVE","candidate","String","type","toLowerCase","timeout","_this4","ELAPSED","resolve","peerConnectionProxy","Proxy","get","target","property","targetMember","bind","set","clusterId","Reflect","setTimeout","CLOSED","CONNECTION_STATE","connectionState","list","iceResults","reachabilityMap","_ref2","latencyResult","latencyInMilliseconds","toString","_this5","length","localSDPData","_intialState","REACHABLE","UNREACHABLE","resultKey","intialState","close","exports"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint-disable class-methods-use-this */\n/* globals window */\nimport _ from 'lodash';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {ICE_GATHERING_STATE, CONNECTION_STATE, REACHABILITY} from '../constants';\n\nimport ReachabilityRequest from './request';\n\nconst DEFAULT_TIMEOUT = 3000;\nconst VIDEO_MESH_TIMEOUT = 1000;\n\n/**\n * @class Reachability\n * @export\n */\nexport default class Reachability {\n webex: object;\n reachabilityRequest: any;\n clusterLatencyResults: any;\n\n /**\n * Creates an instance of Reachability.\n * @param {object} webex\n * @memberof Reachability\n */\n constructor(webex: object) {\n this.webex = webex;\n\n /**\n * internal request object for the server\n * @instance\n * @type {Array}\n * @private\n * @memberof Reachability\n */\n this.reachabilityRequest = new ReachabilityRequest(this.webex);\n\n /**\n * internal object of clusters latency results\n * @instance\n * @type {object}\n * @private\n * @memberof Reachability\n */\n this.clusterLatencyResults = {};\n }\n\n /**\n * fetches reachability data\n * @returns {Object} reachability data\n * @public\n * @async\n * @memberof Reachability\n */\n public async gatherReachability() {\n this.setup();\n\n // Remove stored reachability results to ensure no stale data\n if (window?.localStorage?.removeItem) {\n window.localStorage.removeItem(REACHABILITY.localStorage);\n } else {\n LoggerProxy.logger.error(\n 'Reachability:index#gatherReachability --> Error in accessing LocalStorage.'\n );\n\n return {};\n }\n\n // Fetch clusters and measure latency\n try {\n const clusters = await this.reachabilityRequest.getClusters();\n\n // Perform Reachability Check\n const results = await this.performReachabilityCheck(clusters);\n\n window.localStorage.setItem(REACHABILITY.localStorage, JSON.stringify(results));\n\n LoggerProxy.logger.log(\n 'Reachability:index#gatherReachability --> Reachability checks completed'\n );\n\n return results;\n } catch (getClusterError) {\n LoggerProxy.logger.error(\n `Reachability:index#gatherReachability --> Error in calling getClusters(): ${getClusterError}`\n );\n\n return {};\n }\n }\n\n /**\n * fetches reachability data and checks for cluster reachability\n * @returns {boolean}\n * @public\n * @memberof Reachability\n */\n isAnyClusterReachable() {\n let reachable = false;\n const reachabilityData = window.localStorage.getItem(REACHABILITY.localStorage);\n\n if (reachabilityData) {\n try {\n const reachabilityResults = JSON.parse(reachabilityData);\n\n reachable = Object.values(reachabilityResults).some(\n (result: any) => result.udp?.reachable === 'true' || result.tcp?.reachable === 'true'\n );\n } catch (e) {\n LoggerProxy.logger.error(\n `Roap:request#attachReachabilityData --> Error in parsing reachability data: ${e}`\n );\n }\n }\n\n return reachable;\n }\n\n /**\n * Generate peerConnection config settings\n * @param {object} cluster\n * @returns {object} peerConnectionConfig\n * @private\n * @memberof Reachability\n */\n private buildPeerConnectionConfig(cluster: any) {\n const iceServers = _.uniq([...cluster.udp, ...cluster.tcp]).map((url) => ({\n username: '',\n credential: '',\n urls: [url],\n }));\n\n return {\n iceServers: [...iceServers],\n iceCandidatePoolSize: '0',\n iceTransportPolicy: 'all',\n };\n }\n\n /**\n * Creates an RTCPeerConnection\n * @param {object} cluster\n * @returns {RTCPeerConnection} peerConnection\n * @private\n * @memberof Reachability\n */\n private createPeerConnection(cluster: any) {\n const {key, config} = cluster;\n\n try {\n const peerConnection = new window.RTCPeerConnection(config);\n\n // @ts-ignore\n peerConnection.key = key;\n\n return peerConnection;\n } catch (peerConnectionError) {\n LoggerProxy.logger.log(\n `Reachability:index#createPeerConnection --> Error creating peerConnection: ${peerConnectionError}`\n );\n\n return null;\n }\n }\n\n /**\n * Gets total elapsed time\n * @param {RTCPeerConnection} peerConnection\n * @returns {Number} Milliseconds\n * @private\n * @memberof Reachability\n */\n private getElapsedTime(peerConnection: any) {\n const startTime = peerConnection.begin;\n\n delete peerConnection.begin;\n\n return Date.now() - startTime;\n }\n\n /**\n * creates offer and generates localSDP\n * @param {object} clusterList cluster List\n * @returns {Promise} Reachability latency results\n * @private\n * @memberof Reachability\n */\n private getLocalSDPForClusters(clusterList: object) {\n let clusters: any[] = [...Object.keys(clusterList)];\n\n clusters = clusters.map(async (key) => {\n const cluster = clusterList[key];\n const config = this.buildPeerConnectionConfig(cluster);\n const peerConnection = this.createPeerConnection({key, config});\n const description = await peerConnection.createOffer({offerToReceiveAudio: true});\n\n // @ts-ignore\n peerConnection.begin = Date.now();\n peerConnection.setLocalDescription(description);\n\n return this.iceGatheringState(\n peerConnection,\n cluster.isVideoMesh ? VIDEO_MESH_TIMEOUT : DEFAULT_TIMEOUT\n ).catch((iceGatheringStateError) => {\n LoggerProxy.logger.log(\n `Reachability:index#getLocalSDPForClusters --> Error in getLocalSDP : ${iceGatheringStateError}`\n );\n });\n });\n\n return Promise.all(clusters)\n .then(this.parseIceResultsToReachabilityResults)\n .then((reachabilityLatencyResults) => {\n this.logUnreachableClusters();\n\n // return results\n return reachabilityLatencyResults;\n });\n }\n\n /**\n * Get list of all unreachable clusters\n * @returns {array} Unreachable clusters\n * @private\n * @memberof Reachability\n */\n private getUnreachablClusters() {\n const unreachableList = [];\n const clusters = this.clusterLatencyResults;\n\n Object.keys(clusters).forEach((key) => {\n const cluster = clusters[key];\n\n if (cluster.unreachable && !cluster.reachable) {\n unreachableList.push(key);\n }\n });\n\n return unreachableList;\n }\n\n /**\n * Attach an event handler for the icegatheringstatechange\n * event and measure latency.\n * @param {RTCPeerConnection} peerConnection\n * @returns {undefined}\n * @private\n * @memberof Reachability\n */\n private handleIceGatheringStateChange(peerConnection: RTCPeerConnection) {\n peerConnection.onicegatheringstatechange = () => {\n const {COMPLETE} = ICE_GATHERING_STATE;\n\n if (peerConnection.iceConnectionState === COMPLETE) {\n const elapsed = this.getElapsedTime(peerConnection);\n\n // @ts-ignore\n LoggerProxy.logger.log(\n // @ts-ignore\n `Reachability:index#onIceGatheringStateChange --> Successfully pinged ${peerConnection.key}:`,\n elapsed\n );\n this.setLatencyAndClose(peerConnection, elapsed);\n }\n };\n }\n\n /**\n * Attach an event handler for the icecandidate\n * event and measure latency.\n * @param {RTCPeerConnection} peerConnection\n * @returns {undefined}\n * @private\n * @memberof Reachability\n */\n private handleOnIceCandidate(peerConnection: RTCPeerConnection) {\n peerConnection.onicecandidate = (e) => {\n const SERVER_REFLEXIVE = 'srflx';\n\n if (e.candidate && String(e.candidate.type).toLowerCase() === SERVER_REFLEXIVE) {\n const elapsed = this.getElapsedTime(peerConnection);\n\n LoggerProxy.logger.log(\n // @ts-ignore\n `Reachability:index#onIceCandidate --> Successfully pinged ${peerConnection.key}:`,\n elapsed\n );\n this.setLatencyAndClose(peerConnection, elapsed);\n }\n };\n }\n\n /**\n * An event handler on an RTCPeerConnection when the state of the ICE\n * candidate gathering process changes. Used to measure connection\n * speed.\n * @private\n * @param {RTCPeerConnection} peerConnection\n * @param {number} timeout\n * @returns {Promise}\n */\n private iceGatheringState(peerConnection: RTCPeerConnection, timeout: number) {\n const ELAPSED = 'elapsed';\n\n return new Promise((resolve) => {\n const peerConnectionProxy = new window.Proxy(peerConnection, {\n get(target, property) {\n const targetMember = target[property];\n\n if (typeof targetMember === 'function') {\n return targetMember.bind(target);\n }\n\n return targetMember;\n },\n set: (target, property, value) => {\n // only intercept elapsed property\n if (property === ELAPSED) {\n // @ts-ignore\n resolve({clusterId: peerConnection.key, elapsed: value});\n\n return true;\n }\n\n // pass thru\n return window.Reflect.set(target, property, value);\n },\n });\n\n // Using peerConnection proxy so handle functions below\n // won't be coupled to our promise implementation\n this.handleIceGatheringStateChange(peerConnectionProxy);\n this.handleOnIceCandidate(peerConnectionProxy);\n\n // Set maximum timeout\n window.setTimeout(() => {\n const {CLOSED} = CONNECTION_STATE;\n\n // Close any open peerConnections\n if (peerConnectionProxy.connectionState !== CLOSED) {\n this.setLatencyAndClose(peerConnectionProxy, null);\n }\n }, timeout);\n });\n }\n\n /**\n * Make a log of unreachable clusters.\n * @returns {undefined}\n * @private\n * @memberof Reachability\n */\n private logUnreachableClusters() {\n const list = this.getUnreachablClusters();\n\n list.forEach((cluster) => {\n LoggerProxy.logger.log(\n `Reachability:index#logUnreachableClusters --> No ice candidate for ${cluster}.`\n );\n });\n }\n\n /**\n * Calculates time to establish connection\n * @param {array} iceResults iceResults\n * @returns {object} reachabilityMap\n * @private\n * @memberof Reachability\n */\n private parseIceResultsToReachabilityResults(iceResults: Array<any>) {\n const reachabilityMap = {};\n\n iceResults.forEach(({clusterId, elapsed}) => {\n let latencyResult;\n\n if (elapsed === null) {\n latencyResult = {reachable: 'false'};\n } else {\n latencyResult = {\n reachable: 'true',\n latencyInMilliseconds: elapsed.toString(),\n };\n }\n\n reachabilityMap[clusterId] = {\n udp: latencyResult,\n tcp: latencyResult,\n };\n });\n\n return reachabilityMap;\n }\n\n /**\n * fetches reachability data\n * @param {object} clusterList\n * @returns {Promise<localSDPData>} reachability check results\n * @private\n * @memberof Reachability\n */\n private performReachabilityCheck(clusterList: object) {\n if (!clusterList || !Object.keys(clusterList).length) {\n return Promise.resolve({});\n }\n\n return new Promise((resolve) => {\n this.getLocalSDPForClusters(clusterList)\n .then((localSDPData) => {\n if (!localSDPData || !Object.keys(localSDPData).length) {\n // TODO: handle the error condition properly and try retry\n LoggerProxy.logger.log(\n 'Reachability:index#performReachabilityCheck --> Local SDP is empty or has missing elements..returning'\n );\n resolve({});\n } else {\n resolve(localSDPData);\n }\n })\n .catch((error) => {\n LoggerProxy.logger.error(\n `Reachability:index#performReachabilityCheck --> Error in getLocalSDPForClusters: ${error}`\n );\n resolve({});\n });\n });\n }\n\n /**\n * Records latency and closes the peerConnection\n * @param {RTCPeerConnection} peerConnection\n * @param {number} elapsed Latency in milliseconds\n * @returns {undefined}\n * @private\n * @memberof Reachability\n */\n private setLatencyAndClose(peerConnection: RTCPeerConnection, elapsed: number) {\n const REACHABLE = 'reachable';\n const UNREACHABLE = 'unreachable';\n const {CLOSED} = CONNECTION_STATE;\n // @ts-ignore\n const {key} = peerConnection;\n const resultKey = elapsed === null ? UNREACHABLE : REACHABLE;\n const intialState = {[REACHABLE]: 0, [UNREACHABLE]: 0};\n\n if (peerConnection.connectionState === CLOSED) {\n LoggerProxy.logger.log(\n `Reachability:index#setLatencyAndClose --> Attempting to set latency of ${elapsed} on closed peerConnection.`\n );\n\n return;\n }\n\n this.clusterLatencyResults[key] = this.clusterLatencyResults[key] || intialState;\n this.clusterLatencyResults[key][resultKey] += 1;\n\n // Set to null in case this fired from\n // an event other than onIceCandidate\n peerConnection.onicecandidate = null;\n peerConnection.close();\n // @ts-ignore\n peerConnection.elapsed = elapsed;\n }\n\n /**\n * utility function\n * @returns {undefined}\n * @private\n * @memberof Reachability\n */\n private setup() {\n this.clusterLatencyResults = {};\n }\n}\n"],"mappings":"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"}
|
|
@@ -13,24 +13,24 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/he
|
|
|
13
13
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
14
14
|
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
15
15
|
var _constants = require("../constants");
|
|
16
|
-
/**
|
|
17
|
-
* @class ReachabilityRequest
|
|
16
|
+
/**
|
|
17
|
+
* @class ReachabilityRequest
|
|
18
18
|
*/
|
|
19
19
|
var ReachabilityRequest = /*#__PURE__*/(0, _createClass2.default)(
|
|
20
|
-
/**
|
|
21
|
-
* Creates an instance of ReachabilityRequest.
|
|
22
|
-
* @param {object} webex
|
|
23
|
-
* @memberof ReachabilityRequest
|
|
20
|
+
/**
|
|
21
|
+
* Creates an instance of ReachabilityRequest.
|
|
22
|
+
* @param {object} webex
|
|
23
|
+
* @memberof ReachabilityRequest
|
|
24
24
|
*/
|
|
25
25
|
function ReachabilityRequest(webex) {
|
|
26
26
|
var _this = this;
|
|
27
27
|
(0, _classCallCheck2.default)(this, ReachabilityRequest);
|
|
28
28
|
(0, _defineProperty2.default)(this, "webex", void 0);
|
|
29
|
-
/**
|
|
30
|
-
* gets the cluster information
|
|
31
|
-
*
|
|
32
|
-
* @param {boolean} includeVideoMesh whether to include the video mesh clusters in the result or not
|
|
33
|
-
* @returns {Promise}
|
|
29
|
+
/**
|
|
30
|
+
* gets the cluster information
|
|
31
|
+
*
|
|
32
|
+
* @param {boolean} includeVideoMesh whether to include the video mesh clusters in the result or not
|
|
33
|
+
* @returns {Promise}
|
|
34
34
|
*/
|
|
35
35
|
(0, _defineProperty2.default)(this, "getClusters", function () {
|
|
36
36
|
return _this.webex.request({
|
|
@@ -48,10 +48,10 @@ function ReachabilityRequest(webex) {
|
|
|
48
48
|
return clusters;
|
|
49
49
|
});
|
|
50
50
|
});
|
|
51
|
-
/**
|
|
52
|
-
* gets remote SDP For Clusters
|
|
53
|
-
* @param {Object} localSDPList localSDPs for the cluster
|
|
54
|
-
* @returns {Object}
|
|
51
|
+
/**
|
|
52
|
+
* gets remote SDP For Clusters
|
|
53
|
+
* @param {Object} localSDPList localSDPs for the cluster
|
|
54
|
+
* @returns {Object}
|
|
55
55
|
*/
|
|
56
56
|
(0, _defineProperty2.default)(this, "remoteSDPForClusters", function (localSDPList) {
|
|
57
57
|
return _this.webex.request({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_loggerProxy","_interopRequireDefault","require","_constants","ReachabilityRequest","_createClass2","default","webex","_this","_classCallCheck2","_defineProperty2","request","method","HTTP_VERBS","GET","shouldRefreshAccessToken","api","API","CALLIOPEDISCOVERY","resource","RESOURCE","CLUSTERS","then","res","clusters","body","_keys","forEach","key","_res$body$clusterClas","_res$body$clusterClas2","isVideoMesh","clusterClasses","hybridMedia","includes","LoggerProxy","logger","log","concat","_stringify","localSDPList","POST","REACHABILITY","offers","_default","exports"],"sources":["request.ts"],"sourcesContent":["import LoggerProxy from '../common/logs/logger-proxy';\
|
|
1
|
+
{"version":3,"names":["_loggerProxy","_interopRequireDefault","require","_constants","ReachabilityRequest","_createClass2","default","webex","_this","_classCallCheck2","_defineProperty2","request","method","HTTP_VERBS","GET","shouldRefreshAccessToken","api","API","CALLIOPEDISCOVERY","resource","RESOURCE","CLUSTERS","then","res","clusters","body","_keys","forEach","key","_res$body$clusterClas","_res$body$clusterClas2","isVideoMesh","clusterClasses","hybridMedia","includes","LoggerProxy","logger","log","concat","_stringify","localSDPList","POST","REACHABILITY","offers","_default","exports"],"sources":["request.ts"],"sourcesContent":["import LoggerProxy from '../common/logs/logger-proxy';\nimport {HTTP_VERBS, RESOURCE, API} from '../constants';\n\nexport interface ClusterNode {\n isVideoMesh: boolean;\n udp: Array<string>;\n tcp: Array<string>;\n xtls: Array<string>;\n}\n\nexport type ClusterList = {\n [key: string]: ClusterNode;\n};\n\n/**\n * @class ReachabilityRequest\n */\nclass ReachabilityRequest {\n webex: any;\n\n /**\n * Creates an instance of ReachabilityRequest.\n * @param {object} webex\n * @memberof ReachabilityRequest\n */\n constructor(webex: object) {\n this.webex = webex;\n }\n\n /**\n * gets the cluster information\n *\n * @param {boolean} includeVideoMesh whether to include the video mesh clusters in the result or not\n * @returns {Promise}\n */\n getClusters = (): Promise<ClusterList> =>\n this.webex\n .request({\n method: HTTP_VERBS.GET,\n shouldRefreshAccessToken: false,\n api: API.CALLIOPEDISCOVERY,\n resource: RESOURCE.CLUSTERS,\n })\n .then((res) => {\n const {clusters} = res.body;\n\n Object.keys(clusters).forEach((key) => {\n clusters[key].isVideoMesh = res.body.clusterClasses?.hybridMedia?.includes(key);\n });\n\n LoggerProxy.logger.log(\n `Reachability:request#getClusters --> get clusters successful:${JSON.stringify(clusters)}`\n );\n\n return clusters;\n });\n\n /**\n * gets remote SDP For Clusters\n * @param {Object} localSDPList localSDPs for the cluster\n * @returns {Object}\n */\n remoteSDPForClusters = (localSDPList: object) =>\n this.webex\n .request({\n method: HTTP_VERBS.POST,\n shouldRefreshAccessToken: false,\n api: API.CALLIOPEDISCOVERY,\n resource: RESOURCE.REACHABILITY,\n body: {offers: localSDPList},\n })\n .then((res) => {\n LoggerProxy.logger.log(\n 'Reachability:request#remoteSDPForClusters --> Remote SDPs got succcessfully'\n );\n\n return res.body;\n });\n}\n\nexport default ReachabilityRequest;\n"],"mappings":";;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAaA;AACA;AACA;AAFA,IAGME,mBAAmB,oBAAAC,aAAA,CAAAC,OAAA;AAGvB;AACF;AACA;AACA;AACA;AACE,SAAAF,oBAAYG,KAAa,EAAE;EAAA,IAAAC,KAAA;EAAA,IAAAC,gBAAA,CAAAH,OAAA,QAAAF,mBAAA;EAAA,IAAAM,gBAAA,CAAAJ,OAAA;EAI3B;AACF;AACA;AACA;AACA;AACA;EALE,IAAAI,gBAAA,CAAAJ,OAAA,uBAMc;IAAA,OACZE,KAAI,CAACD,KAAK,CACPI,OAAO,CAAC;MACPC,MAAM,EAAEC,qBAAU,CAACC,GAAG;MACtBC,wBAAwB,EAAE,KAAK;MAC/BC,GAAG,EAAEC,cAAG,CAACC,iBAAiB;MAC1BC,QAAQ,EAAEC,mBAAQ,CAACC;IACrB,CAAC,CAAC,CACDC,IAAI,CAAC,UAACC,GAAG,EAAK;MACb,IAAOC,QAAQ,GAAID,GAAG,CAACE,IAAI,CAApBD,QAAQ;MAEf,IAAAE,KAAA,CAAApB,OAAA,EAAYkB,QAAQ,CAAC,CAACG,OAAO,CAAC,UAACC,GAAG,EAAK;QAAA,IAAAC,qBAAA,EAAAC,sBAAA;QACrCN,QAAQ,CAACI,GAAG,CAAC,CAACG,WAAW,IAAAF,qBAAA,GAAGN,GAAG,CAACE,IAAI,CAACO,cAAc,cAAAH,qBAAA,wBAAAC,sBAAA,GAAvBD,qBAAA,CAAyBI,WAAW,cAAAH,sBAAA,uBAApCA,sBAAA,CAAsCI,QAAQ,CAACN,GAAG,CAAC;MACjF,CAAC,CAAC;MAEFO,oBAAW,CAACC,MAAM,CAACC,GAAG,iEAAAC,MAAA,CAC4C,IAAAC,UAAA,CAAAjC,OAAA,EAAekB,QAAQ,CAAC,EACzF;MAED,OAAOA,QAAQ;IACjB,CAAC,CAAC;EAAA;EAEN;AACF;AACA;AACA;AACA;EAJE,IAAAd,gBAAA,CAAAJ,OAAA,gCAKuB,UAACkC,YAAoB;IAAA,OAC1ChC,KAAI,CAACD,KAAK,CACPI,OAAO,CAAC;MACPC,MAAM,EAAEC,qBAAU,CAAC4B,IAAI;MACvB1B,wBAAwB,EAAE,KAAK;MAC/BC,GAAG,EAAEC,cAAG,CAACC,iBAAiB;MAC1BC,QAAQ,EAAEC,mBAAQ,CAACsB,YAAY;MAC/BjB,IAAI,EAAE;QAACkB,MAAM,EAAEH;MAAY;IAC7B,CAAC,CAAC,CACDlB,IAAI,CAAC,UAACC,GAAG,EAAK;MACbY,oBAAW,CAACC,MAAM,CAACC,GAAG,CACpB,6EAA6E,CAC9E;MAED,OAAOd,GAAG,CAACE,IAAI;IACjB,CAAC,CAAC;EAAA;EAnDJ,IAAI,CAAClB,KAAK,GAAGA,KAAK;AACpB,CAAC;AAAA,IAAAqC,QAAA,GAqDYxC,mBAAmB;AAAAyC,OAAA,CAAAvC,OAAA,GAAAsC,QAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Reactions","smile","type","codepoints","shortcodes","sad","wow","haha","celebrate","clap","thumbs_up","thumbs_down","heart","fire","prayer","speed_up","slow_down","exports","SkinTones","normal","light","medium_light","medium","medium_dark","dark"],"sources":["reactions.ts"],"sourcesContent":["import {Reaction, ReactionType, SkinTone, SkinToneType} from './reactions.type';\
|
|
1
|
+
{"version":3,"names":["Reactions","smile","type","codepoints","shortcodes","sad","wow","haha","celebrate","clap","thumbs_up","thumbs_down","heart","fire","prayer","speed_up","slow_down","exports","SkinTones","normal","light","medium_light","medium","medium_dark","dark"],"sources":["reactions.ts"],"sourcesContent":["import {Reaction, ReactionType, SkinTone, SkinToneType} from './reactions.type';\n\nconst Reactions: Record<ReactionType, Reaction> = {\n smile: {\n type: 'smile',\n codepoints: '1F642',\n shortcodes: ':slightly_smiling_face:',\n },\n sad: {\n type: 'sad',\n codepoints: '1F625',\n shortcodes: ':sad_but_relieved_face:',\n },\n wow: {\n type: 'wow',\n codepoints: '1F62E',\n shortcodes: ':open_mouth:',\n },\n haha: {\n type: 'haha',\n codepoints: '1F603',\n shortcodes: ':smiley:',\n },\n celebrate: {\n type: 'celebrate',\n codepoints: '1F389',\n shortcodes: ':party_popper:',\n },\n clap: {\n type: 'clap',\n codepoints: '1F44F',\n shortcodes: ':clap:',\n },\n thumbs_up: {\n type: 'thumb_up',\n codepoints: '1F44D',\n shortcodes: ':thumbsup:',\n },\n thumbs_down: {\n type: 'thumb_down',\n codepoints: '1F44E',\n shortcodes: ':thumbsdown:',\n },\n heart: {\n type: 'heart',\n codepoints: '2764',\n shortcodes: ':heart:',\n },\n fire: {\n type: 'fire',\n codepoints: '1F525',\n shortcodes: ':fire:',\n },\n prayer: {\n type: 'prayer',\n codepoints: '1F64F',\n shortcodes: ':pray:',\n },\n speed_up: {\n type: 'speed_up',\n codepoints: '1F407',\n shortcodes: ':rabbit:',\n },\n slow_down: {\n type: 'slow_down',\n codepoints: '1F422',\n shortcodes: ':turtle:',\n },\n};\n\nconst SkinTones: Record<SkinToneType, SkinTone> = {\n normal: {\n type: 'normal_skin_tone',\n codepoints: '',\n shortcodes: '',\n },\n light: {\n type: 'light_skin_tone',\n codepoints: '1F3FB',\n shortcodes: ':skin-tone-2:',\n },\n medium_light: {\n type: 'medium_light_skin_tone',\n codepoints: '1F3FC',\n shortcodes: ':skin-tone-3:',\n },\n medium: {\n type: 'medium_skin_tone',\n codepoints: '1F3FD',\n shortcodes: ':skin-tone-4:',\n },\n medium_dark: {\n type: 'medium_dark_skin_tone',\n codepoints: '1F3FE',\n shortcodes: ':skin-tone-5:',\n },\n dark: {\n type: 'dark_skin_tone',\n codepoints: '1F3FF',\n shortcodes: ':skin-tone-6:',\n },\n};\n\nexport {Reactions, SkinTones};\n"],"mappings":";;;;;;;AAEA,IAAMA,SAAyC,GAAG;EAChDC,KAAK,EAAE;IACLC,IAAI,EAAE,OAAO;IACbC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDC,GAAG,EAAE;IACHH,IAAI,EAAE,KAAK;IACXC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDE,GAAG,EAAE;IACHJ,IAAI,EAAE,KAAK;IACXC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDG,IAAI,EAAE;IACJL,IAAI,EAAE,MAAM;IACZC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDI,SAAS,EAAE;IACTN,IAAI,EAAE,WAAW;IACjBC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDK,IAAI,EAAE;IACJP,IAAI,EAAE,MAAM;IACZC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDM,SAAS,EAAE;IACTR,IAAI,EAAE,UAAU;IAChBC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDO,WAAW,EAAE;IACXT,IAAI,EAAE,YAAY;IAClBC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDQ,KAAK,EAAE;IACLV,IAAI,EAAE,OAAO;IACbC,UAAU,EAAE,MAAM;IAClBC,UAAU,EAAE;EACd,CAAC;EACDS,IAAI,EAAE;IACJX,IAAI,EAAE,MAAM;IACZC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDU,MAAM,EAAE;IACNZ,IAAI,EAAE,QAAQ;IACdC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDW,QAAQ,EAAE;IACRb,IAAI,EAAE,UAAU;IAChBC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDY,SAAS,EAAE;IACTd,IAAI,EAAE,WAAW;IACjBC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd;AACF,CAAC;AAACa,OAAA,CAAAjB,SAAA,GAAAA,SAAA;AAEF,IAAMkB,SAAyC,GAAG;EAChDC,MAAM,EAAE;IACNjB,IAAI,EAAE,kBAAkB;IACxBC,UAAU,EAAE,EAAE;IACdC,UAAU,EAAE;EACd,CAAC;EACDgB,KAAK,EAAE;IACLlB,IAAI,EAAE,iBAAiB;IACvBC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDiB,YAAY,EAAE;IACZnB,IAAI,EAAE,wBAAwB;IAC9BC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDkB,MAAM,EAAE;IACNpB,IAAI,EAAE,kBAAkB;IACxBC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDmB,WAAW,EAAE;IACXrB,IAAI,EAAE,uBAAuB;IAC7BC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDoB,IAAI,EAAE;IACJtB,IAAI,EAAE,gBAAgB;IACtBC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd;AACF,CAAC;AAACa,OAAA,CAAAC,SAAA,GAAAA,SAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ReactionType","exports","SkinToneType"],"sources":["reactions.type.ts"],"sourcesContent":["export type EmoticonData = {\
|
|
1
|
+
{"version":3,"names":["ReactionType","exports","SkinToneType"],"sources":["reactions.type.ts"],"sourcesContent":["export type EmoticonData = {\n type: string;\n codepoints?: string;\n shortcodes?: string;\n};\n\nexport type SkinTone = EmoticonData;\n// @ts-ignore\nexport type Reaction = EmoticonData & {\n tone?: SkinTone;\n};\n\nexport enum ReactionType {\n smile = 'smile',\n sad = 'sad',\n wow = 'wow',\n haha = 'haha',\n celebrate = 'celebrate',\n clap = 'clap',\n thumbs_up = 'thumbs_up',\n thumbs_down = 'thumbs_down',\n heart = 'heart',\n fire = 'fire',\n prayer = 'prayer',\n speed_up = 'speed_up',\n slow_down = 'slow_down',\n}\n\nexport enum SkinToneType {\n normal = 'normal',\n light = 'light',\n medium_light = 'medium_light',\n medium = 'medium',\n medium_dark = 'medium_dark',\n dark = 'dark',\n}\n"],"mappings":";;;;;;;AAOA;AAAA,IAKYA,YAAY;AAAAC,OAAA,CAAAD,YAAA,GAAAA,YAAA;AAAA,WAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;AAAA,GAAZA,YAAY,KAAAC,OAAA,CAAAD,YAAA,GAAZA,YAAY;AAAA,IAgBZE,YAAY;AAAAD,OAAA,CAAAC,YAAA,GAAAA,YAAA;AAAA,WAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;AAAA,GAAZA,YAAY,KAAAD,OAAA,CAAAC,YAAA,GAAZA,YAAY"}
|