@webex/plugin-meetings 2.10.0 → 2.11.0

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.
@@ -42,6 +42,10 @@ var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime-corejs2/h
42
42
 
43
43
  var _constants = require("../constants");
44
44
 
45
+ var _metrics = _interopRequireDefault(require("../metrics"));
46
+
47
+ var _constants2 = _interopRequireDefault(require("../metrics/constants"));
48
+
45
49
  var _utilv = _interopRequireDefault(require("./utilv2"));
46
50
 
47
51
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@@ -252,6 +256,9 @@ var MeetingInfoV2 = /*#__PURE__*/function () {
252
256
  invitees: getInvitees((_conversation$partici = conversation.participants) === null || _conversation$partici === void 0 ? void 0 : _conversation$partici.items)
253
257
  };
254
258
  var uri = _this4.webex.meetings.preferredWebexSite ? "https://".concat(_this4.webex.meetings.preferredWebexSite, "/wbxappapi/v2/meetings/spaceInstant") : '';
259
+
260
+ _metrics.default.sendBehavioralMetric(_constants2.default.ADHOC_MEETING_SUCCESS);
261
+
255
262
  return _this4.webex.request({
256
263
  method: _constants.HTTP_VERBS.POST,
257
264
  uri: uri,
@@ -261,6 +268,15 @@ var MeetingInfoV2 = /*#__PURE__*/function () {
261
268
 
262
269
  throw new MeetingInfoV2AdhocMeetingError((_err$body = err.body) === null || _err$body === void 0 ? void 0 : _err$body.code, (_err$body2 = err.body) === null || _err$body2 === void 0 ? void 0 : _err$body2.message);
263
270
  });
271
+ }).catch(function (err) {
272
+ var _err$body3, _err$body4;
273
+
274
+ _metrics.default.sendBehavioralMetric(_constants2.default.ADHOC_MEETING_FAILURE, {
275
+ reason: err.message,
276
+ stack: err.stack
277
+ });
278
+
279
+ throw new MeetingInfoV2AdhocMeetingError((_err$body3 = err.body) === null || _err$body3 === void 0 ? void 0 : _err$body3.code, (_err$body4 = err.body) === null || _err$body4 === void 0 ? void 0 : _err$body4.message);
264
280
  }));
265
281
 
266
282
  case 4:
