@webex/plugin-meetings 2.59.1 → 2.59.3-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.d.ts +9 -9
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.d.ts +48 -48
- package/dist/common/collection.js +43 -43
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.d.ts +2 -2
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.d.ts +15 -15
- 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.d.ts +16 -16
- 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.d.ts +17 -17
- package/dist/common/errors/join-meeting.js +8 -8
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.d.ts +15 -15
- package/dist/common/errors/media.js +7 -7
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.d.ts +15 -15
- package/dist/common/errors/parameter.js +7 -7
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.d.ts +15 -15
- package/dist/common/errors/password-error.js +7 -7
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.d.ts +14 -14
- package/dist/common/errors/permission.js +6 -6
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reconnection-in-progress.d.ts +9 -9
- 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.d.ts +15 -15
- package/dist/common/errors/reconnection.js +7 -7
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.d.ts +15 -15
- package/dist/common/errors/stats.js +7 -7
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.d.ts +81 -81
- 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.d.ts +20 -20
- 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.d.ts +17 -17
- package/dist/common/events/events-scope.js +10 -10
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.d.ts +12 -12
- package/dist/common/events/events.js +4 -4
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.d.ts +2 -2
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.d.ts +2 -2
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.d.ts +2 -2
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.d.ts +2 -2
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.d.ts +34 -34
- package/dist/common/logs/request.js +18 -18
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.d.ts +32 -32
- package/dist/common/queue.js +18 -18
- package/dist/common/queue.js.map +1 -1
- package/dist/config.d.ts +73 -73
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts +924 -924
- package/dist/constants.js +9 -9
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.d.ts +4 -4
- package/dist/controls-options-manager/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.d.ts +5 -5
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.d.ts +120 -120
- package/dist/controls-options-manager/index.js +81 -81
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/util.d.ts +7 -7
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.d.ts +2 -2
- package/dist/locus-info/controlsUtils.js +21 -21
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.d.ts +2 -2
- package/dist/locus-info/embeddedAppsUtils.js +14 -14
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.d.ts +2 -2
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.d.ts +2 -2
- package/dist/locus-info/hostUtils.js +19 -19
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.d.ts +269 -269
- package/dist/locus-info/index.js +180 -180
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.d.ts +2 -2
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.d.ts +2 -2
- package/dist/locus-info/mediaSharesUtils.js +50 -50
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.d.ts +212 -212
- package/dist/locus-info/parser.js +136 -136
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.d.ts +2 -2
- package/dist/locus-info/selfUtils.js +52 -52
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.d.ts +32 -32
- package/dist/media/index.js +145 -145
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.d.ts +108 -108
- package/dist/media/properties.js +49 -49
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.d.ts +2 -2
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.d.ts +233 -233
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/effectsState.d.ts +42 -42
- package/dist/meeting/effectsState.js +24 -24
- package/dist/meeting/effectsState.js.map +1 -1
- package/dist/meeting/in-meeting-actions.d.ts +79 -79
- package/dist/meeting/in-meeting-actions.js +11 -11
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.d.ts +1621 -1621
- package/dist/meeting/index.js +1502 -1505
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.d.ts +116 -116
- package/dist/meeting/muteState.js +85 -85
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.d.ts +255 -255
- package/dist/meeting/request.js +141 -141
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/state.d.ts +9 -9
- package/dist/meeting/state.js +30 -30
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.d.ts +2 -2
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.d.ts +20 -20
- package/dist/meeting-info/collection.js +11 -11
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.d.ts +57 -57
- package/dist/meeting-info/index.js +50 -50
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.d.ts +93 -93
- 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.d.ts +22 -22
- package/dist/meeting-info/request.js +14 -14
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.d.ts +2 -2
- package/dist/meeting-info/util.js +9 -9
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.d.ts +2 -2
- package/dist/meeting-info/utilv2.js +20 -20
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.d.ts +23 -23
- package/dist/meetings/collection.js +14 -14
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.d.ts +296 -296
- package/dist/meetings/index.js +259 -259
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.d.ts +27 -27
- package/dist/meetings/request.js +15 -15
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.d.ts +18 -18
- package/dist/meetings/util.js +29 -29
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.d.ts +147 -147
- package/dist/member/index.js +214 -214
- package/dist/member/index.js.map +1 -1
- package/dist/member/member.types.d.ts +11 -11
- package/dist/member/member.types.js.map +1 -1
- package/dist/member/util.d.ts +2 -2
- package/dist/member/util.js +60 -60
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.d.ts +24 -24
- package/dist/members/collection.js +11 -11
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.d.ts +298 -298
- package/dist/members/index.js +275 -275
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.d.ts +50 -50
- package/dist/members/request.js +27 -27
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.d.ts +2 -2
- package/dist/members/util.js +21 -21
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.d.ts +169 -169
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.d.ts +57 -57
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.d.ts +152 -152
- package/dist/metrics/index.js +90 -90
- package/dist/metrics/index.js.map +1 -1
- package/dist/networkQualityMonitor/index.d.ts +70 -70
- package/dist/networkQualityMonitor/index.js +65 -65
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/peer-connection-manager/index.d.ts +6 -6
- 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.d.ts +6 -6
- 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.d.ts +47 -47
- 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.d.ts +14 -14
- 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.d.ts +2 -2
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.d.ts +139 -139
- package/dist/reachability/index.js +110 -110
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.d.ts +35 -35
- package/dist/reachability/request.js +15 -15
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/reactions.d.ts +4 -4
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.d.ts +32 -32
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.d.ts +112 -112
- package/dist/reconnection-manager/index.js +112 -112
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.d.ts +7 -7
- package/dist/recording-controller/enums.js.map +1 -1
- package/dist/recording-controller/index.d.ts +193 -193
- package/dist/recording-controller/index.js +127 -127
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/recording-controller/util.d.ts +13 -13
- package/dist/recording-controller/util.js.map +1 -1
- package/dist/roap/collection.d.ts +10 -10
- package/dist/roap/collection.js.map +1 -1
- package/dist/roap/handler.d.ts +47 -47
- package/dist/roap/handler.js +27 -27
- package/dist/roap/handler.js.map +1 -1
- package/dist/roap/index.d.ts +116 -116
- package/dist/roap/index.js +111 -111
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.d.ts +35 -35
- package/dist/roap/request.js +17 -17
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/state.d.ts +9 -9
- package/dist/roap/state.js +14 -14
- package/dist/roap/state.js.map +1 -1
- package/dist/roap/turnDiscovery.d.ts +67 -67
- package/dist/roap/turnDiscovery.js +46 -46
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/roap/util.d.ts +2 -2
- package/dist/roap/util.js.map +1 -1
- package/dist/statsAnalyzer/global.d.ts +126 -126
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.d.ts +190 -190
- package/dist/statsAnalyzer/index.js +128 -128
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.d.ts +22 -22
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.d.ts +64 -64
- 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 +22 -21
- 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 -6543
- 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/metrics/index.js
CHANGED
|
@@ -20,8 +20,8 @@ var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy")
|
|
|
20
20
|
var _constants = require("../constants");
|
|
21
21
|
var _browserDetection = _interopRequireDefault(require("../common/browser-detection"));
|
|
22
22
|
var _config = require("./config");
|
|
23
|
-
/*!
|
|
24
|
-
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
23
|
+
/*!
|
|
24
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
25
25
|
*/
|
|
26
26
|
|
|
27
27
|
// @ts-ignore
|
|
@@ -75,17 +75,17 @@ var triggerTimers = function triggerTimers(_ref) {
|
|
|
75
75
|
}
|
|
76
76
|
};
|
|
77
77
|
|
|
78
|
-
/**
|
|
79
|
-
* @description Metrics handles all the call metrics events
|
|
80
|
-
* @export
|
|
81
|
-
* @class Metrics
|
|
78
|
+
/**
|
|
79
|
+
* @description Metrics handles all the call metrics events
|
|
80
|
+
* @export
|
|
81
|
+
* @class Metrics
|
|
82
82
|
*/
|
|
83
83
|
var Metrics = /*#__PURE__*/function () {
|
|
84
|
-
/**
|
|
85
|
-
* Create Metrics Object
|
|
86
|
-
* @constructor
|
|
87
|
-
* @public
|
|
88
|
-
* @memberof Meetings
|
|
84
|
+
/**
|
|
85
|
+
* Create Metrics Object
|
|
86
|
+
* @constructor
|
|
87
|
+
* @public
|
|
88
|
+
* @memberof Meetings
|
|
89
89
|
*/
|
|
90
90
|
function Metrics() {
|
|
91
91
|
(0, _classCallCheck2.default)(this, Metrics);
|
|
@@ -94,32 +94,32 @@ var Metrics = /*#__PURE__*/function () {
|
|
|
94
94
|
(0, _defineProperty2.default)(this, "meetingCollection", void 0);
|
|
95
95
|
(0, _defineProperty2.default)(this, "webex", void 0);
|
|
96
96
|
if (!Metrics.instance) {
|
|
97
|
-
/**
|
|
98
|
-
* @instance
|
|
99
|
-
* @type {Array}
|
|
100
|
-
* @private
|
|
101
|
-
* @memberof Metrics
|
|
97
|
+
/**
|
|
98
|
+
* @instance
|
|
99
|
+
* @type {Array}
|
|
100
|
+
* @private
|
|
101
|
+
* @memberof Metrics
|
|
102
102
|
*/
|
|
103
103
|
this._events = [];
|
|
104
|
-
/**
|
|
105
|
-
* @instance
|
|
106
|
-
* @type {MeetingCollection}
|
|
107
|
-
* @private
|
|
108
|
-
* @memberof Metrics
|
|
104
|
+
/**
|
|
105
|
+
* @instance
|
|
106
|
+
* @type {MeetingCollection}
|
|
107
|
+
* @private
|
|
108
|
+
* @memberof Metrics
|
|
109
109
|
*/
|
|
110
110
|
this.meetingCollection = null;
|
|
111
|
-
/**
|
|
112
|
-
* @instance
|
|
113
|
-
* @type {MeetingCollection}
|
|
114
|
-
* @private
|
|
115
|
-
* @memberof Metrics
|
|
111
|
+
/**
|
|
112
|
+
* @instance
|
|
113
|
+
* @type {MeetingCollection}
|
|
114
|
+
* @private
|
|
115
|
+
* @memberof Metrics
|
|
116
116
|
*/
|
|
117
117
|
this.keys = (0, _values.default)(_config.eventType);
|
|
118
|
-
/**
|
|
119
|
-
* @instance
|
|
120
|
-
* @type {Metrics}
|
|
121
|
-
* @private
|
|
122
|
-
* @memberof Metrics
|
|
118
|
+
/**
|
|
119
|
+
* @instance
|
|
120
|
+
* @type {Metrics}
|
|
121
|
+
* @private
|
|
122
|
+
* @memberof Metrics
|
|
123
123
|
*/
|
|
124
124
|
Metrics.instance = this;
|
|
125
125
|
}
|
|
@@ -128,13 +128,13 @@ var Metrics = /*#__PURE__*/function () {
|
|
|
128
128
|
return Metrics.instance;
|
|
129
129
|
}
|
|
130
130
|
|
|
131
|
-
/**
|
|
132
|
-
* Initializes the Metrics singleton with a meeting Collection.
|
|
133
|
-
*
|
|
134
|
-
* @param {Object} meetingCollection meetings object
|
|
135
|
-
* @param {Object} webex webex SDK object
|
|
136
|
-
*
|
|
137
|
-
* @returns {void}
|
|
131
|
+
/**
|
|
132
|
+
* Initializes the Metrics singleton with a meeting Collection.
|
|
133
|
+
*
|
|
134
|
+
* @param {Object} meetingCollection meetings object
|
|
135
|
+
* @param {Object} webex webex SDK object
|
|
136
|
+
*
|
|
137
|
+
* @returns {void}
|
|
138
138
|
*/
|
|
139
139
|
(0, _createClass2.default)(Metrics, [{
|
|
140
140
|
key: "initialSetup",
|
|
@@ -143,14 +143,14 @@ var Metrics = /*#__PURE__*/function () {
|
|
|
143
143
|
this.webex = webex;
|
|
144
144
|
}
|
|
145
145
|
|
|
146
|
-
/**
|
|
147
|
-
* poste Meeting event metrics
|
|
148
|
-
* @param {object} options {meetingId/meeting} as a json object
|
|
149
|
-
* @param {Meeting} options.meeting Meeting object
|
|
150
|
-
* @param {String} options.meetingId
|
|
151
|
-
* @param {object} options.data
|
|
152
|
-
* @param {object} options.event
|
|
153
|
-
* @returns {object} null
|
|
146
|
+
/**
|
|
147
|
+
* poste Meeting event metrics
|
|
148
|
+
* @param {object} options {meetingId/meeting} as a json object
|
|
149
|
+
* @param {Meeting} options.meeting Meeting object
|
|
150
|
+
* @param {String} options.meetingId
|
|
151
|
+
* @param {object} options.data
|
|
152
|
+
* @param {object} options.event
|
|
153
|
+
* @returns {object} null
|
|
154
154
|
*/
|
|
155
155
|
}, {
|
|
156
156
|
key: "postEvent",
|
|
@@ -185,10 +185,10 @@ var Metrics = /*#__PURE__*/function () {
|
|
|
185
185
|
}
|
|
186
186
|
}
|
|
187
187
|
|
|
188
|
-
/**
|
|
189
|
-
* Docs for Call analyzer metrics
|
|
190
|
-
* https://sqbu-github.cisco.com/WebExSquared/call-analyzer/wiki
|
|
191
|
-
* https://sqbu-github.cisco.com/WebExSquared/event-dictionary/blob/master/diagnostic-events.raml
|
|
188
|
+
/**
|
|
189
|
+
* Docs for Call analyzer metrics
|
|
190
|
+
* https://sqbu-github.cisco.com/WebExSquared/call-analyzer/wiki
|
|
191
|
+
* https://sqbu-github.cisco.com/WebExSquared/event-dictionary/blob/master/diagnostic-events.raml
|
|
192
192
|
*/
|
|
193
193
|
|
|
194
194
|
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
@@ -261,19 +261,19 @@ var Metrics = /*#__PURE__*/function () {
|
|
|
261
261
|
return payload;
|
|
262
262
|
}
|
|
263
263
|
|
|
264
|
-
/**
|
|
265
|
-
* get the payload specific for a media quality event through call analyzer
|
|
266
|
-
* @param {String} eventType the event name
|
|
267
|
-
* @param {Object} identifiers contains the identifiers needed for CA
|
|
268
|
-
* @param {String} identifiers.correlationId
|
|
269
|
-
* @param {String} identifiers.locusUrl
|
|
270
|
-
* @param {String} identifiers.locusId
|
|
271
|
-
* @param {Object} options
|
|
272
|
-
* @param {Object} options.intervalData
|
|
273
|
-
* @param {String} options.clientType
|
|
274
|
-
* @returns {Object}
|
|
275
|
-
* @public
|
|
276
|
-
* @memberof Metrics
|
|
264
|
+
/**
|
|
265
|
+
* get the payload specific for a media quality event through call analyzer
|
|
266
|
+
* @param {String} eventType the event name
|
|
267
|
+
* @param {Object} identifiers contains the identifiers needed for CA
|
|
268
|
+
* @param {String} identifiers.correlationId
|
|
269
|
+
* @param {String} identifiers.locusUrl
|
|
270
|
+
* @param {String} identifiers.locusId
|
|
271
|
+
* @param {Object} options
|
|
272
|
+
* @param {Object} options.intervalData
|
|
273
|
+
* @param {String} options.clientType
|
|
274
|
+
* @returns {Object}
|
|
275
|
+
* @public
|
|
276
|
+
* @memberof Metrics
|
|
277
277
|
*/
|
|
278
278
|
}, {
|
|
279
279
|
key: "initMediaPayload",
|
|
@@ -331,15 +331,15 @@ var Metrics = /*#__PURE__*/function () {
|
|
|
331
331
|
return payload;
|
|
332
332
|
}
|
|
333
333
|
|
|
334
|
-
/**
|
|
335
|
-
* This function Parses a Locus error and returns a diagnostic event payload.
|
|
336
|
-
* It should keep updating from:
|
|
337
|
-
* https://sqbu-github.cisco.com/WebExSquared/spark-client-framework/blob/master/spark-client-framework/Adapters/TelephonyAdapter/TelephonyAdapter.cpp#L920
|
|
338
|
-
*
|
|
339
|
-
* @param {Object} err the error Object from Locus response
|
|
340
|
-
* @param {boolean} showToUser true if a toast is shown to user
|
|
341
|
-
* @returns {{showToUser: boolean, category: string, errorDescription: string,
|
|
342
|
-
* errorCode: number, errorData: *, fatal: boolean, name: string}}
|
|
334
|
+
/**
|
|
335
|
+
* This function Parses a Locus error and returns a diagnostic event payload.
|
|
336
|
+
* It should keep updating from:
|
|
337
|
+
* https://sqbu-github.cisco.com/WebExSquared/spark-client-framework/blob/master/spark-client-framework/Adapters/TelephonyAdapter/TelephonyAdapter.cpp#L920
|
|
338
|
+
*
|
|
339
|
+
* @param {Object} err the error Object from Locus response
|
|
340
|
+
* @param {boolean} showToUser true if a toast is shown to user
|
|
341
|
+
* @returns {{showToUser: boolean, category: string, errorDescription: string,
|
|
342
|
+
* errorCode: number, errorData: *, fatal: boolean, name: string}}
|
|
343
343
|
*/
|
|
344
344
|
}, {
|
|
345
345
|
key: "parseLocusError",
|
|
@@ -474,10 +474,10 @@ var Metrics = /*#__PURE__*/function () {
|
|
|
474
474
|
return null;
|
|
475
475
|
}
|
|
476
476
|
|
|
477
|
-
/**
|
|
478
|
-
* Returns a formated string of the user agent.
|
|
479
|
-
*
|
|
480
|
-
* @returns {string} formatted user agent information
|
|
477
|
+
/**
|
|
478
|
+
* Returns a formated string of the user agent.
|
|
479
|
+
*
|
|
480
|
+
* @returns {string} formatted user agent information
|
|
481
481
|
*/
|
|
482
482
|
}, {
|
|
483
483
|
key: "userAgentToString",
|
|
@@ -503,20 +503,20 @@ var Metrics = /*#__PURE__*/function () {
|
|
|
503
503
|
return _util.default.format('webex-js-sdk/%s', "".concat(process.env.NODE_ENV, "-").concat(this.webex.version));
|
|
504
504
|
}
|
|
505
505
|
|
|
506
|
-
/**
|
|
507
|
-
* Uploads given metric to the Metrics service as an Behavioral metric.
|
|
508
|
-
* Metadata about the environment such as browser, OS, SDK and their versions
|
|
509
|
-
* are automatically added when the metric is sent.
|
|
510
|
-
*
|
|
511
|
-
* The Metrics service will send an Behavioral metric to InfluxDB for
|
|
512
|
-
* aggregation.
|
|
513
|
-
* See https://confluence-eng-gpk2.cisco.com/conf/display/WBXT/Getting+started+with+Metrics+Service.
|
|
514
|
-
*
|
|
515
|
-
* @param {string} metricName Name of the metric (measurement) to send
|
|
516
|
-
* @param {Object} metricFields Key-valye pairs of data or values about this metric
|
|
517
|
-
* @param {Object} metricTags Key-value pairs of metric metadata
|
|
518
|
-
*
|
|
519
|
-
* @returns {void}
|
|
506
|
+
/**
|
|
507
|
+
* Uploads given metric to the Metrics service as an Behavioral metric.
|
|
508
|
+
* Metadata about the environment such as browser, OS, SDK and their versions
|
|
509
|
+
* are automatically added when the metric is sent.
|
|
510
|
+
*
|
|
511
|
+
* The Metrics service will send an Behavioral metric to InfluxDB for
|
|
512
|
+
* aggregation.
|
|
513
|
+
* See https://confluence-eng-gpk2.cisco.com/conf/display/WBXT/Getting+started+with+Metrics+Service.
|
|
514
|
+
*
|
|
515
|
+
* @param {string} metricName Name of the metric (measurement) to send
|
|
516
|
+
* @param {Object} metricFields Key-valye pairs of data or values about this metric
|
|
517
|
+
* @param {Object} metricTags Key-value pairs of metric metadata
|
|
518
|
+
*
|
|
519
|
+
* @returns {void}
|
|
520
520
|
*/
|
|
521
521
|
}, {
|
|
522
522
|
key: "sendBehavioralMetric",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_util","_interopRequireDefault","require","_uuid","_window","_ipAnonymize","_internalPluginMetrics","_loggerProxy","_constants","_browserDetection","_config","_BrowserDetection","BrowserDetection","getOSName","getOSVersion","getBrowserName","getBrowserVersion","anonymizeIPAddress","localIp","anonymize","triggerTimers","_ref","event","meeting","data","eventType","CALL_INITIATED","setStartCallInitiateJoinReq","LOCUS_JOIN_REQUEST","setEndCallInitiateJoinReq","setStartJoinReqResp","LOCUS_JOIN_RESPONSE","setEndJoinReqResp","setStartSetupDelay","mediaType","AUDIO","VIDEO","setStartSendingMediaDelay","RECEIVING_MEDIA_START","setEndSetupDelay","SENDING_MEDIA_START","setEndSendingMediaDelay","LOCAL_SDP_GENERATED","setStartLocalSDPGenRemoteSDPRecvDelay","REMOTE_SDP_RECEIVED","setEndLocalSDPGenRemoteSDPRecvDelay","Metrics","_classCallCheck2","default","_defineProperty2","instance","_events","meetingCollection","keys","_values","_createClass2","key","value","initialSetup","webex","postEvent","options","meetingId","_options$data","indexOf","LoggerProxy","logger","error","concat","get","callEvents","MEDIA_QUALITY","sendMediaQualityAnalyzerMetrics","push","sendCallAnalyzerMetrics","info","initPayload","identifiers","_this$webex$meetings$","_this$webex$meetings$2","payload","eventId","uuid","v4","version","origin","name","networkType","userAgent","userAgentToString","clientInfo","clientType","clientVersion","CLIENT_NAME","localNetworkPrefix","meetings","geoHintInfo","clientAddress","osVersion","subClientType","os","getOSNameInternal","browser","browserVersion","originTime","triggered","Date","toISOString","senderCountryCode","countryCode","canProceed","eventData","webClientDomain","window","location","hostname","Object","prototype","hasOwnProperty","call","errors","trigger","pstnAudioType","mediaCapabilities","recoveredBy","joinTimes","isRoapCallEnabled","initMediaPayload","_this$webex$meetings$3","_this$webex$meetings$4","arguments","length","undefined","audioSetupDelay","videoSetupDelay","UNKNOWN","intervals","intervalData","sourceMetadata","applicationSoftwareType","applicationSoftwareVersion","mediaEngineSoftwareType","mediaEngineSoftwareVersion","startTime","parseLocusError","err","showToUser","errorCode","statusCode","body","ERROR_CODE","MEETING_ERRORS","FREE_USER_MAX_PARTICIPANTS_EXCEEDED","PAID_USER_MAX_PARTICIPANTS_EXCEEDED","SERVICE_MAX_PARTICIPANTS_EXCEEDED","INACTIVE","EXCEEDED_MAX_JOINED_PARTICIPANTS","EXCEEDED_SERVICE_MAX_PARTICIPANTS","MEETING_IS_LOCKED","MEETING_IS_TERMINATING","MEETING_REQUIRE_MODERATOR_PIN_INTENT","MEETING_REQUIRE_MODERATOR_PIN","MEETING_REQUIRE_MODERATOR_ROLE","JOIN_RESTRICTED_USER","GET_RESTRICTED_USER","CREATE_MEDIA_RESTRICTED_USER","JOIN_RESTRICTED_USER_NOT_IN_ROOM","MEETING_NOT_FOUND","NOT_WEBEX_SITE","INVALID_JOIN_TIME","PHONE_NUMBER_NOT_A_NUMBER","PHONE_NUMBER_TOO_LONG","INVALID_DIALABLE_KEY","ONE_ON_ONE_TO_SELF_NOT_ALLOWED","REMOVED_PARTICIPANT","MEETING_LINK_NOT_FOUND","PHONE_NUMBER_TOO_SHORT_AFTER_IDD","INVALID_INVITEE_ADDRESS","PMR_ACCOUNT_LOCKED","RESOURCE_GUEST_FORBIDDEN","PMR_ACCOUNT_SUSPENDED","EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE","INVALID_SINCE_OR_SEQUENCE_HASH_IN_REQUEST","CONVERSATION_NOT_FOUND","RECORDING_CONTROL_NOT_SUPPORTED","RECORDING_NOT_STARTED","RECORDING_NOT_ENABLED","generateErrorPayload","LOCUS_RESPONSE","shownToUser","errorPayload","category","errorDescription","fatal","_includes2","notFatalErrorList","OTHER","errorData","httpCode","_this$webex$meetings","_this$webex$meetings$5","userAgentOption","browserInfo","util","format","metrics","clientName","toLowerCase","split","osInfo","process","env","NODE_ENV","sendBehavioralMetric","metricName","metricFields","metricTags","internal","submitClientMetrics","type","config","fields","tags","_default","exports"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\nimport util from 'util';\n\nimport {includes} from 'lodash';\nimport uuid from 'uuid';\n// @ts-ignore\nimport window from 'global/window';\nimport anonymize from 'ip-anonymize';\n\n// @ts-ignore\nimport {getOSNameInternal} from '@webex/internal-plugin-metrics';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {MEETING_ERRORS} from '../constants';\nimport BrowserDetection from '../common/browser-detection';\n\nimport {\n error,\n eventType,\n errorCodes as ERROR_CODE,\n UNKNOWN,\n CLIENT_NAME,\n mediaType,\n} from './config';\n\nconst {getOSName, getOSVersion, getBrowserName, getBrowserVersion} = BrowserDetection();\n\n// Apply a CIDR /28 format to the IPV4 and /96 to the IPV6 addresses\n// For reference : https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing\nconst anonymizeIPAddress = (localIp) => anonymize(localIp, 28, 96);\n\nconst triggerTimers = ({event, meeting, data}) => {\n switch (event) {\n case eventType.CALL_INITIATED:\n meeting.setStartCallInitiateJoinReq();\n break;\n case eventType.LOCUS_JOIN_REQUEST:\n meeting.setEndCallInitiateJoinReq();\n meeting.setStartJoinReqResp();\n break;\n case eventType.LOCUS_JOIN_RESPONSE:\n meeting.setEndJoinReqResp();\n meeting.setStartSetupDelay(mediaType.AUDIO);\n meeting.setStartSetupDelay(mediaType.VIDEO);\n meeting.setStartSendingMediaDelay(mediaType.AUDIO);\n meeting.setStartSendingMediaDelay(mediaType.VIDEO);\n break;\n case eventType.RECEIVING_MEDIA_START:\n meeting.setEndSetupDelay(data.mediaType);\n break;\n case eventType.SENDING_MEDIA_START:\n meeting.setEndSendingMediaDelay(data.mediaType);\n break;\n case eventType.LOCAL_SDP_GENERATED:\n meeting.setStartLocalSDPGenRemoteSDPRecvDelay();\n break;\n case eventType.REMOTE_SDP_RECEIVED:\n meeting.setEndLocalSDPGenRemoteSDPRecvDelay();\n break;\n default:\n break;\n }\n};\n\n/**\n * @description Metrics handles all the call metrics events\n * @export\n * @class Metrics\n */\nclass Metrics {\n static instance: Metrics;\n\n _events: any;\n keys: any;\n meetingCollection: any;\n webex: any;\n\n /**\n * Create Metrics Object\n * @constructor\n * @public\n * @memberof Meetings\n */\n constructor() {\n if (!Metrics.instance) {\n /**\n * @instance\n * @type {Array}\n * @private\n * @memberof Metrics\n */\n this._events = [];\n /**\n * @instance\n * @type {MeetingCollection}\n * @private\n * @memberof Metrics\n */\n this.meetingCollection = null;\n /**\n * @instance\n * @type {MeetingCollection}\n * @private\n * @memberof Metrics\n */\n this.keys = Object.values(eventType);\n /**\n * @instance\n * @type {Metrics}\n * @private\n * @memberof Metrics\n */\n Metrics.instance = this;\n }\n\n // eslint-disable-next-line no-constructor-return\n return Metrics.instance;\n }\n\n /**\n * Initializes the Metrics singleton with a meeting Collection.\n *\n * @param {Object} meetingCollection meetings object\n * @param {Object} webex webex SDK object\n *\n * @returns {void}\n */\n initialSetup(meetingCollection: object, webex: object) {\n this.meetingCollection = meetingCollection;\n this.webex = webex;\n }\n\n /**\n * poste Meeting event metrics\n * @param {object} options {meetingId/meeting} as a json object\n * @param {Meeting} options.meeting Meeting object\n * @param {String} options.meetingId\n * @param {object} options.data\n * @param {object} options.event\n * @returns {object} null\n */\n postEvent(options: {meeting?: any; meetingId?: string; data?: object; event?: any} | any) {\n const {meetingId, data = {}, event} = options;\n let {meeting} = options;\n\n if (this.keys.indexOf(event) === -1) {\n LoggerProxy.logger.error(\n `Metrics:index#postEvent --> Event ${event} doesn't exist in dictionary`\n );\n }\n\n if (!meeting && meetingId) {\n meeting = this.meetingCollection.get(meetingId);\n options.meeting = meeting;\n }\n\n if (meeting) {\n triggerTimers(options);\n\n if (!meeting.callEvents) {\n meeting.callEvents = [];\n }\n if (event === eventType.MEDIA_QUALITY) {\n data.event = event;\n meeting.sendMediaQualityAnalyzerMetrics(data);\n } else {\n meeting.callEvents.push(event);\n data.event = event;\n meeting.sendCallAnalyzerMetrics(data);\n }\n } else {\n LoggerProxy.logger.info(\n `Metrics:index#postEvent --> Event received for meetingId:${meetingId}, but meeting not found in collection.`\n );\n }\n }\n\n /**\n * Docs for Call analyzer metrics\n * https://sqbu-github.cisco.com/WebExSquared/call-analyzer/wiki\n * https://sqbu-github.cisco.com/WebExSquared/event-dictionary/blob/master/diagnostic-events.raml\n */\n\n // eslint-disable-next-line @typescript-eslint/no-shadow\n initPayload(eventType, identifiers, options) {\n const payload: any = {\n eventId: uuid.v4(),\n version: 1,\n origin: {\n name: 'endpoint',\n networkType: 'unknown',\n userAgent: this.userAgentToString(),\n clientInfo: {\n clientType: options.clientType,\n clientVersion: `${CLIENT_NAME}/${this.webex.version}`,\n localNetworkPrefix: anonymizeIPAddress(this.webex.meetings.geoHintInfo?.clientAddress),\n osVersion: getOSVersion() || 'unknown',\n subClientType: options.subClientType,\n os: getOSNameInternal(),\n browser: getBrowserName(),\n browserVersion: getBrowserVersion(),\n },\n },\n originTime: {\n triggered: new Date().toISOString(),\n },\n senderCountryCode: this.webex.meetings.geoHintInfo?.countryCode,\n event: {\n name: eventType,\n canProceed: true,\n identifiers,\n eventData: {webClientDomain: window.location.hostname},\n },\n };\n\n // TODO: more options should be checked and some of them should be mandatory in certain conditions\n if (options) {\n if (Object.prototype.hasOwnProperty.call(options, 'canProceed')) {\n payload.event.canProceed = options.canProceed;\n }\n if (options.errors) {\n payload.event.errors = options.errors;\n }\n if (options.mediaType) {\n payload.event.mediaType = options.mediaType;\n }\n if (options.trigger) {\n payload.event.trigger = options.trigger;\n }\n if (options.pstnAudioType) {\n payload.event.pstnAudioType = options.pstnAudioType;\n }\n if (options.mediaCapabilities) {\n payload.event.mediaCapabilities = options.mediaCapabilities;\n }\n if (options.recoveredBy) {\n payload.event.recoveredBy = options.recoveredBy;\n }\n if (options.joinTimes) {\n payload.event.joinTimes = options.joinTimes;\n }\n if (options.isRoapCallEnabled) {\n payload.event.isRoapCallEnabled = options.isRoapCallEnabled;\n }\n }\n\n return payload;\n }\n\n /**\n * get the payload specific for a media quality event through call analyzer\n * @param {String} eventType the event name\n * @param {Object} identifiers contains the identifiers needed for CA\n * @param {String} identifiers.correlationId\n * @param {String} identifiers.locusUrl\n * @param {String} identifiers.locusId\n * @param {Object} options\n * @param {Object} options.intervalData\n * @param {String} options.clientType\n * @returns {Object}\n * @public\n * @memberof Metrics\n */\n public initMediaPayload(\n // eslint-disable-next-line @typescript-eslint/no-shadow\n eventType: string,\n identifiers: {\n correlationId: string;\n locusUrl: string;\n locusId: string;\n },\n options:\n | {\n intervalData: object;\n clientType: string;\n }\n | any = {}\n ) {\n const {audioSetupDelay, videoSetupDelay, joinTimes} = options;\n\n const payload = {\n eventId: uuid.v4(),\n version: 1,\n origin: {\n audioSetupDelay,\n videoSetupDelay,\n name: 'endpoint',\n networkType: options.networkType || UNKNOWN,\n userAgent: this.userAgentToString(),\n clientInfo: {\n clientType: options.clientType, // TODO: Only clientType: 'TEAMS_CLIENT' is whitelisted\n clientVersion: `${CLIENT_NAME}/${this.webex.version}`,\n localNetworkPrefix: anonymizeIPAddress(this.webex.meetings.geoHintInfo?.clientAddress),\n os: getOSNameInternal(),\n osVersion: getOSVersion() || UNKNOWN,\n subClientType: options.subClientType,\n browser: getBrowserName(),\n browserVersion: getBrowserVersion(),\n },\n },\n originTime: {\n triggered: new Date().toISOString(),\n },\n senderCountryCode: this.webex.meetings.geoHintInfo?.countryCode,\n event: {\n name: eventType,\n canProceed: true,\n identifiers,\n intervals: [options.intervalData],\n joinTimes,\n eventData: {\n webClientDomain: window.location.hostname,\n },\n sourceMetadata: {\n applicationSoftwareType: CLIENT_NAME,\n applicationSoftwareVersion: this.webex.version,\n mediaEngineSoftwareType: getBrowserName() || 'browser',\n mediaEngineSoftwareVersion: getOSVersion() || UNKNOWN,\n startTime: new Date().toISOString(),\n },\n },\n };\n\n return payload;\n }\n\n /**\n * This function Parses a Locus error and returns a diagnostic event payload.\n * It should keep updating from:\n * https://sqbu-github.cisco.com/WebExSquared/spark-client-framework/blob/master/spark-client-framework/Adapters/TelephonyAdapter/TelephonyAdapter.cpp#L920\n *\n * @param {Object} err the error Object from Locus response\n * @param {boolean} showToUser true if a toast is shown to user\n * @returns {{showToUser: boolean, category: string, errorDescription: string,\n * errorCode: number, errorData: *, fatal: boolean, name: string}}\n */\n parseLocusError(err: any, showToUser: boolean) {\n let errorCode;\n\n if (err && err.statusCode && err.statusCode >= 500) {\n errorCode = 1003;\n } else if (err && err.body && err.body.errorCode) {\n // locus error codes: https://sqbu-github.cisco.com/WebExSquared/locus/blob/master/server/src/main/resources/locus-error-codes.properties\n switch (ERROR_CODE[err.body.errorCode]) {\n case MEETING_ERRORS.FREE_USER_MAX_PARTICIPANTS_EXCEEDED:\n errorCode = 3007;\n break;\n case MEETING_ERRORS.PAID_USER_MAX_PARTICIPANTS_EXCEEDED:\n case MEETING_ERRORS.SERVICE_MAX_PARTICIPANTS_EXCEEDED:\n errorCode = 3002;\n break;\n case MEETING_ERRORS.INACTIVE:\n errorCode = 4001;\n break;\n case MEETING_ERRORS.EXCEEDED_MAX_JOINED_PARTICIPANTS:\n case MEETING_ERRORS.EXCEEDED_SERVICE_MAX_PARTICIPANTS:\n errorCode = 3001;\n break;\n case MEETING_ERRORS.MEETING_IS_LOCKED:\n errorCode = 4002;\n break;\n case MEETING_ERRORS.MEETING_IS_TERMINATING:\n errorCode = 4003;\n break;\n case MEETING_ERRORS.MEETING_REQUIRE_MODERATOR_PIN_INTENT:\n errorCode = 4004;\n break;\n case MEETING_ERRORS.MEETING_REQUIRE_MODERATOR_PIN:\n errorCode = 4005;\n break;\n case MEETING_ERRORS.MEETING_REQUIRE_MODERATOR_ROLE:\n errorCode = 4006;\n break;\n case MEETING_ERRORS.JOIN_RESTRICTED_USER:\n case MEETING_ERRORS.GET_RESTRICTED_USER:\n case MEETING_ERRORS.CREATE_MEDIA_RESTRICTED_USER:\n errorCode = 3005;\n break;\n case MEETING_ERRORS.JOIN_RESTRICTED_USER_NOT_IN_ROOM:\n errorCode = 4007;\n break;\n case MEETING_ERRORS.MEETING_NOT_FOUND:\n errorCode = 4011;\n break;\n case MEETING_ERRORS.NOT_WEBEX_SITE:\n errorCode = 4012;\n break;\n case MEETING_ERRORS.INVALID_JOIN_TIME:\n errorCode = 4013;\n break;\n case MEETING_ERRORS.PHONE_NUMBER_NOT_A_NUMBER:\n errorCode = 4016;\n break;\n case MEETING_ERRORS.PHONE_NUMBER_TOO_LONG:\n errorCode = 4017;\n break;\n case MEETING_ERRORS.INVALID_DIALABLE_KEY:\n errorCode = 4018;\n break;\n case MEETING_ERRORS.ONE_ON_ONE_TO_SELF_NOT_ALLOWED:\n errorCode = 4019;\n break;\n case MEETING_ERRORS.REMOVED_PARTICIPANT:\n errorCode = 4020;\n break;\n case MEETING_ERRORS.MEETING_LINK_NOT_FOUND:\n errorCode = 4021;\n break;\n case MEETING_ERRORS.PHONE_NUMBER_TOO_SHORT_AFTER_IDD:\n errorCode = 4022;\n break;\n case MEETING_ERRORS.INVALID_INVITEE_ADDRESS:\n errorCode = 4023;\n break;\n case MEETING_ERRORS.PMR_ACCOUNT_LOCKED:\n errorCode = 4024;\n break;\n case MEETING_ERRORS.RESOURCE_GUEST_FORBIDDEN:\n errorCode = 4025;\n break;\n case MEETING_ERRORS.PMR_ACCOUNT_SUSPENDED:\n errorCode = 4026;\n break;\n case MEETING_ERRORS.EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE:\n errorCode = 4027;\n break;\n case MEETING_ERRORS.INVALID_SINCE_OR_SEQUENCE_HASH_IN_REQUEST:\n errorCode = 1006;\n break;\n case MEETING_ERRORS.CONVERSATION_NOT_FOUND:\n errorCode = 4028;\n break;\n case MEETING_ERRORS.RECORDING_CONTROL_NOT_SUPPORTED:\n case MEETING_ERRORS.RECORDING_NOT_STARTED:\n case MEETING_ERRORS.RECORDING_NOT_ENABLED:\n errorCode = 4029;\n break;\n default:\n errorCode = 4008;\n }\n } else {\n errorCode = 4008;\n }\n\n return this.generateErrorPayload(errorCode, showToUser, error.name.LOCUS_RESPONSE, err);\n }\n\n generateErrorPayload(errorCode, shownToUser, name, err) {\n if (error.errors[errorCode]) {\n const errorPayload: any = {\n shownToUser: shownToUser || false,\n category: error.errors[errorCode][2],\n errorDescription: error.errors[errorCode][0],\n errorCode,\n fatal: !includes(error.notFatalErrorList, errorCode),\n name: name || error.name.OTHER,\n };\n\n if (err && err.body) {\n errorPayload.errorData = err.body;\n }\n\n if (err && err.statusCode) {\n errorPayload.httpCode = err.statusCode;\n }\n\n return errorPayload;\n }\n\n return null;\n }\n\n /**\n * Returns a formated string of the user agent.\n *\n * @returns {string} formatted user agent information\n */\n userAgentToString() {\n let userAgentOption;\n let browserInfo;\n const clientInfo = util.format('client=%s', `${this.webex.meetings?.metrics?.clientName}`);\n\n if (\n ['chrome', 'firefox', 'msie', 'msedge', 'safari'].indexOf(getBrowserName().toLowerCase()) !==\n -1\n ) {\n browserInfo = util.format(\n 'browser=%s',\n `${getBrowserName().toLowerCase()}/${getBrowserVersion().split('.')[0]}`\n );\n }\n const osInfo = util.format('os=%s', `${getOSName()}/${getOSVersion().split('.')[0]}`);\n\n if (browserInfo) {\n userAgentOption = `(${browserInfo}`;\n }\n if (osInfo) {\n userAgentOption = userAgentOption\n ? `${userAgentOption}; ${clientInfo}; ${osInfo}`\n : `${clientInfo}; (${osInfo}`;\n }\n if (userAgentOption) {\n userAgentOption += ')';\n\n return util.format(\n 'webex-js-sdk/%s %s',\n `${process.env.NODE_ENV}-${this.webex.version}`,\n userAgentOption\n );\n }\n\n return util.format('webex-js-sdk/%s', `${process.env.NODE_ENV}-${this.webex.version}`);\n }\n\n /**\n * Uploads given metric to the Metrics service as an Behavioral metric.\n * Metadata about the environment such as browser, OS, SDK and their versions\n * are automatically added when the metric is sent.\n *\n * The Metrics service will send an Behavioral metric to InfluxDB for\n * aggregation.\n * See https://confluence-eng-gpk2.cisco.com/conf/display/WBXT/Getting+started+with+Metrics+Service.\n *\n * @param {string} metricName Name of the metric (measurement) to send\n * @param {Object} metricFields Key-valye pairs of data or values about this metric\n * @param {Object} metricTags Key-value pairs of metric metadata\n *\n * @returns {void}\n */\n sendBehavioralMetric(metricName: string, metricFields: object = {}, metricTags: object = {}) {\n this.webex.internal.metrics.submitClientMetrics(metricName, {\n type: this.webex.config.metrics.type,\n fields: metricFields,\n tags: metricTags,\n });\n }\n}\n\n// Export Metrics singleton ---------------------------------------------------\nconst instance = new Metrics();\n\nexport default instance;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_util","_interopRequireDefault","require","_uuid","_window","_ipAnonymize","_internalPluginMetrics","_loggerProxy","_constants","_browserDetection","_config","_BrowserDetection","BrowserDetection","getOSName","getOSVersion","getBrowserName","getBrowserVersion","anonymizeIPAddress","localIp","anonymize","triggerTimers","_ref","event","meeting","data","eventType","CALL_INITIATED","setStartCallInitiateJoinReq","LOCUS_JOIN_REQUEST","setEndCallInitiateJoinReq","setStartJoinReqResp","LOCUS_JOIN_RESPONSE","setEndJoinReqResp","setStartSetupDelay","mediaType","AUDIO","VIDEO","setStartSendingMediaDelay","RECEIVING_MEDIA_START","setEndSetupDelay","SENDING_MEDIA_START","setEndSendingMediaDelay","LOCAL_SDP_GENERATED","setStartLocalSDPGenRemoteSDPRecvDelay","REMOTE_SDP_RECEIVED","setEndLocalSDPGenRemoteSDPRecvDelay","Metrics","_classCallCheck2","default","_defineProperty2","instance","_events","meetingCollection","keys","_values","_createClass2","key","value","initialSetup","webex","postEvent","options","meetingId","_options$data","indexOf","LoggerProxy","logger","error","concat","get","callEvents","MEDIA_QUALITY","sendMediaQualityAnalyzerMetrics","push","sendCallAnalyzerMetrics","info","initPayload","identifiers","_this$webex$meetings$","_this$webex$meetings$2","payload","eventId","uuid","v4","version","origin","name","networkType","userAgent","userAgentToString","clientInfo","clientType","clientVersion","CLIENT_NAME","localNetworkPrefix","meetings","geoHintInfo","clientAddress","osVersion","subClientType","os","getOSNameInternal","browser","browserVersion","originTime","triggered","Date","toISOString","senderCountryCode","countryCode","canProceed","eventData","webClientDomain","window","location","hostname","Object","prototype","hasOwnProperty","call","errors","trigger","pstnAudioType","mediaCapabilities","recoveredBy","joinTimes","isRoapCallEnabled","initMediaPayload","_this$webex$meetings$3","_this$webex$meetings$4","arguments","length","undefined","audioSetupDelay","videoSetupDelay","UNKNOWN","intervals","intervalData","sourceMetadata","applicationSoftwareType","applicationSoftwareVersion","mediaEngineSoftwareType","mediaEngineSoftwareVersion","startTime","parseLocusError","err","showToUser","errorCode","statusCode","body","ERROR_CODE","MEETING_ERRORS","FREE_USER_MAX_PARTICIPANTS_EXCEEDED","PAID_USER_MAX_PARTICIPANTS_EXCEEDED","SERVICE_MAX_PARTICIPANTS_EXCEEDED","INACTIVE","EXCEEDED_MAX_JOINED_PARTICIPANTS","EXCEEDED_SERVICE_MAX_PARTICIPANTS","MEETING_IS_LOCKED","MEETING_IS_TERMINATING","MEETING_REQUIRE_MODERATOR_PIN_INTENT","MEETING_REQUIRE_MODERATOR_PIN","MEETING_REQUIRE_MODERATOR_ROLE","JOIN_RESTRICTED_USER","GET_RESTRICTED_USER","CREATE_MEDIA_RESTRICTED_USER","JOIN_RESTRICTED_USER_NOT_IN_ROOM","MEETING_NOT_FOUND","NOT_WEBEX_SITE","INVALID_JOIN_TIME","PHONE_NUMBER_NOT_A_NUMBER","PHONE_NUMBER_TOO_LONG","INVALID_DIALABLE_KEY","ONE_ON_ONE_TO_SELF_NOT_ALLOWED","REMOVED_PARTICIPANT","MEETING_LINK_NOT_FOUND","PHONE_NUMBER_TOO_SHORT_AFTER_IDD","INVALID_INVITEE_ADDRESS","PMR_ACCOUNT_LOCKED","RESOURCE_GUEST_FORBIDDEN","PMR_ACCOUNT_SUSPENDED","EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE","INVALID_SINCE_OR_SEQUENCE_HASH_IN_REQUEST","CONVERSATION_NOT_FOUND","RECORDING_CONTROL_NOT_SUPPORTED","RECORDING_NOT_STARTED","RECORDING_NOT_ENABLED","generateErrorPayload","LOCUS_RESPONSE","shownToUser","errorPayload","category","errorDescription","fatal","_includes2","notFatalErrorList","OTHER","errorData","httpCode","_this$webex$meetings","_this$webex$meetings$5","userAgentOption","browserInfo","util","format","metrics","clientName","toLowerCase","split","osInfo","process","env","NODE_ENV","sendBehavioralMetric","metricName","metricFields","metricTags","internal","submitClientMetrics","type","config","fields","tags","_default","exports"],"sources":["index.ts"],"sourcesContent":["/*!\r\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\r\n */\r\nimport util from 'util';\r\n\r\nimport {includes} from 'lodash';\r\nimport uuid from 'uuid';\r\n// @ts-ignore\r\nimport window from 'global/window';\r\nimport anonymize from 'ip-anonymize';\r\n\r\n// @ts-ignore\r\nimport {getOSNameInternal} from '@webex/internal-plugin-metrics';\r\nimport LoggerProxy from '../common/logs/logger-proxy';\r\nimport {MEETING_ERRORS} from '../constants';\r\nimport BrowserDetection from '../common/browser-detection';\r\n\r\nimport {\r\n error,\r\n eventType,\r\n errorCodes as ERROR_CODE,\r\n UNKNOWN,\r\n CLIENT_NAME,\r\n mediaType,\r\n} from './config';\r\n\r\nconst {getOSName, getOSVersion, getBrowserName, getBrowserVersion} = BrowserDetection();\r\n\r\n// Apply a CIDR /28 format to the IPV4 and /96 to the IPV6 addresses\r\n// For reference : https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing\r\nconst anonymizeIPAddress = (localIp) => anonymize(localIp, 28, 96);\r\n\r\nconst triggerTimers = ({event, meeting, data}) => {\r\n switch (event) {\r\n case eventType.CALL_INITIATED:\r\n meeting.setStartCallInitiateJoinReq();\r\n break;\r\n case eventType.LOCUS_JOIN_REQUEST:\r\n meeting.setEndCallInitiateJoinReq();\r\n meeting.setStartJoinReqResp();\r\n break;\r\n case eventType.LOCUS_JOIN_RESPONSE:\r\n meeting.setEndJoinReqResp();\r\n meeting.setStartSetupDelay(mediaType.AUDIO);\r\n meeting.setStartSetupDelay(mediaType.VIDEO);\r\n meeting.setStartSendingMediaDelay(mediaType.AUDIO);\r\n meeting.setStartSendingMediaDelay(mediaType.VIDEO);\r\n break;\r\n case eventType.RECEIVING_MEDIA_START:\r\n meeting.setEndSetupDelay(data.mediaType);\r\n break;\r\n case eventType.SENDING_MEDIA_START:\r\n meeting.setEndSendingMediaDelay(data.mediaType);\r\n break;\r\n case eventType.LOCAL_SDP_GENERATED:\r\n meeting.setStartLocalSDPGenRemoteSDPRecvDelay();\r\n break;\r\n case eventType.REMOTE_SDP_RECEIVED:\r\n meeting.setEndLocalSDPGenRemoteSDPRecvDelay();\r\n break;\r\n default:\r\n break;\r\n }\r\n};\r\n\r\n/**\r\n * @description Metrics handles all the call metrics events\r\n * @export\r\n * @class Metrics\r\n */\r\nclass Metrics {\r\n static instance: Metrics;\r\n\r\n _events: any;\r\n keys: any;\r\n meetingCollection: any;\r\n webex: any;\r\n\r\n /**\r\n * Create Metrics Object\r\n * @constructor\r\n * @public\r\n * @memberof Meetings\r\n */\r\n constructor() {\r\n if (!Metrics.instance) {\r\n /**\r\n * @instance\r\n * @type {Array}\r\n * @private\r\n * @memberof Metrics\r\n */\r\n this._events = [];\r\n /**\r\n * @instance\r\n * @type {MeetingCollection}\r\n * @private\r\n * @memberof Metrics\r\n */\r\n this.meetingCollection = null;\r\n /**\r\n * @instance\r\n * @type {MeetingCollection}\r\n * @private\r\n * @memberof Metrics\r\n */\r\n this.keys = Object.values(eventType);\r\n /**\r\n * @instance\r\n * @type {Metrics}\r\n * @private\r\n * @memberof Metrics\r\n */\r\n Metrics.instance = this;\r\n }\r\n\r\n // eslint-disable-next-line no-constructor-return\r\n return Metrics.instance;\r\n }\r\n\r\n /**\r\n * Initializes the Metrics singleton with a meeting Collection.\r\n *\r\n * @param {Object} meetingCollection meetings object\r\n * @param {Object} webex webex SDK object\r\n *\r\n * @returns {void}\r\n */\r\n initialSetup(meetingCollection: object, webex: object) {\r\n this.meetingCollection = meetingCollection;\r\n this.webex = webex;\r\n }\r\n\r\n /**\r\n * poste Meeting event metrics\r\n * @param {object} options {meetingId/meeting} as a json object\r\n * @param {Meeting} options.meeting Meeting object\r\n * @param {String} options.meetingId\r\n * @param {object} options.data\r\n * @param {object} options.event\r\n * @returns {object} null\r\n */\r\n postEvent(options: {meeting?: any; meetingId?: string; data?: object; event?: any} | any) {\r\n const {meetingId, data = {}, event} = options;\r\n let {meeting} = options;\r\n\r\n if (this.keys.indexOf(event) === -1) {\r\n LoggerProxy.logger.error(\r\n `Metrics:index#postEvent --> Event ${event} doesn't exist in dictionary`\r\n );\r\n }\r\n\r\n if (!meeting && meetingId) {\r\n meeting = this.meetingCollection.get(meetingId);\r\n options.meeting = meeting;\r\n }\r\n\r\n if (meeting) {\r\n triggerTimers(options);\r\n\r\n if (!meeting.callEvents) {\r\n meeting.callEvents = [];\r\n }\r\n if (event === eventType.MEDIA_QUALITY) {\r\n data.event = event;\r\n meeting.sendMediaQualityAnalyzerMetrics(data);\r\n } else {\r\n meeting.callEvents.push(event);\r\n data.event = event;\r\n meeting.sendCallAnalyzerMetrics(data);\r\n }\r\n } else {\r\n LoggerProxy.logger.info(\r\n `Metrics:index#postEvent --> Event received for meetingId:${meetingId}, but meeting not found in collection.`\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Docs for Call analyzer metrics\r\n * https://sqbu-github.cisco.com/WebExSquared/call-analyzer/wiki\r\n * https://sqbu-github.cisco.com/WebExSquared/event-dictionary/blob/master/diagnostic-events.raml\r\n */\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-shadow\r\n initPayload(eventType, identifiers, options) {\r\n const payload: any = {\r\n eventId: uuid.v4(),\r\n version: 1,\r\n origin: {\r\n name: 'endpoint',\r\n networkType: 'unknown',\r\n userAgent: this.userAgentToString(),\r\n clientInfo: {\r\n clientType: options.clientType,\r\n clientVersion: `${CLIENT_NAME}/${this.webex.version}`,\r\n localNetworkPrefix: anonymizeIPAddress(this.webex.meetings.geoHintInfo?.clientAddress),\r\n osVersion: getOSVersion() || 'unknown',\r\n subClientType: options.subClientType,\r\n os: getOSNameInternal(),\r\n browser: getBrowserName(),\r\n browserVersion: getBrowserVersion(),\r\n },\r\n },\r\n originTime: {\r\n triggered: new Date().toISOString(),\r\n },\r\n senderCountryCode: this.webex.meetings.geoHintInfo?.countryCode,\r\n event: {\r\n name: eventType,\r\n canProceed: true,\r\n identifiers,\r\n eventData: {webClientDomain: window.location.hostname},\r\n },\r\n };\r\n\r\n // TODO: more options should be checked and some of them should be mandatory in certain conditions\r\n if (options) {\r\n if (Object.prototype.hasOwnProperty.call(options, 'canProceed')) {\r\n payload.event.canProceed = options.canProceed;\r\n }\r\n if (options.errors) {\r\n payload.event.errors = options.errors;\r\n }\r\n if (options.mediaType) {\r\n payload.event.mediaType = options.mediaType;\r\n }\r\n if (options.trigger) {\r\n payload.event.trigger = options.trigger;\r\n }\r\n if (options.pstnAudioType) {\r\n payload.event.pstnAudioType = options.pstnAudioType;\r\n }\r\n if (options.mediaCapabilities) {\r\n payload.event.mediaCapabilities = options.mediaCapabilities;\r\n }\r\n if (options.recoveredBy) {\r\n payload.event.recoveredBy = options.recoveredBy;\r\n }\r\n if (options.joinTimes) {\r\n payload.event.joinTimes = options.joinTimes;\r\n }\r\n if (options.isRoapCallEnabled) {\r\n payload.event.isRoapCallEnabled = options.isRoapCallEnabled;\r\n }\r\n }\r\n\r\n return payload;\r\n }\r\n\r\n /**\r\n * get the payload specific for a media quality event through call analyzer\r\n * @param {String} eventType the event name\r\n * @param {Object} identifiers contains the identifiers needed for CA\r\n * @param {String} identifiers.correlationId\r\n * @param {String} identifiers.locusUrl\r\n * @param {String} identifiers.locusId\r\n * @param {Object} options\r\n * @param {Object} options.intervalData\r\n * @param {String} options.clientType\r\n * @returns {Object}\r\n * @public\r\n * @memberof Metrics\r\n */\r\n public initMediaPayload(\r\n // eslint-disable-next-line @typescript-eslint/no-shadow\r\n eventType: string,\r\n identifiers: {\r\n correlationId: string;\r\n locusUrl: string;\r\n locusId: string;\r\n },\r\n options:\r\n | {\r\n intervalData: object;\r\n clientType: string;\r\n }\r\n | any = {}\r\n ) {\r\n const {audioSetupDelay, videoSetupDelay, joinTimes} = options;\r\n\r\n const payload = {\r\n eventId: uuid.v4(),\r\n version: 1,\r\n origin: {\r\n audioSetupDelay,\r\n videoSetupDelay,\r\n name: 'endpoint',\r\n networkType: options.networkType || UNKNOWN,\r\n userAgent: this.userAgentToString(),\r\n clientInfo: {\r\n clientType: options.clientType, // TODO: Only clientType: 'TEAMS_CLIENT' is whitelisted\r\n clientVersion: `${CLIENT_NAME}/${this.webex.version}`,\r\n localNetworkPrefix: anonymizeIPAddress(this.webex.meetings.geoHintInfo?.clientAddress),\r\n os: getOSNameInternal(),\r\n osVersion: getOSVersion() || UNKNOWN,\r\n subClientType: options.subClientType,\r\n browser: getBrowserName(),\r\n browserVersion: getBrowserVersion(),\r\n },\r\n },\r\n originTime: {\r\n triggered: new Date().toISOString(),\r\n },\r\n senderCountryCode: this.webex.meetings.geoHintInfo?.countryCode,\r\n event: {\r\n name: eventType,\r\n canProceed: true,\r\n identifiers,\r\n intervals: [options.intervalData],\r\n joinTimes,\r\n eventData: {\r\n webClientDomain: window.location.hostname,\r\n },\r\n sourceMetadata: {\r\n applicationSoftwareType: CLIENT_NAME,\r\n applicationSoftwareVersion: this.webex.version,\r\n mediaEngineSoftwareType: getBrowserName() || 'browser',\r\n mediaEngineSoftwareVersion: getOSVersion() || UNKNOWN,\r\n startTime: new Date().toISOString(),\r\n },\r\n },\r\n };\r\n\r\n return payload;\r\n }\r\n\r\n /**\r\n * This function Parses a Locus error and returns a diagnostic event payload.\r\n * It should keep updating from:\r\n * https://sqbu-github.cisco.com/WebExSquared/spark-client-framework/blob/master/spark-client-framework/Adapters/TelephonyAdapter/TelephonyAdapter.cpp#L920\r\n *\r\n * @param {Object} err the error Object from Locus response\r\n * @param {boolean} showToUser true if a toast is shown to user\r\n * @returns {{showToUser: boolean, category: string, errorDescription: string,\r\n * errorCode: number, errorData: *, fatal: boolean, name: string}}\r\n */\r\n parseLocusError(err: any, showToUser: boolean) {\r\n let errorCode;\r\n\r\n if (err && err.statusCode && err.statusCode >= 500) {\r\n errorCode = 1003;\r\n } else if (err && err.body && err.body.errorCode) {\r\n // locus error codes: https://sqbu-github.cisco.com/WebExSquared/locus/blob/master/server/src/main/resources/locus-error-codes.properties\r\n switch (ERROR_CODE[err.body.errorCode]) {\r\n case MEETING_ERRORS.FREE_USER_MAX_PARTICIPANTS_EXCEEDED:\r\n errorCode = 3007;\r\n break;\r\n case MEETING_ERRORS.PAID_USER_MAX_PARTICIPANTS_EXCEEDED:\r\n case MEETING_ERRORS.SERVICE_MAX_PARTICIPANTS_EXCEEDED:\r\n errorCode = 3002;\r\n break;\r\n case MEETING_ERRORS.INACTIVE:\r\n errorCode = 4001;\r\n break;\r\n case MEETING_ERRORS.EXCEEDED_MAX_JOINED_PARTICIPANTS:\r\n case MEETING_ERRORS.EXCEEDED_SERVICE_MAX_PARTICIPANTS:\r\n errorCode = 3001;\r\n break;\r\n case MEETING_ERRORS.MEETING_IS_LOCKED:\r\n errorCode = 4002;\r\n break;\r\n case MEETING_ERRORS.MEETING_IS_TERMINATING:\r\n errorCode = 4003;\r\n break;\r\n case MEETING_ERRORS.MEETING_REQUIRE_MODERATOR_PIN_INTENT:\r\n errorCode = 4004;\r\n break;\r\n case MEETING_ERRORS.MEETING_REQUIRE_MODERATOR_PIN:\r\n errorCode = 4005;\r\n break;\r\n case MEETING_ERRORS.MEETING_REQUIRE_MODERATOR_ROLE:\r\n errorCode = 4006;\r\n break;\r\n case MEETING_ERRORS.JOIN_RESTRICTED_USER:\r\n case MEETING_ERRORS.GET_RESTRICTED_USER:\r\n case MEETING_ERRORS.CREATE_MEDIA_RESTRICTED_USER:\r\n errorCode = 3005;\r\n break;\r\n case MEETING_ERRORS.JOIN_RESTRICTED_USER_NOT_IN_ROOM:\r\n errorCode = 4007;\r\n break;\r\n case MEETING_ERRORS.MEETING_NOT_FOUND:\r\n errorCode = 4011;\r\n break;\r\n case MEETING_ERRORS.NOT_WEBEX_SITE:\r\n errorCode = 4012;\r\n break;\r\n case MEETING_ERRORS.INVALID_JOIN_TIME:\r\n errorCode = 4013;\r\n break;\r\n case MEETING_ERRORS.PHONE_NUMBER_NOT_A_NUMBER:\r\n errorCode = 4016;\r\n break;\r\n case MEETING_ERRORS.PHONE_NUMBER_TOO_LONG:\r\n errorCode = 4017;\r\n break;\r\n case MEETING_ERRORS.INVALID_DIALABLE_KEY:\r\n errorCode = 4018;\r\n break;\r\n case MEETING_ERRORS.ONE_ON_ONE_TO_SELF_NOT_ALLOWED:\r\n errorCode = 4019;\r\n break;\r\n case MEETING_ERRORS.REMOVED_PARTICIPANT:\r\n errorCode = 4020;\r\n break;\r\n case MEETING_ERRORS.MEETING_LINK_NOT_FOUND:\r\n errorCode = 4021;\r\n break;\r\n case MEETING_ERRORS.PHONE_NUMBER_TOO_SHORT_AFTER_IDD:\r\n errorCode = 4022;\r\n break;\r\n case MEETING_ERRORS.INVALID_INVITEE_ADDRESS:\r\n errorCode = 4023;\r\n break;\r\n case MEETING_ERRORS.PMR_ACCOUNT_LOCKED:\r\n errorCode = 4024;\r\n break;\r\n case MEETING_ERRORS.RESOURCE_GUEST_FORBIDDEN:\r\n errorCode = 4025;\r\n break;\r\n case MEETING_ERRORS.PMR_ACCOUNT_SUSPENDED:\r\n errorCode = 4026;\r\n break;\r\n case MEETING_ERRORS.EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE:\r\n errorCode = 4027;\r\n break;\r\n case MEETING_ERRORS.INVALID_SINCE_OR_SEQUENCE_HASH_IN_REQUEST:\r\n errorCode = 1006;\r\n break;\r\n case MEETING_ERRORS.CONVERSATION_NOT_FOUND:\r\n errorCode = 4028;\r\n break;\r\n case MEETING_ERRORS.RECORDING_CONTROL_NOT_SUPPORTED:\r\n case MEETING_ERRORS.RECORDING_NOT_STARTED:\r\n case MEETING_ERRORS.RECORDING_NOT_ENABLED:\r\n errorCode = 4029;\r\n break;\r\n default:\r\n errorCode = 4008;\r\n }\r\n } else {\r\n errorCode = 4008;\r\n }\r\n\r\n return this.generateErrorPayload(errorCode, showToUser, error.name.LOCUS_RESPONSE, err);\r\n }\r\n\r\n generateErrorPayload(errorCode, shownToUser, name, err) {\r\n if (error.errors[errorCode]) {\r\n const errorPayload: any = {\r\n shownToUser: shownToUser || false,\r\n category: error.errors[errorCode][2],\r\n errorDescription: error.errors[errorCode][0],\r\n errorCode,\r\n fatal: !includes(error.notFatalErrorList, errorCode),\r\n name: name || error.name.OTHER,\r\n };\r\n\r\n if (err && err.body) {\r\n errorPayload.errorData = err.body;\r\n }\r\n\r\n if (err && err.statusCode) {\r\n errorPayload.httpCode = err.statusCode;\r\n }\r\n\r\n return errorPayload;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Returns a formated string of the user agent.\r\n *\r\n * @returns {string} formatted user agent information\r\n */\r\n userAgentToString() {\r\n let userAgentOption;\r\n let browserInfo;\r\n const clientInfo = util.format('client=%s', `${this.webex.meetings?.metrics?.clientName}`);\r\n\r\n if (\r\n ['chrome', 'firefox', 'msie', 'msedge', 'safari'].indexOf(getBrowserName().toLowerCase()) !==\r\n -1\r\n ) {\r\n browserInfo = util.format(\r\n 'browser=%s',\r\n `${getBrowserName().toLowerCase()}/${getBrowserVersion().split('.')[0]}`\r\n );\r\n }\r\n const osInfo = util.format('os=%s', `${getOSName()}/${getOSVersion().split('.')[0]}`);\r\n\r\n if (browserInfo) {\r\n userAgentOption = `(${browserInfo}`;\r\n }\r\n if (osInfo) {\r\n userAgentOption = userAgentOption\r\n ? `${userAgentOption}; ${clientInfo}; ${osInfo}`\r\n : `${clientInfo}; (${osInfo}`;\r\n }\r\n if (userAgentOption) {\r\n userAgentOption += ')';\r\n\r\n return util.format(\r\n 'webex-js-sdk/%s %s',\r\n `${process.env.NODE_ENV}-${this.webex.version}`,\r\n userAgentOption\r\n );\r\n }\r\n\r\n return util.format('webex-js-sdk/%s', `${process.env.NODE_ENV}-${this.webex.version}`);\r\n }\r\n\r\n /**\r\n * Uploads given metric to the Metrics service as an Behavioral metric.\r\n * Metadata about the environment such as browser, OS, SDK and their versions\r\n * are automatically added when the metric is sent.\r\n *\r\n * The Metrics service will send an Behavioral metric to InfluxDB for\r\n * aggregation.\r\n * See https://confluence-eng-gpk2.cisco.com/conf/display/WBXT/Getting+started+with+Metrics+Service.\r\n *\r\n * @param {string} metricName Name of the metric (measurement) to send\r\n * @param {Object} metricFields Key-valye pairs of data or values about this metric\r\n * @param {Object} metricTags Key-value pairs of metric metadata\r\n *\r\n * @returns {void}\r\n */\r\n sendBehavioralMetric(metricName: string, metricFields: object = {}, metricTags: object = {}) {\r\n this.webex.internal.metrics.submitClientMetrics(metricName, {\r\n type: this.webex.config.metrics.type,\r\n fields: metricFields,\r\n tags: metricTags,\r\n });\r\n }\r\n}\r\n\r\n// Export Metrics singleton ---------------------------------------------------\r\nconst instance = new Metrics();\r\n\r\nexport default instance;\r\n"],"mappings":"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"}
|
|
@@ -1,70 +1,70 @@
|
|
|
1
|
-
import EventsScope from '../common/events/events-scope';
|
|
2
|
-
/**
|
|
3
|
-
* Meeting - network quality event
|
|
4
|
-
* Emitted on each interval of retrieving stats Analyzer data
|
|
5
|
-
* @event network:quality
|
|
6
|
-
* @type {Object}
|
|
7
|
-
* @property {string} mediaType {video|audio}
|
|
8
|
-
* @property {number} networkQualityScore - value determined in determineUplinkNetworkQuality
|
|
9
|
-
* @memberof NetworkQualityMonitor
|
|
10
|
-
*/
|
|
11
|
-
/**
|
|
12
|
-
* NetworkQualityMonitor class that will emit events based on detected quality
|
|
13
|
-
*
|
|
14
|
-
* @class NetworkQualityMonitor
|
|
15
|
-
* @extends {EventsScope}
|
|
16
|
-
*/
|
|
17
|
-
export default class NetworkQualityMonitor extends EventsScope {
|
|
18
|
-
config: any;
|
|
19
|
-
frequencyTypes: any;
|
|
20
|
-
indicatorTypes: any;
|
|
21
|
-
mediaType: any;
|
|
22
|
-
networkQualityScore: any;
|
|
23
|
-
networkQualityStatus: any;
|
|
24
|
-
/**
|
|
25
|
-
* Creates a new instance of NetworkQualityMonitor
|
|
26
|
-
* @constructor
|
|
27
|
-
* @public
|
|
28
|
-
* @param {Object} config
|
|
29
|
-
* @property {Object} indicatorTypes - network properties used to evaluate network quality used as constants
|
|
30
|
-
* @property {Object} frequencyTypes - frequency properties used as constants {uplink|send} {downlink|receive}
|
|
31
|
-
* @property {number} networkQualityScore - 0|1 1 is acceptable 0 is bad/unknown
|
|
32
|
-
* @property {Object} networkQualityStatus - hash object based on indicatorTypes and frequencyTypes
|
|
33
|
-
* @property {string} mediaType - audio|video
|
|
34
|
-
*/
|
|
35
|
-
constructor(config: any);
|
|
36
|
-
/**
|
|
37
|
-
* emits NETWORK_QUALITY event on meeting with payload of media type and uplinkNetworkQuality score
|
|
38
|
-
*
|
|
39
|
-
* @memberof NetworkQualityMonitor
|
|
40
|
-
* @returns {void}
|
|
41
|
-
*/
|
|
42
|
-
emitNetworkQuality(): void;
|
|
43
|
-
/**
|
|
44
|
-
* invokes emitNetworkQuality method resets values back to default
|
|
45
|
-
* @returns {void}
|
|
46
|
-
* @memberof NetworkQualityMonitor
|
|
47
|
-
*/
|
|
48
|
-
updateNetworkQualityStatus(): void;
|
|
49
|
-
/**
|
|
50
|
-
* filter data to determine uplink network quality, invoked on same interval as stats analyzer remote-inbout-rtp
|
|
51
|
-
* @param {Object} configObj
|
|
52
|
-
* @param {string} configObj.mediaType {audio|video}
|
|
53
|
-
* @param {RTCStats} configObj.remoteRtpResults RTC stats remote obj
|
|
54
|
-
* @param {Object} configObj.statsAnalyzerCurrentStats statsResults
|
|
55
|
-
* @returns {void}
|
|
56
|
-
* @public
|
|
57
|
-
* @memberof NetworkQualityMonitor
|
|
58
|
-
*/
|
|
59
|
-
determineUplinkNetworkQuality({ mediaType, remoteRtpResults, statsAnalyzerCurrentStats, }: {
|
|
60
|
-
mediaType: string;
|
|
61
|
-
remoteRtpResults: any;
|
|
62
|
-
statsAnalyzerCurrentStats: object;
|
|
63
|
-
}): void;
|
|
64
|
-
/**
|
|
65
|
-
* Get the current status of network quaility object - networkQualityStatus
|
|
66
|
-
* @returns {Object}
|
|
67
|
-
* @public
|
|
68
|
-
*/
|
|
69
|
-
get networkQualityStats(): any;
|
|
70
|
-
}
|
|
1
|
+
import EventsScope from '../common/events/events-scope';
|
|
2
|
+
/**
|
|
3
|
+
* Meeting - network quality event
|
|
4
|
+
* Emitted on each interval of retrieving stats Analyzer data
|
|
5
|
+
* @event network:quality
|
|
6
|
+
* @type {Object}
|
|
7
|
+
* @property {string} mediaType {video|audio}
|
|
8
|
+
* @property {number} networkQualityScore - value determined in determineUplinkNetworkQuality
|
|
9
|
+
* @memberof NetworkQualityMonitor
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* NetworkQualityMonitor class that will emit events based on detected quality
|
|
13
|
+
*
|
|
14
|
+
* @class NetworkQualityMonitor
|
|
15
|
+
* @extends {EventsScope}
|
|
16
|
+
*/
|
|
17
|
+
export default class NetworkQualityMonitor extends EventsScope {
|
|
18
|
+
config: any;
|
|
19
|
+
frequencyTypes: any;
|
|
20
|
+
indicatorTypes: any;
|
|
21
|
+
mediaType: any;
|
|
22
|
+
networkQualityScore: any;
|
|
23
|
+
networkQualityStatus: any;
|
|
24
|
+
/**
|
|
25
|
+
* Creates a new instance of NetworkQualityMonitor
|
|
26
|
+
* @constructor
|
|
27
|
+
* @public
|
|
28
|
+
* @param {Object} config
|
|
29
|
+
* @property {Object} indicatorTypes - network properties used to evaluate network quality used as constants
|
|
30
|
+
* @property {Object} frequencyTypes - frequency properties used as constants {uplink|send} {downlink|receive}
|
|
31
|
+
* @property {number} networkQualityScore - 0|1 1 is acceptable 0 is bad/unknown
|
|
32
|
+
* @property {Object} networkQualityStatus - hash object based on indicatorTypes and frequencyTypes
|
|
33
|
+
* @property {string} mediaType - audio|video
|
|
34
|
+
*/
|
|
35
|
+
constructor(config: any);
|
|
36
|
+
/**
|
|
37
|
+
* emits NETWORK_QUALITY event on meeting with payload of media type and uplinkNetworkQuality score
|
|
38
|
+
*
|
|
39
|
+
* @memberof NetworkQualityMonitor
|
|
40
|
+
* @returns {void}
|
|
41
|
+
*/
|
|
42
|
+
emitNetworkQuality(): void;
|
|
43
|
+
/**
|
|
44
|
+
* invokes emitNetworkQuality method resets values back to default
|
|
45
|
+
* @returns {void}
|
|
46
|
+
* @memberof NetworkQualityMonitor
|
|
47
|
+
*/
|
|
48
|
+
updateNetworkQualityStatus(): void;
|
|
49
|
+
/**
|
|
50
|
+
* filter data to determine uplink network quality, invoked on same interval as stats analyzer remote-inbout-rtp
|
|
51
|
+
* @param {Object} configObj
|
|
52
|
+
* @param {string} configObj.mediaType {audio|video}
|
|
53
|
+
* @param {RTCStats} configObj.remoteRtpResults RTC stats remote obj
|
|
54
|
+
* @param {Object} configObj.statsAnalyzerCurrentStats statsResults
|
|
55
|
+
* @returns {void}
|
|
56
|
+
* @public
|
|
57
|
+
* @memberof NetworkQualityMonitor
|
|
58
|
+
*/
|
|
59
|
+
determineUplinkNetworkQuality({ mediaType, remoteRtpResults, statsAnalyzerCurrentStats, }: {
|
|
60
|
+
mediaType: string;
|
|
61
|
+
remoteRtpResults: any;
|
|
62
|
+
statsAnalyzerCurrentStats: object;
|
|
63
|
+
}): void;
|
|
64
|
+
/**
|
|
65
|
+
* Get the current status of network quaility object - networkQualityStatus
|
|
66
|
+
* @returns {Object}
|
|
67
|
+
* @public
|
|
68
|
+
*/
|
|
69
|
+
get networkQualityStats(): any;
|
|
70
|
+
}
|