@webex/internal-plugin-metrics 3.7.0 → 3.8.0-next.10
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/business-metrics.js +74 -100
- package/dist/business-metrics.js.map +1 -1
- package/dist/call-diagnostic/call-diagnostic-metrics-latencies.js +24 -15
- package/dist/call-diagnostic/call-diagnostic-metrics-latencies.js.map +1 -1
- package/dist/call-diagnostic/call-diagnostic-metrics.js +76 -10
- package/dist/call-diagnostic/call-diagnostic-metrics.js.map +1 -1
- package/dist/call-diagnostic/config.js +19 -12
- package/dist/call-diagnostic/config.js.map +1 -1
- package/dist/generic-metrics.js +2 -2
- package/dist/generic-metrics.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/metrics.js +1 -1
- package/dist/metrics.types.js.map +1 -1
- package/dist/new-metrics.js +28 -5
- package/dist/new-metrics.js.map +1 -1
- package/dist/types/business-metrics.d.ts +10 -28
- package/dist/types/call-diagnostic/call-diagnostic-metrics.d.ts +14 -1
- package/dist/types/call-diagnostic/config.d.ts +2 -0
- package/dist/types/generic-metrics.d.ts +2 -2
- package/dist/types/index.d.ts +2 -2
- package/dist/types/metrics.types.d.ts +17 -1
- package/dist/types/new-metrics.d.ts +15 -3
- package/package.json +12 -12
- package/src/business-metrics.ts +66 -76
- package/src/call-diagnostic/call-diagnostic-metrics-latencies.ts +36 -14
- package/src/call-diagnostic/call-diagnostic-metrics.ts +80 -3
- package/src/call-diagnostic/config.ts +8 -0
- package/src/generic-metrics.ts +2 -2
- package/src/index.ts +2 -0
- package/src/metrics.types.ts +21 -1
- package/src/new-metrics.ts +32 -4
- package/test/unit/spec/business/business-metrics.ts +2 -2
- package/test/unit/spec/call-diagnostic/call-diagnostic-metrics-latencies.ts +85 -0
- package/test/unit/spec/call-diagnostic/call-diagnostic-metrics.ts +674 -32
- package/test/unit/spec/new-metrics.ts +23 -0
- package/dist/behavioral/behavioral-metrics.js +0 -199
- package/dist/behavioral/behavioral-metrics.js.map +0 -1
- package/dist/behavioral/config.js +0 -11
- package/dist/behavioral/config.js.map +0 -1
- package/dist/types/behavioral/behavioral-metrics.d.ts +0 -63
- package/dist/types/behavioral/config.d.ts +0 -1
|
@@ -69,6 +69,7 @@ var CallDiagnosticMetrics = exports.default = /*#__PURE__*/function (_StatelessW
|
|
|
69
69
|
// to avoid adding @ts-ignore everywhere
|
|
70
70
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "hasLoggedBrowserSerial", void 0);
|
|
71
71
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "device", void 0);
|
|
72
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "delayedClientEvents", []);
|
|
72
73
|
// the default validator before piping an event to the batcher
|
|
73
74
|
// this function can be overridden by the user
|
|
74
75
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "validator", function (options) {
|
|
@@ -155,7 +156,13 @@ var CallDiagnosticMetrics = exports.default = /*#__PURE__*/function (_StatelessW
|
|
|
155
156
|
if (meetingInfo !== null && meetingInfo !== void 0 && meetingInfo.webexScheduled && !(meetingInfo !== null && meetingInfo !== void 0 && meetingInfo.enableEvent) && !(meetingInfo !== null && meetingInfo !== void 0 && meetingInfo.pmr)) {
|
|
156
157
|
return _config2.WEBEX_SUB_SERVICE_TYPES.SCHEDULED_MEETING;
|
|
157
158
|
}
|
|
158
|
-
|
|
159
|
+
|
|
160
|
+
// if ConvergedArchitecture enable and isConvergedWebinarWebcast -- then webcast
|
|
161
|
+
if (meetingInfo !== null && meetingInfo !== void 0 && meetingInfo.enableConvergedArchitecture && meetingInfo !== null && meetingInfo !== void 0 && meetingInfo.enableEvent) {
|
|
162
|
+
return meetingInfo !== null && meetingInfo !== void 0 && meetingInfo.isConvergedWebinarWebcast ? _config2.WEBEX_SUB_SERVICE_TYPES.WEBCAST : _config2.WEBEX_SUB_SERVICE_TYPES.WEBINAR;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// if Scheduled, enable event, not pmr - then Webinar
|
|
159
166
|
if (meetingInfo !== null && meetingInfo !== void 0 && meetingInfo.webexScheduled && meetingInfo !== null && meetingInfo !== void 0 && meetingInfo.enableEvent && !(meetingInfo !== null && meetingInfo !== void 0 && meetingInfo.pmr)) {
|
|
160
167
|
return _config2.WEBEX_SUB_SERVICE_TYPES.WEBINAR;
|
|
161
168
|
}
|
|
@@ -338,14 +345,15 @@ var CallDiagnosticMetrics = exports.default = /*#__PURE__*/function (_StatelessW
|
|
|
338
345
|
key: "prepareDiagnosticEvent",
|
|
339
346
|
value: function prepareDiagnosticEvent(eventData, options) {
|
|
340
347
|
var _this$webex$meetings$12;
|
|
341
|
-
var meetingId = options.meetingId
|
|
348
|
+
var meetingId = options.meetingId,
|
|
349
|
+
triggeredTime = options.triggeredTime;
|
|
342
350
|
var origin = this.getOrigin(options, meetingId);
|
|
343
351
|
var event = {
|
|
344
352
|
eventId: _uuid.default.v4(),
|
|
345
353
|
version: 1,
|
|
346
354
|
origin: origin,
|
|
347
355
|
originTime: {
|
|
348
|
-
triggered: new Date().toISOString(),
|
|
356
|
+
triggered: triggeredTime || new Date().toISOString(),
|
|
349
357
|
// is overridden in prepareRequest batcher
|
|
350
358
|
sent: 'not_defined_yet'
|
|
351
359
|
},
|
|
@@ -605,7 +613,7 @@ var CallDiagnosticMetrics = exports.default = /*#__PURE__*/function (_StatelessW
|
|
|
605
613
|
}, {
|
|
606
614
|
key: "createClientEventObjectInMeeting",
|
|
607
615
|
value: function createClientEventObjectInMeeting(_ref5) {
|
|
608
|
-
var _options$joinFlowVers, _meeting$callStateFor;
|
|
616
|
+
var _this$webex$meetings2, _this$webex$meetings3, _this$webex$meetings4, _options$joinFlowVers, _meeting$callStateFor;
|
|
609
617
|
var name = _ref5.name,
|
|
610
618
|
options = _ref5.options,
|
|
611
619
|
errors = _ref5.errors;
|
|
@@ -639,7 +647,7 @@ var CallDiagnosticMetrics = exports.default = /*#__PURE__*/function (_StatelessW
|
|
|
639
647
|
});
|
|
640
648
|
|
|
641
649
|
// create client event object
|
|
642
|
-
var clientEventObject = {
|
|
650
|
+
var clientEventObject = _objectSpread(_objectSpread(_objectSpread({
|
|
643
651
|
name: name,
|
|
644
652
|
canProceed: true,
|
|
645
653
|
identifiers: identifiers,
|
|
@@ -651,13 +659,27 @@ var CallDiagnosticMetrics = exports.default = /*#__PURE__*/function (_StatelessW
|
|
|
651
659
|
loginType: 'loginType' in meeting.callStateForMetrics ? meeting.callStateForMetrics.loginType : this.getCurLoginType(),
|
|
652
660
|
isConvergedArchitectureEnabled: this.getIsConvergedArchitectureEnabled({
|
|
653
661
|
meetingId: meetingId
|
|
654
|
-
})
|
|
655
|
-
|
|
656
|
-
|
|
662
|
+
})
|
|
663
|
+
}, meeting.userNameInput && {
|
|
664
|
+
userNameInput: meeting.userNameInput
|
|
665
|
+
}), meeting.emailInput && {
|
|
666
|
+
emailInput: meeting.emailInput
|
|
667
|
+
}), {}, {
|
|
668
|
+
webexSubServiceType: this.getSubServiceType(meeting),
|
|
669
|
+
// @ts-ignore
|
|
670
|
+
webClientPreload: (_this$webex$meetings2 = this.webex.meetings) === null || _this$webex$meetings2 === void 0 ? void 0 : (_this$webex$meetings3 = _this$webex$meetings2.config) === null || _this$webex$meetings3 === void 0 ? void 0 : (_this$webex$meetings4 = _this$webex$meetings3.metrics) === null || _this$webex$meetings4 === void 0 ? void 0 : _this$webex$meetings4.webClientPreload
|
|
671
|
+
});
|
|
657
672
|
var joinFlowVersion = (_options$joinFlowVers = options.joinFlowVersion) !== null && _options$joinFlowVers !== void 0 ? _options$joinFlowVers : (_meeting$callStateFor = meeting.callStateForMetrics) === null || _meeting$callStateFor === void 0 ? void 0 : _meeting$callStateFor.joinFlowVersion;
|
|
658
673
|
if (joinFlowVersion) {
|
|
659
674
|
clientEventObject.joinFlowVersion = joinFlowVersion;
|
|
660
675
|
}
|
|
676
|
+
var meetingJoinedTime = meeting.isoLocalClientMeetingJoinTime;
|
|
677
|
+
if (meetingJoinedTime) {
|
|
678
|
+
clientEventObject.meetingJoinedTime = meetingJoinedTime;
|
|
679
|
+
}
|
|
680
|
+
if (options.meetingJoinPhase) {
|
|
681
|
+
clientEventObject.meetingJoinPhase = options.meetingJoinPhase;
|
|
682
|
+
}
|
|
661
683
|
return clientEventObject;
|
|
662
684
|
}
|
|
663
685
|
|
|
@@ -671,6 +693,7 @@ var CallDiagnosticMetrics = exports.default = /*#__PURE__*/function (_StatelessW
|
|
|
671
693
|
}, {
|
|
672
694
|
key: "createClientEventObjectPreMeeting",
|
|
673
695
|
value: function createClientEventObjectPreMeeting(_ref6) {
|
|
696
|
+
var _this$webex$meetings5, _this$webex$meetings6, _this$webex$meetings7;
|
|
674
697
|
var name = _ref6.name,
|
|
675
698
|
options = _ref6.options,
|
|
676
699
|
errors = _ref6.errors;
|
|
@@ -698,11 +721,22 @@ var CallDiagnosticMetrics = exports.default = /*#__PURE__*/function (_StatelessW
|
|
|
698
721
|
eventData: {
|
|
699
722
|
webClientDomain: window.location.hostname
|
|
700
723
|
},
|
|
701
|
-
loginType: this.getCurLoginType()
|
|
724
|
+
loginType: this.getCurLoginType(),
|
|
725
|
+
// @ts-ignore
|
|
726
|
+
webClientPreload: (_this$webex$meetings5 = this.webex.meetings) === null || _this$webex$meetings5 === void 0 ? void 0 : (_this$webex$meetings6 = _this$webex$meetings5.config) === null || _this$webex$meetings6 === void 0 ? void 0 : (_this$webex$meetings7 = _this$webex$meetings6.metrics) === null || _this$webex$meetings7 === void 0 ? void 0 : _this$webex$meetings7.webClientPreload
|
|
702
727
|
};
|
|
703
728
|
if (options.joinFlowVersion) {
|
|
704
729
|
clientEventObject.joinFlowVersion = options.joinFlowVersion;
|
|
705
730
|
}
|
|
731
|
+
if (options.meetingJoinPhase) {
|
|
732
|
+
clientEventObject.meetingJoinPhase = options.meetingJoinPhase;
|
|
733
|
+
}
|
|
734
|
+
if (options.userNameInput) {
|
|
735
|
+
clientEventObject.userNameInput = options.userNameInput;
|
|
736
|
+
}
|
|
737
|
+
if (options.emailInput) {
|
|
738
|
+
clientEventObject.emailInput = options.emailInput;
|
|
739
|
+
}
|
|
706
740
|
return clientEventObject;
|
|
707
741
|
}
|
|
708
742
|
|
|
@@ -768,6 +802,7 @@ var CallDiagnosticMetrics = exports.default = /*#__PURE__*/function (_StatelessW
|
|
|
768
802
|
* @param arg.event - event key
|
|
769
803
|
* @param arg.payload - additional payload to be merged with default payload
|
|
770
804
|
* @param arg.options - payload
|
|
805
|
+
* @param arg.delaySubmitEvent - a boolean value indicating whether to delay the submission of client events.
|
|
771
806
|
* @throws
|
|
772
807
|
*/
|
|
773
808
|
}, {
|
|
@@ -775,7 +810,20 @@ var CallDiagnosticMetrics = exports.default = /*#__PURE__*/function (_StatelessW
|
|
|
775
810
|
value: function submitClientEvent(_ref8) {
|
|
776
811
|
var name = _ref8.name,
|
|
777
812
|
payload = _ref8.payload,
|
|
778
|
-
options = _ref8.options
|
|
813
|
+
options = _ref8.options,
|
|
814
|
+
delaySubmitEvent = _ref8.delaySubmitEvent;
|
|
815
|
+
if (delaySubmitEvent) {
|
|
816
|
+
// Preserve the time when the event was triggered if delaying the submission to Call Diagnostics
|
|
817
|
+
var delayedOptions = _objectSpread(_objectSpread({}, options), {}, {
|
|
818
|
+
triggeredTime: new Date().toISOString()
|
|
819
|
+
});
|
|
820
|
+
this.delayedClientEvents.push({
|
|
821
|
+
name: name,
|
|
822
|
+
payload: payload,
|
|
823
|
+
options: delayedOptions
|
|
824
|
+
});
|
|
825
|
+
return _promise.default.resolve();
|
|
826
|
+
}
|
|
779
827
|
this.logger.log(_config2.CALL_DIAGNOSTIC_LOG_IDENTIFIER, 'CallDiagnosticMetrics: @submitClientEvent. Submit Client Event CA event.', "name: ".concat(name));
|
|
780
828
|
var diagnosticEvent = this.prepareClientEvent({
|
|
781
829
|
name: name,
|
|
@@ -792,6 +840,24 @@ var CallDiagnosticMetrics = exports.default = /*#__PURE__*/function (_StatelessW
|
|
|
792
840
|
return this.submitToCallDiagnostics(diagnosticEvent);
|
|
793
841
|
}
|
|
794
842
|
|
|
843
|
+
/**
|
|
844
|
+
* Submit Delayed Client Event CA events. Clears delayedClientEvents array after submission.
|
|
845
|
+
*/
|
|
846
|
+
}, {
|
|
847
|
+
key: "submitDelayedClientEvents",
|
|
848
|
+
value: function submitDelayedClientEvents() {
|
|
849
|
+
var _this2 = this;
|
|
850
|
+
this.logger.log(_config2.CALL_DIAGNOSTIC_LOG_IDENTIFIER, 'CallDiagnosticMetrics: @submitDelayedClientEvents. Submitting delayed client events.');
|
|
851
|
+
if (this.delayedClientEvents.length === 0) {
|
|
852
|
+
return _promise.default.resolve();
|
|
853
|
+
}
|
|
854
|
+
var promises = this.delayedClientEvents.map(function (delayedSubmitClientEventParams) {
|
|
855
|
+
return _this2.submitClientEvent(delayedSubmitClientEventParams);
|
|
856
|
+
});
|
|
857
|
+
this.delayedClientEvents = [];
|
|
858
|
+
return _promise.default.all(promises);
|
|
859
|
+
}
|
|
860
|
+
|
|
795
861
|
/**
|
|
796
862
|
* Prepare the event and send the request to metrics-a service.
|
|
797
863
|
* @param event
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_common","require","_uuid","_interopRequireDefault","_lodash","_webexCore","_metrics","_callDiagnosticMetrics","_config","_callDiagnosticMetricsBatcher","_preloginMetricsBatcher","_config2","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","_Reflect$construct","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","_BrowserDetection","BrowserDetection","getOSVersion","getBrowserName","getBrowserVersion","CallDiagnosticMetrics","exports","_StatelessWebexPlugin","_inherits2","_super","_this","_classCallCheck2","_len","args","Array","_key","concat","_assertThisInitialized2","options","_promise","resolve","event","valid","preLoginId","finalEvent","eventPayload","type","preLoginMetricsBatcher","savePreLoginId","request","logger","webex","callDiagnosticEventsBatcher","CallDiagnosticEventsBatcher","parent","PreLoginMetricsBatcher","_createClass2","key","value","getCurLoginType","canAuthorize","credentials","isUnverifiedGuest","getIsConvergedArchitectureEnabled","_ref","meetingId","_meeting$meetingInfo","meeting","meetings","getBasicMeetingInformation","meetingInfo","enableConvergedArchitecture","undefined","getSubServiceType","webexScheduled","enableEvent","pmr","WEBEX_SUB_SERVICE_TYPES","PMR","SCHEDULED_MEETING","WEBINAR","getOrigin","_this$webex$meetings$","_this$webex$meetings$2","_this$webex$meetings$3","_this$webex$meetings$4","_this$webex$meetings$5","_this$webex$meetings$6","defaultClientType","config","metrics","clientType","defaultSubClientType","subClientType","providedClientVersion","clientVersion","defaultSDKClientVersion","CLIENT_NAME","version","versionMetadata","extractVersionMetadata","hasLoggedBrowserSerial","log","CALL_DIAGNOSTIC_LOG_IDENTIFIER","_stringify","getBrowserSerial","_this$webex$meetings","_this$webex$meetings$7","_this$webex$meetings$8","_this$webex$meetings$9","_this$webex$meetings$10","_this$webex$meetings$11","origin","name","networkType","userAgent","userAgentToString","clientName","webexVersion","clientInfo","publicNetworkPrefix","anonymizeIPAddress","geoHintInfo","clientAddress","localNetworkPrefix","meetingCollection","get","statsAnalyzer","getLocalIpAddress","osVersion","os","getOSNameInternal","browser","browserVersion","environment","newEnvironment","clientLaunchMethod","browserLaunchMethod","Error","getIdentifiers","_meeting$locusInfo","_meeting$meetingInfo2","_meeting$meetingInfo3","_meeting$meetingInfo6","_meeting$meetingInfo8","mediaConnections","correlationId","webexConferenceIdStr","globalMeetingId","sessionCorrelationId","identifiers","device","_ref2","installationId","userId","deviceId","url","orgId","locusUrl","internal","services","machineId","locusInfo","fullState","locusId","split","pop","locusStartTime","lastActive","confIdStr","confID","_meeting$meetingInfo4","_meeting$meetingInfo5","_meeting$meetingInfo7","siteName","_meeting$meetingInfo9","webexSiteName","_mediaConnections$","_mediaConnections$2","mediaAgentAlias","mediaAgentGroupId","prepareDiagnosticEvent","eventData","_this$webex$meetings$12","eventId","uuid","v4","originTime","triggered","Date","toISOString","sent","senderCountryCode","countryCode","clearEmptyKeysRecursively","submitFeatureEvent","submitMQE","_ref3","payload","console","warn","submitClientMetrics","CALL_DIAGNOSTIC_EVENT_FAILED_TO_SEND","fields","clientEventObject","canProceed","webClientDomain","window","location","hostname","intervals","callingServiceType","meetingJoinInfo","clientSignallingProtocol","sourceMetadata","applicationSoftwareType","applicationSoftwareVersion","mediaEngineSoftwareType","mediaEngineSoftwareVersion","startTime","merge","diagnosticEvent","validator","submitToCallDiagnostics","getErrorPayloadForClientErrorCode","_ref4","clientErrorCode","serviceErrorCode","serviceErrorName","rawErrorMessage","payloadOverrides","httpStatusCode","error","partialParsedError","CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD","fatal","shownToUser","category","errorCode","errorData","errorName","generateClientEventErrorPayload","rawError","_rawError$error","_rawError$error$body","_rawError$body","_rawError$body2","_rawError$body3","_rawError$body3$reaso","message","statusCode","isBrowserMediaErrorName","BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP","isSdpOfferCreationError","_rawError$cause","causeType","cause","SDP_OFFER_CREATION_ERROR_MAP","GENERAL","body","code","reason","reasonCode","SERVICE_ERROR_CODES_TO_CLIENT_ERROR_CODES_MAP","isLocusServiceErrorCode","NEW_LOCUS_ERROR_CLIENT_CODE","isMeetingInfoServiceError","MEETING_INFO_LOOKUP_ERROR_CLIENT_CODE","isNetworkError","NETWORK_ERROR","isUnauthorizedError","AUTHENTICATION_FAILED_CODE","UNKNOWN_ERROR","createClientEventObjectInMeeting","_ref5","_options$joinFlowVers","_meeting$callStateFor","errors","userType","getCurUserType","loginType","callStateForMetrics","isConvergedArchitectureEnabled","webexSubServiceType","joinFlowVersion","createClientEventObjectPreMeeting","_ref6","prepareClientEvent","_ref7","generatedError","submitClientEvent","_ref8","submitToCallDiagnosticsPreLogin","_buildClientEventFetchRequestOptions","_asyncToGenerator2","_regenerator","mark","_callee","_ref9","clientEvent","wrap","_callee$","_context","prev","next","prepareDiagnosticMetricItem","method","service","resource","headers","waitForServiceTimeout","authorization","abrupt","prepareFetchOptions","stop","buildClientEventFetchRequestOptions","_x","isServiceErrorExpected","clientErrorPayload","setDeviceInfo","StatelessWebexPlugin"],"sources":["call-diagnostic-metrics.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable class-methods-use-this */\n/* eslint-disable valid-jsdoc */\nimport {BrowserDetection, getBrowserSerial} from '@webex/common';\nimport uuid from 'uuid';\nimport {merge} from 'lodash';\nimport {StatelessWebexPlugin} from '@webex/webex-core';\nimport {getOSNameInternal} from '../metrics';\n\nimport {\n anonymizeIPAddress,\n clearEmptyKeysRecursively,\n isLocusServiceErrorCode,\n prepareDiagnosticMetricItem,\n userAgentToString,\n extractVersionMetadata,\n isMeetingInfoServiceError,\n isBrowserMediaErrorName,\n isNetworkError,\n isUnauthorizedError,\n isSdpOfferCreationError,\n} from './call-diagnostic-metrics.util';\nimport {CLIENT_NAME} from '../config';\nimport {\n Event,\n ClientType,\n SubClientType,\n NetworkType,\n EnvironmentType,\n NewEnvironmentType,\n ClientEvent,\n SubmitClientEventOptions,\n MediaQualityEvent,\n SubmitMQEOptions,\n SubmitMQEPayload,\n ClientLaunchMethodType,\n ClientEventError,\n ClientEventPayload,\n ClientInfo,\n ClientEventPayloadError,\n ClientSubServiceType,\n BrowserLaunchMethodType,\n} from '../metrics.types';\nimport CallDiagnosticEventsBatcher from './call-diagnostic-metrics-batcher';\nimport PreLoginMetricsBatcher from '../prelogin-metrics-batcher';\n\nimport {\n CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD,\n CALL_DIAGNOSTIC_EVENT_FAILED_TO_SEND,\n NEW_LOCUS_ERROR_CLIENT_CODE,\n SERVICE_ERROR_CODES_TO_CLIENT_ERROR_CODES_MAP,\n UNKNOWN_ERROR,\n BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP,\n MEETING_INFO_LOOKUP_ERROR_CLIENT_CODE,\n CALL_DIAGNOSTIC_LOG_IDENTIFIER,\n NETWORK_ERROR,\n AUTHENTICATION_FAILED_CODE,\n WEBEX_SUB_SERVICE_TYPES,\n SDP_OFFER_CREATION_ERROR_MAP,\n} from './config';\n\nconst {getOSVersion, getBrowserName, getBrowserVersion} = BrowserDetection();\n\ntype GetOriginOptions = {\n clientType: ClientType;\n subClientType: SubClientType;\n networkType?: NetworkType;\n clientLaunchMethod?: ClientLaunchMethodType;\n browserLaunchMethod?: BrowserLaunchMethodType;\n environment?: EnvironmentType;\n newEnvironment?: NewEnvironmentType;\n};\n\ntype GetIdentifiersOptions = {\n meeting?: any;\n mediaConnections?: any[];\n correlationId?: string;\n sessionCorrelationId?: string;\n preLoginId?: string;\n globalMeetingId?: string;\n webexConferenceIdStr?: string;\n};\n\n/**\n * @description Util class to handle Call Analyzer Metrics\n * @export\n * @class CallDiagnosticMetrics\n */\nexport default class CallDiagnosticMetrics extends StatelessWebexPlugin {\n // @ts-ignore\n private callDiagnosticEventsBatcher: CallDiagnosticEventsBatcher;\n // @ts-ignore\n private preLoginMetricsBatcher: PreLoginMetricsBatcher;\n\n private logger: any; // to avoid adding @ts-ignore everywhere\n private hasLoggedBrowserSerial: boolean;\n private device: any;\n\n // the default validator before piping an event to the batcher\n // this function can be overridden by the user\n public validator: (options: {\n type: 'mqe' | 'ce';\n event: Event;\n }) => Promise<{event: Event; valid: boolean}> = (options: {type: 'mqe' | 'ce'; event: Event}) =>\n Promise.resolve({event: options?.event, valid: true});\n\n /**\n * Constructor\n * @param args\n */\n constructor(...args) {\n super(...args);\n // @ts-ignore\n this.logger = this.webex.logger;\n // @ts-ignore\n this.callDiagnosticEventsBatcher = new CallDiagnosticEventsBatcher({}, {parent: this.webex});\n // @ts-ignore\n this.preLoginMetricsBatcher = new PreLoginMetricsBatcher({}, {parent: this.webex});\n }\n\n /**\n * Returns the login type of the current user\n * @returns one of 'login-ci','unverified-guest', null\n */\n getCurLoginType() {\n // @ts-ignore\n if (this.webex.canAuthorize) {\n // @ts-ignore\n return this.webex.credentials.isUnverifiedGuest ? 'unverified-guest' : 'login-ci';\n }\n\n return null;\n }\n\n /**\n * Returns if the meeting has converged architecture enabled\n * @param options.meetingId\n */\n getIsConvergedArchitectureEnabled({meetingId}: {meetingId?: string}): boolean {\n if (meetingId) {\n // @ts-ignore\n const meeting = this.webex.meetings.getBasicMeetingInformation(meetingId);\n\n return meeting?.meetingInfo?.enableConvergedArchitecture;\n }\n\n return undefined;\n }\n\n /**\n * Returns meeting's subServiceType\n * @param meeting\n * @returns\n */\n getSubServiceType(meeting?: any): ClientSubServiceType {\n if (meeting) {\n // @ts-ignore\n const meetingInfo = meeting?.meetingInfo;\n // if not Scheduled, not Webinar, pmr - then pmr\n if (!meetingInfo?.webexScheduled && !meetingInfo?.enableEvent && meetingInfo?.pmr) {\n return WEBEX_SUB_SERVICE_TYPES.PMR;\n }\n // if Scheduled, not Webinar, not pmr - then ScheduledMeeting\n if (meetingInfo?.webexScheduled && !meetingInfo?.enableEvent && !meetingInfo?.pmr) {\n return WEBEX_SUB_SERVICE_TYPES.SCHEDULED_MEETING;\n }\n // if Scheduled, Webinar, not pmr - then Webinar\n if (meetingInfo?.webexScheduled && meetingInfo?.enableEvent && !meetingInfo?.pmr) {\n return WEBEX_SUB_SERVICE_TYPES.WEBINAR;\n }\n }\n\n return undefined;\n }\n\n /**\n * Get origin object for Call Diagnostic Event payload.\n * @param options\n * @param meetingId\n * @returns\n */\n getOrigin(options: GetOriginOptions, meetingId?: string) {\n const defaultClientType: ClientType =\n // @ts-ignore\n this.webex.meetings.config?.metrics?.clientType;\n const defaultSubClientType: SubClientType =\n // @ts-ignore\n this.webex.meetings.config?.metrics?.subClientType;\n // @ts-ignore\n const providedClientVersion: string = this.webex.meetings.config?.metrics?.clientVersion;\n // @ts-ignore\n const defaultSDKClientVersion = `${CLIENT_NAME}/${this.webex.version}`;\n\n let versionMetadata: Pick<ClientInfo, 'majorVersion' | 'minorVersion'> = {};\n\n // sdk version split doesn't really make sense for now...\n if (providedClientVersion) {\n versionMetadata = extractVersionMetadata(providedClientVersion);\n }\n\n if (!this.hasLoggedBrowserSerial) {\n this.logger.log(\n CALL_DIAGNOSTIC_LOG_IDENTIFIER,\n `CallDiagnosticMetrics: @createClientEventObjectInMeeting => collected browser data`,\n JSON.stringify(getBrowserSerial())\n );\n\n this.hasLoggedBrowserSerial = true;\n }\n\n if (\n (defaultClientType && defaultSubClientType) ||\n (options.clientType && options.subClientType)\n ) {\n const origin: Event['origin'] = {\n name: 'endpoint',\n networkType: options?.networkType || 'unknown',\n userAgent: userAgentToString({\n // @ts-ignore\n clientName: this.webex.meetings?.config?.metrics?.clientName,\n // @ts-ignore\n webexVersion: this.webex.version,\n }),\n clientInfo: {\n clientType: options?.clientType || defaultClientType,\n clientVersion: providedClientVersion || defaultSDKClientVersion,\n ...versionMetadata,\n publicNetworkPrefix:\n // @ts-ignore\n anonymizeIPAddress(this.webex.meetings.geoHintInfo?.clientAddress) || undefined,\n localNetworkPrefix:\n anonymizeIPAddress(\n // @ts-ignore\n this.webex.meetings.meetingCollection\n .get(meetingId)\n ?.statsAnalyzer?.getLocalIpAddress()\n ) || undefined,\n osVersion: getOSVersion() || 'unknown',\n subClientType: options?.subClientType || defaultSubClientType,\n os: getOSNameInternal(),\n browser: getBrowserName(),\n browserVersion: getBrowserVersion(),\n },\n };\n\n if (meetingId) {\n // @ts-ignore\n const meeting = this.webex.meetings.getBasicMeetingInformation(meetingId);\n if (meeting?.environment) {\n origin.environment = meeting.environment;\n }\n }\n\n if (options?.environment) {\n origin.environment = options.environment;\n }\n\n if (options?.newEnvironment) {\n origin.newEnvironment = options.newEnvironment;\n }\n\n if (options?.clientLaunchMethod) {\n origin.clientInfo.clientLaunchMethod = options.clientLaunchMethod;\n }\n\n if (options?.browserLaunchMethod) {\n origin.clientInfo.browserLaunchMethod = options.browserLaunchMethod;\n }\n\n return origin;\n }\n\n throw new Error(\"ClientType and SubClientType can't be undefined\");\n }\n\n /**\n * Gather identifier details for call diagnostic payload.\n * @throws Error if initialization fails.\n * @param options\n */\n getIdentifiers(options: GetIdentifiersOptions) {\n const {\n meeting,\n mediaConnections,\n correlationId,\n webexConferenceIdStr,\n globalMeetingId,\n preLoginId,\n sessionCorrelationId,\n } = options;\n const identifiers: Event['event']['identifiers'] = {\n correlationId: 'unknown', // concerned with setting this to unknown. This will fail diagnostic events parsing because it's not a uuid pattern\n };\n\n if (meeting) {\n identifiers.correlationId = meeting.correlationId;\n if (meeting.sessionCorrelationId) {\n identifiers.sessionCorrelationId = meeting.sessionCorrelationId;\n }\n }\n\n if (sessionCorrelationId) {\n identifiers.sessionCorrelationId = sessionCorrelationId;\n }\n\n if (sessionCorrelationId) {\n identifiers.sessionCorrelationId = sessionCorrelationId;\n }\n\n if (correlationId) {\n identifiers.correlationId = correlationId;\n }\n\n // TODO: should we use patterns.uuid to validate correlationId and session correlation id? they will fail the diagnostic events validation pipeline if improperly formatted\n\n if (this.device) {\n const {device} = this;\n const {installationId} = device?.config || {};\n\n identifiers.userId = device?.userId || preLoginId;\n identifiers.deviceId = device?.url;\n identifiers.orgId = device?.orgId;\n // @ts-ignore\n identifiers.locusUrl = this.webex.internal.services.get('locus');\n\n if (installationId) {\n identifiers.machineId = installationId;\n }\n }\n\n if (meeting?.locusInfo?.fullState) {\n identifiers.locusUrl = meeting.locusUrl;\n identifiers.locusId = meeting.locusUrl && meeting.locusUrl.split('/').pop();\n identifiers.locusStartTime =\n meeting.locusInfo.fullState && meeting.locusInfo.fullState.lastActive;\n }\n\n if (meeting?.meetingInfo?.confIdStr || meeting?.meetingInfo?.confID) {\n identifiers.webexConferenceIdStr = `${\n meeting.meetingInfo?.confIdStr || meeting.meetingInfo?.confID\n }`;\n }\n\n if (meeting?.meetingInfo?.meetingId) {\n identifiers.globalMeetingId = meeting.meetingInfo?.meetingId;\n }\n\n if (meeting?.meetingInfo?.siteName) {\n identifiers.webexSiteName = meeting.meetingInfo?.siteName;\n }\n\n if (mediaConnections) {\n identifiers.mediaAgentAlias = mediaConnections?.[0]?.mediaAgentAlias;\n identifiers.mediaAgentGroupId = mediaConnections?.[0]?.mediaAgentGroupId;\n }\n\n if (!identifiers?.webexConferenceIdStr && webexConferenceIdStr) {\n identifiers.webexConferenceIdStr = `${webexConferenceIdStr}`;\n }\n\n if (!identifiers?.globalMeetingId && globalMeetingId) {\n identifiers.globalMeetingId = globalMeetingId;\n }\n\n if (identifiers.correlationId === undefined) {\n throw new Error('Identifiers initialization failed.');\n }\n\n return identifiers;\n }\n\n /**\n * Create diagnostic event, which can hold client event, feature event or MQE event data.\n * This just initiates the shared properties that are required for all the 3 event categories.\n * @param eventData\n * @param options\n * @returns\n */\n prepareDiagnosticEvent(eventData: Event['event'], options: any) {\n const {meetingId} = options;\n const origin = this.getOrigin(options, meetingId);\n\n const event: Event = {\n eventId: uuid.v4(),\n version: 1,\n origin,\n originTime: {\n triggered: new Date().toISOString(),\n // is overridden in prepareRequest batcher\n sent: 'not_defined_yet',\n },\n // @ts-ignore\n senderCountryCode: this.webex.meetings.geoHintInfo?.countryCode,\n event: eventData,\n };\n\n // sanitize (remove empty properties, CA requires it)\n // but we don't want to sanitize MQE as most of the times\n // values will be 0, [] etc, and they are required.\n if (eventData.name !== 'client.mediaquality.event') {\n clearEmptyKeysRecursively(event);\n }\n\n return event;\n }\n\n /**\n * TODO: NOT IMPLEMENTED\n * Submit Feature Event\n * @returns\n */\n public submitFeatureEvent() {\n throw Error('Not implemented');\n }\n\n /**\n * Submit Media Quality Event\n * @param args - submit params\n * @param arg.name - event key\n * @param arg.payload - additional payload to be merge with the default payload\n * @param arg.options - options\n */\n submitMQE({\n name,\n payload,\n options,\n }: {\n name: MediaQualityEvent['name'];\n payload: SubmitMQEPayload;\n options: SubmitMQEOptions;\n }) {\n const {meetingId, mediaConnections, webexConferenceIdStr, globalMeetingId} = options;\n\n // events that will most likely happen in join phase\n if (meetingId) {\n // @ts-ignore\n const meeting = this.webex.meetings.getBasicMeetingInformation(meetingId);\n\n if (!meeting) {\n console.warn(\n 'Attempt to send MQE but no meeting was found...',\n `event: ${name}, meetingId: ${meetingId}`\n );\n // @ts-ignore\n this.webex.internal.metrics.submitClientMetrics(CALL_DIAGNOSTIC_EVENT_FAILED_TO_SEND, {\n fields: {\n meetingId,\n name,\n },\n });\n\n return;\n }\n\n // merge identifiers\n const identifiers = this.getIdentifiers({\n meeting,\n mediaConnections: meeting.mediaConnections || mediaConnections,\n webexConferenceIdStr,\n globalMeetingId,\n });\n\n // create media quality event object\n let clientEventObject: MediaQualityEvent['payload'] = {\n name,\n canProceed: true,\n identifiers,\n eventData: {\n webClientDomain: window.location.hostname,\n },\n intervals: payload.intervals,\n callingServiceType: 'LOCUS',\n meetingJoinInfo: {\n clientSignallingProtocol: 'WebRTC',\n },\n sourceMetadata: {\n applicationSoftwareType: CLIENT_NAME,\n // @ts-ignore\n applicationSoftwareVersion: this.webex.version,\n mediaEngineSoftwareType: getBrowserName() || 'browser',\n mediaEngineSoftwareVersion: getOSVersion() || 'unknown',\n startTime: new Date().toISOString(),\n },\n };\n\n // merge any new properties, or override existing ones\n clientEventObject = merge(clientEventObject, payload);\n\n // append media quality event data to the call diagnostic event\n const diagnosticEvent = this.prepareDiagnosticEvent(clientEventObject, options);\n this.validator({type: 'mqe', event: diagnosticEvent});\n this.submitToCallDiagnostics(diagnosticEvent);\n } else {\n throw new Error(\n 'Media quality events cant be sent outside the context of a meeting. Meeting id is required.'\n );\n }\n }\n\n /**\n * Return Client Event payload by client error code\n * @param arg - get error arg\n * @param arg.clientErrorCode\n * @param arg.serviceErrorCode\n * @param arg.payloadOverrides\n * @param arg.httpStatusCode\n * @returns\n */\n public getErrorPayloadForClientErrorCode({\n clientErrorCode,\n serviceErrorCode,\n serviceErrorName,\n rawErrorMessage,\n payloadOverrides,\n httpStatusCode,\n }: {\n clientErrorCode: number;\n serviceErrorCode: any;\n serviceErrorName?: any;\n rawErrorMessage?: string;\n payloadOverrides?: any;\n httpStatusCode?: number;\n }): ClientEventError {\n let error: ClientEventError;\n\n if (clientErrorCode) {\n const partialParsedError = CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD[clientErrorCode];\n\n if (partialParsedError) {\n error = merge(\n {fatal: true, shownToUser: false, name: 'other', category: 'other'}, // default values\n {errorCode: clientErrorCode},\n serviceErrorName ? {errorData: {errorName: serviceErrorName}} : {},\n {serviceErrorCode},\n {rawErrorMessage},\n httpStatusCode === undefined ? {} : {httpStatusCode},\n partialParsedError,\n payloadOverrides || {}\n );\n\n return error;\n }\n }\n\n return undefined;\n }\n\n /**\n * Generate error payload for Client Event\n * @param rawError\n */\n generateClientEventErrorPayload(rawError: any) {\n const rawErrorMessage = rawError.message;\n const httpStatusCode = rawError.statusCode;\n if (rawError.name) {\n if (isBrowserMediaErrorName(rawError.name)) {\n return this.getErrorPayloadForClientErrorCode({\n serviceErrorCode: undefined,\n clientErrorCode: BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP[rawError.name],\n serviceErrorName: rawError.name,\n rawErrorMessage,\n httpStatusCode,\n });\n }\n }\n\n if (isSdpOfferCreationError(rawError)) {\n // error code is 30005, but that's not specific enough. we also need to check error.cause.type\n const causeType = rawError.cause?.type;\n\n return this.getErrorPayloadForClientErrorCode({\n serviceErrorCode: undefined,\n clientErrorCode:\n SDP_OFFER_CREATION_ERROR_MAP[causeType] || SDP_OFFER_CREATION_ERROR_MAP.GENERAL,\n serviceErrorName: rawError.name,\n rawErrorMessage,\n httpStatusCode,\n });\n }\n\n const serviceErrorCode =\n rawError?.error?.body?.errorCode ||\n rawError?.body?.errorCode ||\n rawError?.body?.code ||\n rawError?.body?.reason?.reasonCode;\n\n if (serviceErrorCode) {\n const clientErrorCode = SERVICE_ERROR_CODES_TO_CLIENT_ERROR_CODES_MAP[serviceErrorCode];\n if (clientErrorCode) {\n return this.getErrorPayloadForClientErrorCode({\n clientErrorCode,\n serviceErrorCode,\n rawErrorMessage,\n httpStatusCode,\n });\n }\n\n // by default, if it is locus error, return new locus err\n if (isLocusServiceErrorCode(serviceErrorCode)) {\n return this.getErrorPayloadForClientErrorCode({\n clientErrorCode: NEW_LOCUS_ERROR_CLIENT_CODE,\n serviceErrorCode,\n rawErrorMessage,\n httpStatusCode,\n });\n }\n }\n\n if (isMeetingInfoServiceError(rawError)) {\n return this.getErrorPayloadForClientErrorCode({\n clientErrorCode: MEETING_INFO_LOOKUP_ERROR_CLIENT_CODE,\n serviceErrorCode,\n rawErrorMessage,\n httpStatusCode,\n });\n }\n\n if (isNetworkError(rawError)) {\n return this.getErrorPayloadForClientErrorCode({\n clientErrorCode: NETWORK_ERROR,\n serviceErrorCode,\n payloadOverrides: rawError.payloadOverrides,\n rawErrorMessage,\n httpStatusCode,\n });\n }\n\n if (isUnauthorizedError(rawError)) {\n return this.getErrorPayloadForClientErrorCode({\n clientErrorCode: AUTHENTICATION_FAILED_CODE,\n serviceErrorCode,\n payloadOverrides: rawError.payloadOverrides,\n rawErrorMessage,\n httpStatusCode,\n });\n }\n\n // otherwise return unkown error but passing serviceErrorCode and serviceErrorName so that we know the issue\n return this.getErrorPayloadForClientErrorCode({\n clientErrorCode: UNKNOWN_ERROR,\n serviceErrorCode: serviceErrorCode || UNKNOWN_ERROR,\n serviceErrorName: rawError?.name,\n payloadOverrides: rawError.payloadOverrides,\n rawErrorMessage,\n httpStatusCode,\n });\n }\n\n /**\n * Create client event object for in meeting events\n * @param arg - create args\n * @param arg.event - event key\n * @param arg.options - options\n * @returns object\n */\n private createClientEventObjectInMeeting({\n name,\n options,\n errors,\n }: {\n name: ClientEvent['name'];\n options?: SubmitClientEventOptions;\n errors?: ClientEventPayloadError;\n }) {\n const {\n meetingId,\n mediaConnections,\n globalMeetingId,\n webexConferenceIdStr,\n sessionCorrelationId,\n } = options;\n\n // @ts-ignore\n const meeting = this.webex.meetings.getBasicMeetingInformation(meetingId);\n\n if (!meeting) {\n console.warn(\n 'Attempt to send client event but no meeting was found...',\n `name: ${name}, meetingId: ${meetingId}`\n );\n // @ts-ignore\n this.webex.internal.metrics.submitClientMetrics(CALL_DIAGNOSTIC_EVENT_FAILED_TO_SEND, {\n fields: {\n meetingId,\n name,\n },\n });\n\n return undefined;\n }\n\n // grab identifiers\n const identifiers = this.getIdentifiers({\n meeting,\n mediaConnections: meeting?.mediaConnections || mediaConnections,\n webexConferenceIdStr,\n globalMeetingId,\n sessionCorrelationId,\n });\n\n // create client event object\n const clientEventObject: ClientEvent['payload'] = {\n name,\n canProceed: true,\n identifiers,\n errors,\n eventData: {\n webClientDomain: window.location.hostname,\n },\n userType: meeting.getCurUserType(),\n loginType:\n 'loginType' in meeting.callStateForMetrics\n ? meeting.callStateForMetrics.loginType\n : this.getCurLoginType(),\n isConvergedArchitectureEnabled: this.getIsConvergedArchitectureEnabled({\n meetingId,\n }),\n webexSubServiceType: this.getSubServiceType(meeting),\n };\n\n const joinFlowVersion = options.joinFlowVersion ?? meeting.callStateForMetrics?.joinFlowVersion;\n if (joinFlowVersion) {\n clientEventObject.joinFlowVersion = joinFlowVersion;\n }\n\n return clientEventObject;\n }\n\n /**\n * Create client event object for pre meeting events\n * @param arg - create args\n * @param arg.event - event key\n * @param arg.options - payload\n * @returns object\n */\n private createClientEventObjectPreMeeting({\n name,\n options,\n errors,\n }: {\n name: ClientEvent['name'];\n options?: SubmitClientEventOptions;\n errors?: ClientEventPayloadError;\n }) {\n const {correlationId, globalMeetingId, webexConferenceIdStr, preLoginId, sessionCorrelationId} =\n options;\n\n // grab identifiers\n const identifiers = this.getIdentifiers({\n correlationId,\n sessionCorrelationId,\n preLoginId,\n globalMeetingId,\n webexConferenceIdStr,\n });\n\n // create client event object\n const clientEventObject: ClientEvent['payload'] = {\n name,\n errors,\n canProceed: true,\n identifiers,\n eventData: {\n webClientDomain: window.location.hostname,\n },\n loginType: this.getCurLoginType(),\n };\n\n if (options.joinFlowVersion) {\n clientEventObject.joinFlowVersion = options.joinFlowVersion;\n }\n\n return clientEventObject;\n }\n\n /**\n * Prepare Client Event CA event.\n * @param arg - submit params\n * @param arg.event - event key\n * @param arg.payload - additional payload to be merged with default payload\n * @param arg.options - payload\n * @returns {any} options to be with fetch\n * @throws\n */\n private prepareClientEvent({\n name,\n payload,\n options,\n }: {\n name: ClientEvent['name'];\n payload?: ClientEventPayload;\n options?: SubmitClientEventOptions;\n }) {\n const {meetingId, correlationId, rawError} = options;\n let clientEventObject: ClientEvent['payload'];\n\n // check if we need to generate errors\n const errors: ClientEventPayloadError = [];\n\n if (rawError) {\n const generatedError = this.generateClientEventErrorPayload(rawError);\n if (generatedError) {\n errors.push(generatedError);\n }\n this.logger.log(\n CALL_DIAGNOSTIC_LOG_IDENTIFIER,\n 'CallDiagnosticMetrics: @prepareClientEvent. Generated errors:',\n `generatedError: ${JSON.stringify(generatedError)}`\n );\n }\n\n // events that will most likely happen in join phase\n if (meetingId) {\n clientEventObject = this.createClientEventObjectInMeeting({name, options, errors});\n } else if (correlationId) {\n // any pre join events or events that are outside the meeting.\n clientEventObject = this.createClientEventObjectPreMeeting({name, options, errors});\n } else {\n throw new Error('Not implemented');\n }\n\n // merge any new properties, or override existing ones\n clientEventObject = merge(clientEventObject, payload);\n\n // append client event data to the call diagnostic event\n const diagnosticEvent = this.prepareDiagnosticEvent(clientEventObject, options);\n\n return diagnosticEvent;\n }\n\n /**\n * Submit Client Event CA event.\n * @param arg - submit params\n * @param arg.event - event key\n * @param arg.payload - additional payload to be merged with default payload\n * @param arg.options - payload\n * @throws\n */\n public submitClientEvent({\n name,\n payload,\n options,\n }: {\n name: ClientEvent['name'];\n payload?: ClientEventPayload;\n options?: SubmitClientEventOptions;\n }) {\n this.logger.log(\n CALL_DIAGNOSTIC_LOG_IDENTIFIER,\n 'CallDiagnosticMetrics: @submitClientEvent. Submit Client Event CA event.',\n `name: ${name}`\n );\n const diagnosticEvent = this.prepareClientEvent({name, payload, options});\n\n if (options?.preLoginId) {\n return this.submitToCallDiagnosticsPreLogin(diagnosticEvent, options?.preLoginId);\n }\n\n this.validator({type: 'ce', event: diagnosticEvent});\n\n return this.submitToCallDiagnostics(diagnosticEvent);\n }\n\n /**\n * Prepare the event and send the request to metrics-a service.\n * @param event\n * @returns promise\n */\n submitToCallDiagnostics(event: Event): Promise<any> {\n // build metrics-a event type\n const finalEvent = {\n eventPayload: event,\n type: ['diagnostic-event'],\n };\n\n return this.callDiagnosticEventsBatcher.request(finalEvent);\n }\n\n /**\n * Prepare the event and send the request to metrics-a service, pre login.\n * @param event\n * @param preLoginId\n * @returns\n */\n submitToCallDiagnosticsPreLogin = (event: Event, preLoginId?: string): Promise<any> => {\n // build metrics-a event type\n const finalEvent = {\n eventPayload: event,\n type: ['diagnostic-event'],\n };\n this.preLoginMetricsBatcher.savePreLoginId(preLoginId);\n\n return this.preLoginMetricsBatcher.request(finalEvent);\n };\n\n /**\n * Builds a request options object to later be passed to fetch().\n * @param arg - submit params\n * @param arg.event - event key\n * @param arg.payload - additional payload to be merged with default payload\n * @param arg.options - client event options\n * @returns {Promise<any>}\n * @throws\n */\n public async buildClientEventFetchRequestOptions({\n name,\n payload,\n options,\n }: {\n name: ClientEvent['name'];\n payload?: ClientEventPayload;\n options?: SubmitClientEventOptions;\n }): Promise<any> {\n this.logger.log(\n CALL_DIAGNOSTIC_LOG_IDENTIFIER,\n 'CallDiagnosticMetrics: @buildClientEventFetchRequestOptions. Building request options object for fetch()...',\n `name: ${name}`\n );\n\n const clientEvent = this.prepareClientEvent({name, payload, options});\n\n // build metrics-a event type\n // @ts-ignore\n const diagnosticEvent = prepareDiagnosticMetricItem(this.webex, {\n eventPayload: clientEvent,\n type: ['diagnostic-event'],\n });\n\n const request = {\n method: 'POST',\n service: 'metrics',\n resource: 'clientmetrics',\n body: {\n metrics: [diagnosticEvent],\n },\n headers: {},\n // @ts-ignore\n waitForServiceTimeout: this.webex.internal.metrics.config.waitForServiceTimeout,\n };\n\n if (options.preLoginId) {\n request.headers = {\n authorization: false,\n 'x-prelogin-userid': options.preLoginId,\n };\n request.resource = 'clientmetrics-prelogin';\n }\n\n // @ts-ignore\n return this.webex.prepareFetchOptions(request);\n }\n\n /**\n * Returns true if the specified serviceErrorCode maps to an expected error.\n * @param {number} serviceErrorCode the service error code\n * @returns {boolean}\n */\n public isServiceErrorExpected(serviceErrorCode: number): boolean {\n const clientErrorCode = SERVICE_ERROR_CODES_TO_CLIENT_ERROR_CODES_MAP[serviceErrorCode];\n const clientErrorPayload = CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD[clientErrorCode];\n\n return clientErrorPayload?.category === 'expected';\n }\n\n /**\n * This method is used to set the device information by internal-plugin-device\n * @param {device} object The webex.internal.device object\n * @returns {undefined}\n */\n public setDeviceInfo(device: any): void {\n // This was created to fix the circular dependency between internal-plugin-device and internal-plugin-metrics\n this.logger.log('CallDiagnosticMetrics: @setDeviceInfo called', device);\n\n this.device = device;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_common","require","_uuid","_interopRequireDefault","_lodash","_webexCore","_metrics","_callDiagnosticMetrics","_config","_callDiagnosticMetricsBatcher","_preloginMetricsBatcher","_config2","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","_Reflect$construct","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","_BrowserDetection","BrowserDetection","getOSVersion","getBrowserName","getBrowserVersion","CallDiagnosticMetrics","exports","_StatelessWebexPlugin","_inherits2","_super","_this","_classCallCheck2","_len","args","Array","_key","concat","_assertThisInitialized2","options","_promise","resolve","event","valid","preLoginId","finalEvent","eventPayload","type","preLoginMetricsBatcher","savePreLoginId","request","logger","webex","callDiagnosticEventsBatcher","CallDiagnosticEventsBatcher","parent","PreLoginMetricsBatcher","_createClass2","key","value","getCurLoginType","canAuthorize","credentials","isUnverifiedGuest","getIsConvergedArchitectureEnabled","_ref","meetingId","_meeting$meetingInfo","meeting","meetings","getBasicMeetingInformation","meetingInfo","enableConvergedArchitecture","undefined","getSubServiceType","webexScheduled","enableEvent","pmr","WEBEX_SUB_SERVICE_TYPES","PMR","SCHEDULED_MEETING","isConvergedWebinarWebcast","WEBCAST","WEBINAR","getOrigin","_this$webex$meetings$","_this$webex$meetings$2","_this$webex$meetings$3","_this$webex$meetings$4","_this$webex$meetings$5","_this$webex$meetings$6","defaultClientType","config","metrics","clientType","defaultSubClientType","subClientType","providedClientVersion","clientVersion","defaultSDKClientVersion","CLIENT_NAME","version","versionMetadata","extractVersionMetadata","hasLoggedBrowserSerial","log","CALL_DIAGNOSTIC_LOG_IDENTIFIER","_stringify","getBrowserSerial","_this$webex$meetings","_this$webex$meetings$7","_this$webex$meetings$8","_this$webex$meetings$9","_this$webex$meetings$10","_this$webex$meetings$11","origin","name","networkType","userAgent","userAgentToString","clientName","webexVersion","clientInfo","publicNetworkPrefix","anonymizeIPAddress","geoHintInfo","clientAddress","localNetworkPrefix","meetingCollection","get","statsAnalyzer","getLocalIpAddress","osVersion","os","getOSNameInternal","browser","browserVersion","environment","newEnvironment","clientLaunchMethod","browserLaunchMethod","Error","getIdentifiers","_meeting$locusInfo","_meeting$meetingInfo2","_meeting$meetingInfo3","_meeting$meetingInfo6","_meeting$meetingInfo8","mediaConnections","correlationId","webexConferenceIdStr","globalMeetingId","sessionCorrelationId","identifiers","device","_ref2","installationId","userId","deviceId","url","orgId","locusUrl","internal","services","machineId","locusInfo","fullState","locusId","split","pop","locusStartTime","lastActive","confIdStr","confID","_meeting$meetingInfo4","_meeting$meetingInfo5","_meeting$meetingInfo7","siteName","_meeting$meetingInfo9","webexSiteName","_mediaConnections$","_mediaConnections$2","mediaAgentAlias","mediaAgentGroupId","prepareDiagnosticEvent","eventData","_this$webex$meetings$12","triggeredTime","eventId","uuid","v4","originTime","triggered","Date","toISOString","sent","senderCountryCode","countryCode","clearEmptyKeysRecursively","submitFeatureEvent","submitMQE","_ref3","payload","console","warn","submitClientMetrics","CALL_DIAGNOSTIC_EVENT_FAILED_TO_SEND","fields","clientEventObject","canProceed","webClientDomain","window","location","hostname","intervals","callingServiceType","meetingJoinInfo","clientSignallingProtocol","sourceMetadata","applicationSoftwareType","applicationSoftwareVersion","mediaEngineSoftwareType","mediaEngineSoftwareVersion","startTime","merge","diagnosticEvent","validator","submitToCallDiagnostics","getErrorPayloadForClientErrorCode","_ref4","clientErrorCode","serviceErrorCode","serviceErrorName","rawErrorMessage","payloadOverrides","httpStatusCode","error","partialParsedError","CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD","fatal","shownToUser","category","errorCode","errorData","errorName","generateClientEventErrorPayload","rawError","_rawError$error","_rawError$error$body","_rawError$body","_rawError$body2","_rawError$body3","_rawError$body3$reaso","message","statusCode","isBrowserMediaErrorName","BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP","isSdpOfferCreationError","_rawError$cause","causeType","cause","SDP_OFFER_CREATION_ERROR_MAP","GENERAL","body","code","reason","reasonCode","SERVICE_ERROR_CODES_TO_CLIENT_ERROR_CODES_MAP","isLocusServiceErrorCode","NEW_LOCUS_ERROR_CLIENT_CODE","isMeetingInfoServiceError","MEETING_INFO_LOOKUP_ERROR_CLIENT_CODE","isNetworkError","NETWORK_ERROR","isUnauthorizedError","AUTHENTICATION_FAILED_CODE","UNKNOWN_ERROR","createClientEventObjectInMeeting","_ref5","_this$webex$meetings2","_this$webex$meetings3","_this$webex$meetings4","_options$joinFlowVers","_meeting$callStateFor","errors","userType","getCurUserType","loginType","callStateForMetrics","isConvergedArchitectureEnabled","userNameInput","emailInput","webexSubServiceType","webClientPreload","joinFlowVersion","meetingJoinedTime","isoLocalClientMeetingJoinTime","meetingJoinPhase","createClientEventObjectPreMeeting","_ref6","_this$webex$meetings5","_this$webex$meetings6","_this$webex$meetings7","prepareClientEvent","_ref7","generatedError","submitClientEvent","_ref8","delaySubmitEvent","delayedOptions","delayedClientEvents","submitToCallDiagnosticsPreLogin","submitDelayedClientEvents","_this2","promises","map","delayedSubmitClientEventParams","all","_buildClientEventFetchRequestOptions","_asyncToGenerator2","_regenerator","mark","_callee","_ref9","clientEvent","wrap","_callee$","_context","prev","next","prepareDiagnosticMetricItem","method","service","resource","headers","waitForServiceTimeout","authorization","abrupt","prepareFetchOptions","stop","buildClientEventFetchRequestOptions","_x","isServiceErrorExpected","clientErrorPayload","setDeviceInfo","StatelessWebexPlugin"],"sources":["call-diagnostic-metrics.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable class-methods-use-this */\n/* eslint-disable valid-jsdoc */\nimport {BrowserDetection, getBrowserSerial} from '@webex/common';\nimport uuid from 'uuid';\nimport {merge} from 'lodash';\nimport {StatelessWebexPlugin} from '@webex/webex-core';\nimport {getOSNameInternal} from '../metrics';\n\nimport {\n anonymizeIPAddress,\n clearEmptyKeysRecursively,\n isLocusServiceErrorCode,\n prepareDiagnosticMetricItem,\n userAgentToString,\n extractVersionMetadata,\n isMeetingInfoServiceError,\n isBrowserMediaErrorName,\n isNetworkError,\n isUnauthorizedError,\n isSdpOfferCreationError,\n} from './call-diagnostic-metrics.util';\nimport {CLIENT_NAME} from '../config';\nimport {\n Event,\n ClientType,\n SubClientType,\n NetworkType,\n EnvironmentType,\n NewEnvironmentType,\n ClientEvent,\n SubmitClientEventOptions,\n MediaQualityEvent,\n SubmitMQEOptions,\n SubmitMQEPayload,\n ClientLaunchMethodType,\n ClientEventError,\n ClientEventPayload,\n ClientInfo,\n ClientEventPayloadError,\n ClientSubServiceType,\n BrowserLaunchMethodType,\n DelayedClientEvent,\n} from '../metrics.types';\nimport CallDiagnosticEventsBatcher from './call-diagnostic-metrics-batcher';\nimport PreLoginMetricsBatcher from '../prelogin-metrics-batcher';\n\nimport {\n CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD,\n CALL_DIAGNOSTIC_EVENT_FAILED_TO_SEND,\n NEW_LOCUS_ERROR_CLIENT_CODE,\n SERVICE_ERROR_CODES_TO_CLIENT_ERROR_CODES_MAP,\n UNKNOWN_ERROR,\n BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP,\n MEETING_INFO_LOOKUP_ERROR_CLIENT_CODE,\n CALL_DIAGNOSTIC_LOG_IDENTIFIER,\n NETWORK_ERROR,\n AUTHENTICATION_FAILED_CODE,\n WEBEX_SUB_SERVICE_TYPES,\n SDP_OFFER_CREATION_ERROR_MAP,\n} from './config';\n\nconst {getOSVersion, getBrowserName, getBrowserVersion} = BrowserDetection();\n\ntype GetOriginOptions = {\n clientType: ClientType;\n subClientType: SubClientType;\n networkType?: NetworkType;\n clientLaunchMethod?: ClientLaunchMethodType;\n browserLaunchMethod?: BrowserLaunchMethodType;\n environment?: EnvironmentType;\n newEnvironment?: NewEnvironmentType;\n};\n\ntype GetIdentifiersOptions = {\n meeting?: any;\n mediaConnections?: any[];\n correlationId?: string;\n sessionCorrelationId?: string;\n preLoginId?: string;\n globalMeetingId?: string;\n webexConferenceIdStr?: string;\n};\n\n/**\n * @description Util class to handle Call Analyzer Metrics\n * @export\n * @class CallDiagnosticMetrics\n */\nexport default class CallDiagnosticMetrics extends StatelessWebexPlugin {\n // @ts-ignore\n private callDiagnosticEventsBatcher: CallDiagnosticEventsBatcher;\n // @ts-ignore\n private preLoginMetricsBatcher: PreLoginMetricsBatcher;\n\n private logger: any; // to avoid adding @ts-ignore everywhere\n private hasLoggedBrowserSerial: boolean;\n private device: any;\n private delayedClientEvents: DelayedClientEvent[] = [];\n\n // the default validator before piping an event to the batcher\n // this function can be overridden by the user\n public validator: (options: {\n type: 'mqe' | 'ce';\n event: Event;\n }) => Promise<{event: Event; valid: boolean}> = (options: {type: 'mqe' | 'ce'; event: Event}) =>\n Promise.resolve({event: options?.event, valid: true});\n\n /**\n * Constructor\n * @param args\n */\n constructor(...args) {\n super(...args);\n // @ts-ignore\n this.logger = this.webex.logger;\n // @ts-ignore\n this.callDiagnosticEventsBatcher = new CallDiagnosticEventsBatcher({}, {parent: this.webex});\n // @ts-ignore\n this.preLoginMetricsBatcher = new PreLoginMetricsBatcher({}, {parent: this.webex});\n }\n\n /**\n * Returns the login type of the current user\n * @returns one of 'login-ci','unverified-guest', null\n */\n getCurLoginType() {\n // @ts-ignore\n if (this.webex.canAuthorize) {\n // @ts-ignore\n return this.webex.credentials.isUnverifiedGuest ? 'unverified-guest' : 'login-ci';\n }\n\n return null;\n }\n\n /**\n * Returns if the meeting has converged architecture enabled\n * @param options.meetingId\n */\n getIsConvergedArchitectureEnabled({meetingId}: {meetingId?: string}): boolean {\n if (meetingId) {\n // @ts-ignore\n const meeting = this.webex.meetings.getBasicMeetingInformation(meetingId);\n\n return meeting?.meetingInfo?.enableConvergedArchitecture;\n }\n\n return undefined;\n }\n\n /**\n * Returns meeting's subServiceType\n * @param meeting\n * @returns\n */\n getSubServiceType(meeting?: any): ClientSubServiceType {\n if (meeting) {\n // @ts-ignore\n const meetingInfo = meeting?.meetingInfo;\n // if not Scheduled, not Webinar, pmr - then pmr\n if (!meetingInfo?.webexScheduled && !meetingInfo?.enableEvent && meetingInfo?.pmr) {\n return WEBEX_SUB_SERVICE_TYPES.PMR;\n }\n // if Scheduled, not Webinar, not pmr - then ScheduledMeeting\n if (meetingInfo?.webexScheduled && !meetingInfo?.enableEvent && !meetingInfo?.pmr) {\n return WEBEX_SUB_SERVICE_TYPES.SCHEDULED_MEETING;\n }\n\n // if ConvergedArchitecture enable and isConvergedWebinarWebcast -- then webcast\n if (meetingInfo?.enableConvergedArchitecture && meetingInfo?.enableEvent) {\n return meetingInfo?.isConvergedWebinarWebcast\n ? WEBEX_SUB_SERVICE_TYPES.WEBCAST\n : WEBEX_SUB_SERVICE_TYPES.WEBINAR;\n }\n\n // if Scheduled, enable event, not pmr - then Webinar\n if (meetingInfo?.webexScheduled && meetingInfo?.enableEvent && !meetingInfo?.pmr) {\n return WEBEX_SUB_SERVICE_TYPES.WEBINAR;\n }\n }\n\n return undefined;\n }\n\n /**\n * Get origin object for Call Diagnostic Event payload.\n * @param options\n * @param meetingId\n * @returns\n */\n getOrigin(options: GetOriginOptions, meetingId?: string) {\n const defaultClientType: ClientType =\n // @ts-ignore\n this.webex.meetings.config?.metrics?.clientType;\n const defaultSubClientType: SubClientType =\n // @ts-ignore\n this.webex.meetings.config?.metrics?.subClientType;\n // @ts-ignore\n const providedClientVersion: string = this.webex.meetings.config?.metrics?.clientVersion;\n // @ts-ignore\n const defaultSDKClientVersion = `${CLIENT_NAME}/${this.webex.version}`;\n\n let versionMetadata: Pick<ClientInfo, 'majorVersion' | 'minorVersion'> = {};\n\n // sdk version split doesn't really make sense for now...\n if (providedClientVersion) {\n versionMetadata = extractVersionMetadata(providedClientVersion);\n }\n\n if (!this.hasLoggedBrowserSerial) {\n this.logger.log(\n CALL_DIAGNOSTIC_LOG_IDENTIFIER,\n `CallDiagnosticMetrics: @createClientEventObjectInMeeting => collected browser data`,\n JSON.stringify(getBrowserSerial())\n );\n\n this.hasLoggedBrowserSerial = true;\n }\n\n if (\n (defaultClientType && defaultSubClientType) ||\n (options.clientType && options.subClientType)\n ) {\n const origin: Event['origin'] = {\n name: 'endpoint',\n networkType: options?.networkType || 'unknown',\n userAgent: userAgentToString({\n // @ts-ignore\n clientName: this.webex.meetings?.config?.metrics?.clientName,\n // @ts-ignore\n webexVersion: this.webex.version,\n }),\n clientInfo: {\n clientType: options?.clientType || defaultClientType,\n clientVersion: providedClientVersion || defaultSDKClientVersion,\n ...versionMetadata,\n publicNetworkPrefix:\n // @ts-ignore\n anonymizeIPAddress(this.webex.meetings.geoHintInfo?.clientAddress) || undefined,\n localNetworkPrefix:\n anonymizeIPAddress(\n // @ts-ignore\n this.webex.meetings.meetingCollection\n .get(meetingId)\n ?.statsAnalyzer?.getLocalIpAddress()\n ) || undefined,\n osVersion: getOSVersion() || 'unknown',\n subClientType: options?.subClientType || defaultSubClientType,\n os: getOSNameInternal(),\n browser: getBrowserName(),\n browserVersion: getBrowserVersion(),\n },\n };\n\n if (meetingId) {\n // @ts-ignore\n const meeting = this.webex.meetings.getBasicMeetingInformation(meetingId);\n if (meeting?.environment) {\n origin.environment = meeting.environment;\n }\n }\n\n if (options?.environment) {\n origin.environment = options.environment;\n }\n\n if (options?.newEnvironment) {\n origin.newEnvironment = options.newEnvironment;\n }\n\n if (options?.clientLaunchMethod) {\n origin.clientInfo.clientLaunchMethod = options.clientLaunchMethod;\n }\n\n if (options?.browserLaunchMethod) {\n origin.clientInfo.browserLaunchMethod = options.browserLaunchMethod;\n }\n\n return origin;\n }\n\n throw new Error(\"ClientType and SubClientType can't be undefined\");\n }\n\n /**\n * Gather identifier details for call diagnostic payload.\n * @throws Error if initialization fails.\n * @param options\n */\n getIdentifiers(options: GetIdentifiersOptions) {\n const {\n meeting,\n mediaConnections,\n correlationId,\n webexConferenceIdStr,\n globalMeetingId,\n preLoginId,\n sessionCorrelationId,\n } = options;\n const identifiers: Event['event']['identifiers'] = {\n correlationId: 'unknown', // concerned with setting this to unknown. This will fail diagnostic events parsing because it's not a uuid pattern\n };\n\n if (meeting) {\n identifiers.correlationId = meeting.correlationId;\n if (meeting.sessionCorrelationId) {\n identifiers.sessionCorrelationId = meeting.sessionCorrelationId;\n }\n }\n\n if (sessionCorrelationId) {\n identifiers.sessionCorrelationId = sessionCorrelationId;\n }\n\n if (sessionCorrelationId) {\n identifiers.sessionCorrelationId = sessionCorrelationId;\n }\n\n if (correlationId) {\n identifiers.correlationId = correlationId;\n }\n\n // TODO: should we use patterns.uuid to validate correlationId and session correlation id? they will fail the diagnostic events validation pipeline if improperly formatted\n\n if (this.device) {\n const {device} = this;\n const {installationId} = device?.config || {};\n\n identifiers.userId = device?.userId || preLoginId;\n identifiers.deviceId = device?.url;\n identifiers.orgId = device?.orgId;\n // @ts-ignore\n identifiers.locusUrl = this.webex.internal.services.get('locus');\n\n if (installationId) {\n identifiers.machineId = installationId;\n }\n }\n\n if (meeting?.locusInfo?.fullState) {\n identifiers.locusUrl = meeting.locusUrl;\n identifiers.locusId = meeting.locusUrl && meeting.locusUrl.split('/').pop();\n identifiers.locusStartTime =\n meeting.locusInfo.fullState && meeting.locusInfo.fullState.lastActive;\n }\n\n if (meeting?.meetingInfo?.confIdStr || meeting?.meetingInfo?.confID) {\n identifiers.webexConferenceIdStr = `${\n meeting.meetingInfo?.confIdStr || meeting.meetingInfo?.confID\n }`;\n }\n\n if (meeting?.meetingInfo?.meetingId) {\n identifiers.globalMeetingId = meeting.meetingInfo?.meetingId;\n }\n\n if (meeting?.meetingInfo?.siteName) {\n identifiers.webexSiteName = meeting.meetingInfo?.siteName;\n }\n\n if (mediaConnections) {\n identifiers.mediaAgentAlias = mediaConnections?.[0]?.mediaAgentAlias;\n identifiers.mediaAgentGroupId = mediaConnections?.[0]?.mediaAgentGroupId;\n }\n\n if (!identifiers?.webexConferenceIdStr && webexConferenceIdStr) {\n identifiers.webexConferenceIdStr = `${webexConferenceIdStr}`;\n }\n\n if (!identifiers?.globalMeetingId && globalMeetingId) {\n identifiers.globalMeetingId = globalMeetingId;\n }\n\n if (identifiers.correlationId === undefined) {\n throw new Error('Identifiers initialization failed.');\n }\n\n return identifiers;\n }\n\n /**\n * Create diagnostic event, which can hold client event, feature event or MQE event data.\n * This just initiates the shared properties that are required for all the 3 event categories.\n * @param eventData\n * @param options\n * @returns\n */\n prepareDiagnosticEvent(eventData: Event['event'], options: any) {\n const {meetingId, triggeredTime} = options;\n const origin = this.getOrigin(options, meetingId);\n\n const event: Event = {\n eventId: uuid.v4(),\n version: 1,\n origin,\n originTime: {\n triggered: triggeredTime || new Date().toISOString(),\n // is overridden in prepareRequest batcher\n sent: 'not_defined_yet',\n },\n // @ts-ignore\n senderCountryCode: this.webex.meetings.geoHintInfo?.countryCode,\n event: eventData,\n };\n\n // sanitize (remove empty properties, CA requires it)\n // but we don't want to sanitize MQE as most of the times\n // values will be 0, [] etc, and they are required.\n if (eventData.name !== 'client.mediaquality.event') {\n clearEmptyKeysRecursively(event);\n }\n\n return event;\n }\n\n /**\n * TODO: NOT IMPLEMENTED\n * Submit Feature Event\n * @returns\n */\n public submitFeatureEvent() {\n throw Error('Not implemented');\n }\n\n /**\n * Submit Media Quality Event\n * @param args - submit params\n * @param arg.name - event key\n * @param arg.payload - additional payload to be merge with the default payload\n * @param arg.options - options\n */\n submitMQE({\n name,\n payload,\n options,\n }: {\n name: MediaQualityEvent['name'];\n payload: SubmitMQEPayload;\n options: SubmitMQEOptions;\n }) {\n const {meetingId, mediaConnections, webexConferenceIdStr, globalMeetingId} = options;\n\n // events that will most likely happen in join phase\n if (meetingId) {\n // @ts-ignore\n const meeting = this.webex.meetings.getBasicMeetingInformation(meetingId);\n\n if (!meeting) {\n console.warn(\n 'Attempt to send MQE but no meeting was found...',\n `event: ${name}, meetingId: ${meetingId}`\n );\n // @ts-ignore\n this.webex.internal.metrics.submitClientMetrics(CALL_DIAGNOSTIC_EVENT_FAILED_TO_SEND, {\n fields: {\n meetingId,\n name,\n },\n });\n\n return;\n }\n\n // merge identifiers\n const identifiers = this.getIdentifiers({\n meeting,\n mediaConnections: meeting.mediaConnections || mediaConnections,\n webexConferenceIdStr,\n globalMeetingId,\n });\n\n // create media quality event object\n let clientEventObject: MediaQualityEvent['payload'] = {\n name,\n canProceed: true,\n identifiers,\n eventData: {\n webClientDomain: window.location.hostname,\n },\n intervals: payload.intervals,\n callingServiceType: 'LOCUS',\n meetingJoinInfo: {\n clientSignallingProtocol: 'WebRTC',\n },\n sourceMetadata: {\n applicationSoftwareType: CLIENT_NAME,\n // @ts-ignore\n applicationSoftwareVersion: this.webex.version,\n mediaEngineSoftwareType: getBrowserName() || 'browser',\n mediaEngineSoftwareVersion: getOSVersion() || 'unknown',\n startTime: new Date().toISOString(),\n },\n };\n\n // merge any new properties, or override existing ones\n clientEventObject = merge(clientEventObject, payload);\n\n // append media quality event data to the call diagnostic event\n const diagnosticEvent = this.prepareDiagnosticEvent(clientEventObject, options);\n this.validator({type: 'mqe', event: diagnosticEvent});\n this.submitToCallDiagnostics(diagnosticEvent);\n } else {\n throw new Error(\n 'Media quality events cant be sent outside the context of a meeting. Meeting id is required.'\n );\n }\n }\n\n /**\n * Return Client Event payload by client error code\n * @param arg - get error arg\n * @param arg.clientErrorCode\n * @param arg.serviceErrorCode\n * @param arg.payloadOverrides\n * @param arg.httpStatusCode\n * @returns\n */\n public getErrorPayloadForClientErrorCode({\n clientErrorCode,\n serviceErrorCode,\n serviceErrorName,\n rawErrorMessage,\n payloadOverrides,\n httpStatusCode,\n }: {\n clientErrorCode: number;\n serviceErrorCode: any;\n serviceErrorName?: any;\n rawErrorMessage?: string;\n payloadOverrides?: any;\n httpStatusCode?: number;\n }): ClientEventError {\n let error: ClientEventError;\n\n if (clientErrorCode) {\n const partialParsedError = CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD[clientErrorCode];\n\n if (partialParsedError) {\n error = merge(\n {fatal: true, shownToUser: false, name: 'other', category: 'other'}, // default values\n {errorCode: clientErrorCode},\n serviceErrorName ? {errorData: {errorName: serviceErrorName}} : {},\n {serviceErrorCode},\n {rawErrorMessage},\n httpStatusCode === undefined ? {} : {httpStatusCode},\n partialParsedError,\n payloadOverrides || {}\n );\n\n return error;\n }\n }\n\n return undefined;\n }\n\n /**\n * Generate error payload for Client Event\n * @param rawError\n */\n generateClientEventErrorPayload(rawError: any) {\n const rawErrorMessage = rawError.message;\n const httpStatusCode = rawError.statusCode;\n if (rawError.name) {\n if (isBrowserMediaErrorName(rawError.name)) {\n return this.getErrorPayloadForClientErrorCode({\n serviceErrorCode: undefined,\n clientErrorCode: BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP[rawError.name],\n serviceErrorName: rawError.name,\n rawErrorMessage,\n httpStatusCode,\n });\n }\n }\n\n if (isSdpOfferCreationError(rawError)) {\n // error code is 30005, but that's not specific enough. we also need to check error.cause.type\n const causeType = rawError.cause?.type;\n\n return this.getErrorPayloadForClientErrorCode({\n serviceErrorCode: undefined,\n clientErrorCode:\n SDP_OFFER_CREATION_ERROR_MAP[causeType] || SDP_OFFER_CREATION_ERROR_MAP.GENERAL,\n serviceErrorName: rawError.name,\n rawErrorMessage,\n httpStatusCode,\n });\n }\n\n const serviceErrorCode =\n rawError?.error?.body?.errorCode ||\n rawError?.body?.errorCode ||\n rawError?.body?.code ||\n rawError?.body?.reason?.reasonCode;\n\n if (serviceErrorCode) {\n const clientErrorCode = SERVICE_ERROR_CODES_TO_CLIENT_ERROR_CODES_MAP[serviceErrorCode];\n if (clientErrorCode) {\n return this.getErrorPayloadForClientErrorCode({\n clientErrorCode,\n serviceErrorCode,\n rawErrorMessage,\n httpStatusCode,\n });\n }\n\n // by default, if it is locus error, return new locus err\n if (isLocusServiceErrorCode(serviceErrorCode)) {\n return this.getErrorPayloadForClientErrorCode({\n clientErrorCode: NEW_LOCUS_ERROR_CLIENT_CODE,\n serviceErrorCode,\n rawErrorMessage,\n httpStatusCode,\n });\n }\n }\n\n if (isMeetingInfoServiceError(rawError)) {\n return this.getErrorPayloadForClientErrorCode({\n clientErrorCode: MEETING_INFO_LOOKUP_ERROR_CLIENT_CODE,\n serviceErrorCode,\n rawErrorMessage,\n httpStatusCode,\n });\n }\n\n if (isNetworkError(rawError)) {\n return this.getErrorPayloadForClientErrorCode({\n clientErrorCode: NETWORK_ERROR,\n serviceErrorCode,\n payloadOverrides: rawError.payloadOverrides,\n rawErrorMessage,\n httpStatusCode,\n });\n }\n\n if (isUnauthorizedError(rawError)) {\n return this.getErrorPayloadForClientErrorCode({\n clientErrorCode: AUTHENTICATION_FAILED_CODE,\n serviceErrorCode,\n payloadOverrides: rawError.payloadOverrides,\n rawErrorMessage,\n httpStatusCode,\n });\n }\n\n // otherwise return unkown error but passing serviceErrorCode and serviceErrorName so that we know the issue\n return this.getErrorPayloadForClientErrorCode({\n clientErrorCode: UNKNOWN_ERROR,\n serviceErrorCode: serviceErrorCode || UNKNOWN_ERROR,\n serviceErrorName: rawError?.name,\n payloadOverrides: rawError.payloadOverrides,\n rawErrorMessage,\n httpStatusCode,\n });\n }\n\n /**\n * Create client event object for in meeting events\n * @param arg - create args\n * @param arg.event - event key\n * @param arg.options - options\n * @returns object\n */\n private createClientEventObjectInMeeting({\n name,\n options,\n errors,\n }: {\n name: ClientEvent['name'];\n options?: SubmitClientEventOptions;\n errors?: ClientEventPayloadError;\n }) {\n const {\n meetingId,\n mediaConnections,\n globalMeetingId,\n webexConferenceIdStr,\n sessionCorrelationId,\n } = options;\n\n // @ts-ignore\n const meeting = this.webex.meetings.getBasicMeetingInformation(meetingId);\n\n if (!meeting) {\n console.warn(\n 'Attempt to send client event but no meeting was found...',\n `name: ${name}, meetingId: ${meetingId}`\n );\n // @ts-ignore\n this.webex.internal.metrics.submitClientMetrics(CALL_DIAGNOSTIC_EVENT_FAILED_TO_SEND, {\n fields: {\n meetingId,\n name,\n },\n });\n\n return undefined;\n }\n\n // grab identifiers\n const identifiers = this.getIdentifiers({\n meeting,\n mediaConnections: meeting?.mediaConnections || mediaConnections,\n webexConferenceIdStr,\n globalMeetingId,\n sessionCorrelationId,\n });\n\n // create client event object\n const clientEventObject: ClientEvent['payload'] = {\n name,\n canProceed: true,\n identifiers,\n errors,\n eventData: {\n webClientDomain: window.location.hostname,\n },\n userType: meeting.getCurUserType(),\n loginType:\n 'loginType' in meeting.callStateForMetrics\n ? meeting.callStateForMetrics.loginType\n : this.getCurLoginType(),\n isConvergedArchitectureEnabled: this.getIsConvergedArchitectureEnabled({\n meetingId,\n }),\n ...(meeting.userNameInput && {userNameInput: meeting.userNameInput}),\n ...(meeting.emailInput && {emailInput: meeting.emailInput}),\n webexSubServiceType: this.getSubServiceType(meeting),\n // @ts-ignore\n webClientPreload: this.webex.meetings?.config?.metrics?.webClientPreload,\n };\n\n const joinFlowVersion = options.joinFlowVersion ?? meeting.callStateForMetrics?.joinFlowVersion;\n if (joinFlowVersion) {\n clientEventObject.joinFlowVersion = joinFlowVersion;\n }\n const meetingJoinedTime = meeting.isoLocalClientMeetingJoinTime;\n if (meetingJoinedTime) {\n clientEventObject.meetingJoinedTime = meetingJoinedTime;\n }\n\n if (options.meetingJoinPhase) {\n clientEventObject.meetingJoinPhase = options.meetingJoinPhase;\n }\n\n return clientEventObject;\n }\n\n /**\n * Create client event object for pre meeting events\n * @param arg - create args\n * @param arg.event - event key\n * @param arg.options - payload\n * @returns object\n */\n private createClientEventObjectPreMeeting({\n name,\n options,\n errors,\n }: {\n name: ClientEvent['name'];\n options?: SubmitClientEventOptions;\n errors?: ClientEventPayloadError;\n }) {\n const {correlationId, globalMeetingId, webexConferenceIdStr, preLoginId, sessionCorrelationId} =\n options;\n\n // grab identifiers\n const identifiers = this.getIdentifiers({\n correlationId,\n sessionCorrelationId,\n preLoginId,\n globalMeetingId,\n webexConferenceIdStr,\n });\n\n // create client event object\n const clientEventObject: ClientEvent['payload'] = {\n name,\n errors,\n canProceed: true,\n identifiers,\n eventData: {\n webClientDomain: window.location.hostname,\n },\n loginType: this.getCurLoginType(),\n // @ts-ignore\n webClientPreload: this.webex.meetings?.config?.metrics?.webClientPreload,\n };\n\n if (options.joinFlowVersion) {\n clientEventObject.joinFlowVersion = options.joinFlowVersion;\n }\n\n if (options.meetingJoinPhase) {\n clientEventObject.meetingJoinPhase = options.meetingJoinPhase;\n }\n\n if (options.userNameInput) {\n clientEventObject.userNameInput = options.userNameInput;\n }\n\n if (options.emailInput) {\n clientEventObject.emailInput = options.emailInput;\n }\n\n return clientEventObject;\n }\n\n /**\n * Prepare Client Event CA event.\n * @param arg - submit params\n * @param arg.event - event key\n * @param arg.payload - additional payload to be merged with default payload\n * @param arg.options - payload\n * @returns {any} options to be with fetch\n * @throws\n */\n private prepareClientEvent({\n name,\n payload,\n options,\n }: {\n name: ClientEvent['name'];\n payload?: ClientEventPayload;\n options?: SubmitClientEventOptions;\n }) {\n const {meetingId, correlationId, rawError} = options;\n let clientEventObject: ClientEvent['payload'];\n\n // check if we need to generate errors\n const errors: ClientEventPayloadError = [];\n\n if (rawError) {\n const generatedError = this.generateClientEventErrorPayload(rawError);\n if (generatedError) {\n errors.push(generatedError);\n }\n this.logger.log(\n CALL_DIAGNOSTIC_LOG_IDENTIFIER,\n 'CallDiagnosticMetrics: @prepareClientEvent. Generated errors:',\n `generatedError: ${JSON.stringify(generatedError)}`\n );\n }\n\n // events that will most likely happen in join phase\n if (meetingId) {\n clientEventObject = this.createClientEventObjectInMeeting({name, options, errors});\n } else if (correlationId) {\n // any pre join events or events that are outside the meeting.\n clientEventObject = this.createClientEventObjectPreMeeting({name, options, errors});\n } else {\n throw new Error('Not implemented');\n }\n\n // merge any new properties, or override existing ones\n clientEventObject = merge(clientEventObject, payload);\n\n // append client event data to the call diagnostic event\n const diagnosticEvent = this.prepareDiagnosticEvent(clientEventObject, options);\n\n return diagnosticEvent;\n }\n\n /**\n * Submit Client Event CA event.\n * @param arg - submit params\n * @param arg.event - event key\n * @param arg.payload - additional payload to be merged with default payload\n * @param arg.options - payload\n * @param arg.delaySubmitEvent - a boolean value indicating whether to delay the submission of client events.\n * @throws\n */\n public submitClientEvent({\n name,\n payload,\n options,\n delaySubmitEvent,\n }: {\n name: ClientEvent['name'];\n payload?: ClientEventPayload;\n options?: SubmitClientEventOptions;\n delaySubmitEvent?: boolean;\n }) {\n if (delaySubmitEvent) {\n // Preserve the time when the event was triggered if delaying the submission to Call Diagnostics\n const delayedOptions = {\n ...options,\n triggeredTime: new Date().toISOString(),\n };\n\n this.delayedClientEvents.push({\n name,\n payload,\n options: delayedOptions,\n });\n\n return Promise.resolve();\n }\n\n this.logger.log(\n CALL_DIAGNOSTIC_LOG_IDENTIFIER,\n 'CallDiagnosticMetrics: @submitClientEvent. Submit Client Event CA event.',\n `name: ${name}`\n );\n const diagnosticEvent = this.prepareClientEvent({name, payload, options});\n\n if (options?.preLoginId) {\n return this.submitToCallDiagnosticsPreLogin(diagnosticEvent, options?.preLoginId);\n }\n\n this.validator({type: 'ce', event: diagnosticEvent});\n\n return this.submitToCallDiagnostics(diagnosticEvent);\n }\n\n /**\n * Submit Delayed Client Event CA events. Clears delayedClientEvents array after submission.\n */\n public submitDelayedClientEvents() {\n this.logger.log(\n CALL_DIAGNOSTIC_LOG_IDENTIFIER,\n 'CallDiagnosticMetrics: @submitDelayedClientEvents. Submitting delayed client events.'\n );\n\n if (this.delayedClientEvents.length === 0) {\n return Promise.resolve();\n }\n\n const promises = this.delayedClientEvents.map((delayedSubmitClientEventParams) => {\n return this.submitClientEvent(delayedSubmitClientEventParams);\n });\n\n this.delayedClientEvents = [];\n\n return Promise.all(promises);\n }\n\n /**\n * Prepare the event and send the request to metrics-a service.\n * @param event\n * @returns promise\n */\n submitToCallDiagnostics(event: Event): Promise<any> {\n // build metrics-a event type\n const finalEvent = {\n eventPayload: event,\n type: ['diagnostic-event'],\n };\n\n return this.callDiagnosticEventsBatcher.request(finalEvent);\n }\n\n /**\n * Prepare the event and send the request to metrics-a service, pre login.\n * @param event\n * @param preLoginId\n * @returns\n */\n submitToCallDiagnosticsPreLogin = (event: Event, preLoginId?: string): Promise<any> => {\n // build metrics-a event type\n const finalEvent = {\n eventPayload: event,\n type: ['diagnostic-event'],\n };\n this.preLoginMetricsBatcher.savePreLoginId(preLoginId);\n\n return this.preLoginMetricsBatcher.request(finalEvent);\n };\n\n /**\n * Builds a request options object to later be passed to fetch().\n * @param arg - submit params\n * @param arg.event - event key\n * @param arg.payload - additional payload to be merged with default payload\n * @param arg.options - client event options\n * @returns {Promise<any>}\n * @throws\n */\n public async buildClientEventFetchRequestOptions({\n name,\n payload,\n options,\n }: {\n name: ClientEvent['name'];\n payload?: ClientEventPayload;\n options?: SubmitClientEventOptions;\n }): Promise<any> {\n this.logger.log(\n CALL_DIAGNOSTIC_LOG_IDENTIFIER,\n 'CallDiagnosticMetrics: @buildClientEventFetchRequestOptions. Building request options object for fetch()...',\n `name: ${name}`\n );\n\n const clientEvent = this.prepareClientEvent({name, payload, options});\n\n // build metrics-a event type\n // @ts-ignore\n const diagnosticEvent = prepareDiagnosticMetricItem(this.webex, {\n eventPayload: clientEvent,\n type: ['diagnostic-event'],\n });\n\n const request = {\n method: 'POST',\n service: 'metrics',\n resource: 'clientmetrics',\n body: {\n metrics: [diagnosticEvent],\n },\n headers: {},\n // @ts-ignore\n waitForServiceTimeout: this.webex.internal.metrics.config.waitForServiceTimeout,\n };\n\n if (options.preLoginId) {\n request.headers = {\n authorization: false,\n 'x-prelogin-userid': options.preLoginId,\n };\n request.resource = 'clientmetrics-prelogin';\n }\n\n // @ts-ignore\n return this.webex.prepareFetchOptions(request);\n }\n\n /**\n * Returns true if the specified serviceErrorCode maps to an expected error.\n * @param {number} serviceErrorCode the service error code\n * @returns {boolean}\n */\n public isServiceErrorExpected(serviceErrorCode: number): boolean {\n const clientErrorCode = SERVICE_ERROR_CODES_TO_CLIENT_ERROR_CODES_MAP[serviceErrorCode];\n const clientErrorPayload = CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD[clientErrorCode];\n\n return clientErrorPayload?.category === 'expected';\n }\n\n /**\n * This method is used to set the device information by internal-plugin-device\n * @param {device} object The webex.internal.device object\n * @returns {undefined}\n */\n public setDeviceInfo(device: any): void {\n // This was created to fix the circular dependency between internal-plugin-device and internal-plugin-metrics\n this.logger.log('CallDiagnosticMetrics: @setDeviceInfo called', device);\n\n this.device = device;\n }\n}\n"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequ
|
|
|
5
5
|
_Object$defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.WEBEX_SUB_SERVICE_TYPES = exports.WBX_APP_API_URL = exports.UNKNOWN_ERROR = exports.SERVICE_ERROR_CODES_TO_CLIENT_ERROR_CODES_MAP = exports.SDP_OFFER_CREATION_ERROR_MAP = exports.NEW_LOCUS_ERROR_CLIENT_CODE = exports.NETWORK_ERROR = exports.MISSING_ROAP_ANSWER_CLIENT_CODE = exports.MEETING_INFO_LOOKUP_ERROR_CLIENT_CODE = exports.ICE_FAILURE_CLIENT_CODE = exports.ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE = exports.ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE = exports.ICE_AND_REACHABILITY_FAILED_CLIENT_CODE = exports.ERROR_DESCRIPTIONS = exports.DTLS_HANDSHAKE_FAILED_CLIENT_CODE = exports.CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD = exports.CALL_DIAGNOSTIC_LOG_IDENTIFIER = exports.CALL_DIAGNOSTIC_EVENT_FAILED_TO_SEND = exports.BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP = exports.AUTHENTICATION_FAILED_CODE = void 0;
|
|
8
|
+
exports.WEBEX_SUB_SERVICE_TYPES = exports.WBX_APP_API_URL = exports.UNKNOWN_ERROR = exports.SERVICE_ERROR_CODES_TO_CLIENT_ERROR_CODES_MAP = exports.SDP_OFFER_CREATION_ERROR_MAP = exports.NEW_LOCUS_ERROR_CLIENT_CODE = exports.NETWORK_ERROR = exports.MULTISTREAM_NOT_AVAILABLE_CLIENT_CODE = exports.MISSING_ROAP_ANSWER_CLIENT_CODE = exports.MEETING_INFO_LOOKUP_ERROR_CLIENT_CODE = exports.ICE_FAILURE_CLIENT_CODE = exports.ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE = exports.ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE = exports.ICE_AND_REACHABILITY_FAILED_CLIENT_CODE = exports.ERROR_DESCRIPTIONS = exports.DTLS_HANDSHAKE_FAILED_CLIENT_CODE = exports.CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD = exports.CALL_DIAGNOSTIC_LOG_IDENTIFIER = exports.CALL_DIAGNOSTIC_EVENT_FAILED_TO_SEND = exports.BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP = exports.AUTHENTICATION_FAILED_CODE = void 0;
|
|
9
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
10
10
|
var _CLIENT_ERROR_CODE_TO;
|
|
11
11
|
/* eslint-disable import/prefer-default-export */
|
|
@@ -24,12 +24,14 @@ var DTLS_HANDSHAKE_FAILED_CLIENT_CODE = exports.DTLS_HANDSHAKE_FAILED_CLIENT_COD
|
|
|
24
24
|
var ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE = exports.ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE = 2010;
|
|
25
25
|
var ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE = exports.ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE = 2009;
|
|
26
26
|
var ICE_AND_REACHABILITY_FAILED_CLIENT_CODE = exports.ICE_AND_REACHABILITY_FAILED_CLIENT_CODE = 2011;
|
|
27
|
+
var MULTISTREAM_NOT_AVAILABLE_CLIENT_CODE = exports.MULTISTREAM_NOT_AVAILABLE_CLIENT_CODE = 2012;
|
|
27
28
|
var WBX_APP_API_URL = exports.WBX_APP_API_URL = 'wbxappapi'; // MeetingInfo WebexAppApi response object normally contains a body.url that includes the string 'wbxappapi'
|
|
28
29
|
|
|
29
30
|
var WEBEX_SUB_SERVICE_TYPES = exports.WEBEX_SUB_SERVICE_TYPES = {
|
|
30
31
|
PMR: 'PMR',
|
|
31
32
|
SCHEDULED_MEETING: 'ScheduledMeeting',
|
|
32
|
-
WEBINAR: 'Webinar'
|
|
33
|
+
WEBINAR: 'Webinar',
|
|
34
|
+
WEBCAST: 'Webcast'
|
|
33
35
|
};
|
|
34
36
|
|
|
35
37
|
// Found in https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia
|
|
@@ -122,6 +124,7 @@ var ERROR_DESCRIPTIONS = exports.ERROR_DESCRIPTIONS = {
|
|
|
122
124
|
ICE_FAILED_WITHOUT_TURN_TLS: 'ICEFailedWithoutTURN_TLS',
|
|
123
125
|
ICE_FAILED_WITH_TURN_TLS: 'ICEFailedWithTURN_TLS',
|
|
124
126
|
ICE_AND_REACHABILITY_FAILED: 'ICEAndReachabilityFailed',
|
|
127
|
+
MULTISTREAM_NOT_AVAILABLE: 'MultistreamNotAvailable',
|
|
125
128
|
SDP_OFFER_CREATION_ERROR: 'SdpOfferCreationError',
|
|
126
129
|
SDP_OFFER_CREATION_ERROR_MISSING_CODEC: 'SdpOfferCreationErrorMissingCodec',
|
|
127
130
|
WDM_RESTRICTED_REGION: 'WdmRestrictedRegion'
|
|
@@ -387,6 +390,10 @@ var CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD = exports.CLIENT_ERROR_CODE_TO_ERROR_PAYL
|
|
|
387
390
|
errorDescription: ERROR_DESCRIPTIONS.ICE_AND_REACHABILITY_FAILED,
|
|
388
391
|
category: 'expected',
|
|
389
392
|
fatal: true
|
|
393
|
+
}), MULTISTREAM_NOT_AVAILABLE_CLIENT_CODE, {
|
|
394
|
+
errorDescription: ERROR_DESCRIPTIONS.MULTISTREAM_NOT_AVAILABLE,
|
|
395
|
+
category: 'expected',
|
|
396
|
+
fatal: false
|
|
390
397
|
}), 2050, {
|
|
391
398
|
errorDescription: ERROR_DESCRIPTIONS.SDP_OFFER_CREATION_ERROR,
|
|
392
399
|
category: 'media',
|
|
@@ -413,11 +420,11 @@ var CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD = exports.CLIENT_ERROR_CODE_TO_ERROR_PAYL
|
|
|
413
420
|
errorDescription: ERROR_DESCRIPTIONS.LOCUS_USER_NOT_AUTHORISED,
|
|
414
421
|
category: 'expected',
|
|
415
422
|
fatal: true
|
|
416
|
-
}), 3006, {
|
|
423
|
+
}), (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)(_CLIENT_ERROR_CODE_TO, 3006, {
|
|
417
424
|
errorDescription: ERROR_DESCRIPTIONS.CLOUDBERRY_UNAVAILABLE,
|
|
418
425
|
category: 'expected',
|
|
419
426
|
fatal: true
|
|
420
|
-
}),
|
|
427
|
+
}), 3007, {
|
|
421
428
|
errorDescription: ERROR_DESCRIPTIONS.STREAM_ERROR_NO_MEDIA,
|
|
422
429
|
category: 'expected',
|
|
423
430
|
fatal: true
|
|
@@ -455,11 +462,11 @@ var CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD = exports.CLIENT_ERROR_CODE_TO_ERROR_PAYL
|
|
|
455
462
|
errorDescription: ERROR_DESCRIPTIONS.USER_NOT_MEMBER_OF_ROOM,
|
|
456
463
|
category: 'expected',
|
|
457
464
|
fatal: true
|
|
458
|
-
}), 4008, {
|
|
465
|
+
}), (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)(_CLIENT_ERROR_CODE_TO, 4008, {
|
|
459
466
|
errorDescription: ERROR_DESCRIPTIONS.NEW_LOCUS_ERROR,
|
|
460
467
|
category: 'signaling',
|
|
461
468
|
fatal: true
|
|
462
|
-
}),
|
|
469
|
+
}), 4009, {
|
|
463
470
|
errorDescription: ERROR_DESCRIPTIONS.NETWORK_UNAVAILABLE,
|
|
464
471
|
category: 'network',
|
|
465
472
|
fatal: true
|
|
@@ -497,12 +504,12 @@ var CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD = exports.CLIENT_ERROR_CODE_TO_ERROR_PAYL
|
|
|
497
504
|
category: 'expected',
|
|
498
505
|
fatal: true,
|
|
499
506
|
name: 'locus.response'
|
|
500
|
-
}), 4018, {
|
|
507
|
+
}), (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)(_CLIENT_ERROR_CODE_TO, 4018, {
|
|
501
508
|
errorDescription: ERROR_DESCRIPTIONS.INVALID_DIALABLE_KEY,
|
|
502
509
|
category: 'expected',
|
|
503
510
|
fatal: true,
|
|
504
511
|
name: 'locus.response'
|
|
505
|
-
}),
|
|
512
|
+
}), 4019, {
|
|
506
513
|
errorDescription: ERROR_DESCRIPTIONS.ONE_ON_ONE_TO_SELF_NOT_ALLOWED,
|
|
507
514
|
category: 'expected',
|
|
508
515
|
fatal: true
|
|
@@ -538,11 +545,11 @@ var CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD = exports.CLIENT_ERROR_CODE_TO_ERROR_PAYL
|
|
|
538
545
|
errorDescription: ERROR_DESCRIPTIONS.EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE,
|
|
539
546
|
category: 'expected',
|
|
540
547
|
fatal: true
|
|
541
|
-
}), 4028, {
|
|
548
|
+
}), (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)(_CLIENT_ERROR_CODE_TO, 4028, {
|
|
542
549
|
errorDescription: ERROR_DESCRIPTIONS.CONVERSATION_NOT_FOUND,
|
|
543
550
|
category: 'expected',
|
|
544
551
|
fatal: true
|
|
545
|
-
}),
|
|
552
|
+
}), 4029, {
|
|
546
553
|
errorDescription: ERROR_DESCRIPTIONS.START_RECORDING_FAILED,
|
|
547
554
|
category: 'expected',
|
|
548
555
|
fatal: true
|
|
@@ -578,11 +585,11 @@ var CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD = exports.CLIENT_ERROR_CODE_TO_ERROR_PAYL
|
|
|
578
585
|
errorDescription: ERROR_DESCRIPTIONS.USER_NOT_ALLOWED_ACCESS_MEETING,
|
|
579
586
|
category: 'expected',
|
|
580
587
|
fatal: true
|
|
581
|
-
}), 4102, {
|
|
588
|
+
}), (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)(_CLIENT_ERROR_CODE_TO, 4102, {
|
|
582
589
|
errorDescription: ERROR_DESCRIPTIONS.USER_NEEDS_ACTIVATION,
|
|
583
590
|
category: 'expected',
|
|
584
591
|
fatal: true
|
|
585
|
-
}),
|
|
592
|
+
}), 4103, {
|
|
586
593
|
errorDescription: ERROR_DESCRIPTIONS.SIGN_UP_INVALID_EMAIL,
|
|
587
594
|
category: 'expected',
|
|
588
595
|
fatal: true
|