@webex/internal-plugin-metrics 3.0.0-beta.383 → 3.0.0-beta.385

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/metrics.js CHANGED
@@ -62,15 +62,19 @@ var Metrics = _webexCore.WebexPlugin.extend({
62
62
  * @returns {any} - the payload
63
63
  */
64
64
  getClientMetricsPayload: function getClientMetricsPayload(eventName, props) {
65
+ var _this$webex$meetings, _this$webex$meetings$, _this$webex$meetings$2;
65
66
  if (!eventName) {
66
67
  throw Error('Missing behavioral metric name. Please provide one');
67
68
  }
68
69
  var payload = {
69
70
  metricName: eventName
70
71
  };
72
+ // @ts-ignore
73
+ var providedClientVersion = (_this$webex$meetings = this.webex.meetings) === null || _this$webex$meetings === void 0 ? void 0 : (_this$webex$meetings$ = _this$webex$meetings.config) === null || _this$webex$meetings$ === void 0 ? void 0 : (_this$webex$meetings$2 = _this$webex$meetings$.metrics) === null || _this$webex$meetings$2 === void 0 ? void 0 : _this$webex$meetings$2.clientVersion;
71
74
  payload.tags = _objectSpread(_objectSpread({}, props.tags), {}, {
72
75
  browser: getBrowserName(),
73
76
  os: getOSNameInternal(),
77
+ appVersion: providedClientVersion,
74
78
  // Node does not like this so we need to check if it exists or not
75
79
  // eslint-disable-next-line no-undef
76
80
  domain: typeof window !== 'undefined' ? window.location.hostname || 'non-browser' : 'non-browser' // Check what else we could measure
@@ -161,7 +165,7 @@ var Metrics = _webexCore.WebexPlugin.extend({
161
165
  });
162
166
  });
163
167
  },
164
- version: "3.0.0-beta.383"
168
+ version: "3.0.0-beta.385"
165
169
  });
166
170
  var _default = Metrics;
