@webex/plugin-meetings 3.0.0-beta.11 → 3.0.0-beta.111
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/UPGRADING.md +9 -9
- package/browsers.js +19 -24
- package/dist/annotation/annotation.types.js +7 -0
- package/dist/annotation/annotation.types.js.map +1 -0
- package/dist/annotation/constants.js +48 -0
- package/dist/annotation/constants.js.map +1 -0
- package/dist/annotation/index.js +357 -0
- package/dist/annotation/index.js.map +1 -0
- package/dist/breakouts/breakout.js +176 -0
- package/dist/breakouts/breakout.js.map +1 -0
- package/dist/breakouts/collection.js +23 -0
- package/dist/breakouts/collection.js.map +1 -0
- package/dist/breakouts/edit-lock-error.js +52 -0
- package/dist/breakouts/edit-lock-error.js.map +1 -0
- package/dist/breakouts/events.js +43 -0
- package/dist/breakouts/events.js.map +1 -0
- package/dist/breakouts/index.js +944 -0
- package/dist/breakouts/index.js.map +1 -0
- package/dist/breakouts/request.js +78 -0
- package/dist/breakouts/request.js.map +1 -0
- package/dist/breakouts/utils.js +67 -0
- package/dist/breakouts/utils.js.map +1 -0
- package/dist/common/browser-detection.js +1 -20
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +5 -20
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js +0 -7
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +5 -26
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +5 -26
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +6 -27
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +5 -26
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.js +5 -33
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +5 -26
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +4 -25
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reconnection-in-progress.js +0 -17
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +5 -26
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +5 -26
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +6 -41
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +1 -24
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +0 -22
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +0 -23
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js +0 -12
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js +0 -15
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js +0 -4
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -8
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +35 -61
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +4 -14
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +6 -6
- package/dist/config.js.map +1 -1
- package/dist/constants.js +193 -53
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +14 -0
- package/dist/controls-options-manager/constants.js.map +1 -0
- package/dist/controls-options-manager/enums.js +27 -0
- package/dist/controls-options-manager/enums.js.map +1 -0
- package/dist/controls-options-manager/index.js +297 -0
- package/dist/controls-options-manager/index.js.map +1 -0
- package/dist/controls-options-manager/types.js +7 -0
- package/dist/controls-options-manager/types.js.map +1 -0
- package/dist/controls-options-manager/util.js +286 -0
- package/dist/controls-options-manager/util.js.map +1 -0
- package/dist/index.js +72 -17
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +94 -29
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js +3 -26
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +0 -15
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js +4 -12
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.js +383 -212
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +0 -38
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +12 -38
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +88 -123
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +99 -91
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +62 -147
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +71 -117
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +2 -9
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +505 -495
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +67 -14
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +2477 -2417
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +252 -113
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +296 -289
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js +7 -0
- package/dist/meeting/request.type.js.map +1 -0
- package/dist/meeting/state.js +21 -31
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js +58 -217
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +3 -25
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +10 -33
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +278 -281
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +1 -16
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +98 -183
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +155 -232
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +24 -20
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +675 -593
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +23 -42
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +177 -155
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +89 -88
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js +15 -0
- package/dist/member/types.js.map +1 -0
- package/dist/member/util.js +101 -69
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +12 -12
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +162 -204
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +58 -53
- package/dist/members/request.js.map +1 -1
- package/dist/members/types.js +15 -0
- package/dist/members/types.js.map +1 -0
- package/dist/members/util.js +107 -44
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js +50 -16
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js +3 -7
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +93 -162
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +167 -50
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +58 -65
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +74 -93
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +55 -74
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +6 -40
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +466 -442
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +32 -59
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +10 -45
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +2 -33
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js +0 -13
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.js +190 -199
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +14 -23
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/constants.js +13 -0
- package/dist/reactions/constants.js.map +1 -0
- package/dist/reactions/reactions.js +2 -4
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.js +19 -23
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.js +326 -465
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.js +17 -0
- package/dist/recording-controller/enums.js.map +1 -0
- package/dist/recording-controller/index.js +343 -0
- package/dist/recording-controller/index.js.map +1 -0
- package/dist/recording-controller/util.js +63 -0
- package/dist/recording-controller/util.js.map +1 -0
- package/dist/roap/index.js +38 -67
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +143 -134
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +149 -101
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/statsAnalyzer/global.js +1 -95
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +369 -461
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +144 -94
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +13 -45
- package/dist/transcription/index.js.map +1 -1
- package/dist/types/annotation/annotation.types.d.ts +34 -0
- package/dist/types/annotation/constants.d.ts +31 -0
- package/dist/types/annotation/index.d.ts +124 -0
- package/dist/types/breakouts/breakout.d.ts +8 -0
- package/dist/types/breakouts/collection.d.ts +5 -0
- package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
- package/dist/types/breakouts/events.d.ts +2 -0
- package/dist/types/breakouts/index.d.ts +5 -0
- package/dist/types/breakouts/request.d.ts +22 -0
- package/dist/types/breakouts/utils.d.ts +15 -0
- package/dist/types/common/browser-detection.d.ts +9 -0
- package/dist/types/common/collection.d.ts +48 -0
- package/dist/types/common/config.d.ts +2 -0
- package/dist/types/common/errors/captcha-error.d.ts +15 -0
- package/dist/types/common/errors/intent-to-join.d.ts +16 -0
- package/dist/types/common/errors/join-meeting.d.ts +17 -0
- package/dist/types/common/errors/media.d.ts +15 -0
- package/dist/types/common/errors/parameter.d.ts +15 -0
- package/dist/types/common/errors/password-error.d.ts +15 -0
- package/dist/types/common/errors/permission.d.ts +14 -0
- package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
- package/dist/types/common/errors/reconnection.d.ts +15 -0
- package/dist/types/common/errors/stats.d.ts +15 -0
- package/dist/types/common/errors/webex-errors.d.ts +69 -0
- package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
- package/dist/types/common/events/events-scope.d.ts +17 -0
- package/dist/types/common/events/events.d.ts +12 -0
- package/dist/types/common/events/trigger-proxy.d.ts +2 -0
- package/dist/types/common/events/util.d.ts +2 -0
- package/dist/types/common/logs/logger-config.d.ts +2 -0
- package/dist/types/common/logs/logger-proxy.d.ts +2 -0
- package/dist/types/common/logs/request.d.ts +34 -0
- package/dist/types/common/queue.d.ts +32 -0
- package/dist/types/config.d.ts +78 -0
- package/dist/types/constants.d.ts +984 -0
- package/dist/types/controls-options-manager/constants.d.ts +4 -0
- package/dist/types/controls-options-manager/enums.d.ts +15 -0
- package/dist/types/controls-options-manager/index.d.ts +136 -0
- package/dist/types/controls-options-manager/types.d.ts +43 -0
- package/dist/types/controls-options-manager/util.d.ts +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/locus-info/controlsUtils.d.ts +2 -0
- package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
- package/dist/types/locus-info/fullState.d.ts +2 -0
- package/dist/types/locus-info/hostUtils.d.ts +2 -0
- package/dist/types/locus-info/index.d.ts +315 -0
- package/dist/types/locus-info/infoUtils.d.ts +2 -0
- package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
- package/dist/types/locus-info/parser.d.ts +212 -0
- package/dist/types/locus-info/selfUtils.d.ts +2 -0
- package/dist/types/media/index.d.ts +34 -0
- package/dist/types/media/properties.d.ts +108 -0
- package/dist/types/media/util.d.ts +2 -0
- package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +137 -0
- package/dist/types/meeting/index.d.ts +1753 -0
- package/dist/types/meeting/muteState.d.ts +185 -0
- package/dist/types/meeting/request.d.ts +275 -0
- package/dist/types/meeting/request.type.d.ts +11 -0
- package/dist/types/meeting/state.d.ts +9 -0
- package/dist/types/meeting/util.d.ts +2 -0
- package/dist/types/meeting-info/collection.d.ts +20 -0
- package/dist/types/meeting-info/index.d.ts +57 -0
- package/dist/types/meeting-info/meeting-info-v2.d.ts +115 -0
- package/dist/types/meeting-info/request.d.ts +22 -0
- package/dist/types/meeting-info/util.d.ts +2 -0
- package/dist/types/meeting-info/utilv2.d.ts +2 -0
- package/dist/types/meetings/collection.d.ts +31 -0
- package/dist/types/meetings/index.d.ts +345 -0
- package/dist/types/meetings/request.d.ts +27 -0
- package/dist/types/meetings/util.d.ts +18 -0
- package/dist/types/member/index.d.ts +157 -0
- package/dist/types/member/types.d.ts +21 -0
- package/dist/types/member/util.d.ts +2 -0
- package/dist/types/members/collection.d.ts +29 -0
- package/dist/types/members/index.d.ts +353 -0
- package/dist/types/members/request.d.ts +69 -0
- package/dist/types/members/types.d.ts +24 -0
- package/dist/types/members/util.d.ts +2 -0
- package/dist/types/metrics/config.d.ts +195 -0
- package/dist/types/metrics/constants.d.ts +54 -0
- package/dist/types/metrics/index.d.ts +169 -0
- package/dist/types/multistream/mediaRequestManager.d.ts +101 -0
- package/dist/types/multistream/receiveSlot.d.ts +68 -0
- package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
- package/dist/types/multistream/remoteMedia.d.ts +72 -0
- package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
- package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
- package/dist/types/networkQualityMonitor/index.d.ts +70 -0
- package/dist/types/personal-meeting-room/index.d.ts +47 -0
- package/dist/types/personal-meeting-room/request.d.ts +14 -0
- package/dist/types/personal-meeting-room/util.d.ts +2 -0
- package/dist/types/reachability/index.d.ts +152 -0
- package/dist/types/reachability/request.d.ts +37 -0
- package/dist/types/reactions/constants.d.ts +3 -0
- package/dist/types/reactions/reactions.d.ts +4 -0
- package/dist/types/reactions/reactions.type.d.ts +52 -0
- package/dist/types/reconnection-manager/index.d.ts +126 -0
- package/dist/types/recording-controller/enums.d.ts +7 -0
- package/dist/types/recording-controller/index.d.ts +193 -0
- package/dist/types/recording-controller/util.d.ts +13 -0
- package/dist/types/roap/index.d.ts +77 -0
- package/dist/types/roap/request.d.ts +38 -0
- package/dist/types/roap/turnDiscovery.d.ts +88 -0
- package/dist/types/statsAnalyzer/global.d.ts +36 -0
- package/dist/types/statsAnalyzer/index.d.ts +200 -0
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
- package/dist/types/transcription/index.d.ts +64 -0
- package/internal-README.md +7 -6
- package/package.json +28 -21
- package/src/annotation/annotation.types.ts +41 -0
- package/src/annotation/constants.ts +36 -0
- package/src/annotation/index.ts +339 -0
- package/src/breakouts/README.md +220 -0
- package/src/breakouts/breakout.ts +141 -0
- package/src/breakouts/collection.ts +19 -0
- package/src/breakouts/edit-lock-error.ts +25 -0
- package/src/breakouts/events.ts +37 -0
- package/src/breakouts/index.ts +835 -0
- package/src/breakouts/request.ts +55 -0
- package/src/breakouts/utils.ts +57 -0
- package/src/common/browser-detection.ts +9 -6
- package/src/common/collection.ts +3 -1
- package/src/common/errors/captcha-error.ts +6 -6
- package/src/common/errors/intent-to-join.ts +6 -6
- package/src/common/errors/join-meeting.ts +12 -8
- package/src/common/errors/media.ts +6 -6
- package/src/common/errors/parameter.ts +9 -6
- package/src/common/errors/password-error.ts +6 -6
- package/src/common/errors/permission.ts +5 -5
- package/src/common/errors/reconnection.ts +6 -6
- package/src/common/errors/stats.ts +6 -6
- package/src/common/errors/webex-errors.ts +7 -5
- package/src/common/errors/webex-meetings-error.ts +1 -1
- package/src/common/events/events-scope.ts +5 -1
- package/src/common/events/events.ts +5 -1
- package/src/common/events/trigger-proxy.ts +8 -3
- package/src/common/events/util.ts +1 -2
- package/src/common/logs/logger-proxy.ts +21 -10
- package/src/common/logs/request.ts +11 -8
- package/src/config.ts +16 -12
- package/src/constants.ts +141 -6
- package/src/controls-options-manager/constants.ts +5 -0
- package/src/controls-options-manager/enums.ts +18 -0
- package/src/controls-options-manager/index.ts +278 -0
- package/src/controls-options-manager/types.ts +59 -0
- package/src/controls-options-manager/util.ts +274 -0
- package/src/index.ts +33 -0
- package/src/locus-info/controlsUtils.ts +145 -24
- package/src/locus-info/fullState.ts +15 -11
- package/src/locus-info/hostUtils.ts +4 -3
- package/src/locus-info/index.ts +326 -55
- package/src/locus-info/infoUtils.ts +12 -4
- package/src/locus-info/mediaSharesUtils.ts +4 -4
- package/src/locus-info/parser.ts +46 -68
- package/src/locus-info/selfUtils.ts +187 -56
- package/src/media/index.ts +142 -172
- package/src/media/properties.ts +43 -36
- package/src/media/util.ts +1 -1
- package/src/mediaQualityMetrics/config.ts +380 -378
- package/src/meeting/in-meeting-actions.ts +139 -3
- package/src/meeting/index.ts +2674 -1543
- package/src/meeting/muteState.ts +271 -68
- package/src/meeting/request.ts +231 -135
- package/src/meeting/request.type.ts +13 -0
- package/src/meeting/state.ts +45 -30
- package/src/meeting/util.ts +119 -110
- package/src/meeting-info/collection.ts +2 -1
- package/src/meeting-info/index.ts +32 -30
- package/src/meeting-info/meeting-info-v2.ts +201 -113
- package/src/meeting-info/request.ts +9 -3
- package/src/meeting-info/util.ts +54 -46
- package/src/meeting-info/utilv2.ts +70 -55
- package/src/meetings/collection.ts +21 -1
- package/src/meetings/index.ts +749 -437
- package/src/meetings/request.ts +29 -25
- package/src/meetings/util.ts +122 -33
- package/src/member/index.ts +95 -49
- package/src/member/types.ts +24 -0
- package/src/member/util.ts +106 -13
- package/src/members/collection.ts +8 -1
- package/src/members/index.ts +281 -129
- package/src/members/request.ts +87 -14
- package/src/members/types.ts +28 -0
- package/src/members/util.ts +140 -49
- package/src/metrics/config.ts +302 -90
- package/src/metrics/constants.ts +1 -6
- package/src/metrics/index.ts +124 -95
- package/src/multistream/mediaRequestManager.ts +203 -45
- package/src/multistream/receiveSlot.ts +69 -26
- package/src/multistream/receiveSlotManager.ts +62 -38
- package/src/multistream/remoteMedia.ts +30 -4
- package/src/multistream/remoteMediaGroup.ts +4 -3
- package/src/multistream/remoteMediaManager.ts +230 -66
- package/src/networkQualityMonitor/index.ts +24 -27
- package/src/personal-meeting-room/index.ts +12 -16
- package/src/personal-meeting-room/request.ts +10 -3
- package/src/personal-meeting-room/util.ts +3 -3
- package/src/reachability/index.ts +131 -79
- package/src/reachability/request.ts +43 -34
- package/src/reactions/constants.ts +4 -0
- package/src/reactions/reactions.ts +8 -8
- package/src/reactions/reactions.type.ts +31 -5
- package/src/reconnection-manager/index.ts +193 -111
- package/src/recording-controller/enums.ts +8 -0
- package/src/recording-controller/index.ts +315 -0
- package/src/recording-controller/util.ts +58 -0
- package/src/roap/index.ts +63 -51
- package/src/roap/request.ts +86 -53
- package/src/roap/turnDiscovery.ts +105 -46
- package/src/statsAnalyzer/global.ts +8 -104
- package/src/statsAnalyzer/index.ts +624 -376
- package/src/statsAnalyzer/mqaUtil.ts +203 -90
- package/src/transcription/index.ts +34 -32
- package/test/integration/spec/converged-space-meetings.js +177 -0
- package/test/integration/spec/journey.js +670 -466
- package/test/integration/spec/space-meeting.js +320 -204
- package/test/integration/spec/transcription.js +7 -8
- package/test/unit/spec/annotation/index.ts +435 -0
- package/test/unit/spec/breakouts/breakout.ts +184 -0
- package/test/unit/spec/breakouts/collection.ts +15 -0
- package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
- package/test/unit/spec/breakouts/events.ts +77 -0
- package/test/unit/spec/breakouts/index.ts +1542 -0
- package/test/unit/spec/breakouts/request.ts +104 -0
- package/test/unit/spec/breakouts/utils.js +72 -0
- package/test/unit/spec/common/browser-detection.js +9 -28
- package/test/unit/spec/controls-options-manager/index.js +287 -0
- package/test/unit/spec/controls-options-manager/util.js +504 -0
- package/test/unit/spec/fixture/locus.js +93 -90
- package/test/unit/spec/locus-info/controlsUtils.js +289 -32
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +585 -5
- package/test/unit/spec/locus-info/infoUtils.js +26 -33
- package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
- package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
- package/test/unit/spec/locus-info/parser.js +3 -9
- package/test/unit/spec/locus-info/selfConstant.js +110 -103
- package/test/unit/spec/locus-info/selfUtils.js +236 -12
- package/test/unit/spec/media/index.ts +104 -8
- package/test/unit/spec/media/properties.ts +9 -9
- package/test/unit/spec/meeting/in-meeting-actions.ts +66 -3
- package/test/unit/spec/meeting/index.js +2934 -946
- package/test/unit/spec/meeting/muteState.js +368 -70
- package/test/unit/spec/meeting/request.js +194 -44
- package/test/unit/spec/meeting/utils.js +146 -165
- package/test/unit/spec/meeting-info/meetinginfov2.js +333 -74
- package/test/unit/spec/meeting-info/request.js +7 -9
- package/test/unit/spec/meeting-info/util.js +11 -12
- package/test/unit/spec/meeting-info/utilv2.js +131 -74
- package/test/unit/spec/meetings/collection.js +15 -1
- package/test/unit/spec/meetings/index.js +1052 -329
- package/test/unit/spec/meetings/utils.js +163 -14
- package/test/unit/spec/member/index.js +24 -1
- package/test/unit/spec/member/util.js +383 -32
- package/test/unit/spec/members/index.js +402 -54
- package/test/unit/spec/members/request.js +76 -20
- package/test/unit/spec/members/utils.js +191 -4
- package/test/unit/spec/metrics/index.js +104 -20
- package/test/unit/spec/multistream/mediaRequestManager.ts +650 -105
- package/test/unit/spec/multistream/receiveSlot.ts +76 -17
- package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
- package/test/unit/spec/multistream/remoteMedia.ts +32 -2
- package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
- package/test/unit/spec/multistream/remoteMediaManager.ts +549 -65
- package/test/unit/spec/networkQualityMonitor/index.js +24 -18
- package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
- package/test/unit/spec/reachability/index.ts +176 -27
- package/test/unit/spec/reachability/request.js +66 -0
- package/test/unit/spec/reconnection-manager/index.js +62 -31
- package/test/unit/spec/recording-controller/index.js +231 -0
- package/test/unit/spec/recording-controller/util.js +102 -0
- package/test/unit/spec/roap/index.ts +21 -16
- package/test/unit/spec/roap/request.ts +217 -0
- package/test/unit/spec/roap/turnDiscovery.ts +93 -49
- package/test/unit/spec/stats-analyzer/index.js +116 -60
- package/test/utils/cmr.js +44 -42
- package/test/utils/constants.js +9 -0
- package/test/utils/integrationTestUtils.js +64 -0
- package/test/utils/testUtils.js +63 -99
- package/test/utils/webex-config.js +22 -18
- package/test/utils/webex-test-users.js +57 -50
- package/tsconfig.json +6 -0
- package/dist/media/internal-media-core-wrapper.js +0 -22
- package/dist/media/internal-media-core-wrapper.js.map +0 -1
- package/dist/meeting/effectsState.js +0 -334
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/multistream/multistreamMedia.js +0 -116
- package/dist/multistream/multistreamMedia.js.map +0 -1
- package/src/index.js +0 -15
- package/src/media/internal-media-core-wrapper.ts +0 -9
- package/src/meeting/effectsState.ts +0 -211
- package/src/multistream/multistreamMedia.ts +0 -92
- package/test/unit/spec/meeting/effectsState.js +0 -291
package/dist/meetings/util.js
CHANGED
|
@@ -1,74 +1,59 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
-
|
|
5
4
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
6
|
-
|
|
7
5
|
_Object$defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
|
-
|
|
11
8
|
exports.default = void 0;
|
|
12
|
-
|
|
13
9
|
var _now = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/date/now"));
|
|
14
|
-
|
|
15
10
|
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
|
|
16
|
-
|
|
17
11
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
|
|
18
|
-
|
|
19
12
|
var _constants = require("../constants");
|
|
20
|
-
|
|
21
13
|
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
22
|
-
|
|
23
14
|
var _triggerProxy = _interopRequireDefault(require("../common/events/trigger-proxy"));
|
|
24
|
-
|
|
25
15
|
/* globals window */
|
|
26
16
|
|
|
27
17
|
/**
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
18
|
+
* Meetings Media Codec Missing Event
|
|
19
|
+
* Emitted when H.264 codec is not
|
|
20
|
+
* found in the browser.
|
|
21
|
+
* @event media:codec:missing
|
|
22
|
+
* @instance
|
|
23
|
+
* @memberof MeetingsUtil
|
|
24
|
+
*/
|
|
35
25
|
|
|
36
26
|
/**
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
var MeetingsUtil = {};
|
|
27
|
+
* Meetings Media Codec Loaded Event
|
|
28
|
+
* Emitted when H.264 codec has been
|
|
29
|
+
* loaded in the browser.
|
|
30
|
+
* @event media:codec:loaded
|
|
31
|
+
* @instance
|
|
32
|
+
* @memberof MeetingsUtil
|
|
33
|
+
*/
|
|
45
34
|
|
|
35
|
+
var MeetingsUtil = {};
|
|
46
36
|
MeetingsUtil.getMeetingAddedType = function (type) {
|
|
47
37
|
return type === _constants._LOCUS_ID_ ? _constants._INCOMING_ : _constants._CREATED_;
|
|
48
38
|
};
|
|
49
|
-
|
|
50
39
|
MeetingsUtil.handleRoapMercury = function (envelope, meetingCollection) {
|
|
51
40
|
var data = envelope.data;
|
|
52
41
|
var eventType = data.eventType;
|
|
53
|
-
|
|
54
42
|
if (eventType === _constants.LOCUSEVENT.MESSAGE_ROAP) {
|
|
55
43
|
var meeting = meetingCollection.getByKey(_constants.CORRELATION_ID, data.correlationId);
|
|
56
|
-
|
|
57
44
|
if (meeting) {
|
|
58
45
|
var _data$message = data.message,
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
46
|
+
seq = _data$message.seq,
|
|
47
|
+
messageType = _data$message.messageType,
|
|
48
|
+
tieBreaker = _data$message.tieBreaker,
|
|
49
|
+
errorType = _data$message.errorType,
|
|
50
|
+
errorCause = _data$message.errorCause;
|
|
65
51
|
if (messageType === _constants.ROAP.ROAP_TYPES.TURN_DISCOVERY_RESPONSE) {
|
|
66
52
|
// turn discovery is not part of normal roap protocol and so we are not handling it
|
|
67
53
|
// through the usual roap state machine
|
|
68
54
|
meeting.roap.turnDiscovery.handleTurnDiscoveryResponse(data.message);
|
|
69
55
|
} else {
|
|
70
56
|
var _data$message$sdps;
|
|
71
|
-
|
|
72
57
|
var roapMessage = {
|
|
73
58
|
seq: seq,
|
|
74
59
|
messageType: messageType,
|
|
@@ -77,96 +62,98 @@ MeetingsUtil.handleRoapMercury = function (envelope, meetingCollection) {
|
|
|
77
62
|
errorType: errorType,
|
|
78
63
|
errorCause: errorCause
|
|
79
64
|
};
|
|
65
|
+
var mediaServer = MeetingsUtil.getMediaServer(roapMessage.sdp);
|
|
80
66
|
meeting.mediaProperties.webrtcMediaConnection.roapMessageReceived(roapMessage);
|
|
67
|
+
if (mediaServer) {
|
|
68
|
+
meeting.mediaProperties.webrtcMediaConnection.mediaServer = mediaServer;
|
|
69
|
+
}
|
|
81
70
|
}
|
|
82
71
|
}
|
|
83
72
|
}
|
|
84
73
|
};
|
|
85
|
-
|
|
74
|
+
MeetingsUtil.getMediaServer = function (sdp) {
|
|
75
|
+
var mediaServer;
|
|
76
|
+
|
|
77
|
+
// Attempt to collect the media server from the roap message.
|
|
78
|
+
try {
|
|
79
|
+
mediaServer = sdp.split('\r\n').find(function (line) {
|
|
80
|
+
return line.startsWith('o=');
|
|
81
|
+
}).split(' ').shift().replace('o=', '');
|
|
82
|
+
} catch (_unused) {
|
|
83
|
+
mediaServer = undefined;
|
|
84
|
+
}
|
|
85
|
+
return mediaServer;
|
|
86
|
+
};
|
|
86
87
|
MeetingsUtil.checkForCorrelationId = function (deviceUrl, locus) {
|
|
87
88
|
var devices = [];
|
|
88
|
-
|
|
89
89
|
if (locus) {
|
|
90
90
|
if (locus && locus.self && locus.self.devices) {
|
|
91
91
|
devices = locus.self.devices;
|
|
92
92
|
}
|
|
93
|
-
|
|
94
93
|
var foundDevice = devices.find(function (device) {
|
|
95
94
|
return device.url === deviceUrl;
|
|
96
95
|
});
|
|
97
|
-
|
|
98
96
|
if (foundDevice && foundDevice.correlationId) {
|
|
99
97
|
return foundDevice.correlationId;
|
|
100
98
|
}
|
|
101
99
|
}
|
|
102
|
-
|
|
103
100
|
return false;
|
|
104
101
|
};
|
|
105
|
-
|
|
106
102
|
MeetingsUtil.parseDefaultSiteFromMeetingPreferences = function (userPreferences) {
|
|
103
|
+
var _userPreferences$site;
|
|
107
104
|
var result = '';
|
|
108
|
-
|
|
109
|
-
if (userPreferences && userPreferences.sites) {
|
|
105
|
+
if (userPreferences !== null && userPreferences !== void 0 && (_userPreferences$site = userPreferences.sites) !== null && _userPreferences$site !== void 0 && _userPreferences$site.length) {
|
|
110
106
|
var defaultSite = userPreferences.sites.find(function (site) {
|
|
111
107
|
return site.default;
|
|
112
108
|
});
|
|
113
|
-
|
|
114
109
|
if (defaultSite) {
|
|
115
110
|
result = defaultSite.siteUrl;
|
|
111
|
+
} else {
|
|
112
|
+
result = userPreferences.sites[0].siteUrl;
|
|
116
113
|
}
|
|
117
114
|
}
|
|
118
|
-
|
|
119
115
|
return result;
|
|
120
116
|
};
|
|
117
|
+
|
|
121
118
|
/**
|
|
122
119
|
* Will check to see if the H.264 media codec is supported.
|
|
123
120
|
* @async
|
|
124
121
|
* @private
|
|
125
122
|
* @returns {Promise<boolean>}
|
|
126
123
|
*/
|
|
127
|
-
|
|
128
|
-
|
|
129
124
|
MeetingsUtil.hasH264Codec = /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
130
125
|
var hasCodec, pc, offer;
|
|
131
126
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
132
|
-
while (1) {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
_loggerProxy.default.logger.warn('Meetings:util#hasH264Codec --> Error creating peerConnection for H.264 test.');
|
|
159
|
-
|
|
160
|
-
case 13:
|
|
161
|
-
return _context.abrupt("return", hasCodec);
|
|
162
|
-
|
|
163
|
-
case 14:
|
|
164
|
-
case "end":
|
|
165
|
-
return _context.stop();
|
|
166
|
-
}
|
|
127
|
+
while (1) switch (_context.prev = _context.next) {
|
|
128
|
+
case 0:
|
|
129
|
+
hasCodec = false;
|
|
130
|
+
_context.prev = 1;
|
|
131
|
+
pc = new window.RTCPeerConnection();
|
|
132
|
+
_context.next = 5;
|
|
133
|
+
return pc.createOffer({
|
|
134
|
+
offerToReceiveVideo: true
|
|
135
|
+
});
|
|
136
|
+
case 5:
|
|
137
|
+
offer = _context.sent;
|
|
138
|
+
if (offer.sdp.match(/^a=rtpmap:\d+\s+H264\/\d+/m)) {
|
|
139
|
+
hasCodec = true;
|
|
140
|
+
}
|
|
141
|
+
pc.close();
|
|
142
|
+
_context.next = 13;
|
|
143
|
+
break;
|
|
144
|
+
case 10:
|
|
145
|
+
_context.prev = 10;
|
|
146
|
+
_context.t0 = _context["catch"](1);
|
|
147
|
+
_loggerProxy.default.logger.warn('Meetings:util#hasH264Codec --> Error creating peerConnection for H.264 test.');
|
|
148
|
+
case 13:
|
|
149
|
+
return _context.abrupt("return", hasCodec);
|
|
150
|
+
case 14:
|
|
151
|
+
case "end":
|
|
152
|
+
return _context.stop();
|
|
167
153
|
}
|
|
168
154
|
}, _callee, null, [[1, 10]]);
|
|
169
155
|
}));
|
|
156
|
+
|
|
170
157
|
/**
|
|
171
158
|
* Notifies the user whether or not the H.264
|
|
172
159
|
* codec is present. Will continuously check
|
|
@@ -178,97 +165,132 @@ MeetingsUtil.hasH264Codec = /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__P
|
|
|
178
165
|
* @param {boolean} options.disableNotifications Default is false. Boolean to enable/disable notification and events
|
|
179
166
|
* @returns {undefined}
|
|
180
167
|
*/
|
|
181
|
-
|
|
182
168
|
MeetingsUtil.checkH264Support = /*#__PURE__*/function () {
|
|
183
169
|
var _checkH264Support = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(options) {
|
|
184
170
|
var _this = this;
|
|
185
|
-
|
|
186
171
|
var hasH264Codec, _ref2, firstChecked, disableNotifications, delay, maxDuration, shouldTrigger, shouldStopChecking;
|
|
187
|
-
|
|
188
172
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
189
|
-
while (1) {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
173
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
174
|
+
case 0:
|
|
175
|
+
hasH264Codec = MeetingsUtil.hasH264Codec;
|
|
176
|
+
_ref2 = options || {}, firstChecked = _ref2.firstChecked, disableNotifications = _ref2.disableNotifications;
|
|
177
|
+
delay = 5e3; // ms
|
|
178
|
+
maxDuration = 3e5; // ms
|
|
179
|
+
shouldTrigger = firstChecked === undefined;
|
|
180
|
+
shouldStopChecking = firstChecked && (0, _now.default)() - firstChecked >= maxDuration; // Disable notifications and start H.264 download only
|
|
181
|
+
if (!disableNotifications) {
|
|
182
|
+
_context2.next = 9;
|
|
183
|
+
break;
|
|
184
|
+
}
|
|
185
|
+
hasH264Codec();
|
|
186
|
+
return _context2.abrupt("return");
|
|
187
|
+
case 9:
|
|
188
|
+
_context2.next = 11;
|
|
189
|
+
return hasH264Codec();
|
|
190
|
+
case 11:
|
|
191
|
+
if (!_context2.sent) {
|
|
192
|
+
_context2.next = 15;
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
_triggerProxy.default.trigger(this, {
|
|
196
|
+
file: 'meetings/util',
|
|
197
|
+
function: 'checkH264Support'
|
|
198
|
+
}, _constants.EVENT_TRIGGERS.MEDIA_CODEC_LOADED);
|
|
199
|
+
_loggerProxy.default.logger.log('Meetings:util#checkH264Support --> H264 codec loaded successfully.');
|
|
200
|
+
return _context2.abrupt("return");
|
|
201
|
+
case 15:
|
|
202
|
+
if (!shouldStopChecking) {
|
|
203
|
+
_context2.next = 18;
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
_loggerProxy.default.logger.error('Meetings:util#checkH264Support --> Timed out waiting for H264 codec to load.');
|
|
207
|
+
return _context2.abrupt("return");
|
|
208
|
+
case 18:
|
|
209
|
+
// Trigger only once
|
|
210
|
+
if (shouldTrigger) {
|
|
219
211
|
_triggerProxy.default.trigger(this, {
|
|
220
212
|
file: 'meetings/util',
|
|
221
213
|
function: 'checkH264Support'
|
|
222
|
-
}, _constants.EVENT_TRIGGERS.
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
return _context2.abrupt("return");
|
|
227
|
-
|
|
228
|
-
case 15:
|
|
229
|
-
if (!shouldStopChecking) {
|
|
230
|
-
_context2.next = 18;
|
|
231
|
-
break;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
_loggerProxy.default.logger.error('Meetings:util#checkH264Support --> Timed out waiting for H264 codec to load.');
|
|
235
|
-
|
|
236
|
-
return _context2.abrupt("return");
|
|
237
|
-
|
|
238
|
-
case 18:
|
|
239
|
-
// Trigger only once
|
|
240
|
-
if (shouldTrigger) {
|
|
241
|
-
_triggerProxy.default.trigger(this, {
|
|
242
|
-
file: 'meetings/util',
|
|
243
|
-
function: 'checkH264Support'
|
|
244
|
-
}, _constants.EVENT_TRIGGERS.MEDIA_CODEC_MISSING);
|
|
245
|
-
|
|
246
|
-
_loggerProxy.default.logger.log('Meetings:util#checkH264Support --> H264 codec is missing.');
|
|
247
|
-
} // Keep checking in intervals to see if codec loaded
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
window.setTimeout(function () {
|
|
251
|
-
var timestamp = firstChecked || (0, _now.default)();
|
|
252
|
-
MeetingsUtil.checkH264Support.call(_this, {
|
|
253
|
-
firstChecked: timestamp
|
|
254
|
-
});
|
|
255
|
-
}, delay);
|
|
214
|
+
}, _constants.EVENT_TRIGGERS.MEDIA_CODEC_MISSING);
|
|
215
|
+
_loggerProxy.default.logger.log('Meetings:util#checkH264Support --> H264 codec is missing.');
|
|
216
|
+
}
|
|
256
217
|
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
218
|
+
// Keep checking in intervals to see if codec loaded
|
|
219
|
+
window.setTimeout(function () {
|
|
220
|
+
var timestamp = firstChecked || (0, _now.default)();
|
|
221
|
+
MeetingsUtil.checkH264Support.call(_this, {
|
|
222
|
+
firstChecked: timestamp
|
|
223
|
+
});
|
|
224
|
+
}, delay);
|
|
225
|
+
case 20:
|
|
226
|
+
case "end":
|
|
227
|
+
return _context2.stop();
|
|
261
228
|
}
|
|
262
229
|
}, _callee2, this);
|
|
263
230
|
}));
|
|
264
|
-
|
|
265
231
|
function checkH264Support(_x) {
|
|
266
232
|
return _checkH264Support.apply(this, arguments);
|
|
267
233
|
}
|
|
268
|
-
|
|
269
234
|
return checkH264Support;
|
|
270
235
|
}();
|
|
271
236
|
|
|
237
|
+
/**
|
|
238
|
+
* get device from locus data
|
|
239
|
+
* @param {Object} newLocus new locus data
|
|
240
|
+
* @param {String} deviceUrl current device url
|
|
241
|
+
* @returns {Object}
|
|
242
|
+
*/
|
|
243
|
+
MeetingsUtil.getThisDevice = function (newLocus, deviceUrl) {
|
|
244
|
+
var _newLocus$self, _newLocus$self$device;
|
|
245
|
+
if ((newLocus === null || newLocus === void 0 ? void 0 : (_newLocus$self = newLocus.self) === null || _newLocus$self === void 0 ? void 0 : (_newLocus$self$device = _newLocus$self.devices) === null || _newLocus$self$device === void 0 ? void 0 : _newLocus$self$device.length) > 0) {
|
|
246
|
+
return newLocus.self.devices.find(function (device) {
|
|
247
|
+
return device.url === deviceUrl;
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
return null;
|
|
251
|
+
};
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* get self device joined status from locus data
|
|
255
|
+
* @param {Object} meeting current meeting data
|
|
256
|
+
* @param {Object} newLocus new locus data
|
|
257
|
+
* @param {String} deviceUrl current device url
|
|
258
|
+
* @returns {Object}
|
|
259
|
+
*/
|
|
260
|
+
MeetingsUtil.joinedOnThisDevice = function (meeting, newLocus, deviceUrl) {
|
|
261
|
+
var thisDevice = MeetingsUtil.getThisDevice(newLocus, deviceUrl);
|
|
262
|
+
if (thisDevice) {
|
|
263
|
+
if (!thisDevice.correlationId || (meeting === null || meeting === void 0 ? void 0 : meeting.correlationId) === thisDevice.correlationId) {
|
|
264
|
+
return thisDevice.state === _constants._JOINED_ || thisDevice.state === _constants._LEFT_ && thisDevice.reason === _constants._MOVED_;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
return false;
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* check the new locus is breakout session's one or not
|
|
272
|
+
* @param {Object} newLocus new locus data
|
|
273
|
+
* @returns {boolean}
|
|
274
|
+
* @private
|
|
275
|
+
*/
|
|
276
|
+
MeetingsUtil.isBreakoutLocusDTO = function (newLocus) {
|
|
277
|
+
var _newLocus$controls, _newLocus$controls$br;
|
|
278
|
+
return (newLocus === null || newLocus === void 0 ? void 0 : (_newLocus$controls = newLocus.controls) === null || _newLocus$controls === void 0 ? void 0 : (_newLocus$controls$br = _newLocus$controls.breakout) === null || _newLocus$controls$br === void 0 ? void 0 : _newLocus$controls$br.sessionType) === _constants.BREAKOUTS.SESSION_TYPES.BREAKOUT;
|
|
279
|
+
};
|
|
280
|
+
|
|
281
|
+
/**
|
|
282
|
+
* check the locus is valid breakout locus or not
|
|
283
|
+
* @param {Object} locus
|
|
284
|
+
* @returns {boolean}
|
|
285
|
+
* @private
|
|
286
|
+
*/
|
|
287
|
+
MeetingsUtil.isValidBreakoutLocus = function (locus) {
|
|
288
|
+
var _locus$fullState, _locus$self;
|
|
289
|
+
var inActiveStatus = (locus === null || locus === void 0 ? void 0 : (_locus$fullState = locus.fullState) === null || _locus$fullState === void 0 ? void 0 : _locus$fullState.state) === _constants.LOCUS.STATE.INACTIVE;
|
|
290
|
+
var isLocusAsBreakout = MeetingsUtil.isBreakoutLocusDTO(locus);
|
|
291
|
+
var selfJoined = ((_locus$self = locus.self) === null || _locus$self === void 0 ? void 0 : _locus$self.state) === _constants._JOINED_;
|
|
292
|
+
return isLocusAsBreakout && !inActiveStatus && selfJoined;
|
|
293
|
+
};
|
|
272
294
|
var _default = MeetingsUtil;
|
|
273
295
|
exports.default = _default;
|
|
274
296
|
//# sourceMappingURL=util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MeetingsUtil","getMeetingAddedType","type","_LOCUS_ID_","_INCOMING_","_CREATED_","handleRoapMercury","envelope","meetingCollection","data","eventType","LOCUSEVENT","MESSAGE_ROAP","meeting","getByKey","CORRELATION_ID","correlationId","message","seq","messageType","tieBreaker","errorType","errorCause","ROAP","ROAP_TYPES","TURN_DISCOVERY_RESPONSE","roap","turnDiscovery","handleTurnDiscoveryResponse","roapMessage","sdp","sdps","length","undefined","mediaProperties","webrtcMediaConnection","roapMessageReceived","checkForCorrelationId","deviceUrl","locus","devices","self","foundDevice","find","device","url","parseDefaultSiteFromMeetingPreferences","userPreferences","result","sites","defaultSite","site","default","siteUrl","hasH264Codec","hasCodec","pc","window","RTCPeerConnection","createOffer","offerToReceiveVideo","offer","match","close","LoggerProxy","logger","warn","checkH264Support","options","firstChecked","disableNotifications","delay","maxDuration","shouldTrigger","shouldStopChecking","Trigger","trigger","file","function","EVENT_TRIGGERS","MEDIA_CODEC_LOADED","log","error","MEDIA_CODEC_MISSING","setTimeout","timestamp","call"],"sources":["util.ts"],"sourcesContent":["/* globals window */\n\nimport {\n _LOCUS_ID_,\n _INCOMING_,\n _CREATED_,\n LOCUSEVENT,\n CORRELATION_ID,\n EVENT_TRIGGERS,\n ROAP\n} from '../constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport Trigger from '../common/events/trigger-proxy';\n\n/**\n * Meetings Media Codec Missing Event\n * Emitted when H.264 codec is not\n * found in the browser.\n * @event media:codec:missing\n * @instance\n * @memberof MeetingsUtil\n */\n\n/**\n * Meetings Media Codec Loaded Event\n * Emitted when H.264 codec has been\n * loaded in the browser.\n * @event media:codec:loaded\n * @instance\n * @memberof MeetingsUtil\n */\n\nconst MeetingsUtil: any = {};\n\nMeetingsUtil.getMeetingAddedType = (type) => (type === _LOCUS_ID_ ? _INCOMING_ : _CREATED_);\n\nMeetingsUtil.handleRoapMercury = (envelope, meetingCollection) => {\n const {data} = envelope;\n const {eventType} = data;\n\n if (eventType === LOCUSEVENT.MESSAGE_ROAP) {\n const meeting = meetingCollection.getByKey(CORRELATION_ID, data.correlationId);\n\n if (meeting) {\n const {\n seq, messageType, tieBreaker, errorType, errorCause\n } = data.message;\n\n if (messageType === ROAP.ROAP_TYPES.TURN_DISCOVERY_RESPONSE) {\n // turn discovery is not part of normal roap protocol and so we are not handling it\n // through the usual roap state machine\n meeting.roap.turnDiscovery.handleTurnDiscoveryResponse(data.message);\n }\n else {\n const roapMessage = {\n seq,\n messageType,\n sdp: data.message.sdps?.length > 0 ? data.message.sdps[0] : undefined,\n tieBreaker,\n errorType,\n errorCause\n };\n\n meeting.mediaProperties.webrtcMediaConnection.roapMessageReceived(roapMessage);\n }\n }\n }\n};\n\nMeetingsUtil.checkForCorrelationId = (deviceUrl, locus) => {\n let devices = [];\n\n if (locus) {\n if (locus && locus.self && locus.self.devices) {\n devices = locus.self.devices;\n }\n\n const foundDevice = devices.find((device) => device.url === deviceUrl);\n\n if (foundDevice && foundDevice.correlationId) {\n return foundDevice.correlationId;\n }\n }\n\n return false;\n};\n\nMeetingsUtil.parseDefaultSiteFromMeetingPreferences = (userPreferences) => {\n let result = '';\n\n if (userPreferences && userPreferences.sites) {\n const defaultSite = userPreferences.sites.find((site) => site.default);\n\n if (defaultSite) {\n result = defaultSite.siteUrl;\n }\n }\n\n return result;\n};\n\n/**\n * Will check to see if the H.264 media codec is supported.\n * @async\n * @private\n * @returns {Promise<boolean>}\n */\nMeetingsUtil.hasH264Codec = async () => {\n let hasCodec = false;\n\n try {\n const pc = new window.RTCPeerConnection();\n const offer = await pc.createOffer({offerToReceiveVideo: true});\n\n if (offer.sdp.match(/^a=rtpmap:\\d+\\s+H264\\/\\d+/m)) {\n hasCodec = true;\n }\n pc.close();\n }\n catch (error) {\n LoggerProxy.logger.warn('Meetings:util#hasH264Codec --> Error creating peerConnection for H.264 test.');\n }\n\n return hasCodec;\n};\n\n/**\n * Notifies the user whether or not the H.264\n * codec is present. Will continuously check\n * until max duration.\n * @async\n * @private\n * @param {object} options\n * @param {Number} options.firstChecked Timestamp in milliseconds\n * @param {boolean} options.disableNotifications Default is false. Boolean to enable/disable notification and events\n * @returns {undefined}\n */\nMeetingsUtil.checkH264Support = async function checkH264Support(options: {\n firstChecked: number;\n disableNotifications: boolean;\n}) {\n const {hasH264Codec} = MeetingsUtil;\n const {firstChecked, disableNotifications} = options || {};\n const delay = 5e3; // ms\n const maxDuration = 3e5; // ms\n const shouldTrigger = (firstChecked === undefined);\n const shouldStopChecking = firstChecked && (Date.now() - firstChecked) >= maxDuration;\n\n // Disable notifications and start H.264 download only\n if (disableNotifications) {\n hasH264Codec();\n\n return;\n }\n\n // Codec loaded trigger event notification\n if (await hasH264Codec()) {\n Trigger.trigger(\n this,\n {\n file: 'meetings/util',\n function: 'checkH264Support'\n },\n EVENT_TRIGGERS.MEDIA_CODEC_LOADED\n );\n LoggerProxy.logger.log('Meetings:util#checkH264Support --> H264 codec loaded successfully.');\n\n return;\n }\n\n // Stop checking if past the timelimit\n if (shouldStopChecking) {\n LoggerProxy.logger.error('Meetings:util#checkH264Support --> Timed out waiting for H264 codec to load.');\n\n return;\n }\n\n // Trigger only once\n if (shouldTrigger) {\n Trigger.trigger(\n this,\n {\n file: 'meetings/util',\n function: 'checkH264Support'\n },\n EVENT_TRIGGERS.MEDIA_CODEC_MISSING\n );\n LoggerProxy.logger.log('Meetings:util#checkH264Support --> H264 codec is missing.');\n }\n\n // Keep checking in intervals to see if codec loaded\n window.setTimeout(() => {\n const timestamp = firstChecked || Date.now();\n\n MeetingsUtil.checkH264Support.call(this, {firstChecked: timestamp});\n }, delay);\n};\n\nexport default MeetingsUtil;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["MeetingsUtil","getMeetingAddedType","type","_LOCUS_ID_","_INCOMING_","_CREATED_","handleRoapMercury","envelope","meetingCollection","data","eventType","LOCUSEVENT","MESSAGE_ROAP","meeting","getByKey","CORRELATION_ID","correlationId","message","seq","messageType","tieBreaker","errorType","errorCause","ROAP","ROAP_TYPES","TURN_DISCOVERY_RESPONSE","roap","turnDiscovery","handleTurnDiscoveryResponse","roapMessage","sdp","sdps","length","undefined","mediaServer","getMediaServer","mediaProperties","webrtcMediaConnection","roapMessageReceived","split","find","line","startsWith","shift","replace","checkForCorrelationId","deviceUrl","locus","devices","self","foundDevice","device","url","parseDefaultSiteFromMeetingPreferences","userPreferences","result","sites","defaultSite","site","default","siteUrl","hasH264Codec","hasCodec","pc","window","RTCPeerConnection","createOffer","offerToReceiveVideo","offer","match","close","LoggerProxy","logger","warn","checkH264Support","options","firstChecked","disableNotifications","delay","maxDuration","shouldTrigger","shouldStopChecking","Trigger","trigger","file","function","EVENT_TRIGGERS","MEDIA_CODEC_LOADED","log","error","MEDIA_CODEC_MISSING","setTimeout","timestamp","call","getThisDevice","newLocus","joinedOnThisDevice","thisDevice","state","_JOINED_","_LEFT_","reason","_MOVED_","isBreakoutLocusDTO","controls","breakout","sessionType","BREAKOUTS","SESSION_TYPES","BREAKOUT","isValidBreakoutLocus","inActiveStatus","fullState","LOCUS","STATE","INACTIVE","isLocusAsBreakout","selfJoined"],"sources":["util.ts"],"sourcesContent":["/* globals window */\n\nimport {\n _CREATED_,\n _INCOMING_,\n _JOINED_,\n _LEFT_,\n _LOCUS_ID_,\n _MOVED_,\n BREAKOUTS,\n CORRELATION_ID,\n EVENT_TRIGGERS,\n LOCUS,\n LOCUSEVENT,\n ROAP,\n} from '../constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport Trigger from '../common/events/trigger-proxy';\n\n/**\n * Meetings Media Codec Missing Event\n * Emitted when H.264 codec is not\n * found in the browser.\n * @event media:codec:missing\n * @instance\n * @memberof MeetingsUtil\n */\n\n/**\n * Meetings Media Codec Loaded Event\n * Emitted when H.264 codec has been\n * loaded in the browser.\n * @event media:codec:loaded\n * @instance\n * @memberof MeetingsUtil\n */\n\nconst MeetingsUtil: any = {};\n\nMeetingsUtil.getMeetingAddedType = (type) => (type === _LOCUS_ID_ ? _INCOMING_ : _CREATED_);\n\nMeetingsUtil.handleRoapMercury = (envelope, meetingCollection) => {\n const {data} = envelope;\n const {eventType} = data;\n\n if (eventType === LOCUSEVENT.MESSAGE_ROAP) {\n const meeting = meetingCollection.getByKey(CORRELATION_ID, data.correlationId);\n\n if (meeting) {\n const {seq, messageType, tieBreaker, errorType, errorCause} = data.message;\n\n if (messageType === ROAP.ROAP_TYPES.TURN_DISCOVERY_RESPONSE) {\n // turn discovery is not part of normal roap protocol and so we are not handling it\n // through the usual roap state machine\n meeting.roap.turnDiscovery.handleTurnDiscoveryResponse(data.message);\n } else {\n const roapMessage = {\n seq,\n messageType,\n sdp: data.message.sdps?.length > 0 ? data.message.sdps[0] : undefined,\n tieBreaker,\n errorType,\n errorCause,\n };\n\n const mediaServer = MeetingsUtil.getMediaServer(roapMessage.sdp);\n\n meeting.mediaProperties.webrtcMediaConnection.roapMessageReceived(roapMessage);\n\n if (mediaServer) {\n meeting.mediaProperties.webrtcMediaConnection.mediaServer = mediaServer;\n }\n }\n }\n }\n};\n\nMeetingsUtil.getMediaServer = (sdp) => {\n let mediaServer;\n\n // Attempt to collect the media server from the roap message.\n try {\n mediaServer = sdp\n .split('\\r\\n')\n .find((line) => line.startsWith('o='))\n .split(' ')\n .shift()\n .replace('o=', '');\n } catch {\n mediaServer = undefined;\n }\n\n return mediaServer;\n};\n\nMeetingsUtil.checkForCorrelationId = (deviceUrl, locus) => {\n let devices = [];\n\n if (locus) {\n if (locus && locus.self && locus.self.devices) {\n devices = locus.self.devices;\n }\n\n const foundDevice = devices.find((device) => device.url === deviceUrl);\n\n if (foundDevice && foundDevice.correlationId) {\n return foundDevice.correlationId;\n }\n }\n\n return false;\n};\n\nMeetingsUtil.parseDefaultSiteFromMeetingPreferences = (userPreferences) => {\n let result = '';\n\n if (userPreferences?.sites?.length) {\n const defaultSite = userPreferences.sites.find((site) => site.default);\n\n if (defaultSite) {\n result = defaultSite.siteUrl;\n } else {\n result = userPreferences.sites[0].siteUrl;\n }\n }\n\n return result;\n};\n\n/**\n * Will check to see if the H.264 media codec is supported.\n * @async\n * @private\n * @returns {Promise<boolean>}\n */\nMeetingsUtil.hasH264Codec = async () => {\n let hasCodec = false;\n\n try {\n const pc = new window.RTCPeerConnection();\n const offer = await pc.createOffer({offerToReceiveVideo: true});\n\n if (offer.sdp.match(/^a=rtpmap:\\d+\\s+H264\\/\\d+/m)) {\n hasCodec = true;\n }\n pc.close();\n } catch (error) {\n LoggerProxy.logger.warn(\n 'Meetings:util#hasH264Codec --> Error creating peerConnection for H.264 test.'\n );\n }\n\n return hasCodec;\n};\n\n/**\n * Notifies the user whether or not the H.264\n * codec is present. Will continuously check\n * until max duration.\n * @async\n * @private\n * @param {object} options\n * @param {Number} options.firstChecked Timestamp in milliseconds\n * @param {boolean} options.disableNotifications Default is false. Boolean to enable/disable notification and events\n * @returns {undefined}\n */\nMeetingsUtil.checkH264Support = async function checkH264Support(options: {\n firstChecked: number;\n disableNotifications: boolean;\n}) {\n const {hasH264Codec} = MeetingsUtil;\n const {firstChecked, disableNotifications} = options || {};\n const delay = 5e3; // ms\n const maxDuration = 3e5; // ms\n const shouldTrigger = firstChecked === undefined;\n const shouldStopChecking = firstChecked && Date.now() - firstChecked >= maxDuration;\n\n // Disable notifications and start H.264 download only\n if (disableNotifications) {\n hasH264Codec();\n\n return;\n }\n\n // Codec loaded trigger event notification\n if (await hasH264Codec()) {\n Trigger.trigger(\n this,\n {\n file: 'meetings/util',\n function: 'checkH264Support',\n },\n EVENT_TRIGGERS.MEDIA_CODEC_LOADED\n );\n LoggerProxy.logger.log('Meetings:util#checkH264Support --> H264 codec loaded successfully.');\n\n return;\n }\n\n // Stop checking if past the timelimit\n if (shouldStopChecking) {\n LoggerProxy.logger.error(\n 'Meetings:util#checkH264Support --> Timed out waiting for H264 codec to load.'\n );\n\n return;\n }\n\n // Trigger only once\n if (shouldTrigger) {\n Trigger.trigger(\n this,\n {\n file: 'meetings/util',\n function: 'checkH264Support',\n },\n EVENT_TRIGGERS.MEDIA_CODEC_MISSING\n );\n LoggerProxy.logger.log('Meetings:util#checkH264Support --> H264 codec is missing.');\n }\n\n // Keep checking in intervals to see if codec loaded\n window.setTimeout(() => {\n const timestamp = firstChecked || Date.now();\n\n MeetingsUtil.checkH264Support.call(this, {firstChecked: timestamp});\n }, delay);\n};\n\n/**\n * get device from locus data\n * @param {Object} newLocus new locus data\n * @param {String} deviceUrl current device url\n * @returns {Object}\n */\nMeetingsUtil.getThisDevice = (newLocus: any, deviceUrl: string) => {\n if (newLocus?.self?.devices?.length > 0) {\n return newLocus.self.devices.find((device) => device.url === deviceUrl);\n }\n\n return null;\n};\n\n/**\n * get self device joined status from locus data\n * @param {Object} meeting current meeting data\n * @param {Object} newLocus new locus data\n * @param {String} deviceUrl current device url\n * @returns {Object}\n */\nMeetingsUtil.joinedOnThisDevice = (meeting: any, newLocus: any, deviceUrl: string) => {\n const thisDevice = MeetingsUtil.getThisDevice(newLocus, deviceUrl);\n if (thisDevice) {\n if (!thisDevice.correlationId || meeting?.correlationId === thisDevice.correlationId) {\n return (\n thisDevice.state === _JOINED_ ||\n (thisDevice.state === _LEFT_ && thisDevice.reason === _MOVED_)\n );\n }\n }\n\n return false;\n};\n\n/**\n * check the new locus is breakout session's one or not\n * @param {Object} newLocus new locus data\n * @returns {boolean}\n * @private\n */\nMeetingsUtil.isBreakoutLocusDTO = (newLocus: any) => {\n return newLocus?.controls?.breakout?.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT;\n};\n\n/**\n * check the locus is valid breakout locus or not\n * @param {Object} locus\n * @returns {boolean}\n * @private\n */\nMeetingsUtil.isValidBreakoutLocus = (locus: any) => {\n const inActiveStatus = locus?.fullState?.state === LOCUS.STATE.INACTIVE;\n const isLocusAsBreakout = MeetingsUtil.isBreakoutLocusDTO(locus);\n const selfJoined = locus.self?.state === _JOINED_;\n\n return isLocusAsBreakout && !inActiveStatus && selfJoined;\n};\nexport default MeetingsUtil;\n"],"mappings":"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"}
|