@webex/plugin-meetings 2.14.2 → 2.14.3
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/dist/common/errors/parameter.js +1 -1
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/constants.js +6 -3
- package/dist/constants.js.map +1 -1
- package/dist/locus-info/index.js +7 -0
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/selfUtils.js +14 -0
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/meeting/index.js +141 -106
- package/dist/meeting/index.js.map +1 -1
- package/dist/metrics/constants.js +5 -1
- package/dist/metrics/constants.js.map +1 -1
- package/package.json +6 -6
- package/src/common/errors/parameter.js +1 -1
- package/src/constants.js +2 -0
- package/src/locus-info/index.js +10 -0
- package/src/locus-info/selfUtils.js +12 -0
- package/src/meeting/index.js +96 -52
- package/src/metrics/constants.js +5 -1
- package/test/unit/spec/fixture/locus.js +404 -0
- package/test/unit/spec/locus-info/index.js +27 -0
- package/test/unit/spec/locus-info/selfConstant.js +1 -0
- package/test/unit/spec/meeting/index.js +218 -0
|
@@ -57,7 +57,11 @@ var BEHAVIORAL_METRICS = {
|
|
|
57
57
|
ADHOC_MEETING_FAILURE: 'js_sdk_adhoc_meeting_failure',
|
|
58
58
|
VERIFY_PASSWORD_SUCCESS: 'js_sdk_verify_password_success',
|
|
59
59
|
VERIFY_PASSWORD_ERROR: 'js_sdk_verify_password_error',
|
|
60
|
-
VERIFY_CAPTCHA_ERROR: 'js_sdk_verify_captcha_error'
|
|
60
|
+
VERIFY_CAPTCHA_ERROR: 'js_sdk_verify_captcha_error',
|
|
61
|
+
MOVE_TO_SUCCESS: 'js_sdk_move_to_success',
|
|
62
|
+
MOVE_TO_FAILURE: 'js_sdk_move_to_failure',
|
|
63
|
+
MOVE_FROM_SUCCESS: 'js_sdk_move_from_success',
|
|
64
|
+
MOVE_FROM_FAILURE: 'js_sdk_move_from_failure'
|
|
61
65
|
};
|
|
62
66
|
exports.default = BEHAVIORAL_METRICS;
|
|
63
67
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BEHAVIORAL_METRICS","MEETINGS_REGISTRATION_FAILED","MEETINGS_REGISTRATION_SUCCESS","MERCURY_CONNECTION_FAILURE","MERCURY_CONNECTION_RESTORED","JOIN_SUCCESS","JOIN_FAILURE","ADD_MEDIA_SUCCESS","ADD_MEDIA_FAILURE","CONNECTION_SUCCESS","CONNECTION_FAILURE","MEETING_LEAVE_FAILURE","MEETING_END_ALL_FAILURE","MEETING_END_ALL_INITIATED","GET_USER_MEDIA_FAILURE","GET_DISPLAY_MEDIA_FAILURE","JOIN_WITH_MEDIA_FAILURE","DISCONNECT_DUE_TO_INACTIVITY","MEETING_MEDIA_INACTIVE","MEETING_RECONNECT_FAILURE","MEETING_MAX_REJOIN_FAILURE","MEETING_SHARE_FAILURE","MEETING_START_WHITEBOARD_SHARE_FAILURE","MEETING_STOP_WHITEBOARD_SHARE_FAILURE","MUTE_AUDIO_FAILURE","MUTE_VIDEO_FAILURE","SET_MEETING_QUALITY_FAILURE","STOP_FLOOR_REQUEST_FAILURE","ADD_DIAL_IN_FAILURE","ADD_DIAL_OUT_FAILURE","UPDATE_MEDIA_FAILURE","UNMUTE_AUDIO_FAILURE","UNMUTE_VIDEO_FAILURE","ROAP_ANSWER_FAILURE","ROAP_GLARE_CONDITION","PEERCONNECTION_FAILURE","INVALID_ICE_CANDIDATE","UPLOAD_LOGS_FAILURE","RECEIVE_TRANSCRIPTION_FAILURE","ENABLE_BNR_SUCCESS","ENABLE_BNR_FAILURE","DISABLE_BNR_SUCCESS","DISABLE_BNR_FAILURE","FETCH_MEETING_INFO_V1_SUCCESS","FETCH_MEETING_INFO_V1_FAILURE","ADHOC_MEETING_SUCCESS","ADHOC_MEETING_FAILURE","VERIFY_PASSWORD_SUCCESS","VERIFY_PASSWORD_ERROR","VERIFY_CAPTCHA_ERROR"],"sources":["constants.js"],"sourcesContent":["\n// Metrics constants ----------------------------------------------------------\n\nconst BEHAVIORAL_METRICS = {\n MEETINGS_REGISTRATION_FAILED: 'js_sdk_meetings_registration_failed',\n MEETINGS_REGISTRATION_SUCCESS: 'js_sdk_meetings_registration_success',\n MERCURY_CONNECTION_FAILURE: 'js_sdk_mercury_connection_failure',\n MERCURY_CONNECTION_RESTORED: 'js_sdk_mercury_connection_restored',\n JOIN_SUCCESS: 'js_sdk_join_success',\n JOIN_FAILURE: 'js_sdk_join_failures',\n ADD_MEDIA_SUCCESS: 'js_sdk_add_media_success',\n ADD_MEDIA_FAILURE: 'js_sdk_add_media_failures',\n CONNECTION_SUCCESS: 'js_sdk_connection_success',\n CONNECTION_FAILURE: 'js_sdk_connection_failures',\n MEETING_LEAVE_FAILURE: 'js_sdk_meeting_leave_failure',\n MEETING_END_ALL_FAILURE: 'js_sdk_meeting_end_for_all_failure',\n MEETING_END_ALL_INITIATED: 'js_sdk_meeting_end_for_all_initiated',\n GET_USER_MEDIA_FAILURE: 'js_sdk_get_user_media_failures',\n GET_DISPLAY_MEDIA_FAILURE: 'js_sdk_get_display_media_failures',\n JOIN_WITH_MEDIA_FAILURE: 'js_sdk_join_with_media_failures',\n\n DISCONNECT_DUE_TO_INACTIVITY: 'js_sdk_disconnect_due_to_inactivity',\n MEETING_MEDIA_INACTIVE: 'js_sdk_meeting_media_inactive',\n MEETING_RECONNECT_FAILURE: 'js_sdk_meeting_reconnect_failures',\n MEETING_MAX_REJOIN_FAILURE: 'js_sdk_meeting_max_rejoin_failure',\n MEETING_SHARE_FAILURE: 'js_sdk_meeting_share_failures',\n MEETING_START_WHITEBOARD_SHARE_FAILURE: 'js_sdk_meeting_start_whiteboard_share_failures',\n MEETING_STOP_WHITEBOARD_SHARE_FAILURE: 'js_sdk_meeting_stop_whiteboard_share_failures',\n MUTE_AUDIO_FAILURE: 'js_sdk_mute_audio_failures',\n MUTE_VIDEO_FAILURE: 'js_sdk_mute_video_failures',\n SET_MEETING_QUALITY_FAILURE: 'js_sdk_set_meeting_quality_failures',\n STOP_FLOOR_REQUEST_FAILURE: 'js_sdk_stop_floor_request_failures',\n ADD_DIAL_IN_FAILURE: 'js_sdk_add_dial_in_failure',\n ADD_DIAL_OUT_FAILURE: 'js_sdk_add_dial_out_failure',\n UPDATE_MEDIA_FAILURE: 'js_sdk_update_media_failures',\n UNMUTE_AUDIO_FAILURE: 'js_sdk_unmute_audio_failures',\n UNMUTE_VIDEO_FAILURE: 'js_sdk_unmute_video_failures',\n ROAP_ANSWER_FAILURE: 'js_sdk_roap_answer_failures',\n ROAP_GLARE_CONDITION: 'js_sdk_roap_glar_condition',\n PEERCONNECTION_FAILURE: 'js_sdk_peerConnection_failures',\n INVALID_ICE_CANDIDATE: 'js_sdk_invalid_ice_candidate',\n UPLOAD_LOGS_FAILURE: 'js_sdk_upload_logs_failure',\n RECEIVE_TRANSCRIPTION_FAILURE: 'js_sdk_receive_transcription_failure',\n ENABLE_BNR_SUCCESS: 'js_sdk_enable_bnr_success',\n ENABLE_BNR_FAILURE: 'js_sdk_enable_bnr_failure',\n DISABLE_BNR_SUCCESS: 'js_sdk_disable_bnr_success',\n DISABLE_BNR_FAILURE: 'js_sdk_disable_bnr_failure',\n FETCH_MEETING_INFO_V1_SUCCESS: 'js_sdk_fetch_meeting_info_v1_success',\n FETCH_MEETING_INFO_V1_FAILURE: 'js_sdk_fetch_meeting_info_v1_failure',\n ADHOC_MEETING_SUCCESS: 'js_sdk_adhoc_meeting_success',\n ADHOC_MEETING_FAILURE: 'js_sdk_adhoc_meeting_failure',\n VERIFY_PASSWORD_SUCCESS: 'js_sdk_verify_password_success',\n VERIFY_PASSWORD_ERROR: 'js_sdk_verify_password_error',\n VERIFY_CAPTCHA_ERROR: 'js_sdk_verify_captcha_error'\n};\n\n\nexport {BEHAVIORAL_METRICS as default};\n"],"mappings":";;;;;;;;;AACA;AAEA,IAAMA,kBAAkB,GAAG;EACzBC,4BAA4B,EAAE,qCADL;EAEzBC,6BAA6B,EAAE,sCAFN;EAGzBC,0BAA0B,EAAE,mCAHH;EAIzBC,2BAA2B,EAAE,oCAJJ;EAKzBC,YAAY,EAAE,qBALW;EAMzBC,YAAY,EAAE,sBANW;EAOzBC,iBAAiB,EAAE,0BAPM;EAQzBC,iBAAiB,EAAE,2BARM;EASzBC,kBAAkB,EAAE,2BATK;EAUzBC,kBAAkB,EAAE,4BAVK;EAWzBC,qBAAqB,EAAE,8BAXE;EAYzBC,uBAAuB,EAAE,oCAZA;EAazBC,yBAAyB,EAAE,sCAbF;EAczBC,sBAAsB,EAAE,gCAdC;EAezBC,yBAAyB,EAAE,mCAfF;EAgBzBC,uBAAuB,EAAE,iCAhBA;EAkBzBC,4BAA4B,EAAE,qCAlBL;EAmBzBC,sBAAsB,EAAE,+BAnBC;EAoBzBC,yBAAyB,EAAE,mCApBF;EAqBzBC,0BAA0B,EAAE,mCArBH;EAsBzBC,qBAAqB,EAAE,+BAtBE;EAuBzBC,sCAAsC,EAAE,gDAvBf;EAwBzBC,qCAAqC,EAAE,+CAxBd;EAyBzBC,kBAAkB,EAAE,4BAzBK;EA0BzBC,kBAAkB,EAAE,4BA1BK;EA2BzBC,2BAA2B,EAAE,qCA3BJ;EA4BzBC,0BAA0B,EAAE,oCA5BH;EA6BzBC,mBAAmB,EAAE,4BA7BI;EA8BzBC,oBAAoB,EAAE,6BA9BG;EA+BzBC,oBAAoB,EAAE,8BA/BG;EAgCzBC,oBAAoB,EAAE,8BAhCG;EAiCzBC,oBAAoB,EAAE,8BAjCG;EAkCzBC,mBAAmB,EAAE,6BAlCI;EAmCzBC,oBAAoB,EAAE,4BAnCG;EAoCzBC,sBAAsB,EAAE,gCApCC;EAqCzBC,qBAAqB,EAAE,8BArCE;EAsCzBC,mBAAmB,EAAE,4BAtCI;EAuCzBC,6BAA6B,EAAE,sCAvCN;EAwCzBC,kBAAkB,EAAE,2BAxCK;EAyCzBC,kBAAkB,EAAE,2BAzCK;EA0CzBC,mBAAmB,EAAE,4BA1CI;EA2CzBC,mBAAmB,EAAE,4BA3CI;EA4CzBC,6BAA6B,EAAE,sCA5CN;EA6CzBC,6BAA6B,EAAE,sCA7CN;EA8CzBC,qBAAqB,EAAE,8BA9CE;EA+CzBC,qBAAqB,EAAE,8BA/CE;EAgDzBC,uBAAuB,EAAE,gCAhDA;EAiDzBC,qBAAqB,EAAE,8BAjDE;EAkDzBC,oBAAoB,EAAE;
|
|
1
|
+
{"version":3,"names":["BEHAVIORAL_METRICS","MEETINGS_REGISTRATION_FAILED","MEETINGS_REGISTRATION_SUCCESS","MERCURY_CONNECTION_FAILURE","MERCURY_CONNECTION_RESTORED","JOIN_SUCCESS","JOIN_FAILURE","ADD_MEDIA_SUCCESS","ADD_MEDIA_FAILURE","CONNECTION_SUCCESS","CONNECTION_FAILURE","MEETING_LEAVE_FAILURE","MEETING_END_ALL_FAILURE","MEETING_END_ALL_INITIATED","GET_USER_MEDIA_FAILURE","GET_DISPLAY_MEDIA_FAILURE","JOIN_WITH_MEDIA_FAILURE","DISCONNECT_DUE_TO_INACTIVITY","MEETING_MEDIA_INACTIVE","MEETING_RECONNECT_FAILURE","MEETING_MAX_REJOIN_FAILURE","MEETING_SHARE_FAILURE","MEETING_START_WHITEBOARD_SHARE_FAILURE","MEETING_STOP_WHITEBOARD_SHARE_FAILURE","MUTE_AUDIO_FAILURE","MUTE_VIDEO_FAILURE","SET_MEETING_QUALITY_FAILURE","STOP_FLOOR_REQUEST_FAILURE","ADD_DIAL_IN_FAILURE","ADD_DIAL_OUT_FAILURE","UPDATE_MEDIA_FAILURE","UNMUTE_AUDIO_FAILURE","UNMUTE_VIDEO_FAILURE","ROAP_ANSWER_FAILURE","ROAP_GLARE_CONDITION","PEERCONNECTION_FAILURE","INVALID_ICE_CANDIDATE","UPLOAD_LOGS_FAILURE","RECEIVE_TRANSCRIPTION_FAILURE","ENABLE_BNR_SUCCESS","ENABLE_BNR_FAILURE","DISABLE_BNR_SUCCESS","DISABLE_BNR_FAILURE","FETCH_MEETING_INFO_V1_SUCCESS","FETCH_MEETING_INFO_V1_FAILURE","ADHOC_MEETING_SUCCESS","ADHOC_MEETING_FAILURE","VERIFY_PASSWORD_SUCCESS","VERIFY_PASSWORD_ERROR","VERIFY_CAPTCHA_ERROR","MOVE_TO_SUCCESS","MOVE_TO_FAILURE","MOVE_FROM_SUCCESS","MOVE_FROM_FAILURE"],"sources":["constants.js"],"sourcesContent":["\n// Metrics constants ----------------------------------------------------------\n\nconst BEHAVIORAL_METRICS = {\n MEETINGS_REGISTRATION_FAILED: 'js_sdk_meetings_registration_failed',\n MEETINGS_REGISTRATION_SUCCESS: 'js_sdk_meetings_registration_success',\n MERCURY_CONNECTION_FAILURE: 'js_sdk_mercury_connection_failure',\n MERCURY_CONNECTION_RESTORED: 'js_sdk_mercury_connection_restored',\n JOIN_SUCCESS: 'js_sdk_join_success',\n JOIN_FAILURE: 'js_sdk_join_failures',\n ADD_MEDIA_SUCCESS: 'js_sdk_add_media_success',\n ADD_MEDIA_FAILURE: 'js_sdk_add_media_failures',\n CONNECTION_SUCCESS: 'js_sdk_connection_success',\n CONNECTION_FAILURE: 'js_sdk_connection_failures',\n MEETING_LEAVE_FAILURE: 'js_sdk_meeting_leave_failure',\n MEETING_END_ALL_FAILURE: 'js_sdk_meeting_end_for_all_failure',\n MEETING_END_ALL_INITIATED: 'js_sdk_meeting_end_for_all_initiated',\n GET_USER_MEDIA_FAILURE: 'js_sdk_get_user_media_failures',\n GET_DISPLAY_MEDIA_FAILURE: 'js_sdk_get_display_media_failures',\n JOIN_WITH_MEDIA_FAILURE: 'js_sdk_join_with_media_failures',\n\n DISCONNECT_DUE_TO_INACTIVITY: 'js_sdk_disconnect_due_to_inactivity',\n MEETING_MEDIA_INACTIVE: 'js_sdk_meeting_media_inactive',\n MEETING_RECONNECT_FAILURE: 'js_sdk_meeting_reconnect_failures',\n MEETING_MAX_REJOIN_FAILURE: 'js_sdk_meeting_max_rejoin_failure',\n MEETING_SHARE_FAILURE: 'js_sdk_meeting_share_failures',\n MEETING_START_WHITEBOARD_SHARE_FAILURE: 'js_sdk_meeting_start_whiteboard_share_failures',\n MEETING_STOP_WHITEBOARD_SHARE_FAILURE: 'js_sdk_meeting_stop_whiteboard_share_failures',\n MUTE_AUDIO_FAILURE: 'js_sdk_mute_audio_failures',\n MUTE_VIDEO_FAILURE: 'js_sdk_mute_video_failures',\n SET_MEETING_QUALITY_FAILURE: 'js_sdk_set_meeting_quality_failures',\n STOP_FLOOR_REQUEST_FAILURE: 'js_sdk_stop_floor_request_failures',\n ADD_DIAL_IN_FAILURE: 'js_sdk_add_dial_in_failure',\n ADD_DIAL_OUT_FAILURE: 'js_sdk_add_dial_out_failure',\n UPDATE_MEDIA_FAILURE: 'js_sdk_update_media_failures',\n UNMUTE_AUDIO_FAILURE: 'js_sdk_unmute_audio_failures',\n UNMUTE_VIDEO_FAILURE: 'js_sdk_unmute_video_failures',\n ROAP_ANSWER_FAILURE: 'js_sdk_roap_answer_failures',\n ROAP_GLARE_CONDITION: 'js_sdk_roap_glar_condition',\n PEERCONNECTION_FAILURE: 'js_sdk_peerConnection_failures',\n INVALID_ICE_CANDIDATE: 'js_sdk_invalid_ice_candidate',\n UPLOAD_LOGS_FAILURE: 'js_sdk_upload_logs_failure',\n RECEIVE_TRANSCRIPTION_FAILURE: 'js_sdk_receive_transcription_failure',\n ENABLE_BNR_SUCCESS: 'js_sdk_enable_bnr_success',\n ENABLE_BNR_FAILURE: 'js_sdk_enable_bnr_failure',\n DISABLE_BNR_SUCCESS: 'js_sdk_disable_bnr_success',\n DISABLE_BNR_FAILURE: 'js_sdk_disable_bnr_failure',\n FETCH_MEETING_INFO_V1_SUCCESS: 'js_sdk_fetch_meeting_info_v1_success',\n FETCH_MEETING_INFO_V1_FAILURE: 'js_sdk_fetch_meeting_info_v1_failure',\n ADHOC_MEETING_SUCCESS: 'js_sdk_adhoc_meeting_success',\n ADHOC_MEETING_FAILURE: 'js_sdk_adhoc_meeting_failure',\n VERIFY_PASSWORD_SUCCESS: 'js_sdk_verify_password_success',\n VERIFY_PASSWORD_ERROR: 'js_sdk_verify_password_error',\n VERIFY_CAPTCHA_ERROR: 'js_sdk_verify_captcha_error',\n MOVE_TO_SUCCESS: 'js_sdk_move_to_success',\n MOVE_TO_FAILURE: 'js_sdk_move_to_failure',\n MOVE_FROM_SUCCESS: 'js_sdk_move_from_success',\n MOVE_FROM_FAILURE: 'js_sdk_move_from_failure'\n};\n\n\nexport {BEHAVIORAL_METRICS as default};\n"],"mappings":";;;;;;;;;AACA;AAEA,IAAMA,kBAAkB,GAAG;EACzBC,4BAA4B,EAAE,qCADL;EAEzBC,6BAA6B,EAAE,sCAFN;EAGzBC,0BAA0B,EAAE,mCAHH;EAIzBC,2BAA2B,EAAE,oCAJJ;EAKzBC,YAAY,EAAE,qBALW;EAMzBC,YAAY,EAAE,sBANW;EAOzBC,iBAAiB,EAAE,0BAPM;EAQzBC,iBAAiB,EAAE,2BARM;EASzBC,kBAAkB,EAAE,2BATK;EAUzBC,kBAAkB,EAAE,4BAVK;EAWzBC,qBAAqB,EAAE,8BAXE;EAYzBC,uBAAuB,EAAE,oCAZA;EAazBC,yBAAyB,EAAE,sCAbF;EAczBC,sBAAsB,EAAE,gCAdC;EAezBC,yBAAyB,EAAE,mCAfF;EAgBzBC,uBAAuB,EAAE,iCAhBA;EAkBzBC,4BAA4B,EAAE,qCAlBL;EAmBzBC,sBAAsB,EAAE,+BAnBC;EAoBzBC,yBAAyB,EAAE,mCApBF;EAqBzBC,0BAA0B,EAAE,mCArBH;EAsBzBC,qBAAqB,EAAE,+BAtBE;EAuBzBC,sCAAsC,EAAE,gDAvBf;EAwBzBC,qCAAqC,EAAE,+CAxBd;EAyBzBC,kBAAkB,EAAE,4BAzBK;EA0BzBC,kBAAkB,EAAE,4BA1BK;EA2BzBC,2BAA2B,EAAE,qCA3BJ;EA4BzBC,0BAA0B,EAAE,oCA5BH;EA6BzBC,mBAAmB,EAAE,4BA7BI;EA8BzBC,oBAAoB,EAAE,6BA9BG;EA+BzBC,oBAAoB,EAAE,8BA/BG;EAgCzBC,oBAAoB,EAAE,8BAhCG;EAiCzBC,oBAAoB,EAAE,8BAjCG;EAkCzBC,mBAAmB,EAAE,6BAlCI;EAmCzBC,oBAAoB,EAAE,4BAnCG;EAoCzBC,sBAAsB,EAAE,gCApCC;EAqCzBC,qBAAqB,EAAE,8BArCE;EAsCzBC,mBAAmB,EAAE,4BAtCI;EAuCzBC,6BAA6B,EAAE,sCAvCN;EAwCzBC,kBAAkB,EAAE,2BAxCK;EAyCzBC,kBAAkB,EAAE,2BAzCK;EA0CzBC,mBAAmB,EAAE,4BA1CI;EA2CzBC,mBAAmB,EAAE,4BA3CI;EA4CzBC,6BAA6B,EAAE,sCA5CN;EA6CzBC,6BAA6B,EAAE,sCA7CN;EA8CzBC,qBAAqB,EAAE,8BA9CE;EA+CzBC,qBAAqB,EAAE,8BA/CE;EAgDzBC,uBAAuB,EAAE,gCAhDA;EAiDzBC,qBAAqB,EAAE,8BAjDE;EAkDzBC,oBAAoB,EAAE,6BAlDG;EAmDzBC,eAAe,EAAE,wBAnDQ;EAoDzBC,eAAe,EAAE,wBApDQ;EAqDzBC,iBAAiB,EAAE,0BArDM;EAsDzBC,iBAAiB,EAAE;AAtDM,CAA3B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/plugin-meetings",
|
|
3
|
-
"version": "2.14.
|
|
3
|
+
"version": "2.14.3",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"contributors": [
|
|
@@ -24,19 +24,19 @@
|
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@babel/runtime-corejs2": "^7.14.8",
|
|
27
|
-
"@webex/webex-core": "2.14.
|
|
28
|
-
"@webex/internal-plugin-mercury": "2.14.
|
|
29
|
-
"@webex/internal-plugin-conversation": "2.14.
|
|
27
|
+
"@webex/webex-core": "2.14.3",
|
|
28
|
+
"@webex/internal-plugin-mercury": "2.14.3",
|
|
29
|
+
"@webex/internal-plugin-conversation": "2.14.3",
|
|
30
30
|
"webrtc-adapter": "^7.7.0",
|
|
31
31
|
"lodash": "^4.17.21",
|
|
32
32
|
"uuid": "^3.3.2",
|
|
33
33
|
"global": "^4.4.0",
|
|
34
34
|
"ip-anonymize": "^0.1.0",
|
|
35
|
-
"@webex/common": "2.14.
|
|
35
|
+
"@webex/common": "2.14.3",
|
|
36
36
|
"bowser": "^2.11.0",
|
|
37
37
|
"sdp-transform": "^2.12.0",
|
|
38
38
|
"readable-stream": "^3.6.0",
|
|
39
|
-
"@webex/common-timers": "2.14.
|
|
39
|
+
"@webex/common-timers": "2.14.3",
|
|
40
40
|
"btoa": "^1.2.1",
|
|
41
41
|
"@webex/internal-media-core": "^0.0.6-beta",
|
|
42
42
|
"javascript-state-machine": "^3.1.0",
|
|
@@ -18,7 +18,7 @@ export default class ParameterError extends Error {
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
this.name = ERROR_DICTIONARY.PARAMETER.NAME;
|
|
21
|
-
this.sdkMessage = ERROR_DICTIONARY.PARAMETER.MESSAGE;
|
|
21
|
+
this.sdkMessage = message || ERROR_DICTIONARY.PARAMETER.MESSAGE;
|
|
22
22
|
this.error = error;
|
|
23
23
|
|
|
24
24
|
this.code = ERROR_DICTIONARY.PARAMETER.CODE;
|
package/src/constants.js
CHANGED
|
@@ -129,6 +129,7 @@ export const _UNKNOWN_ = 'UNKNOWN';
|
|
|
129
129
|
|
|
130
130
|
export const _WEBEX_MEETING_ = 'WEBEX_MEETING';
|
|
131
131
|
export const _WAIT_ = 'WAIT';
|
|
132
|
+
export const _MOVE_MEDIA_ = 'MOVE_MEDIA';
|
|
132
133
|
|
|
133
134
|
// *********** PARTICIPANT DELTAS ***********
|
|
134
135
|
export const PARTICIPANT_DELTAS = {
|
|
@@ -653,6 +654,7 @@ export const LOCUSINFO = {
|
|
|
653
654
|
MEETING_INFO_UPDATED: 'MEETING_INFO_UPDATED',
|
|
654
655
|
MEETING_LOCKED: 'MEETING_LOCKED',
|
|
655
656
|
MEETING_UNLOCKED: 'MEETING_UNLOCKED',
|
|
657
|
+
SELF_OBSERVING: 'SELF_OBSERVING',
|
|
656
658
|
DISCONNECT_DUE_TO_INACTIVITY: 'DISCONNECT_DUE_TO_INACTIVITY'
|
|
657
659
|
}
|
|
658
660
|
};
|
package/src/locus-info/index.js
CHANGED
|
@@ -1031,6 +1031,16 @@ export default class LocusInfo extends EventsScope {
|
|
|
1031
1031
|
);
|
|
1032
1032
|
}
|
|
1033
1033
|
|
|
1034
|
+
if (parsedSelves.updates.isUserObserving) {
|
|
1035
|
+
this.emitScoped(
|
|
1036
|
+
{
|
|
1037
|
+
file: 'locus-info',
|
|
1038
|
+
function: 'updateSelf'
|
|
1039
|
+
},
|
|
1040
|
+
LOCUSINFO.EVENTS.SELF_OBSERVING
|
|
1041
|
+
);
|
|
1042
|
+
}
|
|
1043
|
+
|
|
1034
1044
|
|
|
1035
1045
|
this.emitScoped(
|
|
1036
1046
|
{
|
|
@@ -4,6 +4,8 @@ import {
|
|
|
4
4
|
_JOINED_,
|
|
5
5
|
_CALL_,
|
|
6
6
|
_WAIT_,
|
|
7
|
+
_MOVE_MEDIA_,
|
|
8
|
+
_OBSERVE_,
|
|
7
9
|
_LEFT_,
|
|
8
10
|
MEETING_END_REASON,
|
|
9
11
|
MEDIA_STATE,
|
|
@@ -81,6 +83,7 @@ SelfUtils.getSelves = (oldSelf, newSelf, deviceId) => {
|
|
|
81
83
|
updates.localAudioUnmuteRequiredByServer = SelfUtils.localAudioUnmuteRequiredByServer(previous, current);
|
|
82
84
|
updates.moderatorChanged = SelfUtils.moderatorChanged(previous, current);
|
|
83
85
|
updates.isMediaInactiveOrReleased = SelfUtils.wasMediaInactiveOrReleased(previous, current);
|
|
86
|
+
updates.isUserObserving = SelfUtils.isDeviceObserving(previous, current);
|
|
84
87
|
|
|
85
88
|
updates.isMediaInactive = SelfUtils.isMediaInactive(previous, current);
|
|
86
89
|
updates.audioStateChange = previous?.currentMediaStatus.audio !== current.currentMediaStatus.audio;
|
|
@@ -250,6 +253,15 @@ SelfUtils.moderatorChanged = (oldSelf, changedSelf) => {
|
|
|
250
253
|
return oldSelf.moderator !== changedSelf.moderator;
|
|
251
254
|
};
|
|
252
255
|
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* @param {Object} oldSelf
|
|
259
|
+
* @param {Object} changedSelf
|
|
260
|
+
* @returns {Boolean}
|
|
261
|
+
* @throws {Error} if changed self was undefined
|
|
262
|
+
*/
|
|
263
|
+
SelfUtils.isDeviceObserving = (oldSelf, changedSelf) => oldSelf && oldSelf.joinedWith?.intent?.type === _MOVE_MEDIA_ && changedSelf && changedSelf.joinedWith?.intent?.type === _OBSERVE_;
|
|
264
|
+
|
|
253
265
|
/**
|
|
254
266
|
* @param {Object} oldSelf
|
|
255
267
|
* @param {Object} changedSelf
|
package/src/meeting/index.js
CHANGED
|
@@ -2903,7 +2903,8 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2903
2903
|
const audioStopped = audioTrack && audioTrack.readyState === ENDED;
|
|
2904
2904
|
const videoStopped = videoTrack && videoTrack.readyState === ENDED;
|
|
2905
2905
|
|
|
2906
|
-
|
|
2906
|
+
// triggers event for audio and video stop , sometime either audio or video one of them exists
|
|
2907
|
+
if (audioStopped || videoStopped) {
|
|
2907
2908
|
Trigger.trigger(
|
|
2908
2909
|
this,
|
|
2909
2910
|
{
|
|
@@ -2916,7 +2917,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2916
2917
|
);
|
|
2917
2918
|
}
|
|
2918
2919
|
else if (audioTrack || videoTrack) {
|
|
2919
|
-
LoggerProxy.logger.warn('Meeting:index#closeLocalStream -->
|
|
2920
|
+
LoggerProxy.logger.warn('Meeting:index#closeLocalStream --> Warning: track might already been ended or unavaliable.');
|
|
2920
2921
|
}
|
|
2921
2922
|
});
|
|
2922
2923
|
}
|
|
@@ -3886,7 +3887,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3886
3887
|
mediaCapabilities: {
|
|
3887
3888
|
rx: {
|
|
3888
3889
|
audio: false,
|
|
3889
|
-
share:
|
|
3890
|
+
share: true,
|
|
3890
3891
|
share_audio: false,
|
|
3891
3892
|
video: false,
|
|
3892
3893
|
whiteboard: false
|
|
@@ -3904,16 +3905,73 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3904
3905
|
|
|
3905
3906
|
Metrics.postEvent({event: eventType.MOVE_MEDIA, meeting: this});
|
|
3906
3907
|
|
|
3907
|
-
|
|
3908
|
-
|
|
3908
|
+
this.locusInfo.once(LOCUSINFO.EVENTS.SELF_OBSERVING, async () => {
|
|
3909
|
+
// Clean up the camera , microphone track and re initiate it
|
|
3909
3910
|
|
|
3910
|
-
|
|
3911
|
-
|
|
3912
|
-
|
|
3911
|
+
try {
|
|
3912
|
+
if (this.isSharing) {
|
|
3913
|
+
await this.stopFloorRequest();
|
|
3913
3914
|
}
|
|
3914
|
-
|
|
3915
|
+
const mediaSettings = {
|
|
3916
|
+
mediaDirection: {
|
|
3917
|
+
sendVideo: false,
|
|
3918
|
+
receiveVideo: false,
|
|
3919
|
+
sendAudio: false,
|
|
3920
|
+
receiveAudio: false,
|
|
3921
|
+
sendShare: false,
|
|
3922
|
+
receiveShare: true
|
|
3923
|
+
}
|
|
3924
|
+
};
|
|
3925
|
+
|
|
3926
|
+
// clean up the local tracks
|
|
3927
|
+
this.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);
|
|
3928
|
+
|
|
3929
|
+
// close the existing local tracks
|
|
3930
|
+
await this.closeLocalStream();
|
|
3931
|
+
await this.closeLocalShare();
|
|
3932
|
+
|
|
3933
|
+
this.mediaProperties.unsetMediaTracks();
|
|
3934
|
+
|
|
3935
|
+
|
|
3936
|
+
// when a move to is intiated by the client , Locus delets the existing media node from the server as soon the DX answers the meeting
|
|
3937
|
+
// once the DX answers we establish connection back the media server with only receiveShare enabled
|
|
3938
|
+
await this.reconnectionManager.reconnectMedia(mediaSettings)
|
|
3939
|
+
.then(() => {
|
|
3940
|
+
Metrics.sendBehavioralMetric(
|
|
3941
|
+
BEHAVIORAL_METRICS.MOVE_TO_SUCCESS,
|
|
3942
|
+
);
|
|
3943
|
+
});
|
|
3944
|
+
}
|
|
3945
|
+
catch (error) {
|
|
3946
|
+
LoggerProxy.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);
|
|
3947
|
+
Metrics.sendBehavioralMetric(
|
|
3948
|
+
BEHAVIORAL_METRICS.MOVE_TO_FAILURE,
|
|
3949
|
+
{
|
|
3950
|
+
correlation_id: this.correlationId,
|
|
3951
|
+
locus_id: this.locusUrl.split('/').pop(),
|
|
3952
|
+
reason: error.message,
|
|
3953
|
+
stack: error.stack
|
|
3954
|
+
}
|
|
3955
|
+
);
|
|
3956
|
+
}
|
|
3957
|
+
});
|
|
3958
|
+
|
|
3959
|
+
LoggerProxy.logger.info('Meeting:index#moveTo --> Initated moved to using resourceId', resourceId);
|
|
3960
|
+
|
|
3961
|
+
return MeetingUtil.joinMeetingOptions(this, {resourceId, moveToResource: true}).then(() => {
|
|
3962
|
+
this.meetingFiniteStateMachine.join();
|
|
3915
3963
|
}).catch((error) => {
|
|
3916
3964
|
this.meetingFiniteStateMachine.fail(error);
|
|
3965
|
+
Metrics.sendBehavioralMetric(
|
|
3966
|
+
BEHAVIORAL_METRICS.MOVE_TO_FAILURE,
|
|
3967
|
+
{
|
|
3968
|
+
correlation_id: this.correlationId,
|
|
3969
|
+
locus_id: this.locusUrl.split('/').pop(),
|
|
3970
|
+
reason: error.message,
|
|
3971
|
+
stack: error.stack
|
|
3972
|
+
}
|
|
3973
|
+
);
|
|
3974
|
+
LoggerProxy.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);
|
|
3917
3975
|
|
|
3918
3976
|
return Promise.reject(error);
|
|
3919
3977
|
});
|
|
@@ -3927,54 +3985,38 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3927
3985
|
* @memberof Meeting
|
|
3928
3986
|
*/
|
|
3929
3987
|
moveFrom(resourceId) {
|
|
3988
|
+
// On moveFrom ask the developer to re capture it moveFrom then updateMedia
|
|
3930
3989
|
if (!resourceId) {
|
|
3931
3990
|
throw new ParameterError('Cannot move call without a resourceId.');
|
|
3932
3991
|
}
|
|
3933
3992
|
const oldCorrelationId = this.correlationId;
|
|
3934
3993
|
|
|
3935
|
-
this.id = uuid.v4();
|
|
3936
|
-
|
|
3937
|
-
this.webex.meetings.meetingCollection.set(this);
|
|
3938
|
-
|
|
3939
|
-
Metrics.postEvent({
|
|
3940
|
-
event: eventType.MEDIA_CAPABILITIES,
|
|
3941
|
-
meeting: this,
|
|
3942
|
-
data: {
|
|
3943
|
-
mediaCapabilities: {
|
|
3944
|
-
rx: {
|
|
3945
|
-
audio: true,
|
|
3946
|
-
share: true,
|
|
3947
|
-
share_audio: true,
|
|
3948
|
-
video: true,
|
|
3949
|
-
whiteboard: true
|
|
3950
|
-
},
|
|
3951
|
-
tx: {
|
|
3952
|
-
audio: true,
|
|
3953
|
-
share: true,
|
|
3954
|
-
share_audio: true,
|
|
3955
|
-
video: true,
|
|
3956
|
-
whiteboard: true
|
|
3957
|
-
}
|
|
3958
|
-
}
|
|
3959
|
-
}
|
|
3960
|
-
});
|
|
3961
3994
|
Metrics.postEvent({event: eventType.MOVE_MEDIA, meeting: this});
|
|
3962
3995
|
|
|
3963
|
-
return MeetingUtil.joinMeetingOptions(this)
|
|
3964
|
-
.then((
|
|
3965
|
-
|
|
3966
|
-
|
|
3967
|
-
|
|
3968
|
-
|
|
3969
|
-
|
|
3970
|
-
|
|
3971
|
-
|
|
3972
|
-
|
|
3973
|
-
.
|
|
3974
|
-
|
|
3975
|
-
|
|
3996
|
+
return MeetingUtil.joinMeetingOptions(this)
|
|
3997
|
+
.then(() => MeetingUtil.leaveMeeting(this, {
|
|
3998
|
+
resourceId,
|
|
3999
|
+
correlationId: oldCorrelationId,
|
|
4000
|
+
moveMeeting: true
|
|
4001
|
+
}).then(() => {
|
|
4002
|
+
this.resourceId = '';
|
|
4003
|
+
Metrics.sendBehavioralMetric(
|
|
4004
|
+
BEHAVIORAL_METRICS.MOVE_FROM_SUCCESS,
|
|
4005
|
+
);
|
|
4006
|
+
})).catch((error) => {
|
|
4007
|
+
this.meetingFiniteStateMachine.fail(error);
|
|
4008
|
+
Metrics.sendBehavioralMetric(
|
|
4009
|
+
BEHAVIORAL_METRICS.MOVE_FROM_FAILURE,
|
|
4010
|
+
{
|
|
4011
|
+
correlation_id: this.correlationId,
|
|
4012
|
+
locus_id: this.locusUrl.split('/').pop(),
|
|
4013
|
+
reason: error.message,
|
|
4014
|
+
stack: error.stack
|
|
4015
|
+
}
|
|
4016
|
+
);
|
|
4017
|
+
LoggerProxy.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);
|
|
3976
4018
|
|
|
3977
|
-
return Promise.
|
|
4019
|
+
return Promise.reject(error);
|
|
3978
4020
|
});
|
|
3979
4021
|
}
|
|
3980
4022
|
|
|
@@ -4441,7 +4483,9 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4441
4483
|
if (!this.canUpdateMedia()) {
|
|
4442
4484
|
return this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.ALL, options);
|
|
4443
4485
|
}
|
|
4444
|
-
const {
|
|
4486
|
+
const {
|
|
4487
|
+
localStream, localShare, mediaSettings
|
|
4488
|
+
} = options;
|
|
4445
4489
|
|
|
4446
4490
|
const previousSendShareStatus = this.mediaProperties.mediaDirection.sendShare;
|
|
4447
4491
|
|
|
@@ -4451,7 +4495,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4451
4495
|
meetingId: this.id,
|
|
4452
4496
|
remoteQualityLevel: this.mediaProperties.remoteQualityLevel,
|
|
4453
4497
|
enableRtx: this.config.enableRtx,
|
|
4454
|
-
enableExtmap: this.config.enableExtmap
|
|
4498
|
+
enableExtmap: this.config.enableExtmap,
|
|
4455
4499
|
})
|
|
4456
4500
|
.then((peerConnection) => {
|
|
4457
4501
|
LoggerProxy.logger.info(`${LOG_HEADER} PeerConnection received from updateMedia, ${peerConnection}`);
|
|
@@ -4480,7 +4524,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4480
4524
|
.sendRoapMediaRequest({
|
|
4481
4525
|
sdp: this.mediaProperties.peerConnection.sdp,
|
|
4482
4526
|
roapSeq: this.roapSeq,
|
|
4483
|
-
meeting: this // or can pass meeting ID
|
|
4527
|
+
meeting: this, // or can pass meeting ID
|
|
4484
4528
|
}),
|
|
4485
4529
|
{
|
|
4486
4530
|
header: `${LOG_HEADER} sendRoapMediaRequest being sent`,
|
package/src/metrics/constants.js
CHANGED
|
@@ -51,7 +51,11 @@ const BEHAVIORAL_METRICS = {
|
|
|
51
51
|
ADHOC_MEETING_FAILURE: 'js_sdk_adhoc_meeting_failure',
|
|
52
52
|
VERIFY_PASSWORD_SUCCESS: 'js_sdk_verify_password_success',
|
|
53
53
|
VERIFY_PASSWORD_ERROR: 'js_sdk_verify_password_error',
|
|
54
|
-
VERIFY_CAPTCHA_ERROR: 'js_sdk_verify_captcha_error'
|
|
54
|
+
VERIFY_CAPTCHA_ERROR: 'js_sdk_verify_captcha_error',
|
|
55
|
+
MOVE_TO_SUCCESS: 'js_sdk_move_to_success',
|
|
56
|
+
MOVE_TO_FAILURE: 'js_sdk_move_to_failure',
|
|
57
|
+
MOVE_FROM_SUCCESS: 'js_sdk_move_from_success',
|
|
58
|
+
MOVE_FROM_FAILURE: 'js_sdk_move_from_failure'
|
|
55
59
|
};
|
|
56
60
|
|
|
57
61
|
|