167
171
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"names":["BrowserDetection","getOSName","getOSVersion","getBrowserName","getBrowserVersion","getOSNameInternal","OSMap","OS_NAME","OTHERS","getSparkUserAgent","webex","config","appName","appVersion","appPlatform","sparkUserAgent","CLIENT_NAME","Metrics","WebexPlugin","extend","children","batcher","Batcher","clientMetricsBatcher","ClientMetricsBatcher","namespace","submit","key","value","request","getClientMetricsPayload","eventName","props","Error","payload","metricName","tags","browser","os","domain","window","location","hostname","fields","browser_version","os_version","sdk_version","version","platform","spark_user_agent","client_id","credentials","type","metrics","context","app","locale","name","eventPayload","timestamp","Date","valueOf","submitClientMetrics","preLoginId","_payload","postPreLoginMetric","aliasUser","method","api","resource","headers","body","qs","alias","getClientToken","then","token","authorization","toString"],"sources":["metrics.js"],"sourcesContent":["/* eslint-disable default-param-last */\n\n/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {WebexPlugin} from '@webex/webex-core';\nimport {BrowserDetection} from '@webex/common';\nimport {OS_NAME, OSMap, CLIENT_NAME} from './config';\n\nimport Batcher from './batcher';\nimport ClientMetricsBatcher from './client-metrics-batcher';\n\nconst {getOSName, getOSVersion, getBrowserName, getBrowserVersion} = BrowserDetection();\n\nexport function getOSNameInternal() {\n return OSMap[getOSName()] ?? OS_NAME.OTHERS;\n}\n\nfunction getSparkUserAgent(webex) {\n const {appName, appVersion, appPlatform} = webex?.config ?? {};\n\n let sparkUserAgent = CLIENT_NAME;\n\n if (appName) {\n sparkUserAgent += ` ${appName}/${appVersion ?? '0.0'}`;\n }\n\n if (appPlatform) {\n sparkUserAgent += ` ${appPlatform}`;\n }\n\n return sparkUserAgent;\n}\n\nconst Metrics = WebexPlugin.extend({\n children: {\n batcher: Batcher,\n clientMetricsBatcher: ClientMetricsBatcher,\n },\n\n namespace: 'Metrics',\n\n submit(key, value) {\n return this.batcher.request({key, ...value});\n },\n\n /**\n * Returns the payload for submitting client metrics.\n * @param {string} eventName\n * @param {any} props\n * @returns {any} - the payload\n */\n getClientMetricsPayload(eventName, props) {\n if (!eventName) {\n throw Error('Missing behavioral metric name. Please provide one');\n }\n const payload = {metricName: eventName};\n\n payload.tags = {\n ...props.tags,\n browser: getBrowserName(),\n os: getOSNameInternal(),\n\n // Node does not like this so we need to check if it exists or not\n // eslint-disable-next-line no-undef\n domain:\n typeof window !== 'undefined' ? window.location.hostname || 'non-browser' : 'non-browser', // Check what else we could measure\n };\n\n payload.fields = {\n ...props.fields,\n browser_version: getBrowserVersion(),\n os_version: getOSVersion(),\n sdk_version: this.webex.version,\n platform: 'Web',\n spark_user_agent: getSparkUserAgent(this.webex),\n client_id: this.webex.credentials.config.client_id,\n };\n\n payload.type = props.type || this.webex.config.metrics.type;\n\n payload.context = {\n ...props.context,\n app: {\n version: this.webex.version,\n },\n locale: 'en-US',\n os: {\n name: getOSNameInternal(),\n version: getOSVersion(),\n },\n };\n\n if (props.eventPayload) {\n payload.eventPayload = props.eventPayload;\n }\n\n // Mocking the time in tests when running in node\n // is impossible so unable to use Date.now()\n payload.timestamp = new Date().valueOf();\n\n return payload;\n },\n\n /**\n * This corresponds to #sendSemiStructured() in the deprecated metrics handler\n * @param {string} eventName\n * @param {Object} props\n * @param {string} preLoginId\n * @returns {Object} HttpResponse object\n */\n submitClientMetrics(eventName, props = {}, preLoginId) {\n const payload = this.getClientMetricsPayload(eventName, props);\n\n if (preLoginId) {\n const _payload = {\n metrics: [payload],\n };\n\n // Do not batch these because pre-login events occur during onboarding, so we will be partially blind\n // to users' progress through the reg flow if we wait to persist pre-login metrics for people who drop off because\n // their metrics will not post from a queue flush in time\n return this.postPreLoginMetric(_payload, preLoginId);\n }\n\n return this.clientMetricsBatcher.request(payload);\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 aliasUser(preLoginId) {\n return this.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 },\n\n postPreLoginMetric(payload, preLoginId) {\n return this.webex.credentials.getClientToken().then((token) =>\n this.request({\n method: 'POST',\n api: 'metrics',\n resource: 'clientmetrics-prelogin',\n headers: {\n authorization: token.toString(),\n 'x-prelogin-userid': preLoginId,\n },\n body: payload,\n })\n );\n },\n});\n\nexport default Metrics;\n"],"mappings":"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"}
1
+ {"version":3,"names":["BrowserDetection","getOSName","getOSVersion","getBrowserName","getBrowserVersion","getOSNameInternal","OSMap","OS_NAME","OTHERS","getSparkUserAgent","webex","config","appName","appVersion","appPlatform","sparkUserAgent","CLIENT_NAME","Metrics","WebexPlugin","extend","children","batcher","Batcher","clientMetricsBatcher","ClientMetricsBatcher","namespace","submit","key","value","request","getClientMetricsPayload","eventName","props","Error","payload","metricName","providedClientVersion","meetings","metrics","clientVersion","tags","browser","os","domain","window","location","hostname","fields","browser_version","os_version","sdk_version","version","platform","spark_user_agent","client_id","credentials","type","context","app","locale","name","eventPayload","timestamp","Date","valueOf","submitClientMetrics","preLoginId","_payload","postPreLoginMetric","aliasUser","method","api","resource","headers","body","qs","alias","getClientToken","then","token","authorization","toString"],"sources":["metrics.js"],"sourcesContent":["/* eslint-disable default-param-last */\n\n/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {WebexPlugin} from '@webex/webex-core';\nimport {BrowserDetection} from '@webex/common';\nimport {OS_NAME, OSMap, CLIENT_NAME} from './config';\n\nimport Batcher from './batcher';\nimport ClientMetricsBatcher from './client-metrics-batcher';\n\nconst {getOSName, getOSVersion, getBrowserName, getBrowserVersion} = BrowserDetection();\n\nexport function getOSNameInternal() {\n return OSMap[getOSName()] ?? OS_NAME.OTHERS;\n}\n\nfunction getSparkUserAgent(webex) {\n const {appName, appVersion, appPlatform} = webex?.config ?? {};\n\n let sparkUserAgent = CLIENT_NAME;\n\n if (appName) {\n sparkUserAgent += ` ${appName}/${appVersion ?? '0.0'}`;\n }\n\n if (appPlatform) {\n sparkUserAgent += ` ${appPlatform}`;\n }\n\n return sparkUserAgent;\n}\n\nconst Metrics = WebexPlugin.extend({\n children: {\n batcher: Batcher,\n clientMetricsBatcher: ClientMetricsBatcher,\n },\n\n namespace: 'Metrics',\n\n submit(key, value) {\n return this.batcher.request({key, ...value});\n },\n\n /**\n * Returns the payload for submitting client metrics.\n * @param {string} eventName\n * @param {any} props\n * @returns {any} - the payload\n */\n getClientMetricsPayload(eventName, props) {\n if (!eventName) {\n throw Error('Missing behavioral metric name. Please provide one');\n }\n const payload = {metricName: eventName};\n // @ts-ignore\n const providedClientVersion = this.webex.meetings?.config?.metrics?.clientVersion;\n\n payload.tags = {\n ...props.tags,\n browser: getBrowserName(),\n os: getOSNameInternal(),\n appVersion: providedClientVersion,\n\n // Node does not like this so we need to check if it exists or not\n // eslint-disable-next-line no-undef\n domain:\n typeof window !== 'undefined' ? window.location.hostname || 'non-browser' : 'non-browser', // Check what else we could measure\n };\n\n payload.fields = {\n ...props.fields,\n browser_version: getBrowserVersion(),\n os_version: getOSVersion(),\n sdk_version: this.webex.version,\n platform: 'Web',\n spark_user_agent: getSparkUserAgent(this.webex),\n client_id: this.webex.credentials.config.client_id,\n };\n\n payload.type = props.type || this.webex.config.metrics.type;\n\n payload.context = {\n ...props.context,\n app: {\n version: this.webex.version,\n },\n locale: 'en-US',\n os: {\n name: getOSNameInternal(),\n version: getOSVersion(),\n },\n };\n\n if (props.eventPayload) {\n payload.eventPayload = props.eventPayload;\n }\n\n // Mocking the time in tests when running in node\n // is impossible so unable to use Date.now()\n payload.timestamp = new Date().valueOf();\n\n return payload;\n },\n\n /**\n * This corresponds to #sendSemiStructured() in the deprecated metrics handler\n * @param {string} eventName\n * @param {Object} props\n * @param {string} preLoginId\n * @returns {Object} HttpResponse object\n */\n submitClientMetrics(eventName, props = {}, preLoginId) {\n const payload = this.getClientMetricsPayload(eventName, props);\n\n if (preLoginId) {\n const _payload = {\n metrics: [payload],\n };\n\n // Do not batch these because pre-login events occur during onboarding, so we will be partially blind\n // to users' progress through the reg flow if we wait to persist pre-login metrics for people who drop off because\n // their metrics will not post from a queue flush in time\n return this.postPreLoginMetric(_payload, preLoginId);\n }\n\n return this.clientMetricsBatcher.request(payload);\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 aliasUser(preLoginId) {\n return this.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 },\n\n postPreLoginMetric(payload, preLoginId) {\n return this.webex.credentials.getClientToken().then((token) =>\n this.request({\n method: 'POST',\n api: 'metrics',\n resource: 'clientmetrics-prelogin',\n headers: {\n authorization: token.toString(),\n 'x-prelogin-userid': preLoginId,\n },\n body: payload,\n })\n );\n },\n});\n\nexport default Metrics;\n"],"mappings":";;;;;;;;;;;;;;;AAMA;AACA;AACA;AAEA;AACA;AAA4D;AAAA;AAE5D,wBAAqE,IAAAA,wBAAgB,GAAE;EAAhFC,SAAS,qBAATA,SAAS;EAAEC,YAAY,qBAAZA,YAAY;EAAEC,cAAc,qBAAdA,cAAc;EAAEC,iBAAiB,qBAAjBA,iBAAiB;AAE1D,SAASC,iBAAiB,GAAG;EAAA;EAClC,2BAAOC,aAAK,CAACL,SAAS,EAAE,CAAC,+DAAIM,eAAO,CAACC,MAAM;AAC7C;AAEA,SAASC,iBAAiB,CAACC,KAAK,EAAE;EAAA;EAChC,4BAA2CA,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEC,MAAM,yDAAI,CAAC,CAAC;IAAvDC,OAAO,QAAPA,OAAO;IAAEC,UAAU,QAAVA,UAAU;IAAEC,WAAW,QAAXA,WAAW;EAEvC,IAAIC,cAAc,GAAGC,mBAAW;EAEhC,IAAIJ,OAAO,EAAE;IACXG,cAAc,eAAQH,OAAO,cAAIC,UAAU,aAAVA,UAAU,cAAVA,UAAU,GAAI,KAAK,CAAE;EACxD;EAEA,IAAIC,WAAW,EAAE;IACfC,cAAc,eAAQD,WAAW,CAAE;EACrC;EAEA,OAAOC,cAAc;AACvB;AAEA,IAAME,OAAO,GAAGC,sBAAW,CAACC,MAAM,CAAC;EACjCC,QAAQ,EAAE;IACRC,OAAO,EAAEC,gBAAO;IAChBC,oBAAoB,EAAEC;EACxB,CAAC;EAEDC,SAAS,EAAE,SAAS;EAEpBC,MAAM,kBAACC,GAAG,EAAEC,KAAK,EAAE;IACjB,OAAO,IAAI,CAACP,OAAO,CAACQ,OAAO;MAAEF,GAAG,EAAHA;IAAG,GAAKC,KAAK,EAAE;EAC9C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEE,uBAAuB,mCAACC,SAAS,EAAEC,KAAK,EAAE;IAAA;IACxC,IAAI,CAACD,SAAS,EAAE;MACd,MAAME,KAAK,CAAC,oDAAoD,CAAC;IACnE;IACA,IAAMC,OAAO,GAAG;MAACC,UAAU,EAAEJ;IAAS,CAAC;IACvC;IACA,IAAMK,qBAAqB,2BAAG,IAAI,CAAC1B,KAAK,CAAC2B,QAAQ,kFAAnB,qBAAqB1B,MAAM,oFAA3B,sBAA6B2B,OAAO,2DAApC,uBAAsCC,aAAa;IAEjFL,OAAO,CAACM,IAAI,mCACPR,KAAK,CAACQ,IAAI;MACbC,OAAO,EAAEtC,cAAc,EAAE;MACzBuC,EAAE,EAAErC,iBAAiB,EAAE;MACvBQ,UAAU,EAAEuB,qBAAqB;MAEjC;MACA;MACAO,MAAM,EACJ,OAAOC,MAAM,KAAK,WAAW,GAAGA,MAAM,CAACC,QAAQ,CAACC,QAAQ,IAAI,aAAa,GAAG,aAAa,CAAE;IAAA,EAC9F;;IAEDZ,OAAO,CAACa,MAAM,mCACTf,KAAK,CAACe,MAAM;MACfC,eAAe,EAAE5C,iBAAiB,EAAE;MACpC6C,UAAU,EAAE/C,YAAY,EAAE;MAC1BgD,WAAW,EAAE,IAAI,CAACxC,KAAK,CAACyC,OAAO;MAC/BC,QAAQ,EAAE,KAAK;MACfC,gBAAgB,EAAE5C,iBAAiB,CAAC,IAAI,CAACC,KAAK,CAAC;MAC/C4C,SAAS,EAAE,IAAI,CAAC5C,KAAK,CAAC6C,WAAW,CAAC5C,MAAM,CAAC2C;IAAS,EACnD;IAEDpB,OAAO,CAACsB,IAAI,GAAGxB,KAAK,CAACwB,IAAI,IAAI,IAAI,CAAC9C,KAAK,CAACC,MAAM,CAAC2B,OAAO,CAACkB,IAAI;IAE3DtB,OAAO,CAACuB,OAAO,mCACVzB,KAAK,CAACyB,OAAO;MAChBC,GAAG,EAAE;QACHP,OAAO,EAAE,IAAI,CAACzC,KAAK,CAACyC;MACtB,CAAC;MACDQ,MAAM,EAAE,OAAO;MACfjB,EAAE,EAAE;QACFkB,IAAI,EAAEvD,iBAAiB,EAAE;QACzB8C,OAAO,EAAEjD,YAAY;MACvB;IAAC,EACF;IAED,IAAI8B,KAAK,CAAC6B,YAAY,EAAE;MACtB3B,OAAO,CAAC2B,YAAY,GAAG7B,KAAK,CAAC6B,YAAY;IAC3C;;IAEA;IACA;IACA3B,OAAO,CAAC4B,SAAS,GAAG,IAAIC,IAAI,EAAE,CAACC,OAAO,EAAE;IAExC,OAAO9B,OAAO;EAChB,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACE+B,mBAAmB,+BAAClC,SAAS,EAA0B;IAAA,IAAxBC,KAAK,uEAAG,CAAC,CAAC;IAAA,IAAEkC,UAAU;IACnD,IAAMhC,OAAO,GAAG,IAAI,CAACJ,uBAAuB,CAACC,SAAS,EAAEC,KAAK,CAAC;IAE9D,IAAIkC,UAAU,EAAE;MACd,IAAMC,QAAQ,GAAG;QACf7B,OAAO,EAAE,CAACJ,OAAO;MACnB,CAAC;;MAED;MACA;MACA;MACA,OAAO,IAAI,CAACkC,kBAAkB,CAACD,QAAQ,EAAED,UAAU,CAAC;IACtD;IAEA,OAAO,IAAI,CAAC3C,oBAAoB,CAACM,OAAO,CAACK,OAAO,CAAC;EACnD,CAAC;EAED;AACF;AACA;AACA;AACA;EACEmC,SAAS,qBAACH,UAAU,EAAE;IACpB,OAAO,IAAI,CAACrC,OAAO,CAAC;MAClByC,MAAM,EAAE,MAAM;MACdC,GAAG,EAAE,SAAS;MACdC,QAAQ,EAAE,eAAe;MACzBC,OAAO,EAAE;QACP,mBAAmB,EAAEP;MACvB,CAAC;MACDQ,IAAI,EAAE,CAAC,CAAC;MACRC,EAAE,EAAE;QACFC,KAAK,EAAE;MACT;IACF,CAAC,CAAC;EACJ,CAAC;EAEDR,kBAAkB,8BAAClC,OAAO,EAAEgC,UAAU,EAAE;IAAA;IACtC,OAAO,IAAI,CAACxD,KAAK,CAAC6C,WAAW,CAACsB,cAAc,EAAE,CAACC,IAAI,CAAC,UAACC,KAAK;MAAA,OACxD,KAAI,CAAClD,OAAO,CAAC;QACXyC,MAAM,EAAE,MAAM;QACdC,GAAG,EAAE,SAAS;QACdC,QAAQ,EAAE,wBAAwB;QAClCC,OAAO,EAAE;UACPO,aAAa,EAAED,KAAK,CAACE,QAAQ,EAAE;UAC/B,mBAAmB,EAAEf;QACvB,CAAC;QACDQ,IAAI,EAAExC;MACR,CAAC,CAAC;IAAA,EACH;EACH,CAAC;EAAA;AACH,CAAC,CAAC;AAAC,eAEYjB,OAAO;AAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webex/internal-plugin-metrics",
3
- "version": "3.0.0-beta.383",
3
+ "version": "3.0.0-beta.385",
4
4
  "description": "",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -28,14 +28,14 @@
28
28
  "build": "yarn run -T tsc --declaration true --declarationDir ./dist/types"
29
29
  },