@@ -347,17 +363,29 @@ var MeetingInfoV2 = /*#__PURE__*/function () {
347
363
  case 14:
348
364
  directURI = _context2.sent;
349
365
  if (directURI) options.directURI = directURI;
350
- return _context2.abrupt("return", this.webex.request(options).catch(function (err) {
366
+ return _context2.abrupt("return", this.webex.request(options).then(function () {
367
+ _metrics.default.sendBehavioralMetric(_constants2.default.FETCH_MEETING_INFO_V1_SUCCESS);
368
+ }).catch(function (err) {
351
369
  if ((err === null || err === void 0 ? void 0 : err.statusCode) === 403) {
352
- var _err$body3, _err$body4, _err$body4$data;
370
+ var _err$body5, _err$body6, _err$body6$data;
353
371
 
354
- throw new MeetingInfoV2PasswordError((_err$body3 = err.body) === null || _err$body3 === void 0 ? void 0 : _err$body3.code, (_err$body4 = err.body) === null || _err$body4 === void 0 ? void 0 : (_err$body4$data = _err$body4.data) === null || _err$body4$data === void 0 ? void 0 : _err$body4$data.meetingInfo);
372
+ _metrics.default.sendBehavioralMetric(_constants2.default.VERIFY_PASSWORD_ERROR, {
373
+ reason: err.message,
374
+ stack: err.stack
375
+ });
376
+
377
+ throw new MeetingInfoV2PasswordError((_err$body5 = err.body) === null || _err$body5 === void 0 ? void 0 : _err$body5.code, (_err$body6 = err.body) === null || _err$body6 === void 0 ? void 0 : (_err$body6$data = _err$body6.data) === null || _err$body6$data === void 0 ? void 0 : _err$body6$data.meetingInfo);
355
378
  }
356
379
 
357
380
  if ((err === null || err === void 0 ? void 0 : err.statusCode) === 423) {
358
- var _err$body5;
381
+ var _err$body7;
382
+
383
+ _metrics.default.sendBehavioralMetric(_constants2.default.VERIFY_CAPTCHA_ERROR, {
384
+ reason: err.message,
385
+ stack: err.stack
386
+ });
359
387
 
360
- throw new MeetingInfoV2CaptchaError((_err$body5 = err.body) === null || _err$body5 === void 0 ? void 0 : _err$body5.code, {
388
+ throw new MeetingInfoV2CaptchaError((_err$body7 = err.body) === null || _err$body7 === void 0 ? void 0 : _err$body7.code, {
361
389
  captchaId: err.body.captchaID,
362
390
  verificationImageURL: err.body.verificationImageURL,
363
391
  verificationAudioURL: err.body.verificationAudioURL,
@@ -365,6 +393,11 @@ var MeetingInfoV2 = /*#__PURE__*/function () {
365
393
  });
366
394
  }
367
395
 
396
+ _metrics.default.sendBehavioralMetric(_constants2.default.FETCH_MEETING_INFO_V1_FAILURE, {
397
+ reason: err.message,
398
+ stack: err.stack
399
+ });
400
+
368
401
  throw err;
369
402
  }));
370
403
 
@@ -1 +1 @@
1
- {"version":3,"names":["PASSWORD_ERROR_DEFAULT_MESSAGE","CAPTCHA_ERROR_DEFAULT_MESSAGE","ADHOC_MEETING_DEFAULT_ERROR","CAPTCHA_ERROR_REQUIRES_PASSWORD_CODES","MeetingInfoV2PasswordError","wbxAppApiErrorCode","meetingInfo","message","name","sdkMessage","stack","Error","wbxAppApiCode","MeetingInfoV2AdhocMeetingError","MeetingInfoV2CaptchaError","captchaInfo","isPasswordRequired","includes","MeetingInfoV2","webex","destination","type","MeetingInfoUtil","getDestinationType","conversationUrl","meetings","preferredWebexSite","getInvitees","particpants","invitees","forEach","participant","push","email","emailAddress","ciUserUuid","entryUUID","internal","conversation","get","url","includeParticipants","disableTransform","then","body","title","displayName","spaceUrl","keyUrl","encryptionKeyUrl","kroUrl","kmsResourceObjectUrl","participants","items","uri","request","method","HTTP_VERBS","POST","catch","err","code","password","destinationType","_CONVERSATION_URL_","config","experimental","enableAdhocMeetings","createAdhocSpaceMeeting","getRequestBody","options","service","resource","getDirectMeetingInfoURI","directURI","statusCode","data","captchaId","captchaID","verificationImageURL","verificationAudioURL","refreshURL"],"sources":["meeting-info-v2.js"],"sourcesContent":["\nimport {HTTP_VERBS, _CONVERSATION_URL_} from '../constants';\n\nimport MeetingInfoUtil from './utilv2';\n\nconst PASSWORD_ERROR_DEFAULT_MESSAGE = 'Password required. Call fetchMeetingInfo() with password argument';\nconst CAPTCHA_ERROR_DEFAULT_MESSAGE = 'Captcha required. Call fetchMeetingInfo() with captchaInfo argument';\nconst ADHOC_MEETING_DEFAULT_ERROR = 'Failed starting the adhoc meeting, Please contact support team ';\nconst CAPTCHA_ERROR_REQUIRES_PASSWORD_CODES = [423005, 423006];\n\n/**\n * Error to indicate that wbxappapi requires a password\n */\nexport class MeetingInfoV2PasswordError extends Error {\n /**\n *\n * @constructor\n * @param {Number} [wbxAppApiErrorCode]\n * @param {Object} [meetingInfo]\n * @param {String} [message]\n */\n constructor(wbxAppApiErrorCode, meetingInfo, message = PASSWORD_ERROR_DEFAULT_MESSAGE) {\n super(`${message}, code=${wbxAppApiErrorCode}`);\n this.name = 'MeetingInfoV2PasswordError';\n this.sdkMessage = message;\n this.stack = (new Error()).stack;\n this.wbxAppApiCode = wbxAppApiErrorCode;\n this.meetingInfo = meetingInfo;\n }\n}\n\n/**\n * Error generating a adhoc space meeting\n */\nexport class MeetingInfoV2AdhocMeetingError extends Error {\n /**\n *\n * @constructor\n * @param {Number} [wbxAppApiErrorCode]\n * @param {String} [message]\n */\n constructor(wbxAppApiErrorCode, message = ADHOC_MEETING_DEFAULT_ERROR) {\n super(`${message}, code=${wbxAppApiErrorCode}`);\n this.name = 'MeetingInfoV2AdhocMeetingError';\n this.sdkMessage = message;\n this.stack = (new Error()).stack;\n this.wbxAppApiCode = wbxAppApiErrorCode;\n }\n}\n\n\n/**\n * Error to indicate that preferred webex site not present to start adhoc meeting\n */\nexport class MeetingInfoV2CaptchaError extends Error {\n /**\n *\n * @constructor\n * @param {Number} [wbxAppApiErrorCode]\n * @param {Object} [captchaInfo]\n * @param {String} [message]\n */\n constructor(wbxAppApiErrorCode, captchaInfo, message = CAPTCHA_ERROR_DEFAULT_MESSAGE) {\n super(`${message}, code=${wbxAppApiErrorCode}`);\n this.name = 'MeetingInfoV2PasswordError';\n this.sdkMessage = message;\n this.stack = (new Error()).stack;\n this.wbxAppApiCode = wbxAppApiErrorCode;\n this.isPasswordRequired = CAPTCHA_ERROR_REQUIRES_PASSWORD_CODES.includes(wbxAppApiErrorCode);\n this.captchaInfo = captchaInfo;\n }\n}\n\n/**\n * @class MeetingInfo\n */\nexport default class MeetingInfoV2 {\n /**\n *\n * @param {WebexSDK} webex\n */\n constructor(webex) {\n this.webex = webex;\n }\n\n /**\n * converts hydra id into conversation url and persons Id\n * @param {String} destination one of many different types of destinations to look up info for\n * @param {String} [type] to match up with the destination value\n * @returns {Promise} destination and type\n * @public\n * @memberof MeetingInfo\n */\n fetchInfoOptions(destination, type = null) {\n return MeetingInfoUtil.getDestinationType({\n destination,\n type,\n webex: this.webex\n });\n }\n\n /**\n * Creates adhoc space meetings for a space by fetching the conversation infomation\n * @param {String} conversationUrl conversationUrl to start adhoc meeting on\n * @returns {Promise} returns a meeting info object\n * @public\n * @memberof MeetingInfo\n */\n async createAdhocSpaceMeeting(conversationUrl) {\n if (!this.webex.meetings.preferredWebexSite) {\n throw Error('No preferred webex site found');\n }\n const getInvitees = (particpants = []) => {\n const invitees = [];\n\n if (particpants) {\n particpants.forEach((participant) => {\n invitees.push({\n email: participant.emailAddress,\n ciUserUuid: participant.entryUUID\n });\n });\n }\n\n return invitees;\n };\n\n return this.webex.internal.conversation.get(\n {url: conversationUrl},\n {includeParticipants: true, disableTransform: true}\n )\n .then((conversation) => {\n const body = {\n title: conversation.displayName,\n spaceUrl: conversation.url,\n keyUrl: conversation.encryptionKeyUrl,\n kroUrl: conversation.kmsResourceObjectUrl,\n invitees: getInvitees(conversation.participants?.items)\n };\n\n const uri = this.webex.meetings.preferredWebexSite ?\n `https://${this.webex.meetings.preferredWebexSite}/wbxappapi/v2/meetings/spaceInstant` : '';\n\n return this.webex.request({\n method: HTTP_VERBS.POST,\n uri,\n body\n })\n .catch((err) => {\n throw new MeetingInfoV2AdhocMeetingError(err.body?.code, err.body?.message);\n });\n });\n }\n\n /**\n * Fetches meeting info from the server\n * @param {String} destination one of many different types of destinations to look up info for\n * @param {String} [type] to match up with the destination value\n * @param {String} password\n * @param {Object} captchaInfo\n * @param {String} captchaInfo.code\n * @param {String} captchaInfo.id\n * @returns {Promise} returns a meeting info object\n * @public\n * @memberof MeetingInfo\n */\n async fetchMeetingInfo(destination, type = null, password = null, captchaInfo = null) {\n const destinationType = await MeetingInfoUtil.getDestinationType({\n destination,\n type,\n webex: this.webex\n });\n\n if (destinationType.type === _CONVERSATION_URL_ && this.webex.config.meetings.experimental.enableAdhocMeetings) {\n return this.createAdhocSpaceMeeting(destinationType.destination);\n }\n\n const body = await MeetingInfoUtil.getRequestBody({...destinationType, password, captchaInfo});\n\n const options = {\n method: HTTP_VERBS.POST,\n service: 'webex-appapi-service',\n resource: 'meetingInfo',\n body\n };\n\n const directURI = await MeetingInfoUtil.getDirectMeetingInfoURI(destinationType);\n\n if (directURI) options.directURI = directURI;\n\n return this.webex.request(options)\n .catch((err) => {\n if (err?.statusCode === 403) {\n throw new MeetingInfoV2PasswordError(err.body?.code, err.body?.data?.meetingInfo);\n }\n if (err?.statusCode === 423) {\n throw new MeetingInfoV2CaptchaError(err.body?.code, {\n captchaId: err.body.captchaID,\n verificationImageURL: err.body.verificationImageURL,\n verificationAudioURL: err.body.verificationAudioURL,\n refreshURL: err.body.refreshURL\n });\n }\n throw err;\n });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["PASSWORD_ERROR_DEFAULT_MESSAGE","CAPTCHA_ERROR_DEFAULT_MESSAGE","ADHOC_MEETING_DEFAULT_ERROR","CAPTCHA_ERROR_REQUIRES_PASSWORD_CODES","MeetingInfoV2PasswordError","wbxAppApiErrorCode","meetingInfo","message","name","sdkMessage","stack","Error","wbxAppApiCode","MeetingInfoV2AdhocMeetingError","MeetingInfoV2CaptchaError","captchaInfo","isPasswordRequired","includes","MeetingInfoV2","webex","destination","type","MeetingInfoUtil","getDestinationType","conversationUrl","meetings","preferredWebexSite","getInvitees","particpants","invitees","forEach","participant","push","email","emailAddress","ciUserUuid","entryUUID","internal","conversation","get","url","includeParticipants","disableTransform","then","body","title","displayName","spaceUrl","keyUrl","encryptionKeyUrl","kroUrl","kmsResourceObjectUrl","participants","items","uri","Metrics","sendBehavioralMetric","BEHAVIORAL_METRICS","ADHOC_MEETING_SUCCESS","request","method","HTTP_VERBS","POST","catch","err","code","ADHOC_MEETING_FAILURE","reason","password","destinationType","_CONVERSATION_URL_","config","experimental","enableAdhocMeetings","createAdhocSpaceMeeting","getRequestBody","options","service","resource","getDirectMeetingInfoURI","directURI","FETCH_MEETING_INFO_V1_SUCCESS","statusCode","VERIFY_PASSWORD_ERROR","data","VERIFY_CAPTCHA_ERROR","captchaId","captchaID","verificationImageURL","verificationAudioURL","refreshURL","FETCH_MEETING_INFO_V1_FAILURE"],"sources":["meeting-info-v2.js"],"sourcesContent":["\nimport {HTTP_VERBS, _CONVERSATION_URL_} from '../constants';\nimport Metrics from '../metrics';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\n\nimport MeetingInfoUtil from './utilv2';\n\nconst PASSWORD_ERROR_DEFAULT_MESSAGE = 'Password required. Call fetchMeetingInfo() with password argument';\nconst CAPTCHA_ERROR_DEFAULT_MESSAGE = 'Captcha required. Call fetchMeetingInfo() with captchaInfo argument';\nconst ADHOC_MEETING_DEFAULT_ERROR = 'Failed starting the adhoc meeting, Please contact support team ';\nconst CAPTCHA_ERROR_REQUIRES_PASSWORD_CODES = [423005, 423006];\n\n/**\n * Error to indicate that wbxappapi requires a password\n */\nexport class MeetingInfoV2PasswordError extends Error {\n /**\n *\n * @constructor\n * @param {Number} [wbxAppApiErrorCode]\n * @param {Object} [meetingInfo]\n * @param {String} [message]\n */\n constructor(wbxAppApiErrorCode, meetingInfo, message = PASSWORD_ERROR_DEFAULT_MESSAGE) {\n super(`${message}, code=${wbxAppApiErrorCode}`);\n this.name = 'MeetingInfoV2PasswordError';\n this.sdkMessage = message;\n this.stack = (new Error()).stack;\n this.wbxAppApiCode = wbxAppApiErrorCode;\n this.meetingInfo = meetingInfo;\n }\n}\n\n/**\n * Error generating a adhoc space meeting\n */\nexport class MeetingInfoV2AdhocMeetingError extends Error {\n /**\n *\n * @constructor\n * @param {Number} [wbxAppApiErrorCode]\n * @param {String} [message]\n */\n constructor(wbxAppApiErrorCode, message = ADHOC_MEETING_DEFAULT_ERROR) {\n super(`${message}, code=${wbxAppApiErrorCode}`);\n this.name = 'MeetingInfoV2AdhocMeetingError';\n this.sdkMessage = message;\n this.stack = (new Error()).stack;\n this.wbxAppApiCode = wbxAppApiErrorCode;\n }\n}\n\n\n/**\n * Error to indicate that preferred webex site not present to start adhoc meeting\n */\nexport class MeetingInfoV2CaptchaError extends Error {\n /**\n *\n * @constructor\n * @param {Number} [wbxAppApiErrorCode]\n * @param {Object} [captchaInfo]\n * @param {String} [message]\n */\n constructor(wbxAppApiErrorCode, captchaInfo, message = CAPTCHA_ERROR_DEFAULT_MESSAGE) {\n super(`${message}, code=${wbxAppApiErrorCode}`);\n this.name = 'MeetingInfoV2PasswordError';\n this.sdkMessage = message;\n this.stack = (new Error()).stack;\n this.wbxAppApiCode = wbxAppApiErrorCode;\n this.isPasswordRequired = CAPTCHA_ERROR_REQUIRES_PASSWORD_CODES.includes(wbxAppApiErrorCode);\n this.captchaInfo = captchaInfo;\n }\n}\n\n/**\n * @class MeetingInfo\n */\nexport default class MeetingInfoV2 {\n /**\n *\n * @param {WebexSDK} webex\n */\n constructor(webex) {\n this.webex = webex;\n }\n\n /**\n * converts hydra id into conversation url and persons Id\n * @param {String} destination one of many different types of destinations to look up info for\n * @param {String} [type] to match up with the destination value\n * @returns {Promise} destination and type\n * @public\n * @memberof MeetingInfo\n */\n fetchInfoOptions(destination, type = null) {\n return MeetingInfoUtil.getDestinationType({\n destination,\n type,\n webex: this.webex\n });\n }\n\n /**\n * Creates adhoc space meetings for a space by fetching the conversation infomation\n * @param {String} conversationUrl conversationUrl to start adhoc meeting on\n * @returns {Promise} returns a meeting info object\n * @public\n * @memberof MeetingInfo\n */\n async createAdhocSpaceMeeting(conversationUrl) {\n if (!this.webex.meetings.preferredWebexSite) {\n throw Error('No preferred webex site found');\n }\n const getInvitees = (particpants = []) => {\n const invitees = [];\n\n if (particpants) {\n particpants.forEach((participant) => {\n invitees.push({\n email: participant.emailAddress,\n ciUserUuid: participant.entryUUID\n });\n });\n }\n\n return invitees;\n };\n\n return this.webex.internal.conversation.get(\n {url: conversationUrl},\n {includeParticipants: true, disableTransform: true}\n )\n .then((conversation) => {\n const body = {\n title: conversation.displayName,\n spaceUrl: conversation.url,\n keyUrl: conversation.encryptionKeyUrl,\n kroUrl: conversation.kmsResourceObjectUrl,\n invitees: getInvitees(conversation.participants?.items)\n };\n\n const uri = this.webex.meetings.preferredWebexSite ?\n `https://${this.webex.meetings.preferredWebexSite}/wbxappapi/v2/meetings/spaceInstant` : '';\n\n Metrics.sendBehavioralMetric(\n BEHAVIORAL_METRICS.ADHOC_MEETING_SUCCESS\n );\n\n return this.webex.request({\n method: HTTP_VERBS.POST,\n uri,\n body\n })\n .catch((err) => {\n throw new MeetingInfoV2AdhocMeetingError(err.body?.code, err.body?.message);\n });\n })\n .catch((err) => {\n Metrics.sendBehavioralMetric(\n BEHAVIORAL_METRICS.ADHOC_MEETING_FAILURE,\n {\n reason: err.message,\n stack: err.stack\n }\n );\n throw new MeetingInfoV2AdhocMeetingError(err.body?.code, err.body?.message);\n });\n }\n\n /**\n * Fetches meeting info from the server\n * @param {String} destination one of many different types of destinations to look up info for\n * @param {String} [type] to match up with the destination value\n * @param {String} password\n * @param {Object} captchaInfo\n * @param {String} captchaInfo.code\n * @param {String} captchaInfo.id\n * @returns {Promise} returns a meeting info object\n * @public\n * @memberof MeetingInfo\n */\n async fetchMeetingInfo(destination, type = null, password = null, captchaInfo = null) {\n const destinationType = await MeetingInfoUtil.getDestinationType({\n destination,\n type,\n webex: this.webex\n });\n\n if (destinationType.type === _CONVERSATION_URL_ && this.webex.config.meetings.experimental.enableAdhocMeetings) {\n return this.createAdhocSpaceMeeting(destinationType.destination);\n }\n\n const body = await MeetingInfoUtil.getRequestBody({...destinationType, password, captchaInfo});\n\n const options = {\n method: HTTP_VERBS.POST,\n service: 'webex-appapi-service',\n resource: 'meetingInfo',\n body\n };\n\n const directURI = await MeetingInfoUtil.getDirectMeetingInfoURI(destinationType);\n\n if (directURI) options.directURI = directURI;\n\n return this.webex.request(options)\n .then(() => {\n Metrics.sendBehavioralMetric(\n BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_SUCCESS\n );\n })\n .catch((err) => {\n if (err?.statusCode === 403) {\n Metrics.sendBehavioralMetric(\n BEHAVIORAL_METRICS.VERIFY_PASSWORD_ERROR,\n {\n reason: err.message,\n stack: err.stack\n }\n );\n\n throw new MeetingInfoV2PasswordError(err.body?.code, err.body?.data?.meetingInfo);\n }\n if (err?.statusCode === 423) {\n Metrics.sendBehavioralMetric(\n BEHAVIORAL_METRICS.VERIFY_CAPTCHA_ERROR,\n {\n reason: err.message,\n stack: err.stack\n }\n );\n\n throw new MeetingInfoV2CaptchaError(err.body?.code, {\n captchaId: err.body.captchaID,\n verificationImageURL: err.body.verificationImageURL,\n verificationAudioURL: err.body.verificationAudioURL,\n refreshURL: err.body.refreshURL\n });\n }\n\n Metrics.sendBehavioralMetric(\n BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_FAILURE,\n {\n reason: err.message,\n stack: err.stack\n }\n );\n throw err;\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;AACA;;AAEA;;;;;;;;;;AAEA,IAAMA,8BAA8B,GAAG,mEAAvC;AACA,IAAMC,6BAA6B,GAAG,qEAAtC;AACA,IAAMC,2BAA2B,GAAG,iEAApC;AACA,IAAMC,qCAAqC,GAAG,CAAC,MAAD,EAAS,MAAT,CAA9C;AAEA;AACA;AACA;;IACaC,0B;;;;;EACX;AACF;AACA;AACA;AACA;AACA;AACA;EACE,oCAAYC,kBAAZ,EAAgCC,WAAhC,EAAuF;IAAA;;IAAA,IAA1CC,OAA0C,uEAAhCP,8BAAgC;IAAA;IACrF,oCAASO,OAAT,oBAA0BF,kBAA1B;IACA,MAAKG,IAAL,GAAY,4BAAZ;IACA,MAAKC,UAAL,GAAkBF,OAAlB;IACA,MAAKG,KAAL,GAAc,IAAIC,KAAJ,EAAD,CAAcD,KAA3B;IACA,MAAKE,aAAL,GAAqBP,kBAArB;IACA,MAAKC,WAAL,GAAmBA,WAAnB;IANqF;EAOtF;;;+CAf6CK,K;AAkBhD;AACA;AACA;;;;;IACaE,8B;;;;;EACX;AACF;AACA;AACA;AACA;AACA;EACE,wCAAYR,kBAAZ,EAAuE;IAAA;;IAAA,IAAvCE,OAAuC,uEAA7BL,2BAA6B;IAAA;IACrE,sCAASK,OAAT,oBAA0BF,kBAA1B;IACA,OAAKG,IAAL,GAAY,gCAAZ;IACA,OAAKC,UAAL,GAAkBF,OAAlB;IACA,OAAKG,KAAL,GAAc,IAAIC,KAAJ,EAAD,CAAcD,KAA3B;IACA,OAAKE,aAAL,GAAqBP,kBAArB;IALqE;EAMtE;;;+CAbiDM,K;AAiBpD;AACA;AACA;;;;;IACaG,yB;;;;;EACX;AACF;AACA;AACA;AACA;AACA;AACA;EACE,mCAAYT,kBAAZ,EAAgCU,WAAhC,EAAsF;IAAA;;IAAA,IAAzCR,OAAyC,uEAA/BN,6BAA+B;IAAA;IACpF,sCAASM,OAAT,oBAA0BF,kBAA1B;IACA,OAAKG,IAAL,GAAY,4BAAZ;IACA,OAAKC,UAAL,GAAkBF,OAAlB;IACA,OAAKG,KAAL,GAAc,IAAIC,KAAJ,EAAD,CAAcD,KAA3B;IACA,OAAKE,aAAL,GAAqBP,kBAArB;IACA,OAAKW,kBAAL,GAA0Bb,qCAAqC,CAACc,QAAtC,CAA+CZ,kBAA/C,CAA1B;IACA,OAAKU,WAAL,GAAmBA,WAAnB;IAPoF;EAQrF;;;+CAhB4CJ,K;AAmB/C;AACA;AACA;;;;;IACqBO,a;EACnB;AACF;AACA;AACA;EACE,uBAAYC,KAAZ,EAAmB;IAAA;IACjB,KAAKA,KAAL,GAAaA,KAAb;EACD;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;;;WACE,0BAAiBC,WAAjB,EAA2C;MAAA,IAAbC,IAAa,uEAAN,IAAM;MACzC,OAAOC,eAAgBC,kBAAhB,CAAmC;QACxCH,WAAW,EAAXA,WADwC;QAExCC,IAAI,EAAJA,IAFwC;QAGxCF,KAAK,EAAE,KAAKA;MAH4B,CAAnC,CAAP;IAKD;IAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;;6GACE,iBAA8BK,eAA9B;QAAA;;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA,IACO,KAAKL,KAAL,CAAWM,QAAX,CAAoBC,kBAD3B;kBAAA;kBAAA;gBAAA;;gBAAA,MAEUf,KAAK,CAAC,+BAAD,CAFf;;cAAA;gBAIQgB,WAJR,GAIsB,SAAdA,WAAc,GAAsB;kBAAA,IAArBC,WAAqB,uEAAP,EAAO;kBACxC,IAAMC,QAAQ,GAAG,EAAjB;;kBAEA,IAAID,WAAJ,EAAiB;oBACfA,WAAW,CAACE,OAAZ,CAAoB,UAACC,WAAD,EAAiB;sBACnCF,QAAQ,CAACG,IAAT,CAAc;wBACZC,KAAK,EAAEF,WAAW,CAACG,YADP;wBAEZC,UAAU,EAAEJ,WAAW,CAACK;sBAFZ,CAAd;oBAID,CALD;kBAMD;;kBAED,OAAOP,QAAP;gBACD,CAjBH;;gBAAA,iCAmBS,KAAKV,KAAL,CAAWkB,QAAX,CAAoBC,YAApB,CAAiCC,GAAjC,CACL;kBAACC,GAAG,EAAEhB;gBAAN,CADK,EAEL;kBAACiB,mBAAmB,EAAE,IAAtB;kBAA4BC,gBAAgB,EAAE;gBAA9C,CAFK,EAIJC,IAJI,CAIC,UAACL,YAAD,EAAkB;kBAAA;;kBACtB,IAAMM,IAAI,GAAG;oBACXC,KAAK,EAAEP,YAAY,CAACQ,WADT;oBAEXC,QAAQ,EAAET,YAAY,CAACE,GAFZ;oBAGXQ,MAAM,EAAEV,YAAY,CAACW,gBAHV;oBAIXC,MAAM,EAAEZ,YAAY,CAACa,oBAJV;oBAKXtB,QAAQ,EAAEF,WAAW,0BAACW,YAAY,CAACc,YAAd,0DAAC,sBAA2BC,KAA5B;kBALV,CAAb;kBAQA,IAAMC,GAAG,GAAG,MAAI,CAACnC,KAAL,CAAWM,QAAX,CAAoBC,kBAApB,qBACC,MAAI,CAACP,KAAL,CAAWM,QAAX,CAAoBC,kBADrB,2CAC+E,EAD3F;;kBAGA6B,iBAAQC,oBAAR,CACEC,oBAAmBC,qBADrB;;kBAIA,OAAO,MAAI,CAACvC,KAAL,CAAWwC,OAAX,CAAmB;oBACxBC,MAAM,EAAEC,sBAAWC,IADK;oBAExBR,GAAG,EAAHA,GAFwB;oBAGxBV,IAAI,EAAJA;kBAHwB,CAAnB,EAKJmB,KALI,CAKE,UAACC,GAAD,EAAS;oBAAA;;oBACd,MAAM,IAAInD,8BAAJ,cAAmCmD,GAAG,CAACpB,IAAvC,8CAAmC,UAAUqB,IAA7C,gBAAmDD,GAAG,CAACpB,IAAvD,+CAAmD,WAAUrC,OAA7D,CAAN;kBACD,CAPI,CAAP;gBAQD,CA5BI,EA6BJwD,KA7BI,CA6BE,UAACC,GAAD,EAAS;kBAAA;;kBACdT,iBAAQC,oBAAR,CACEC,oBAAmBS,qBADrB,EAEE;oBACEC,MAAM,EAAEH,GAAG,CAACzD,OADd;oBAEEG,KAAK,EAAEsD,GAAG,CAACtD;kBAFb,CAFF;;kBAOA,MAAM,IAAIG,8BAAJ,eAAmCmD,GAAG,CAACpB,IAAvC,+CAAmC,WAAUqB,IAA7C,gBAAmDD,GAAG,CAACpB,IAAvD,+CAAmD,WAAUrC,OAA7D,CAAN;gBACD,CAtCI,CAnBT;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;IA4DA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;sGACE,kBAAuBa,WAAvB;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAoCC,IAApC,8DAA2C,IAA3C;gBAAiD+C,QAAjD,8DAA4D,IAA5D;gBAAkErD,WAAlE,8DAAgF,IAAhF;gBAAA;gBAAA,OACgCO,eAAgBC,kBAAhB,CAAmC;kBAC/DH,WAAW,EAAXA,WAD+D;kBAE/DC,IAAI,EAAJA,IAF+D;kBAG/DF,KAAK,EAAE,KAAKA;gBAHmD,CAAnC,CADhC;;cAAA;gBACQkD,eADR;;gBAAA,MAOMA,eAAe,CAAChD,IAAhB,KAAyBiD,6BAAzB,IAA+C,KAAKnD,KAAL,CAAWoD,MAAX,CAAkB9C,QAAlB,CAA2B+C,YAA3B,CAAwCC,mBAP7F;kBAAA;kBAAA;gBAAA;;gBAAA,kCAQW,KAAKC,uBAAL,CAA6BL,eAAe,CAACjD,WAA7C,CARX;;cAAA;gBAAA;gBAAA,OAWqBE,eAAgBqD,cAAhB,iCAAmCN,eAAnC;kBAAoDD,QAAQ,EAARA,QAApD;kBAA8DrD,WAAW,EAAXA;gBAA9D,GAXrB;;cAAA;gBAWQ6B,IAXR;gBAaQgC,OAbR,GAakB;kBACdhB,MAAM,EAAEC,sBAAWC,IADL;kBAEde,OAAO,EAAE,sBAFK;kBAGdC,QAAQ,EAAE,aAHI;kBAIdlC,IAAI,EAAJA;gBAJc,CAblB;gBAAA;gBAAA,OAoB0BtB,eAAgByD,uBAAhB,CAAwCV,eAAxC,CApB1B;;cAAA;gBAoBQW,SApBR;gBAsBE,IAAIA,SAAJ,EAAeJ,OAAO,CAACI,SAAR,GAAoBA,SAApB;gBAtBjB,kCAwBS,KAAK7D,KAAL,CAAWwC,OAAX,CAAmBiB,OAAnB,EACJjC,IADI,CACC,YAAM;kBACVY,iBAAQC,oBAAR,CACEC,oBAAmBwB,6BADrB;gBAGD,CALI,EAMJlB,KANI,CAME,UAACC,GAAD,EAAS;kBACd,IAAI,CAAAA,GAAG,SAAH,IAAAA,GAAG,WAAH,YAAAA,GAAG,CAAEkB,UAAL,MAAoB,GAAxB,EAA6B;oBAAA;;oBAC3B3B,iBAAQC,oBAAR,CACEC,oBAAmB0B,qBADrB,EAEE;sBACEhB,MAAM,EAAEH,GAAG,CAACzD,OADd;sBAEEG,KAAK,EAAEsD,GAAG,CAACtD;oBAFb,CAFF;;oBAQA,MAAM,IAAIN,0BAAJ,eAA+B4D,GAAG,CAACpB,IAAnC,+CAA+B,WAAUqB,IAAzC,gBAA+CD,GAAG,CAACpB,IAAnD,kEAA+C,WAAUwC,IAAzD,oDAA+C,gBAAgB9E,WAA/D,CAAN;kBACD;;kBACD,IAAI,CAAA0D,GAAG,SAAH,IAAAA,GAAG,WAAH,YAAAA,GAAG,CAAEkB,UAAL,MAAoB,GAAxB,EAA6B;oBAAA;;oBAC3B3B,iBAAQC,oBAAR,CACEC,oBAAmB4B,oBADrB,EAEE;sBACElB,MAAM,EAAEH,GAAG,CAACzD,OADd;sBAEEG,KAAK,EAAEsD,GAAG,CAACtD;oBAFb,CAFF;;oBAQA,MAAM,IAAII,yBAAJ,eAA8BkD,GAAG,CAACpB,IAAlC,+CAA8B,WAAUqB,IAAxC,EAA8C;sBAClDqB,SAAS,EAAEtB,GAAG,CAACpB,IAAJ,CAAS2C,SAD8B;sBAElDC,oBAAoB,EAAExB,GAAG,CAACpB,IAAJ,CAAS4C,oBAFmB;sBAGlDC,oBAAoB,EAAEzB,GAAG,CAACpB,IAAJ,CAAS6C,oBAHmB;sBAIlDC,UAAU,EAAE1B,GAAG,CAACpB,IAAJ,CAAS8C;oBAJ6B,CAA9C,CAAN;kBAMD;;kBAEDnC,iBAAQC,oBAAR,CACEC,oBAAmBkC,6BADrB,EAEE;oBACExB,MAAM,EAAEH,GAAG,CAACzD,OADd;oBAEEG,KAAK,EAAEsD,GAAG,CAACtD;kBAFb,CAFF;;kBAOA,MAAMsD,GAAN;gBACD,CA3CI,CAxBT;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C"}
@@ -50,7 +50,14 @@ var BEHAVIORAL_METRICS = {
50
50
  ENABLE_BNR_SUCCESS: 'js_sdk_enable_bnr_success',
51
51
  ENABLE_BNR_FAILURE: 'js_sdk_enable_bnr_failure',
52
52
  DISABLE_BNR_SUCCESS: 'js_sdk_disable_bnr_success',
53
- DISABLE_BNR_FAILURE: 'js_sdk_disable_bnr_failure'
53
+ DISABLE_BNR_FAILURE: 'js_sdk_disable_bnr_failure',
54
+ FETCH_MEETING_INFO_V1_SUCCESS: 'js_sdk_fetch_meeting_info_v1_success',
55
+ FETCH_MEETING_INFO_V1_FAILURE: 'js_sdk_fetch_meeting_info_v1_failure',
56
+ ADHOC_MEETING_SUCCESS: 'js_sdk_adhoc_meeting_success',
57
+ ADHOC_MEETING_FAILURE: 'js_sdk_adhoc_meeting_failure',
58
+ VERIFY_PASSWORD_SUCCESS: 'js_sdk_verify_password_success',
59
+ VERIFY_PASSWORD_ERROR: 'js_sdk_verify_password_error',
60
+ VERIFY_CAPTCHA_ERROR: 'js_sdk_verify_captcha_error'
54
61
  };
55
62
  exports.default = BEHAVIORAL_METRICS;
56
63
  //# 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"],"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};\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;AA3CI,CAA3B"}
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;AAlDG,CAA3B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webex/plugin-meetings",
3
- "version": "2.10.0",
3
+ "version": "2.11.0",
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.10.0",
28
- "@webex/internal-plugin-mercury": "2.10.0",
29
- "@webex/internal-plugin-conversation": "2.10.0",
27
+ "@webex/webex-core": "2.11.0",
28
+ "@webex/internal-plugin-mercury": "2.11.0",
29
+ "@webex/internal-plugin-conversation": "2.11.0",
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.10.0",
35
+ "@webex/common": "2.11.0",
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.10.0",
39
+ "@webex/common-timers": "2.11.0",
40
40
  "btoa": "^1.2.1",
41
41
  "@webex/internal-media-core": "^0.0.4-beta",
42
42
  "javascript-state-machine": "^3.1.0",
@@ -1023,7 +1023,13 @@ export default class Meeting extends StatelessWebexPlugin {
1023
1023
  return this.fetchMeetingInfo({
1024
1024
  password, captchaCode
1025
1025
  })
1026
- .then(() => ({isPasswordValid: true, requiredCaptcha: null, failureReason: MEETING_INFO_FAILURE_REASON.NONE}))
1026
+ .then(() => {
1027
+ Metrics.sendBehavioralMetric(
1028
+ BEHAVIORAL_METRICS.VERIFY_PASSWORD_SUCCESS
1029
+ );
1030
+
1031
+ return {isPasswordValid: true, requiredCaptcha: null, failureReason: MEETING_INFO_FAILURE_REASON.NONE};
1032
+ })
1027
1033
  .catch((error) => {
1028
1034
  if (error instanceof PasswordError || error instanceof CaptchaError) {
1029
1035
  return {
@@ -1,5 +1,7 @@
1
1
 
2
2
  import {HTTP_VERBS, _CONVERSATION_URL_} from '../constants';
3
+ import Metrics from '../metrics';
4
+ import BEHAVIORAL_METRICS from '../metrics/constants';
3
5
 
4
6
  import MeetingInfoUtil from './utilv2';
5
7
 
@@ -141,6 +143,10 @@ export default class MeetingInfoV2 {
141
143
  const uri = this.webex.meetings.preferredWebexSite ?
142
144
  `https://${this.webex.meetings.preferredWebexSite}/wbxappapi/v2/meetings/spaceInstant` : '';
143
145
 
146
+ Metrics.sendBehavioralMetric(
147
+ BEHAVIORAL_METRICS.ADHOC_MEETING_SUCCESS
148
+ );
149
+
144
150
  return this.webex.request({
145
151
  method: HTTP_VERBS.POST,
146
152
  uri,
@@ -149,6 +155,16 @@ export default class MeetingInfoV2 {
149
155
  .catch((err) => {
150
156
  throw new MeetingInfoV2AdhocMeetingError(err.body?.code, err.body?.message);
151
157
  });
158
+ })
159
+ .catch((err) => {
160
+ Metrics.sendBehavioralMetric(
161
+ BEHAVIORAL_METRICS.ADHOC_MEETING_FAILURE,
162
+ {
163
+ reason: err.message,
164
+ stack: err.stack
165
+ }
166
+ );
167
+ throw new MeetingInfoV2AdhocMeetingError(err.body?.code, err.body?.message);
152
168
  });
153
169
  }
154
170
 
@@ -189,11 +205,32 @@ export default class MeetingInfoV2 {
189
205
  if (directURI) options.directURI = directURI;
190
206
 
191
207
  return this.webex.request(options)
208
+ .then(() => {
209
+ Metrics.sendBehavioralMetric(
210
+ BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_SUCCESS
211
+ );
212
+ })
192
213
  .catch((err) => {
193
214
  if (err?.statusCode === 403) {
215
+ Metrics.sendBehavioralMetric(
216
+ BEHAVIORAL_METRICS.VERIFY_PASSWORD_ERROR,
217
+ {
218
+ reason: err.message,
219
+ stack: err.stack
220
+ }
221
+ );
222
+
194
223
  throw new MeetingInfoV2PasswordError(err.body?.code, err.body?.data?.meetingInfo);
195
224
  }
196
225
  if (err?.statusCode === 423) {
226
+ Metrics.sendBehavioralMetric(
227
+ BEHAVIORAL_METRICS.VERIFY_CAPTCHA_ERROR,
228
+ {
229
+ reason: err.message,
230
+ stack: err.stack
231
+ }
232
+ );
233
+
197
234
  throw new MeetingInfoV2CaptchaError(err.body?.code, {
198
235
  captchaId: err.body.captchaID,
199
236
  verificationImageURL: err.body.verificationImageURL,
@@ -201,6 +238,14 @@ export default class MeetingInfoV2 {
201
238
  refreshURL: err.body.refreshURL
202
239
  });
203
240
  }
241
+
242
+ Metrics.sendBehavioralMetric(
243
+ BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_FAILURE,
244
+ {
245
+ reason: err.message,
246
+ stack: err.stack
247
+ }
248
+ );
204
249
  throw err;
205
250
  });
206
251
  }
@@ -44,7 +44,14 @@ const BEHAVIORAL_METRICS = {
44
44
  ENABLE_BNR_SUCCESS: 'js_sdk_enable_bnr_success',
45
45
  ENABLE_BNR_FAILURE: 'js_sdk_enable_bnr_failure',
46
46
  DISABLE_BNR_SUCCESS: 'js_sdk_disable_bnr_success',
47
- DISABLE_BNR_FAILURE: 'js_sdk_disable_bnr_failure'
47
+ DISABLE_BNR_FAILURE: 'js_sdk_disable_bnr_failure',
48
+ FETCH_MEETING_INFO_V1_SUCCESS: 'js_sdk_fetch_meeting_info_v1_success',
49
+ FETCH_MEETING_INFO_V1_FAILURE: 'js_sdk_fetch_meeting_info_v1_failure',
50
+ ADHOC_MEETING_SUCCESS: 'js_sdk_adhoc_meeting_success',
51
+ ADHOC_MEETING_FAILURE: 'js_sdk_adhoc_meeting_failure',
52
+ VERIFY_PASSWORD_SUCCESS: 'js_sdk_verify_password_success',
53
+ VERIFY_PASSWORD_ERROR: 'js_sdk_verify_password_error',
54
+ VERIFY_CAPTCHA_ERROR: 'js_sdk_verify_captcha_error'
48
55
  };
49
56
 
50
57
 
@@ -2366,6 +2366,11 @@ describe('plugin-meetings', () => {
2366
2366
  assert.equal(meeting.requiredCaptcha, null);
2367
2367
  assert.calledTwice(TriggerProxy.trigger);
2368
2368
  assert.calledWith(TriggerProxy.trigger, meeting, {file: 'meetings', function: 'fetchMeetingInfo'}, 'meeting:meetingInfoAvailable');
2369
+ assert(Metrics.sendBehavioralMetric.calledOnce);
2370
+ assert.calledWith(
2371
+ Metrics.sendBehavioralMetric,
2372
+ BEHAVIORAL_METRICS.VERIFY_PASSWORD_SUCCESS,
2373
+ );
2369
2374
  });
2370
2375
 
2371
2376
  it('calls meetingInfoProvider with all the right parameters and parses the result when random delay is applied', async () => {
@@ -2437,6 +2442,11 @@ describe('plugin-meetings', () => {
2437
2442
 
2438
2443
  assert.calledWith(meeting.attrs.meetingInfoProvider.fetchMeetingInfo, FAKE_DESTINATION, FAKE_TYPE, null, null);
2439
2444
 
2445
+ assert(Metrics.sendBehavioralMetric.calledOnce);
2446
+ assert.calledWith(
2447
+ Metrics.sendBehavioralMetric,
2448
+ BEHAVIORAL_METRICS.VERIFY_PASSWORD_ERROR,
2449
+ );
2440
2450
  assert.deepEqual(meeting.meetingInfo, FAKE_MEETING_INFO);
2441
2451
  assert.equal(meeting.meetingInfoFailureReason, MEETING_INFO_FAILURE_REASON.WRONG_PASSWORD);
2442
2452
  assert.equal(meeting.requiredCaptcha, null);
@@ -2457,6 +2467,11 @@ describe('plugin-meetings', () => {
2457
2467
 
2458
2468
  assert.calledWith(meeting.attrs.meetingInfoProvider.fetchMeetingInfo, FAKE_DESTINATION, FAKE_TYPE, 'aaa', null);
2459
2469
 
2470
+ assert(Metrics.sendBehavioralMetric.calledOnce);
2471
+ assert.calledWith(
2472
+ Metrics.sendBehavioralMetric,
2473
+ BEHAVIORAL_METRICS.VERIFY_CAPTCHA_ERROR,
2474
+ );
2460
2475
  assert.deepEqual(meeting.meetingInfo, {});
2461
2476
  assert.equal(meeting.meetingInfoFailureReason, MEETING_INFO_FAILURE_REASON.WRONG_PASSWORD);
2462
2477
  assert.equal(meeting.passwordStatus, PASSWORD_STATUS.REQUIRED);
@@ -16,6 +16,8 @@ import {
16
16
  } from '@webex/plugin-meetings/src/constants';
17
17
  import MeetingInfo, {MeetingInfoV2PasswordError, MeetingInfoV2CaptchaError, MeetingInfoV2AdhocMeetingError} from '@webex/plugin-meetings/src/meeting-info/meeting-info-v2';
18
18
  import MeetingInfoUtil from '@webex/plugin-meetings/src/meeting-info/utilv2';
19
+ import Metrics from '@webex/plugin-meetings/src/metrics';
20
+ import BEHAVIORAL_METRICS from '@webex/plugin-meetings/src/metrics/constants';
19
21
 
20
22
  describe('plugin-meetings', () => {
21
23
  const conversation = {
@@ -42,6 +44,13 @@ describe('plugin-meetings', () => {
42
44
  let webex;
43
45
  let meetingInfo = null;
44
46
 
47
+ beforeEach(() => {
48
+ sinon.stub(Metrics, 'sendBehavioralMetric');
49
+ });
50
+ afterEach(() => {
51
+ sinon.restore();
52
+ });
53
+
45
54
  describe('Meeting Info V2', () => {
46
55
  beforeEach(() => {
47
56
  webex = new MockWebex({
@@ -125,6 +134,11 @@ describe('plugin-meetings', () => {
125
134
  captchaVerifyCode: 'aabbcc11'
126
135
  }
127
136
  });
137
+ assert(Metrics.sendBehavioralMetric.calledOnce);
138
+ assert.calledWith(
139
+ Metrics.sendBehavioralMetric,
140
+ BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_SUCCESS,
141
+ );
128
142
  });
129
143
 
130
144
  it('create adhoc meeting when conversationUrl passed with enableAdhocMeetings toggle', async () => {
@@ -254,6 +268,11 @@ describe('plugin-meetings', () => {
254
268
  invitees: invitee
255
269
  }
256
270
  });
271
+ assert(Metrics.sendBehavioralMetric.calledOnce);
272
+ assert.calledWith(
273
+ Metrics.sendBehavioralMetric,
274
+ BEHAVIORAL_METRICS.ADHOC_MEETING_SUCCESS,
275
+ );
257
276
  });
258
277
  });
259
278
  });