@webex/internal-plugin-metrics 3.11.0-webex-services-ready.1 → 3.12.0-mobius-socket.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/call-diagnostic/call-diagnostic-metrics-latencies.js +3 -2
  2. package/dist/call-diagnostic/call-diagnostic-metrics-latencies.js.map +1 -1
  3. package/dist/call-diagnostic/call-diagnostic-metrics.js +1 -0
  4. package/dist/call-diagnostic/call-diagnostic-metrics.js.map +1 -1
  5. package/dist/call-diagnostic/call-diagnostic-metrics.util.js +4 -1
  6. package/dist/call-diagnostic/call-diagnostic-metrics.util.js.map +1 -1
  7. package/dist/generic-metrics.js +8 -6
  8. package/dist/generic-metrics.js.map +1 -1
  9. package/dist/index.js +7 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/metrics.js +1 -1
  12. package/dist/metrics.types.js.map +1 -1
  13. package/dist/new-metrics.js +56 -20
  14. package/dist/new-metrics.js.map +1 -1
  15. package/dist/prelogin-metrics.js +106 -0
  16. package/dist/prelogin-metrics.js.map +1 -0
  17. package/dist/types/call-diagnostic/call-diagnostic-metrics.d.ts +13 -2
  18. package/dist/types/index.d.ts +2 -1
  19. package/dist/types/metrics.types.d.ts +2 -2
  20. package/dist/types/new-metrics.d.ts +12 -0
  21. package/dist/types/prelogin-metrics.d.ts +47 -0
  22. package/package.json +11 -11
  23. package/src/call-diagnostic/call-diagnostic-metrics-latencies.ts +3 -5
  24. package/src/call-diagnostic/call-diagnostic-metrics.ts +1 -0
  25. package/src/call-diagnostic/call-diagnostic-metrics.util.ts +5 -1
  26. package/src/generic-metrics.ts +6 -6
  27. package/src/index.ts +2 -0
  28. package/src/metrics.types.ts +2 -2
  29. package/src/new-metrics.ts +42 -0
  30. package/src/prelogin-metrics.ts +94 -0
  31. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics-batcher.ts +33 -9
  32. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics-latencies.ts +120 -117
  33. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics.ts +35 -0
  34. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics.util.ts +10 -3
  35. package/test/unit/spec/prelogin-metrics.ts +132 -0