30
30
  "dependencies": {
31
- "@webex/common": "3.0.0-beta.383",
32
- "@webex/common-timers": "3.0.0-beta.383",
31
+ "@webex/common": "3.0.0-beta.385",
32
+ "@webex/common-timers": "3.0.0-beta.385",
33
33
  "@webex/event-dictionary-ts": "^1.0.1329",
34
- "@webex/internal-plugin-device": "3.0.0-beta.383",
35
- "@webex/internal-plugin-metrics": "3.0.0-beta.383",
36
- "@webex/test-helper-chai": "3.0.0-beta.383",
37
- "@webex/test-helper-mock-webex": "3.0.0-beta.383",
38
- "@webex/webex-core": "3.0.0-beta.383",
34
+ "@webex/internal-plugin-device": "3.0.0-beta.385",
35
+ "@webex/internal-plugin-metrics": "3.0.0-beta.385",
36
+ "@webex/test-helper-chai": "3.0.0-beta.385",
37
+ "@webex/test-helper-mock-webex": "3.0.0-beta.385",
38
+ "@webex/webex-core": "3.0.0-beta.385",
39
39
  "ip-anonymize": "^0.1.0",
40
40
  "lodash": "^4.17.21",
41
41
  "uuid": "^3.3.2"
package/src/metrics.js CHANGED
@@ -56,11 +56,14 @@ const Metrics = WebexPlugin.extend({
56
56
  throw Error('Missing behavioral metric name. Please provide one');
57
57
  }
58
58
  const payload = {metricName: eventName};
59
+ // @ts-ignore
60
+ const providedClientVersion = this.webex.meetings?.config?.metrics?.clientVersion;
59
61
 
60
62
  payload.tags = {
61
63
  ...props.tags,
62
64
  browser: getBrowserName(),
63
65
  os: getOSNameInternal(),
66
+ appVersion: providedClientVersion,
64
67
 
65
68
  // Node does not like this so we need to check if it exists or not
66
69
  // eslint-disable-next-line no-undef
@@ -102,6 +102,13 @@ describe('plugin-metrics', () => {
102
102
  };
103
103
  webex.config.metrics.type = ['operational'];
104
104
  webex.config.metrics.appType = 'sdk';
105
+ webex.meetings = {
106
+ config: {
107
+ metrics: {
108
+ clientVersion: '43.0.105'
109
+ }
110
+ }
111
+ }
105
112
 
106
113
  sinon.spy(webex, 'request');
107
114
  sinon.spy(metrics, 'postPreLoginMetric');
@@ -178,6 +185,7 @@ describe('plugin-metrics', () => {
178
185
  },
179
186
  metricName: 'test',
180
187
  tags: {
188
+ appVersion: '43.0.105',
181
189
  browser: '',
182
190
  domain: 'whatever',
183
191
  os: 'other',