@@ -1 +1 @@
1
- {"version":3,"names":["_webexCore","require","_callDiagnosticMetrics","_interopRequireDefault","_behavioralMetrics","_operationalMetrics","_businessMetrics","_callDiagnosticMetricsLatencies","_callDiagnosticMetrics2","_utils","_Metrics","_callSuper","t","o","e","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","apply","Boolean","prototype","valueOf","call","Metrics","_WebexPlugin","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","concat","_defineProperty2","callDiagnosticLatencies","CallDiagnosticLatencies","parent","webex","onReady","_inherits2","_createClass2","key","value","_this2","once","callDiagnosticMetrics","CallDiagnosticMetrics","isReady","setDelaySubmitClientEvents","shouldDelay","delaySubmitClientEvents","overrides","delayedClientEventsOverrides","submitInternalEvent","_ref","name","payload","options","clearTimestamps","saveTimestamp","lazyBuildBehavioralMetrics","behavioralMetrics","BehavioralMetrics","lazyBuildOperationalMetrics","operationalMetrics","OperationalMetrics","lazyBuildBusinessMetrics","businessMetrics","BusinessMetrics","isReadyToSubmitBehavioralEvents","_this$behavioralMetri","_this$behavioralMetri2","isReadyToSubmitEvents","isReadyToSubmitOperationalEvents","_this$operationalMetr","_this$operationalMetr2","isReadyToSubmitBusinessEvents","_this$businessMetrics","_this$businessMetrics2","submitBehavioralEvent","_ref2","product","agent","target","verb","logger","log","_promise","resolve","submitOperationalEvent","_ref3","submitBusinessEvent","_ref4","table","metadata","submitMQE","_ref5","submitFeatureEvent","_ref6","meetingId","delaySubmitEvent","delaySubmitClientFeatureEvents","submitClientEvent","_ref7","clientMetricsAliasUser","preLoginId","_this3","request","method","api","resource","headers","body","qs","alias","then","res","catch","err","error","generateCommonErrorMetadata","reject","_buildClientEventFetchRequestOptions","_asyncToGenerator2","_regenerator","mark","_callee","_ref8","wrap","_context","prev","next","abrupt","buildClientEventFetchRequestOptions","stop","_x","setMetricTimingsAndFetch","setTimingsAndFetch","setMetricTimings","isServiceErrorExpected","serviceErrorCode","_ref9","submitDelayedClientEvents","setDelaySubmitClientFeatureEvents","_ref0","delayedClientFeatureEventsOverrides","submitDelayedClientFeatureEvents","WebexPlugin","_default","exports"],"sources":["new-metrics.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable class-methods-use-this */\n/* eslint-disable valid-jsdoc */\n\n// @ts-ignore\nimport {WebexPlugin} from '@webex/webex-core';\n\nimport CallDiagnosticMetrics from './call-diagnostic/call-diagnostic-metrics';\nimport BehavioralMetrics from './behavioral-metrics';\nimport OperationalMetrics from './operational-metrics';\nimport BusinessMetrics from './business-metrics';\nimport {\n RecursivePartial,\n MetricEventProduct,\n MetricEventAgent,\n MetricEventVerb,\n ClientEvent,\n FeatureEvent,\n EventPayload,\n OperationalEvent,\n MediaQualityEvent,\n InternalEvent,\n SubmitClientEventOptions,\n Table,\n DelayedClientEvent,\n DelayedClientFeatureEvent,\n} from './metrics.types';\nimport CallDiagnosticLatencies from './call-diagnostic/call-diagnostic-metrics-latencies';\nimport {setMetricTimings} from './call-diagnostic/call-diagnostic-metrics.util';\nimport {generateCommonErrorMetadata} from './utils';\n\n/**\n * Metrics plugin to centralize all types of metrics.\n * https://confluence-eng-gpk2.cisco.com/conf/pages/viewpage.action?pageId=231011379\n * @class\n */\nclass Metrics extends WebexPlugin {\n // eslint-disable-next-line no-use-before-define\n static instance: Metrics;\n\n // Call Diagnostic latencies\n callDiagnosticLatencies: CallDiagnosticLatencies;\n // Helper classes to handle the different types of metrics\n callDiagnosticMetrics: CallDiagnosticMetrics;\n behavioralMetrics: BehavioralMetrics;\n operationalMetrics: OperationalMetrics;\n businessMetrics: BusinessMetrics;\n isReady = false;\n\n /**\n * Whether or not to delay the submission of client events.\n */\n delaySubmitClientEvents = false;\n\n /**\n * Whether or not to delay the submission of feature events.\n */\n delaySubmitClientFeatureEvents = false;\n\n /**\n * Overrides for delayed client events. E.g. if you want to override the correlationId for all delayed client events, you can set this to { correlationId: 'newCorrelationId' }\n */\n delayedClientEventsOverrides: Partial<DelayedClientEvent['options']> = {};\n\n delayedClientFeatureEventsOverrides: Partial<DelayedClientFeatureEvent['options']> = {};\n\n /**\n * Constructor\n * @param args\n * @constructor\n * @private\n * @returns\n */\n constructor(...args) {\n super(...args);\n\n // @ts-ignore\n this.callDiagnosticLatencies = new CallDiagnosticLatencies({}, {parent: this.webex});\n this.onReady();\n }\n\n /**\n * On Ready\n */\n private onReady() {\n // @ts-ignore\n this.webex.once('ready', () => {\n // @ts-ignore\n this.callDiagnosticMetrics = new CallDiagnosticMetrics({}, {parent: this.webex});\n this.isReady = true;\n this.setDelaySubmitClientEvents({\n shouldDelay: this.delaySubmitClientEvents,\n overrides: this.delayedClientEventsOverrides,\n });\n });\n }\n\n /**\n * Used for internal purposes only\n * @param args\n */\n submitInternalEvent({\n name,\n payload,\n options,\n }: {\n name: InternalEvent['name'];\n payload?: RecursivePartial<InternalEvent['payload']>;\n options?: any;\n }) {\n if (name === 'internal.reset.join.latencies') {\n this.callDiagnosticLatencies.clearTimestamps();\n } else {\n this.callDiagnosticLatencies.saveTimestamp({key: name});\n }\n }\n\n /**\n * if webex metrics is ready, build behavioral metric backend if not already done.\n */\n private lazyBuildBehavioralMetrics() {\n if (this.isReady && !this.behavioralMetrics) {\n // @ts-ignore\n this.behavioralMetrics = new BehavioralMetrics({}, {parent: this.webex});\n }\n }\n\n /**\n * if webex metrics is ready, build operational metric backend if not already done.\n */\n private lazyBuildOperationalMetrics() {\n if (this.isReady && !this.operationalMetrics) {\n // @ts-ignore\n this.operationalMetrics = new OperationalMetrics({}, {parent: this.webex});\n }\n }\n\n /**\n * if webex metrics is ready, build business metric backend if not already done.\n */\n private lazyBuildBusinessMetrics() {\n if (this.isReady && !this.businessMetrics) {\n // @ts-ignore\n this.businessMetrics = new BusinessMetrics({}, {parent: this.webex});\n }\n }\n\n /**\n * @returns true once we have the deviceId we need to submit behavioral events to Amplitude\n */\n isReadyToSubmitBehavioralEvents() {\n this.lazyBuildBehavioralMetrics();\n\n return this.behavioralMetrics?.isReadyToSubmitEvents() ?? false;\n }\n\n /**\n * @returns true once we have the deviceId we need to submit operational events\n */\n isReadyToSubmitOperationalEvents() {\n this.lazyBuildOperationalMetrics();\n\n return this.operationalMetrics?.isReadyToSubmitEvents() ?? false;\n }\n\n /**\n * @returns true once we have the deviceId we need to submit business events\n */\n isReadyToSubmitBusinessEvents() {\n this.lazyBuildBusinessMetrics();\n\n return this.businessMetrics?.isReadyToSubmitEvents() ?? false;\n }\n\n /**\n * Behavioral event\n * @param args\n */\n submitBehavioralEvent({\n product,\n agent,\n target,\n verb,\n payload,\n }: {\n product: MetricEventProduct;\n agent: MetricEventAgent;\n target: string;\n verb: MetricEventVerb;\n payload?: EventPayload;\n }) {\n if (!this.isReady) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitBehavioralEvent. Attempted to submit before webex.ready: ${product}.${agent}.${target}.${verb}`\n );\n\n return Promise.resolve();\n }\n\n this.lazyBuildBehavioralMetrics();\n\n return this.behavioralMetrics.submitBehavioralEvent({product, agent, target, verb, payload});\n }\n\n /**\n * Operational event\n * @param args\n */\n submitOperationalEvent({name, payload}: {name: string; payload?: EventPayload}) {\n if (!this.isReady) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitOperationalEvent. Attempted to submit before webex.ready: ${name}`\n );\n\n return Promise.resolve();\n }\n\n this.lazyBuildOperationalMetrics();\n\n return this.operationalMetrics.submitOperationalEvent({name, payload});\n }\n\n /**\n * Business event\n * @param args\n */\n submitBusinessEvent({\n name,\n payload,\n table,\n metadata,\n }: {\n name: string;\n payload: EventPayload;\n table?: Table;\n metadata?: EventPayload;\n }) {\n if (!this.isReady) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitBusinessEvent. Attempted to submit before webex.ready: ${name}`\n );\n\n return Promise.resolve();\n }\n\n this.lazyBuildBusinessMetrics();\n\n return this.businessMetrics.submitBusinessEvent({name, payload, table, metadata});\n }\n\n /**\n * Call Analyzer: Media Quality Event\n * @param args\n */\n submitMQE({\n name,\n payload,\n options,\n }: {\n name: MediaQualityEvent['name'];\n payload: RecursivePartial<MediaQualityEvent['payload']> & {\n intervals: MediaQualityEvent['payload']['intervals'];\n };\n options: any;\n }) {\n this.callDiagnosticLatencies.saveTimestamp({key: name});\n this.callDiagnosticMetrics.submitMQE({name, payload, options});\n }\n\n /**\n * Call Analyzer: Feature Usage Event\n * @param args\n */\n submitFeatureEvent({\n name,\n payload,\n options,\n }: {\n name: FeatureEvent['name'];\n payload?: RecursivePartial<FeatureEvent['payload']>;\n options: any;\n }) {\n if (!this.callDiagnosticLatencies || !this.callDiagnosticMetrics) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitFeatureEvent. Attempted to submit before webex.ready. Event name: ${name}`\n );\n\n return Promise.resolve();\n }\n this.callDiagnosticLatencies.saveTimestamp({\n key: name,\n options: {meetingId: options?.meetingId},\n });\n\n return this.callDiagnosticMetrics.submitFeatureEvent({\n name,\n payload,\n options,\n delaySubmitEvent: this.delaySubmitClientFeatureEvents,\n });\n }\n\n /**\n * Call Analyzer: Client Event\n * @public\n * @param args\n */\n public submitClientEvent({\n name,\n payload,\n options,\n }: {\n name: ClientEvent['name'];\n payload?: RecursivePartial<ClientEvent['payload']>;\n options?: SubmitClientEventOptions;\n }): Promise<any> {\n if (!this.callDiagnosticLatencies || !this.callDiagnosticMetrics) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitClientEvent. Attempted to submit before webex.ready. Event name: ${name}`\n );\n\n return Promise.resolve();\n }\n this.callDiagnosticLatencies.saveTimestamp({\n key: name,\n options: {meetingId: options?.meetingId},\n });\n\n return this.callDiagnosticMetrics.submitClientEvent({\n name,\n payload,\n options,\n delaySubmitEvent: this.delaySubmitClientEvents,\n });\n }\n\n /**\n * Issue request to alias a user's pre-login ID with their CI UUID\n * @param {string} preLoginId\n * @returns {Object} HttpResponse object\n */\n public clientMetricsAliasUser(preLoginId: string) {\n // @ts-ignore\n return this.webex\n .request({\n method: 'POST',\n api: 'metrics',\n resource: 'clientmetrics',\n headers: {\n 'x-prelogin-userid': preLoginId,\n },\n body: {},\n qs: {\n alias: true,\n },\n })\n .then((res) => {\n // @ts-ignore\n this.webex.logger.log(`NewMetrics: @clientMetricsAliasUser. Request successful.`);\n\n return res;\n })\n .catch((err) => {\n // @ts-ignore\n this.logger.error(\n `NewMetrics: @clientMetricsAliasUser. Request failed:`,\n `err: ${generateCommonErrorMetadata(err)}`\n );\n\n return Promise.reject(err);\n });\n }\n\n /**\n * Returns a promise that will resolve to fetch options for submitting a metric.\n *\n * This is to support quickly submitting metrics when the browser/tab is closing.\n * Calling submitClientEvent will not work because there some async steps that will\n * not complete before the browser is closed. Instead, we pre-gather all the\n * information/options needed for the request(s), and then simply and quickly\n * fire the fetch(es) when beforeUnload is triggered.\n *\n * We must use fetch instead of request because fetch has a keepalive option that\n * allows the request it to outlive the page.\n *\n * Note: the timings values will be wrong, but setMetricTimingsAndFetch() will\n * properly adjust them before submitting.\n *\n * @public\n * @param {Object} arg\n * @param {String} arg.name - event name\n * @param {Object} arg.payload - event payload\n * @param {Object} arg.options - other options\n * @returns {Promise} promise that resolves to options to be used with fetch\n */\n public async buildClientEventFetchRequestOptions({\n name,\n payload,\n options,\n }: {\n name: ClientEvent['name'];\n payload?: RecursivePartial<ClientEvent['payload']>;\n options?: SubmitClientEventOptions;\n }): Promise<any> {\n return this.callDiagnosticMetrics.buildClientEventFetchRequestOptions({\n name,\n payload,\n options,\n });\n }\n\n /**\n * Submits a metric from pre-built request options via the fetch API. Updates\n * the \"$timings\" and \"originTime\" values to Date.now() since the existing times\n * were set when the options were built (not submitted).\n\n * @param {any} options - the pre-built request options for submitting a metric\n * @returns {Promise} promise that resolves to the response object\n */\n public setMetricTimingsAndFetch(options: any): Promise<any> {\n // @ts-ignore\n return this.webex.setTimingsAndFetch(setMetricTimings(options));\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 return this.callDiagnosticMetrics.isServiceErrorExpected(serviceErrorCode);\n }\n\n /**\n * Sets the value of delaySubmitClientEvents. If set to true, client events will be delayed until submitDelayedClientEvents is called. If\n * set to false, delayed client events will be submitted.\n *\n * @param {object} options - {shouldDelay: A boolean value indicating whether to delay the submission of client events, overrides: An object containing overrides for the client events}\n */\n public setDelaySubmitClientEvents({\n shouldDelay,\n overrides,\n }: {\n shouldDelay: boolean;\n overrides?: Partial<DelayedClientEvent['options']>;\n }) {\n this.delaySubmitClientEvents = shouldDelay;\n this.delayedClientEventsOverrides = overrides || {};\n\n if (this.isReady && !shouldDelay) {\n return this.callDiagnosticMetrics.submitDelayedClientEvents(overrides);\n }\n\n return Promise.resolve();\n }\n\n /**\n * Sets the value of setDelaySubmitClientFeatureEvents.\n * If set to true, feature events will be delayed until submitDelayedClientFeatureEvents is called.\n * If set to false, delayed feature events will be submitted.\n *\n * @param {object} options - {shouldDelay: A boolean value indicating whether to delay the submission of feature events,\n * overrides: An object containing overrides for the feature events}\n */\n public setDelaySubmitClientFeatureEvents({\n shouldDelay,\n overrides,\n }: {\n shouldDelay: boolean;\n overrides?: Partial<DelayedClientFeatureEvent['options']>;\n }) {\n this.delaySubmitClientFeatureEvents = shouldDelay;\n this.delayedClientFeatureEventsOverrides = overrides || {};\n\n if (this.isReady && !shouldDelay) {\n return this.callDiagnosticMetrics.submitDelayedClientFeatureEvents(overrides);\n }\n\n return Promise.resolve();\n }\n}\n\nexport default Metrics;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_webexCore","require","_callDiagnosticMetrics","_interopRequireDefault","_behavioralMetrics","_operationalMetrics","_businessMetrics","_preloginMetrics","_preloginMetricsBatcher","_callDiagnosticMetricsLatencies","_callDiagnosticMetrics2","_utils","_Metrics","_callSuper","t","o","e","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","apply","Boolean","prototype","valueOf","call","Metrics","_WebexPlugin","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","concat","_defineProperty2","callDiagnosticLatencies","CallDiagnosticLatencies","parent","webex","onReady","_inherits2","_createClass2","key","value","_this2","once","callDiagnosticMetrics","CallDiagnosticMetrics","preLoginMetrics","PreLoginMetrics","PreLoginMetricsBatcher","isReady","setDelaySubmitClientEvents","shouldDelay","delaySubmitClientEvents","overrides","delayedClientEventsOverrides","submitInternalEvent","_ref","name","payload","options","clearTimestamps","saveTimestamp","lazyBuildBehavioralMetrics","behavioralMetrics","BehavioralMetrics","lazyBuildOperationalMetrics","operationalMetrics","OperationalMetrics","lazyBuildBusinessMetrics","businessMetrics","BusinessMetrics","isReadyToSubmitBehavioralEvents","_this$behavioralMetri","_this$behavioralMetri2","isReadyToSubmitEvents","isReadyToSubmitOperationalEvents","_this$operationalMetr","_this$operationalMetr2","isReadyToSubmitBusinessEvents","_this$businessMetrics","_this$businessMetrics2","submitBehavioralEvent","_ref2","product","agent","target","verb","logger","log","_promise","resolve","submitOperationalEvent","_ref3","submitBusinessEvent","_ref4","table","metadata","submitPreLoginEvent","_ref5","preLoginId","submitMQE","_ref6","submitFeatureEvent","_ref7","meetingId","delaySubmitEvent","delaySubmitClientFeatureEvents","submitClientEvent","_ref8","clientMetricsAliasUser","_this3","request","method","api","resource","headers","body","qs","alias","then","res","catch","err","error","generateCommonErrorMetadata","reject","_buildClientEventFetchRequestOptions","_asyncToGenerator2","_regenerator","mark","_callee","_ref9","wrap","_context","prev","next","abrupt","buildClientEventFetchRequestOptions","stop","_x","setMetricTimingsAndFetch","setTimingsAndFetch","setMetricTimings","isServiceErrorExpected","serviceErrorCode","_ref0","submitDelayedClientEvents","setDelaySubmitClientFeatureEvents","_ref1","delayedClientFeatureEventsOverrides","submitDelayedClientFeatureEvents","WebexPlugin","_default","exports"],"sources":["new-metrics.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable class-methods-use-this */\n/* eslint-disable valid-jsdoc */\n\n// @ts-ignore\nimport {WebexPlugin} from '@webex/webex-core';\n\nimport CallDiagnosticMetrics from './call-diagnostic/call-diagnostic-metrics';\nimport BehavioralMetrics from './behavioral-metrics';\nimport OperationalMetrics from './operational-metrics';\nimport BusinessMetrics from './business-metrics';\nimport PreLoginMetrics from './prelogin-metrics';\nimport PreLoginMetricsBatcher from './prelogin-metrics-batcher';\nimport {\n RecursivePartial,\n MetricEventProduct,\n MetricEventAgent,\n MetricEventVerb,\n ClientEvent,\n FeatureEvent,\n EventPayload,\n OperationalEvent,\n MediaQualityEvent,\n InternalEvent,\n SubmitClientEventOptions,\n Table,\n DelayedClientEvent,\n DelayedClientFeatureEvent,\n} from './metrics.types';\nimport CallDiagnosticLatencies from './call-diagnostic/call-diagnostic-metrics-latencies';\nimport {setMetricTimings} from './call-diagnostic/call-diagnostic-metrics.util';\nimport {generateCommonErrorMetadata} from './utils';\n\n/**\n * Metrics plugin to centralize all types of metrics.\n * https://confluence-eng-gpk2.cisco.com/conf/pages/viewpage.action?pageId=231011379\n * @class\n */\nclass Metrics extends WebexPlugin {\n // eslint-disable-next-line no-use-before-define\n static instance: Metrics;\n\n // Call Diagnostic latencies\n callDiagnosticLatencies: CallDiagnosticLatencies;\n // Helper classes to handle the different types of metrics\n callDiagnosticMetrics: CallDiagnosticMetrics;\n behavioralMetrics: BehavioralMetrics;\n operationalMetrics: OperationalMetrics;\n businessMetrics: BusinessMetrics;\n preLoginMetrics: PreLoginMetrics;\n isReady = false;\n\n /**\n * Whether or not to delay the submission of client events.\n */\n delaySubmitClientEvents = false;\n\n /**\n * Whether or not to delay the submission of feature events.\n */\n delaySubmitClientFeatureEvents = false;\n\n /**\n * Overrides for delayed client events. E.g. if you want to override the correlationId for all delayed client events, you can set this to { correlationId: 'newCorrelationId' }\n */\n delayedClientEventsOverrides: Partial<DelayedClientEvent['options']> = {};\n\n delayedClientFeatureEventsOverrides: Partial<DelayedClientFeatureEvent['options']> = {};\n\n /**\n * Constructor\n * @param args\n * @constructor\n * @private\n * @returns\n */\n constructor(...args) {\n super(...args);\n\n // @ts-ignore\n this.callDiagnosticLatencies = new CallDiagnosticLatencies({}, {parent: this.webex});\n this.onReady();\n }\n\n /**\n * On Ready\n */\n private onReady() {\n // @ts-ignore\n this.webex.once('ready', () => {\n // @ts-ignore\n this.callDiagnosticMetrics = new CallDiagnosticMetrics({}, {parent: this.webex});\n this.preLoginMetrics = new PreLoginMetrics(\n // @ts-ignore\n new PreLoginMetricsBatcher({}, {parent: this.webex}),\n {},\n // @ts-ignore\n {parent: this.webex}\n );\n this.isReady = true;\n this.setDelaySubmitClientEvents({\n shouldDelay: this.delaySubmitClientEvents,\n overrides: this.delayedClientEventsOverrides,\n });\n });\n }\n\n /**\n * Used for internal purposes only\n * @param args\n */\n submitInternalEvent({\n name,\n payload,\n options,\n }: {\n name: InternalEvent['name'];\n payload?: RecursivePartial<InternalEvent['payload']>;\n options?: any;\n }) {\n if (name === 'internal.reset.join.latencies') {\n this.callDiagnosticLatencies.clearTimestamps();\n } else {\n this.callDiagnosticLatencies.saveTimestamp({key: name});\n }\n }\n\n /**\n * if webex metrics is ready, build behavioral metric backend if not already done.\n */\n private lazyBuildBehavioralMetrics() {\n if (this.isReady && !this.behavioralMetrics) {\n // @ts-ignore\n this.behavioralMetrics = new BehavioralMetrics({}, {parent: this.webex});\n }\n }\n\n /**\n * if webex metrics is ready, build operational metric backend if not already done.\n */\n private lazyBuildOperationalMetrics() {\n if (this.isReady && !this.operationalMetrics) {\n // @ts-ignore\n this.operationalMetrics = new OperationalMetrics({}, {parent: this.webex});\n }\n }\n\n /**\n * if webex metrics is ready, build business metric backend if not already done.\n */\n private lazyBuildBusinessMetrics() {\n if (this.isReady && !this.businessMetrics) {\n // @ts-ignore\n this.businessMetrics = new BusinessMetrics({}, {parent: this.webex});\n }\n }\n\n /**\n * @returns true once we have the deviceId we need to submit behavioral events to Amplitude\n */\n isReadyToSubmitBehavioralEvents() {\n this.lazyBuildBehavioralMetrics();\n\n return this.behavioralMetrics?.isReadyToSubmitEvents() ?? false;\n }\n\n /**\n * @returns true once we have the deviceId we need to submit operational events\n */\n isReadyToSubmitOperationalEvents() {\n this.lazyBuildOperationalMetrics();\n\n return this.operationalMetrics?.isReadyToSubmitEvents() ?? false;\n }\n\n /**\n * @returns true once we have the deviceId we need to submit business events\n */\n isReadyToSubmitBusinessEvents() {\n this.lazyBuildBusinessMetrics();\n\n return this.businessMetrics?.isReadyToSubmitEvents() ?? false;\n }\n\n /**\n * Behavioral event\n * @param args\n */\n submitBehavioralEvent({\n product,\n agent,\n target,\n verb,\n payload,\n }: {\n product: MetricEventProduct;\n agent: MetricEventAgent;\n target: string;\n verb: MetricEventVerb;\n payload?: EventPayload;\n }) {\n if (!this.isReady) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitBehavioralEvent. Attempted to submit before webex.ready: ${product}.${agent}.${target}.${verb}`\n );\n\n return Promise.resolve();\n }\n\n this.lazyBuildBehavioralMetrics();\n\n return this.behavioralMetrics.submitBehavioralEvent({product, agent, target, verb, payload});\n }\n\n /**\n * Operational event\n * @param args\n */\n submitOperationalEvent({name, payload}: {name: string; payload?: EventPayload}) {\n if (!this.isReady) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitOperationalEvent. Attempted to submit before webex.ready: ${name}`\n );\n\n return Promise.resolve();\n }\n\n this.lazyBuildOperationalMetrics();\n\n return this.operationalMetrics.submitOperationalEvent({name, payload});\n }\n\n /**\n * Business event\n * @param args\n */\n submitBusinessEvent({\n name,\n payload,\n table,\n metadata,\n }: {\n name: string;\n payload: EventPayload;\n table?: Table;\n metadata?: EventPayload;\n }) {\n if (!this.isReady) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitBusinessEvent. Attempted to submit before webex.ready: ${name}`\n );\n\n return Promise.resolve();\n }\n\n this.lazyBuildBusinessMetrics();\n\n return this.businessMetrics.submitBusinessEvent({name, payload, table, metadata});\n }\n\n /**\n * Call Analyzer: Pre-Login Event\n * @param args\n */\n submitPreLoginEvent({\n name,\n preLoginId,\n payload,\n metadata,\n }: {\n name: string;\n preLoginId: string;\n payload: EventPayload;\n metadata?: EventPayload;\n }): Promise<void> {\n if (!this.isReady) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitPreLoginEvent. Attempted to submit before webex.ready: ${name}`\n );\n\n return Promise.resolve();\n }\n\n return this.preLoginMetrics.submitPreLoginEvent({\n name,\n preLoginId,\n payload,\n metadata,\n });\n }\n\n /**\n * Call Analyzer: Media Quality Event\n * @param args\n */\n submitMQE({\n name,\n payload,\n options,\n }: {\n name: MediaQualityEvent['name'];\n payload: RecursivePartial<MediaQualityEvent['payload']> & {\n intervals: MediaQualityEvent['payload']['intervals'];\n };\n options: any;\n }) {\n this.callDiagnosticLatencies.saveTimestamp({key: name});\n this.callDiagnosticMetrics.submitMQE({name, payload, options});\n }\n\n /**\n * Call Analyzer: Feature Usage Event\n * @param args\n */\n submitFeatureEvent({\n name,\n payload,\n options,\n }: {\n name: FeatureEvent['name'];\n payload?: RecursivePartial<FeatureEvent['payload']>;\n options: any;\n }) {\n if (!this.callDiagnosticLatencies || !this.callDiagnosticMetrics) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitFeatureEvent. Attempted to submit before webex.ready. Event name: ${name}`\n );\n\n return Promise.resolve();\n }\n this.callDiagnosticLatencies.saveTimestamp({\n key: name,\n options: {meetingId: options?.meetingId},\n });\n\n return this.callDiagnosticMetrics.submitFeatureEvent({\n name,\n payload,\n options,\n delaySubmitEvent: this.delaySubmitClientFeatureEvents,\n });\n }\n\n /**\n * Call Analyzer: Client Event\n * @public\n * @param args\n */\n public submitClientEvent({\n name,\n payload,\n options,\n }: {\n name: ClientEvent['name'];\n payload?: RecursivePartial<ClientEvent['payload']>;\n options?: SubmitClientEventOptions;\n }): Promise<any> {\n if (!this.callDiagnosticLatencies || !this.callDiagnosticMetrics) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitClientEvent. Attempted to submit before webex.ready. Event name: ${name}`\n );\n\n return Promise.resolve();\n }\n this.callDiagnosticLatencies.saveTimestamp({\n key: name,\n options: {meetingId: options?.meetingId},\n });\n\n return this.callDiagnosticMetrics.submitClientEvent({\n name,\n payload,\n options,\n delaySubmitEvent: this.delaySubmitClientEvents,\n });\n }\n\n /**\n * Issue request to alias a user's pre-login ID with their CI UUID\n * @param {string} preLoginId\n * @returns {Object} HttpResponse object\n */\n public clientMetricsAliasUser(preLoginId: string) {\n // @ts-ignore\n return this.webex\n .request({\n method: 'POST',\n api: 'metrics',\n resource: 'clientmetrics',\n headers: {\n 'x-prelogin-userid': preLoginId,\n },\n body: {},\n qs: {\n alias: true,\n },\n })\n .then((res) => {\n // @ts-ignore\n this.webex.logger.log(`NewMetrics: @clientMetricsAliasUser. Request successful.`);\n\n return res;\n })\n .catch((err) => {\n // @ts-ignore\n this.logger.error(\n `NewMetrics: @clientMetricsAliasUser. Request failed:`,\n `err: ${generateCommonErrorMetadata(err)}`\n );\n\n return Promise.reject(err);\n });\n }\n\n /**\n * Returns a promise that will resolve to fetch options for submitting a metric.\n *\n * This is to support quickly submitting metrics when the browser/tab is closing.\n * Calling submitClientEvent will not work because there some async steps that will\n * not complete before the browser is closed. Instead, we pre-gather all the\n * information/options needed for the request(s), and then simply and quickly\n * fire the fetch(es) when beforeUnload is triggered.\n *\n * We must use fetch instead of request because fetch has a keepalive option that\n * allows the request it to outlive the page.\n *\n * Note: the timings values will be wrong, but setMetricTimingsAndFetch() will\n * properly adjust them before submitting.\n *\n * @public\n * @param {Object} arg\n * @param {String} arg.name - event name\n * @param {Object} arg.payload - event payload\n * @param {Object} arg.options - other options\n * @returns {Promise} promise that resolves to options to be used with fetch\n */\n public async buildClientEventFetchRequestOptions({\n name,\n payload,\n options,\n }: {\n name: ClientEvent['name'];\n payload?: RecursivePartial<ClientEvent['payload']>;\n options?: SubmitClientEventOptions;\n }): Promise<any> {\n return this.callDiagnosticMetrics.buildClientEventFetchRequestOptions({\n name,\n payload,\n options,\n });\n }\n\n /**\n * Submits a metric from pre-built request options via the fetch API. Updates\n * the \"$timings\" and \"originTime\" values to Date.now() since the existing times\n * were set when the options were built (not submitted).\n\n * @param {any} options - the pre-built request options for submitting a metric\n * @returns {Promise} promise that resolves to the response object\n */\n public setMetricTimingsAndFetch(options: any): Promise<any> {\n // @ts-ignore\n return this.webex.setTimingsAndFetch(setMetricTimings(options));\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 return this.callDiagnosticMetrics.isServiceErrorExpected(serviceErrorCode);\n }\n\n /**\n * Sets the value of delaySubmitClientEvents. If set to true, client events will be delayed until submitDelayedClientEvents is called. If\n * set to false, delayed client events will be submitted.\n *\n * @param {object} options - {shouldDelay: A boolean value indicating whether to delay the submission of client events, overrides: An object containing overrides for the client events}\n */\n public setDelaySubmitClientEvents({\n shouldDelay,\n overrides,\n }: {\n shouldDelay: boolean;\n overrides?: Partial<DelayedClientEvent['options']>;\n }) {\n this.delaySubmitClientEvents = shouldDelay;\n this.delayedClientEventsOverrides = overrides || {};\n\n if (this.isReady && !shouldDelay) {\n return this.callDiagnosticMetrics.submitDelayedClientEvents(overrides);\n }\n\n return Promise.resolve();\n }\n\n /**\n * Sets the value of setDelaySubmitClientFeatureEvents.\n * If set to true, feature events will be delayed until submitDelayedClientFeatureEvents is called.\n * If set to false, delayed feature events will be submitted.\n *\n * @param {object} options - {shouldDelay: A boolean value indicating whether to delay the submission of feature events,\n * overrides: An object containing overrides for the feature events}\n */\n public setDelaySubmitClientFeatureEvents({\n shouldDelay,\n overrides,\n }: {\n shouldDelay: boolean;\n overrides?: Partial<DelayedClientFeatureEvent['options']>;\n }) {\n this.delaySubmitClientFeatureEvents = shouldDelay;\n this.delayedClientFeatureEventsOverrides = overrides || {};\n\n if (this.isReady && !shouldDelay) {\n return this.callDiagnosticMetrics.submitDelayedClientFeatureEvents(overrides);\n }\n\n return Promise.resolve();\n }\n}\n\nexport default Metrics;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+
3
+ var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
4
+ var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");
5
+ var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
6
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
7
+ var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
8
+ var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
9
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
10
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
11
+ _Object$defineProperty(exports, "__esModule", {
12
+ value: true
13
+ });
14
+ exports.default = void 0;
15
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
16
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
17
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
18
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
19
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
20
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
21
+ var _genericMetrics = _interopRequireDefault(require("./generic-metrics"));
22
+ function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
23
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
24
+ function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? _Reflect$construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
25
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
26
+ /**
27
+ * @description Util class to handle PreLogin Metrics
28
+ * @export
29
+ * @class PreLoginMetrics
30
+ */
31
+ var PreLoginMetrics = exports.default = /*#__PURE__*/function (_GenericMetrics) {
32
+ /**
33
+ * Constructor
34
+ * @param {PreLoginMetricsBatcher} preLoginMetricsBatcher - Pre-login metrics batcher
35
+ * @param {any} attrs - Attributes
36
+ * @param {any} options - Options
37
+ * @constructor
38
+ */
39
+ function PreLoginMetrics(preLoginMetricsBatcher) {
40
+ var _this;
41
+ var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
42
+ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
43
+ (0, _classCallCheck2.default)(this, PreLoginMetrics);
44
+ _this = _callSuper(this, PreLoginMetrics, [attrs, options]);
45
+ (0, _defineProperty2.default)(_this, "preLoginMetricsBatcher", void 0);
46
+ _this.preLoginMetricsBatcher = preLoginMetricsBatcher;
47
+ return _this;
48
+ }
49
+
50
+ /**
51
+ * Submit a business metric to our metrics endpoint.
52
+ * Routes to the correct table with the correct schema payload by table.
53
+ * @see https://confluence-eng-gpk2.cisco.com/conf/display/WAP/Business+metrics++-%3E+ROMA
54
+ * @param {Object} options - The options object
55
+ * @param {string} options.name - Name of the metric
56
+ * @param {string} options.preLoginId - ID to identify pre-login user
57
+ * @param {EventPayload} options.payload - User payload of the metric
58
+ * @param {EventPayload} [options.metadata] - Optional metadata to include outside of eventPayload.value
59
+ * @returns {Promise<void>} Promise that resolves when the metric is submitted
60
+ */
61
+ (0, _inherits2.default)(PreLoginMetrics, _GenericMetrics);
62
+ return (0, _createClass2.default)(PreLoginMetrics, [{
63
+ key: "submitPreLoginEvent",
64
+ value: function submitPreLoginEvent(_ref) {
65
+ var name = _ref.name,
66
+ preLoginId = _ref.preLoginId,
67
+ payload = _ref.payload,
68
+ metadata = _ref.metadata;
69
+ if (!metadata) {
70
+ metadata = {};
71
+ }
72
+ if (!metadata.appType) {
73
+ metadata.appType = 'Web Client';
74
+ }
75
+ var finalEvent = this.buildEvent(name, preLoginId, payload, metadata);
76
+ this.preLoginMetricsBatcher.savePreLoginId(preLoginId);
77
+ return this.preLoginMetricsBatcher.request(finalEvent);
78
+ }
79
+
80
+ /**
81
+ * Builds a formatted event object for metrics submission.
82
+ * @param {string} metricName - Metric name
83
+ * @param {string} preLoginId - Pre-login user identifier
84
+ * @param {EventPayload} payload - Metric payload data
85
+ * @param {EventPayload} metadata - Additional metadata to include in the event
86
+ * @returns {object} Formatted metrics event object with type, eventPayload, and timestamp
87
+ */
88
+ }, {
89
+ key: "buildEvent",
90
+ value: function buildEvent(metricName, preLoginId, payload, metadata) {
91
+ return {
92
+ type: ['business'],
93
+ eventPayload: {
94
+ metricName: metricName,
95
+ browserDetails: this.getBrowserDetails(),
96
+ context: this.getContext(),
97
+ timestamp: new Date().getTime(),
98
+ value: _objectSpread(_objectSpread({
99
+ preLoginId: preLoginId
100
+ }, metadata), payload)
101
+ }
102
+ };
103
+ }
104
+ }]);
105
+ }(_genericMetrics.default);
106
+ //# sourceMappingURL=prelogin-metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_genericMetrics","_interopRequireDefault","require","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","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","Boolean","prototype","valueOf","call","PreLoginMetrics","exports","_GenericMetrics","preLoginMetricsBatcher","_this","attrs","undefined","options","_classCallCheck2","_inherits2","_createClass2","key","value","submitPreLoginEvent","_ref","name","preLoginId","payload","metadata","appType","finalEvent","buildEvent","savePreLoginId","request","metricName","type","eventPayload","browserDetails","getBrowserDetails","context","getContext","timestamp","Date","getTime","GenericMetrics"],"sources":["prelogin-metrics.ts"],"sourcesContent":["import GenericMetrics from './generic-metrics';\nimport {BusinessEvent, EventPayload} from './metrics.types';\nimport PreLoginMetricsBatcher from './prelogin-metrics-batcher';\n\n/**\n * @description Util class to handle PreLogin Metrics\n * @export\n * @class PreLoginMetrics\n */\nexport default class PreLoginMetrics extends GenericMetrics {\n private preLoginMetricsBatcher: typeof PreLoginMetricsBatcher;\n\n /**\n * Constructor\n * @param {PreLoginMetricsBatcher} preLoginMetricsBatcher - Pre-login metrics batcher\n * @param {any} attrs - Attributes\n * @param {any} options - Options\n * @constructor\n */\n constructor(\n preLoginMetricsBatcher: typeof PreLoginMetricsBatcher,\n attrs: any = {},\n options: {parent?: any} = {}\n ) {\n super(attrs, options);\n this.preLoginMetricsBatcher = preLoginMetricsBatcher;\n }\n\n /**\n * Submit a business metric to our metrics endpoint.\n * Routes to the correct table with the correct schema payload by table.\n * @see https://confluence-eng-gpk2.cisco.com/conf/display/WAP/Business+metrics++-%3E+ROMA\n * @param {Object} options - The options object\n * @param {string} options.name - Name of the metric\n * @param {string} options.preLoginId - ID to identify pre-login user\n * @param {EventPayload} options.payload - User payload of the metric\n * @param {EventPayload} [options.metadata] - Optional metadata to include outside of eventPayload.value\n * @returns {Promise<void>} Promise that resolves when the metric is submitted\n */\n public submitPreLoginEvent({\n name,\n preLoginId,\n payload,\n metadata,\n }: {\n name: string;\n preLoginId: string;\n payload: EventPayload;\n metadata?: EventPayload;\n }): Promise<void> {\n if (!metadata) {\n metadata = {};\n }\n if (!metadata.appType) {\n metadata.appType = 'Web Client';\n }\n\n const finalEvent = this.buildEvent(name, preLoginId, payload, metadata);\n\n this.preLoginMetricsBatcher.savePreLoginId(preLoginId);\n\n return this.preLoginMetricsBatcher.request(finalEvent);\n }\n\n /**\n * Builds a formatted event object for metrics submission.\n * @param {string} metricName - Metric name\n * @param {string} preLoginId - Pre-login user identifier\n * @param {EventPayload} payload - Metric payload data\n * @param {EventPayload} metadata - Additional metadata to include in the event\n * @returns {object} Formatted metrics event object with type, eventPayload, and timestamp\n */\n private buildEvent(\n metricName: string,\n preLoginId: string,\n payload: EventPayload,\n metadata: EventPayload\n ): BusinessEvent {\n return {\n type: ['business'],\n eventPayload: {\n metricName,\n browserDetails: this.getBrowserDetails(),\n context: this.getContext(),\n timestamp: new Date().getTime(),\n value: {\n preLoginId,\n ...metadata,\n ...payload,\n },\n },\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -100,6 +100,8 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
100
100
  localNetworkPrefix?: string;
101
101
  publicNetworkPrefix?: string;
102
102
  browserLaunchMethod?: "url-handler" | "activex" | "npapi" | "extension" | "cwsapi" | "java" | "tfs" | "webacd" | "thinclient" | "switch-to-web" | "switch-to-native";
103
+ cwsStatus?: "starting-converged-mtg" | "webexapp-launched" | "webex-launcher-launched";
104
+ cwsVersion?: string;
103
105
  clientLaunchMethod?: "url-handler" | "universal-link" | "voice-command" | "notification" | "manual" | "teams-cross-launch" | "mc-cross-launch" | "cws" | "installer" | "installer-launcher" | "launcher" | "cws-launcher";
104
106
  urlProtocolLaunchMethod?: "manual" | "auto" | "extension-fallback";
105
107
  browser?: string;
@@ -132,14 +134,14 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
132
134
  cpuInfo?: {
133
135
  description: string;
134
136
  numberOfCores: number;
135
- architecture: "unknown" | "intel32" | "intel64" | "amd32" | "amd64" | "arm32" | "arm64";
137
+ architecture: "unknown" | "intel32" | "intel64" | "amd32" | "amd64" | "arm32" | "arm64" | "armv9" | "armv8" | "armv7" | "armv6" | "x86_64" | "x86_32";
136
138
  staticPerformance?: string;
137
139
  clockSpeedGigaHertz?: number;
138
140
  additionalProperties?: false;
139
141
  };
140
142
  shareType?: "cb-normal-share" | "ce-airplay-share" | "ce-direct-share" | "ce-gui-loopback-share" | "ce-input-source-share" | "ce-input-source-share-hdmi" | "ce-input-source-share-usbc" | "ce-jpg-share" | "ce-miracast-share" | "mcs-normal-share" | "mcs-normal-audio-share" | "mcs-hfps-share" | "mcs-hfps-audio-share";
141
143
  videoDisplayMode?: "grid-view" | "active-speaker-view";
142
- videoLayoutType?: "stack" | "stackWithShare" | "sideBySide" | "sideBySideWithShare" | "grid" | "floatingActive" | "floatingThumbnail" | "floatingGrid" | "overlay" | "focus" | "prominent" | "focusWithShare" | "prominentWithShare" | "equal" | "equalWithShare";
144
+ videoLayoutType?: "stack" | "stackWithShare" | "sideBySide" | "sideBySideWithShare" | "grid" | "floatingActive" | "floatingThumbnail" | "floatingGrid" | "overlay" | "focus" | "prominent" | "focusWithShare" | "prominentWithShare" | "equal" | "equalWithShare" | "largeGallery";
143
145
  videoRenderType?: "wme" | "client_d3d" | "client_gdi";
144
146
  vdiInfo?: {};
145
147
  is64BitsClient?: boolean;
@@ -171,6 +173,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
171
173
  breakoutGroupId?: string;
172
174
  breakoutMoveId?: string;
173
175
  breakoutSessionId?: string;
176
+ browserId?: string;
174
177
  ciExchangeTokenUrl?: string;
175
178
  confluenceId?: string;
176
179
  cpaasIdentifiers?: {
@@ -196,6 +199,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
196
199
  ivrId?: string;
197
200
  callId?: string;
198
201
  pairCallId?: string;
202
+ llmWebsocketUrl?: string;
199
203
  locusId?: string;
200
204
  locusJoinUrl?: string;
201
205
  locusSessionId?: string;
@@ -209,6 +213,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
209
213
  meetingLookupUrl?: string;
210
214
  meetingOrgId?: string;
211
215
  metricServiceUrl?: string;
216
+ mercuryWebsocketUrl?: string;
212
217
  msteamsTenantGuid?: string;
213
218
  msteamsConferenceId?: string;
214
219
  msteamsMeetingId?: string;
@@ -258,6 +263,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
258
263
  breakoutGroupId?: string;
259
264
  breakoutMoveId?: string;
260
265
  breakoutSessionId?: string;
266
+ browserId?: string;
261
267
  ciExchangeTokenUrl?: string;
262
268
  confluenceId?: string;
263
269
  cpaasIdentifiers?: {
@@ -283,6 +289,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
283
289
  ivrId?: string;
284
290
  callId?: string;
285
291
  pairCallId?: string;
292
+ llmWebsocketUrl?: string;
286
293
  locusId?: string;
287
294
  locusJoinUrl?: string;
288
295
  locusSessionId?: string;
@@ -296,6 +303,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
296
303
  meetingLookupUrl?: string;
297
304
  meetingOrgId?: string;
298
305
  metricServiceUrl?: string;
306
+ mercuryWebsocketUrl?: string;
299
307
  msteamsTenantGuid?: string;
300
308
  msteamsConferenceId?: string;
301
309
  msteamsMeetingId?: string;
@@ -345,6 +353,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
345
353
  breakoutGroupId?: string;
346
354
  breakoutMoveId?: string;
347
355
  breakoutSessionId?: string;
356
+ browserId?: string;
348
357
  ciExchangeTokenUrl?: string;
349
358
  confluenceId?: string;
350
359
  cpaasIdentifiers?: {
@@ -370,6 +379,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
370
379
  ivrId?: string;
371
380
  callId?: string;
372
381
  pairCallId?: string;
382
+ llmWebsocketUrl?: string;
373
383
  locusId?: string;
374
384
  locusJoinUrl?: string;
375
385
  locusSessionId?: string;
@@ -383,6 +393,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
383
393
  meetingLookupUrl?: string;
384
394
  meetingOrgId?: string;
385
395
  metricServiceUrl?: string;
396
+ mercuryWebsocketUrl?: string;
386
397
  msteamsTenantGuid?: string;
387
398
  msteamsConferenceId?: string;
388
399
  msteamsMeetingId?: string;
@@ -13,6 +13,7 @@ import BehavioralMetrics from './behavioral-metrics';
13
13
  import OperationalMetrics from './operational-metrics';
14
14
  import BusinessMetrics from './business-metrics';
15
15
  import RtcMetrics from './rtcMetrics';
16
+ import PreLoginMetrics from './prelogin-metrics';
16
17
  export { default, getOSNameInternal } from './metrics';
17
- export { config, CALL_DIAGNOSTIC_CONFIG, NewMetrics, Utils, CallDiagnosticUtils, CallDiagnosticLatencies, CallDiagnosticMetrics, BehavioralMetrics, OperationalMetrics, BusinessMetrics, RtcMetrics, };
18
+ export { config, CALL_DIAGNOSTIC_CONFIG, NewMetrics, Utils, CallDiagnosticUtils, CallDiagnosticLatencies, CallDiagnosticMetrics, BehavioralMetrics, OperationalMetrics, BusinessMetrics, RtcMetrics, PreLoginMetrics, };
18
19
  export type { ClientEvent, ClientEventLeaveReason, SubmitBehavioralEvent, SubmitClientEvent, SubmitInternalEvent, SubmitMQE, SubmitOperationalEvent, SubmitBusinessEvent, PreComputedLatencies, SubmitFeatureEvent, };
@@ -1,4 +1,4 @@
1
- import { ClientEvent as RawClientEvent, Event as RawEvent, MediaQualityEvent as RawMediaQualityEvent, FeatureEvent as RawFeatureEvent } from '@webex/event-dictionary-ts';
1
+ import type { ClientEvent as RawClientEvent, Event as RawEvent, MediaQualityEvent as RawMediaQualityEvent, FeatureEvent as RawFeatureEvent } from '@webex/event-dictionary-ts';
2
2
  export type Event = Omit<RawEvent, 'event'> & {
3
3
  event: RawClientEvent | RawMediaQualityEvent | RawFeatureEvent;
4
4
  };
@@ -73,7 +73,7 @@ export interface BusinessEventPayload {
73
73
  metricName: string;
74
74
  timestamp: number;
75
75
  context: DeviceContext;
76
- browserDetails: EventPayload;
76
+ browserDetails: object;
77
77
  value: EventPayload;
78
78
  }
79
79
  export interface BusinessEvent {
@@ -3,6 +3,7 @@ import CallDiagnosticMetrics from './call-diagnostic/call-diagnostic-metrics';
3
3
  import BehavioralMetrics from './behavioral-metrics';
4
4
  import OperationalMetrics from './operational-metrics';
5
5
  import BusinessMetrics from './business-metrics';
6
+ import PreLoginMetrics from './prelogin-metrics';
6
7
  import { RecursivePartial, MetricEventProduct, MetricEventAgent, MetricEventVerb, ClientEvent, FeatureEvent, EventPayload, MediaQualityEvent, InternalEvent, SubmitClientEventOptions, Table, DelayedClientEvent, DelayedClientFeatureEvent } from './metrics.types';
7
8
  import CallDiagnosticLatencies from './call-diagnostic/call-diagnostic-metrics-latencies';
8
9
  /**
@@ -17,6 +18,7 @@ declare class Metrics extends WebexPlugin {
17
18
  behavioralMetrics: BehavioralMetrics;
18
19
  operationalMetrics: OperationalMetrics;
19
20
  businessMetrics: BusinessMetrics;
21
+ preLoginMetrics: PreLoginMetrics;
20
22
  isReady: boolean;
21
23
  /**
22
24
  * Whether or not to delay the submission of client events.
@@ -105,6 +107,16 @@ declare class Metrics extends WebexPlugin {
105
107
  table?: Table;
106
108
  metadata?: EventPayload;
107
109
  }): Promise<void>;
110
+ /**
111
+ * Call Analyzer: Pre-Login Event
112
+ * @param args
113
+ */
114
+ submitPreLoginEvent({ name, preLoginId, payload, metadata, }: {
115
+ name: string;
116
+ preLoginId: string;
117
+ payload: EventPayload;
118
+ metadata?: EventPayload;
119
+ }): Promise<void>;
108
120
  /**
109
121
  * Call Analyzer: Media Quality Event
110
122
  * @param args
@@ -0,0 +1,47 @@
1
+ import GenericMetrics from './generic-metrics';
2
+ import { EventPayload } from './metrics.types';
3
+ import PreLoginMetricsBatcher from './prelogin-metrics-batcher';
4
+ /**
5
+ * @description Util class to handle PreLogin Metrics
6
+ * @export
7
+ * @class PreLoginMetrics
8
+ */
9
+ export default class PreLoginMetrics extends GenericMetrics {
10
+ private preLoginMetricsBatcher;
11
+ /**
12
+ * Constructor
13
+ * @param {PreLoginMetricsBatcher} preLoginMetricsBatcher - Pre-login metrics batcher
14
+ * @param {any} attrs - Attributes
15
+ * @param {any} options - Options
16
+ * @constructor
17
+ */
18
+ constructor(preLoginMetricsBatcher: typeof PreLoginMetricsBatcher, attrs?: any, options?: {
19
+ parent?: any;
20
+ });
21
+ /**
22
+ * Submit a business metric to our metrics endpoint.
23
+ * Routes to the correct table with the correct schema payload by table.
24
+ * @see https://confluence-eng-gpk2.cisco.com/conf/display/WAP/Business+metrics++-%3E+ROMA
25
+ * @param {Object} options - The options object
26
+ * @param {string} options.name - Name of the metric
27
+ * @param {string} options.preLoginId - ID to identify pre-login user
28
+ * @param {EventPayload} options.payload - User payload of the metric
29
+ * @param {EventPayload} [options.metadata] - Optional metadata to include outside of eventPayload.value
30
+ * @returns {Promise<void>} Promise that resolves when the metric is submitted
31
+ */
32
+ submitPreLoginEvent({ name, preLoginId, payload, metadata, }: {
33
+ name: string;
34
+ preLoginId: string;
35
+ payload: EventPayload;
36
+ metadata?: EventPayload;
37
+ }): Promise<void>;
38
+ /**
39
+ * Builds a formatted event object for metrics submission.
40
+ * @param {string} metricName - Metric name
41
+ * @param {string} preLoginId - Pre-login user identifier
42
+ * @param {EventPayload} payload - Metric payload data
43
+ * @param {EventPayload} metadata - Additional metadata to include in the event
44
+ * @returns {object} Formatted metrics event object with type, eventPayload, and timestamp
45
+ */
46
+ private buildEvent;
47
+ }
package/package.json CHANGED
@@ -24,23 +24,23 @@
24
24
  "@sinonjs/fake-timers": "^6.0.1",
25
25
  "@webex/babel-config-legacy": "0.0.0",
26
26
  "@webex/eslint-config-legacy": "0.0.0",
27
+ "@webex/event-dictionary-ts": "^1.0.2073",
27
28
  "@webex/jest-config-legacy": "0.0.0",
28
29
  "@webex/legacy-tools": "0.0.0",
29
- "@webex/test-helper-chai": "3.10.0-webex-services-ready.2",
30
- "@webex/test-helper-mocha": "3.10.0-webex-services-ready.2",
31
- "@webex/test-helper-mock-webex": "3.10.0-webex-services-ready.2",
32
- "@webex/test-helper-test-users": "3.10.0-webex-services-ready.2",
30
+ "@webex/test-helper-chai": "3.12.0-mobius-socket.0",
31
+ "@webex/test-helper-mocha": "3.12.0-mobius-socket.0",
32
+ "@webex/test-helper-mock-webex": "3.12.0-mobius-socket.0",
33
+ "@webex/test-helper-test-users": "3.12.0-mobius-socket.0",
33
34
  "eslint": "^8.24.0",
34
35
  "prettier": "^2.7.1",
35
36
  "sinon": "^9.2.4"
36
37
  },
37
38
  "dependencies": {
38
- "@webex/common": "3.10.0-webex-services-ready.2",
39
- "@webex/common-timers": "3.10.0-webex-services-ready.2",
40
- "@webex/event-dictionary-ts": "^1.0.1930",
41
- "@webex/test-helper-chai": "3.10.0-webex-services-ready.2",
42
- "@webex/test-helper-mock-webex": "3.10.0-webex-services-ready.2",
43
- "@webex/webex-core": "3.11.0-webex-services-ready.1",
39
+ "@webex/common": "3.12.0-mobius-socket.0",
40
+ "@webex/common-timers": "3.12.0-mobius-socket.0",
41
+ "@webex/test-helper-chai": "3.12.0-mobius-socket.0",
42
+ "@webex/test-helper-mock-webex": "3.12.0-mobius-socket.0",
43
+ "@webex/webex-core": "3.12.0-mobius-socket.1",
44
44
  "ip-anonymize": "^0.1.0",
45
45
  "lodash": "^4.17.21",
46
46
  "uuid": "^3.3.2"
@@ -53,5 +53,5 @@
53
53
  "test:style": "eslint ./src/**/*.*",
54
54
  "test:unit": "webex-legacy-tools test --unit --runner mocha"
55
55
  },
56
- "version": "3.11.0-webex-services-ready.1"
56
+ "version": "3.12.0-mobius-socket.1"
57
57
  }
@@ -303,10 +303,7 @@ export default class CallDiagnosticLatencies extends WebexPlugin {
303
303
  * @returns - latency
304
304
  */
305
305
  public getStayLobbyTime() {
306
- return this.getDiffBetweenTimestamps(
307
- 'client.locus.join.response',
308
- 'internal.host.meeting.participant.admitted'
309
- );
306
+ return this.getDiffBetweenTimestamps('client.locus.join.response', 'client.lobby.exited');
310
307
  }
311
308
 
312
309
  /**
@@ -480,7 +477,8 @@ export default class CallDiagnosticLatencies extends WebexPlugin {
480
477
  const clickToInterstitial = this.getClickToInterstitial();
481
478
  const interstitialToJoinOk = this.getInterstitialToJoinOK();
482
479
  const joinConfJMT = this.getJoinConfJMT();
483
- const lobbyTime = this.getStayLobbyTime();
480
+ const lobbyTimeLatency = this.getStayLobbyTime();
481
+ const lobbyTime = typeof lobbyTimeLatency === 'number' ? lobbyTimeLatency : 0;
484
482
 
485
483
  if (clickToInterstitial && interstitialToJoinOk && joinConfJMT) {
486
484
  const totalMediaJMT = clamp(
@@ -366,6 +366,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
366
366
  if (meeting?.locusInfo?.fullState) {
367
367
  identifiers.locusUrl = meeting.locusUrl;
368
368
  identifiers.locusId = meeting.locusUrl && meeting.locusUrl.split('/').pop();
369
+ identifiers.locusSessionId = meeting.locusInfo.fullState.sessionId;
369
370
  identifiers.locusStartTime =
370
371
  meeting.locusInfo.fullState && meeting.locusInfo.fullState.lastActive;
371
372
  }
@@ -361,7 +361,6 @@ export const prepareDiagnosticMetricItem = (webex: any, item: any) => {
361
361
  joinTimes.totalMediaJMT = cdl.getTotalMediaJMT();
362
362
  joinTimes.interstitialToMediaOKJMT = cdl.getInterstitialToMediaOKJMT();
363
363
  joinTimes.callInitMediaEngineReady = cdl.getCallInitMediaEngineReady();
364
- joinTimes.stayLobbyTime = cdl.getStayLobbyTime();
365
364
  joinTimes.totalMediaJMTWithUserDelay = cdl.getTotalMediaJMTWithUserDelay();
366
365
  joinTimes.totalJMTWithUserDelay = cdl.getTotalJMTWithUserDelay();
367
366
  break;
@@ -369,6 +368,11 @@ export const prepareDiagnosticMetricItem = (webex: any, item: any) => {
369
368
  case 'client.media.tx.start':
370
369
  audioSetupDelay.joinRespTxStart = cdl.getAudioJoinRespTxStart();
371
370
  videoSetupDelay.joinRespTxStart = cdl.getVideoJoinRespTxStart();
371
+ break;
372
+
373
+ case 'client.lobby.exited':
374
+ joinTimes.stayLobbyTime = cdl.getStayLobbyTime();
375
+ break;
372
376
  }
373
377
 
374
378
  if (!isEmpty(joinTimes)) {
@@ -79,7 +79,7 @@ export default abstract class GenericMetrics extends StatelessWebexPlugin {
79
79
  device: {
80
80
  id: this.getDeviceId(),
81
81
  },
82
- locale: window.navigator.language,
82
+ locale: window?.navigator.language,
83
83
  os: {
84
84
  name: getOSNameInternal(),
85
85
  version: getOSVersion(),
@@ -94,12 +94,12 @@ export default abstract class GenericMetrics extends StatelessWebexPlugin {
94
94
  protected getBrowserDetails(): object {
95
95
  return {
96
96
  browser: getBrowserName(),
97
- browserHeight: window.innerHeight,
97
+ browserHeight: window?.innerHeight,
98
98
  browserVersion: getBrowserVersion(),
99
- browserWidth: window.innerWidth,
100
- domain: window.location.hostname,
101
- inIframe: window.self !== window.top,
102
- locale: window.navigator.language,
99
+ browserWidth: window?.innerWidth,
100
+ domain: window?.location.hostname,
101
+ inIframe: window?.self !== window?.top,
102
+ locale: window?.navigator.language,
103
103
  os: getOSNameInternal(),
104
104
  };
105
105
  }
package/src/index.ts CHANGED
@@ -28,6 +28,7 @@ import BehavioralMetrics from './behavioral-metrics';
28
28
  import OperationalMetrics from './operational-metrics';
29
29
  import BusinessMetrics from './business-metrics';
30
30
  import RtcMetrics from './rtcMetrics';
31
+ import PreLoginMetrics from './prelogin-metrics';
31
32
 
32
33
  registerInternalPlugin('metrics', Metrics, {
33
34
  config,
@@ -51,6 +52,7 @@ export {
51
52
  OperationalMetrics,
52
53
  BusinessMetrics,
53
54
  RtcMetrics,
55
+ PreLoginMetrics,
54
56
  };
55
57
  export type {
56
58
  ClientEvent,
@@ -1,4 +1,4 @@
1
- import {
1
+ import type {
2
2
  ClientEvent as RawClientEvent,
3
3
  Event as RawEvent,
4
4
  MediaQualityEvent as RawMediaQualityEvent,
@@ -197,7 +197,7 @@ export interface BusinessEventPayload {
197
197
  metricName: string;
198
198
  timestamp: number;
199
199
  context: DeviceContext;
200
- browserDetails: EventPayload;
200
+ browserDetails: object;
201
201
  value: EventPayload;
202
202
  }
203
203