@esri/telemetry-amazon 0.1.0 → 0.2.2

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.
@@ -1,4 +1,4 @@
1
- define('telemetry', ['@esri/telemetry', 'analytics', '@analytics/aws-pinpoint'], function (Telemetry, Analytics, awsPinpointPlugin) { 'use strict';
1
+ define('telemetry', ['@esri/telemetry', '@esri/hub-common', 'analytics', '@analytics/aws-pinpoint'], function (Telemetry, _esri_hubCommon, Analytics, awsPinpointPlugin) { 'use strict';
2
2
 
3
3
  Telemetry = 'default' in Telemetry ? Telemetry['default'] : Telemetry;
4
4
  Analytics = 'default' in Analytics ? Analytics['default'] : Analytics;
@@ -223,22 +223,35 @@ function createEventLog(_ref) {
223
223
  dimensionLookup = _ref$dimensionLookup === undefined ? {} : _ref$dimensionLookup,
224
224
  _ref$metricLookup = _ref.metricLookup,
225
225
  metricLookup = _ref$metricLookup === undefined ? {} : _ref$metricLookup;
226
- var _event$eventType = event.eventType,
226
+ var eventPathname = event.pathname,
227
+ _event$eventType = event.eventType,
227
228
  eventType = _event$eventType === undefined ? 'other' : _event$eventType;
228
229
 
229
230
  var metrics = formatTelemetryMetrtics(event, metricLookup);
230
231
  var eventAttributes = formatTelemetryAttributes({
231
232
  telemetryData: _extends({ eventType: eventType }, event),
232
233
  dimensionLookup: dimensionLookup,
233
- excludeKeys: ['workflow'].concat(toConsumableArray(Object.keys(metrics)), toConsumableArray(Object.keys(metricLookup)))
234
+ excludeKeys: ['workflow', 'pathname'].concat(toConsumableArray(Object.keys(metrics)), toConsumableArray(Object.keys(metricLookup)))
234
235
  });
235
236
 
236
- return _extends({
237
- name: eventType,
238
- referrer: document.referrer,
239
- hostname: window.location.hostname,
240
- path: window.location.pathname
237
+ var telemetryPayload = _extends({
238
+ name: eventType
241
239
  }, eventAttributes, metrics);
240
+
241
+ // Browser document check and set referrer if it exists
242
+ if (typeof document !== 'undefined' && document.referrer) {
243
+ telemetryPayload.referrer = _esri_hubCommon.getProp(document, 'referrer');
244
+ }
245
+
246
+ // Browser hostname check and set if it exists
247
+ if (typeof window !== 'undefined' && !telemetryPayload.hostname) {
248
+ telemetryPayload.hostname = _esri_hubCommon.getProp(window, 'location.hostname');
249
+ }
250
+
251
+ // Browser and server pathname check and set
252
+ telemetryPayload.path = typeof window !== 'undefined' && window.location.pathname ? _esri_hubCommon.getProp(window, 'location.pathname') : eventPathname;
253
+
254
+ return telemetryPayload;
242
255
  }
243
256
 
244
257
  function createPageViewLog(_ref) {
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-amazon.js.amd.js","sources":["../src/auth.js","../src/format-telemetry-attributes.js","../src/format-telemetry-metrics.js","../src/create-event-log.js","../src/create-page-view-log.js","../src/index.js"],"sourcesContent":["import Telemetry from '@esri/telemetry'\nconst { storage } = Telemetry\nconst COGNITO_KEY = 'TELEMETRY_COGNITO_CREDENTIALS'\n\nexport function getCredentials (IdentityPoolId, options = {}) {\n const fipsSubdomainSuffix = options.fips === true ? '-fips' : ''\n const COGNITO_URL = `https://cognito-identity${fipsSubdomainSuffix}.us-east-1.amazonaws.com/`\n let cached = storage.get(COGNITO_KEY)\n if (cached && Date.now() / 1000 < cached.Expiration) return Promise.resolve(cached)\n\n const fetchOptions = {\n method: 'POST',\n headers: {\n 'Content-type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'AWSCognitoIdentityService.GetId'\n },\n body: JSON.stringify({ IdentityPoolId })\n }\n\n return fetch(COGNITO_URL, fetchOptions)\n .then(response => {\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return response.json()\n })\n .then((response) => {\n const { IdentityId } = response\n const options = {\n method: 'POST',\n headers: {\n 'Content-type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'AWSCognitoIdentityService.GetCredentialsForIdentity'\n },\n body: JSON.stringify({ IdentityId })\n }\n return fetch(COGNITO_URL, options)\n })\n .then(response => {\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return response.json()\n })\n .then(({ Credentials }) => {\n storage.set(COGNITO_KEY, Credentials)\n return Credentials\n })\n}\n","export default function formatTelemetryAttributes ({ telemetryData, dimensionLookup = {}, excludeKeys = [] }) {\n return Object.keys(telemetryData)\n .filter(key => {\n return !excludeKeys.includes(key)\n })\n .map(key => {\n if (dimensionLookup[key]) {\n return {\n key: getCustomDimensionKey(dimensionLookup, key),\n value: telemetryData[key] }\n }\n\n return {\n key,\n value: getValue(telemetryData, key)\n }\n })\n .reduce((acc, { key, value }) => {\n acc[key] = value\n return acc\n }, {})\n}\n\nfunction getValue (data, key) {\n if (key === 'json') {\n return data[key] ? JSON.stringify(data[key]) : 'null'\n }\n\n return data[key] === undefined ? 'null' : data[key].toString()\n}\n\nfunction getCustomDimensionKey (lookup, key) {\n return `dimension${lookup[key]}`\n}","const METRICS = ['size', 'duration', 'position', 'number', 'count']\n\nexport default function formatTelemetryMetrtics (telemetryData, metricLookup = {}) {\n return Object.keys(telemetryData).filter(key => {\n return metricLookup[key] || METRICS.includes(key)\n }).map(key => {\n if (metricLookup[key]) {\n return {\n key: getCustomMetricKey(metricLookup, key),\n value: telemetryData[key]\n }\n }\n\n return {\n key,\n value: telemetryData[key]\n }\n }).reduce((acc, { key, value }) => {\n acc[key] = value\n return acc\n }, {});\n}\n\nfunction getCustomMetricKey (lookup, key) {\n return `metric${lookup[key]}`\n}\n","import formatTelemetryAttributes from './format-telemetry-attributes'\nimport formatTelemetryMetrics from './format-telemetry-metrics'\n\nexport default function createEventLog ({\n event = {},\n dimensionLookup = {},\n metricLookup = {}\n}) {\n const { eventType = 'other' } = event\n const metrics = formatTelemetryMetrics(event, metricLookup)\n const eventAttributes = formatTelemetryAttributes({\n telemetryData: { eventType, ...event },\n dimensionLookup,\n excludeKeys: ['workflow', ...Object.keys(metrics), ...Object.keys(metricLookup)]\n })\n\n return {\n name: eventType,\n referrer: document.referrer,\n hostname: window.location.hostname,\n path: window.location.pathname,\n ...eventAttributes,\n ...metrics\n }\n}\n","import formatTelemetryAttributes from './format-telemetry-attributes'\nimport formatTelemetryMetrics from './format-telemetry-metrics'\n\nexport default function createPageViewLog ({\n page,\n previousPage = {},\n options = {},\n dimensionLookup = {},\n metricLookup = {}\n}) {\n const metrics = formatTelemetryMetrics(options, metricLookup)\n const attributes = formatTelemetryAttributes({\n telemetryData: options,\n dimensionLookup,\n excludeKeys: ['workflow', ...Object.keys(metrics), ...Object.keys(metricLookup)]\n })\n\n const { referrer, title } = document || {}\n const { hostname, pathname } = window && window.location ? window.location : {}\n\n return {\n name: 'pageView',\n referrer,\n hostname,\n path: page || pathname,\n pageUrl: page || pathname,\n pageName: title,\n previousPageUrl: previousPage.pageUrl,\n previousPageName: previousPage.pageName,\n ...attributes,\n ...metrics\n }\n}\n","import { getCredentials } from './auth'\nimport createEventLog from './create-event-log'\nimport createPageView from './create-page-view-log'\nimport Analytics from 'analytics'\nimport awsPinpointPlugin from '@analytics/aws-pinpoint'\n\nexport default class Amazon {\n constructor(options) {\n const { app = {}, fips, userPoolID } = options\n this.analytics = Analytics({\n app: app.name,\n plugins: [\n awsPinpointPlugin({\n fips,\n pinpointAppId: app.id,\n getCredentials: () => {\n return getCredentials(userPoolID, { fips })\n },\n }),\n ],\n })\n\n this.name = 'amazon'\n Object.assign(this, options)\n }\n\n logPageView(page, options) {\n const telemetryPayload = createPageView({\n page,\n previousPage: this.previousPage,\n options,\n dimensionLookup: this.dimensions,\n metricLookup: this.metrics,\n })\n this.previousPage = telemetryPayload.attributes\n this.analytics.track('pageView', telemetryPayload)\n }\n\n logEvent(event = {}) {\n const telemetryPayload = createEventLog({\n event,\n dimensionLookup: this.dimensions,\n metricLookup: this.metrics,\n })\n const { name } = telemetryPayload\n this.analytics.track(name, telemetryPayload)\n }\n}\n"],"names":["storage","Telemetry","COGNITO_KEY","getCredentials","IdentityPoolId","options","fipsSubdomainSuffix","fips","COGNITO_URL","cached","get","Date","now","Expiration","Promise","resolve","fetchOptions","JSON","stringify","fetch","then","response","ok","Error","statusText","json","IdentityId","Credentials","set","formatTelemetryAttributes","telemetryData","dimensionLookup","excludeKeys","Object","keys","filter","includes","key","map","getCustomDimensionKey","getValue","reduce","acc","value","data","undefined","toString","lookup","METRICS","formatTelemetryMetrtics","metricLookup","getCustomMetricKey","createEventLog","event","eventType","metrics","formatTelemetryMetrics","eventAttributes","document","referrer","window","location","hostname","pathname","createPageViewLog","page","previousPage","attributes","title","pageUrl","pageName","Amazon","app","userPoolID","analytics","Analytics","name","awsPinpointPlugin","id","telemetryPayload","createPageView","dimensions","track"],"mappings":"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"}
1
+ {"version":3,"file":"telemetry-amazon.js.amd.js","sources":["../src/auth.js","../src/format-telemetry-attributes.js","../src/format-telemetry-metrics.js","../src/create-event-log.js","../src/create-page-view-log.js","../src/index.js"],"sourcesContent":["import Telemetry from '@esri/telemetry'\nconst { storage } = Telemetry\nconst COGNITO_KEY = 'TELEMETRY_COGNITO_CREDENTIALS'\n\nexport function getCredentials (IdentityPoolId, options = {}) {\n const fipsSubdomainSuffix = options.fips === true ? '-fips' : ''\n const COGNITO_URL = `https://cognito-identity${fipsSubdomainSuffix}.us-east-1.amazonaws.com/`\n let cached = storage.get(COGNITO_KEY)\n if (cached && Date.now() / 1000 < cached.Expiration) return Promise.resolve(cached)\n\n const fetchOptions = {\n method: 'POST',\n headers: {\n 'Content-type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'AWSCognitoIdentityService.GetId'\n },\n body: JSON.stringify({ IdentityPoolId })\n }\n\n return fetch(COGNITO_URL, fetchOptions)\n .then(response => {\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return response.json()\n })\n .then((response) => {\n const { IdentityId } = response\n const options = {\n method: 'POST',\n headers: {\n 'Content-type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'AWSCognitoIdentityService.GetCredentialsForIdentity'\n },\n body: JSON.stringify({ IdentityId })\n }\n return fetch(COGNITO_URL, options)\n })\n .then(response => {\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return response.json()\n })\n .then(({ Credentials }) => {\n storage.set(COGNITO_KEY, Credentials)\n return Credentials\n })\n}\n","export default function formatTelemetryAttributes ({ telemetryData, dimensionLookup = {}, excludeKeys = [] }) {\n return Object.keys(telemetryData)\n .filter(key => {\n return !excludeKeys.includes(key)\n })\n .map(key => {\n if (dimensionLookup[key]) {\n return {\n key: getCustomDimensionKey(dimensionLookup, key),\n value: telemetryData[key] }\n }\n\n return {\n key,\n value: getValue(telemetryData, key)\n }\n })\n .reduce((acc, { key, value }) => {\n acc[key] = value\n return acc\n }, {})\n}\n\nfunction getValue (data, key) {\n if (key === 'json') {\n return data[key] ? JSON.stringify(data[key]) : 'null'\n }\n\n return data[key] === undefined ? 'null' : data[key].toString()\n}\n\nfunction getCustomDimensionKey (lookup, key) {\n return `dimension${lookup[key]}`\n}","const METRICS = ['size', 'duration', 'position', 'number', 'count']\n\nexport default function formatTelemetryMetrtics (telemetryData, metricLookup = {}) {\n return Object.keys(telemetryData).filter(key => {\n return metricLookup[key] || METRICS.includes(key)\n }).map(key => {\n if (metricLookup[key]) {\n return {\n key: getCustomMetricKey(metricLookup, key),\n value: telemetryData[key]\n }\n }\n\n return {\n key,\n value: telemetryData[key]\n }\n }).reduce((acc, { key, value }) => {\n acc[key] = value\n return acc\n }, {});\n}\n\nfunction getCustomMetricKey (lookup, key) {\n return `metric${lookup[key]}`\n}\n","import { getProp } from '@esri/hub-common';\nimport formatTelemetryAttributes from './format-telemetry-attributes'\nimport formatTelemetryMetrics from './format-telemetry-metrics'\n\n\nexport default function createEventLog({\n event = {},\n dimensionLookup = {},\n metricLookup = {},\n}) {\n const { pathname: eventPathname, eventType = 'other' } = event\n const metrics = formatTelemetryMetrics(event, metricLookup)\n const eventAttributes = formatTelemetryAttributes({\n telemetryData: { eventType, ...event },\n dimensionLookup,\n excludeKeys: [\n 'workflow',\n 'pathname',\n ...Object.keys(metrics),\n ...Object.keys(metricLookup),\n ],\n })\n\n const telemetryPayload = {\n name: eventType,\n ...eventAttributes,\n ...metrics,\n }\n\n // Browser document check and set referrer if it exists\n if (typeof document !== 'undefined' && document.referrer) {\n telemetryPayload.referrer = getProp(document, 'referrer')\n }\n\n // Browser hostname check and set if it exists\n if (typeof window !== 'undefined' && !telemetryPayload.hostname) {\n telemetryPayload.hostname = getProp(window, 'location.hostname')\n }\n\n // Browser and server pathname check and set\n telemetryPayload.path = typeof window !== 'undefined' && window.location.pathname ? getProp(window, 'location.pathname') : eventPathname\n\n return telemetryPayload\n}\n","import formatTelemetryAttributes from './format-telemetry-attributes'\nimport formatTelemetryMetrics from './format-telemetry-metrics'\n\nexport default function createPageViewLog ({\n page,\n previousPage = {},\n options = {},\n dimensionLookup = {},\n metricLookup = {}\n}) {\n const metrics = formatTelemetryMetrics(options, metricLookup)\n const attributes = formatTelemetryAttributes({\n telemetryData: options,\n dimensionLookup,\n excludeKeys: ['workflow', ...Object.keys(metrics), ...Object.keys(metricLookup)]\n })\n\n const { referrer, title } = document || {}\n const { hostname, pathname } = window && window.location ? window.location : {}\n\n return {\n name: 'pageView',\n referrer,\n hostname,\n path: page || pathname,\n pageUrl: page || pathname,\n pageName: title,\n previousPageUrl: previousPage.pageUrl,\n previousPageName: previousPage.pageName,\n ...attributes,\n ...metrics\n }\n}\n","import { getCredentials } from './auth'\nimport createEventLog from './create-event-log'\nimport createPageView from './create-page-view-log'\nimport Analytics from 'analytics'\nimport awsPinpointPlugin from '@analytics/aws-pinpoint'\n\nexport default class Amazon {\n constructor(options) {\n const { app = {}, fips, userPoolID } = options\n this.analytics = Analytics({\n app: app.name,\n plugins: [\n awsPinpointPlugin({\n fips,\n pinpointAppId: app.id,\n getCredentials: () => {\n return getCredentials(userPoolID, { fips })\n },\n }),\n ],\n })\n\n this.name = 'amazon'\n Object.assign(this, options)\n }\n\n logPageView(page, options) {\n const telemetryPayload = createPageView({\n page,\n previousPage: this.previousPage,\n options,\n dimensionLookup: this.dimensions,\n metricLookup: this.metrics,\n })\n this.previousPage = telemetryPayload.attributes\n this.analytics.track('pageView', telemetryPayload)\n }\n\n logEvent(event = {}) {\n const telemetryPayload = createEventLog({\n event,\n dimensionLookup: this.dimensions,\n metricLookup: this.metrics,\n })\n const { name } = telemetryPayload\n this.analytics.track(name, telemetryPayload)\n }\n}\n"],"names":["storage","Telemetry","COGNITO_KEY","getCredentials","IdentityPoolId","options","fipsSubdomainSuffix","fips","COGNITO_URL","cached","get","Date","now","Expiration","Promise","resolve","fetchOptions","JSON","stringify","fetch","then","response","ok","Error","statusText","json","IdentityId","Credentials","set","formatTelemetryAttributes","telemetryData","dimensionLookup","excludeKeys","Object","keys","filter","includes","key","map","getCustomDimensionKey","getValue","reduce","acc","value","data","undefined","toString","lookup","METRICS","formatTelemetryMetrtics","metricLookup","getCustomMetricKey","createEventLog","event","eventPathname","pathname","eventType","metrics","formatTelemetryMetrics","eventAttributes","telemetryPayload","document","referrer","getProp","window","hostname","path","location","createPageViewLog","page","previousPage","attributes","title","pageUrl","pageName","Amazon","app","userPoolID","analytics","Analytics","name","awsPinpointPlugin","id","createPageView","dimensions","track"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- define("telemetry",["@esri/telemetry","analytics","@analytics/aws-pinpoint"],function(e,t,n){"use strict";function i(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=!0===t.fips?"-fips":"",i="https://cognito-identity"+n+".us-east-1.amazonaws.com/",r=d.get(f);if(r&&Date.now()/1e3<r.Expiration)return Promise.resolve(r);var o={method:"POST",headers:{"Content-type":"application/x-amz-json-1.1","X-Amz-Target":"AWSCognitoIdentityService.GetId"},body:JSON.stringify({IdentityPoolId:e})};return fetch(i,o).then(function(e){if(!e.ok)throw new Error(e.statusText);return e.json()}).then(function(e){var t=e.IdentityId,n={method:"POST",headers:{"Content-type":"application/x-amz-json-1.1","X-Amz-Target":"AWSCognitoIdentityService.GetCredentialsForIdentity"},body:JSON.stringify({IdentityId:t})};return fetch(i,n)}).then(function(e){if(!e.ok)throw new Error(e.statusText);return e.json()}).then(function(e){var t=e.Credentials;return d.set(f,t),t})}function r(e){var t=e.telemetryData,n=e.dimensionLookup,i=void 0===n?{}:n,r=e.excludeKeys,u=void 0===r?[]:r;return Object.keys(t).filter(function(e){return!u.includes(e)}).map(function(e){return i[e]?{key:a(i,e),value:t[e]}:{key:e,value:o(t,e)}}).reduce(function(e,t){var n=t.key,i=t.value;return e[n]=i,e},{})}function o(e,t){return"json"===t?e[t]?JSON.stringify(e[t]):"null":void 0===e[t]?"null":e[t].toString()}function a(e,t){return"dimension"+e[t]}function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).filter(function(e){return t[e]||p.includes(e)}).map(function(n){return t[n]?{key:s(t,n),value:e[n]}:{key:n,value:e[n]}}).reduce(function(e,t){var n=t.key,i=t.value;return e[n]=i,e},{})}function s(e,t){return"metric"+e[t]}function c(e){var t=e.event,n=void 0===t?{}:t,i=e.dimensionLookup,o=void 0===i?{}:i,a=e.metricLookup,s=void 0===a?{}:a,c=n.eventType,l=void 0===c?"other":c,d=u(n,s),f=r({telemetryData:y({eventType:l},n),dimensionLookup:o,excludeKeys:["workflow"].concat(h(Object.keys(d)),h(Object.keys(s)))});return y({name:l,referrer:document.referrer,hostname:window.location.hostname,path:window.location.pathname},f,d)}function l(e){var t=e.page,n=e.previousPage,i=void 0===n?{}:n,o=e.options,a=void 0===o?{}:o,s=e.dimensionLookup,c=void 0===s?{}:s,l=e.metricLookup,d=void 0===l?{}:l,f=u(a,d),p=r({telemetryData:a,dimensionLookup:c,excludeKeys:["workflow"].concat(h(Object.keys(f)),h(Object.keys(d)))}),v=document||{},m=v.referrer,g=v.title,k=window&&window.location?window.location:{},w=k.hostname,b=k.pathname;return y({name:"pageView",referrer:m,hostname:w,path:t||b,pageUrl:t||b,pageName:g,previousPageUrl:i.pageUrl,previousPageName:i.pageName},p,f)}e="default"in e?e.default:e,t="default"in t?t.default:t,n="default"in n?n.default:n;var d=e.storage,f="TELEMETRY_COGNITO_CREDENTIALS",p=["size","duration","position","number","count"],v=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},m=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),y=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},h=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)};return function(){function e(r){v(this,e);var o=r.app,a=void 0===o?{}:o,u=r.fips,s=r.userPoolID;this.analytics=t({app:a.name,plugins:[n({fips:u,pinpointAppId:a.id,getCredentials:function(){return i(s,{fips:u})}})]}),this.name="amazon",y(this,r)}return m(e,[{key:"logPageView",value:function(e,t){var n=l({page:e,previousPage:this.previousPage,options:t,dimensionLookup:this.dimensions,metricLookup:this.metrics});this.previousPage=n.attributes,this.analytics.track("pageView",n)}},{key:"logEvent",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=c({event:e,dimensionLookup:this.dimensions,metricLookup:this.metrics}),n=t.name;this.analytics.track(n,t)}}]),e}()});
1
+ define("telemetry",["@esri/telemetry","@esri/hub-common","analytics","@analytics/aws-pinpoint"],function(e,t,n,o){"use strict";function i(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=!0===t.fips?"-fips":"",o="https://cognito-identity"+n+".us-east-1.amazonaws.com/",i=p.get(l);if(i&&Date.now()/1e3<i.Expiration)return Promise.resolve(i);var r={method:"POST",headers:{"Content-type":"application/x-amz-json-1.1","X-Amz-Target":"AWSCognitoIdentityService.GetId"},body:JSON.stringify({IdentityPoolId:e})};return fetch(o,r).then(function(e){if(!e.ok)throw new Error(e.statusText);return e.json()}).then(function(e){var t=e.IdentityId,n={method:"POST",headers:{"Content-type":"application/x-amz-json-1.1","X-Amz-Target":"AWSCognitoIdentityService.GetCredentialsForIdentity"},body:JSON.stringify({IdentityId:t})};return fetch(o,n)}).then(function(e){if(!e.ok)throw new Error(e.statusText);return e.json()}).then(function(e){var t=e.Credentials;return p.set(l,t),t})}function r(e){var t=e.telemetryData,n=e.dimensionLookup,o=void 0===n?{}:n,i=e.excludeKeys,r=void 0===i?[]:i;return Object.keys(t).filter(function(e){return!r.includes(e)}).map(function(e){return o[e]?{key:u(o,e),value:t[e]}:{key:e,value:a(t,e)}}).reduce(function(e,t){var n=t.key,o=t.value;return e[n]=o,e},{})}function a(e,t){return"json"===t?e[t]?JSON.stringify(e[t]):"null":void 0===e[t]?"null":e[t].toString()}function u(e,t){return"dimension"+e[t]}function s(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).filter(function(e){return t[e]||m.includes(e)}).map(function(n){return t[n]?{key:c(t,n),value:e[n]}:{key:n,value:e[n]}}).reduce(function(e,t){var n=t.key,o=t.value;return e[n]=o,e},{})}function c(e,t){return"metric"+e[t]}function d(e){var n=e.event,o=void 0===n?{}:n,i=e.dimensionLookup,a=void 0===i?{}:i,u=e.metricLookup,c=void 0===u?{}:u,d=o.pathname,f=o.eventType,p=void 0===f?"other":f,l=s(o,c),m=r({telemetryData:h({eventType:p},o),dimensionLookup:a,excludeKeys:["workflow","pathname"].concat(g(Object.keys(l)),g(Object.keys(c)))}),v=h({name:p},m,l);return"undefined"!=typeof document&&document.referrer&&(v.referrer=t.getProp(document,"referrer")),"undefined"==typeof window||v.hostname||(v.hostname=t.getProp(window,"location.hostname")),v.path="undefined"!=typeof window&&window.location.pathname?t.getProp(window,"location.pathname"):d,v}function f(e){var t=e.page,n=e.previousPage,o=void 0===n?{}:n,i=e.options,a=void 0===i?{}:i,u=e.dimensionLookup,c=void 0===u?{}:u,d=e.metricLookup,f=void 0===d?{}:d,p=s(a,f),l=r({telemetryData:a,dimensionLookup:c,excludeKeys:["workflow"].concat(g(Object.keys(p)),g(Object.keys(f)))}),m=document||{},v=m.referrer,y=m.title,w=window&&window.location?window.location:{},k=w.hostname,b=w.pathname;return h({name:"pageView",referrer:v,hostname:k,path:t||b,pageUrl:t||b,pageName:y,previousPageUrl:o.pageUrl,previousPageName:o.pageName},l,p)}e="default"in e?e.default:e,n="default"in n?n.default:n,o="default"in o?o.default:o;var p=e.storage,l="TELEMETRY_COGNITO_CREDENTIALS",m=["size","duration","position","number","count"],v=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},y=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),h=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},g=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)};return function(){function e(t){v(this,e);var r=t.app,a=void 0===r?{}:r,u=t.fips,s=t.userPoolID;this.analytics=n({app:a.name,plugins:[o({fips:u,pinpointAppId:a.id,getCredentials:function(){return i(s,{fips:u})}})]}),this.name="amazon",h(this,t)}return y(e,[{key:"logPageView",value:function(e,t){var n=f({page:e,previousPage:this.previousPage,options:t,dimensionLookup:this.dimensions,metricLookup:this.metrics});this.previousPage=n.attributes,this.analytics.track("pageView",n)}},{key:"logEvent",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=d({event:e,dimensionLookup:this.dimensions,metricLookup:this.metrics}),n=t.name;this.analytics.track(n,t)}}]),e}()});
2
2
  //# sourceMappingURL=telemetry-amazon.js.amd.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-amazon.js.amd.min.js","sources":["../src/auth.js","../src/format-telemetry-attributes.js","../src/format-telemetry-metrics.js","../src/create-event-log.js","../src/create-page-view-log.js","../src/index.js"],"sourcesContent":["import Telemetry from '@esri/telemetry'\nconst { storage } = Telemetry\nconst COGNITO_KEY = 'TELEMETRY_COGNITO_CREDENTIALS'\n\nexport function getCredentials (IdentityPoolId, options = {}) {\n const fipsSubdomainSuffix = options.fips === true ? '-fips' : ''\n const COGNITO_URL = `https://cognito-identity${fipsSubdomainSuffix}.us-east-1.amazonaws.com/`\n let cached = storage.get(COGNITO_KEY)\n if (cached && Date.now() / 1000 < cached.Expiration) return Promise.resolve(cached)\n\n const fetchOptions = {\n method: 'POST',\n headers: {\n 'Content-type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'AWSCognitoIdentityService.GetId'\n },\n body: JSON.stringify({ IdentityPoolId })\n }\n\n return fetch(COGNITO_URL, fetchOptions)\n .then(response => {\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return response.json()\n })\n .then((response) => {\n const { IdentityId } = response\n const options = {\n method: 'POST',\n headers: {\n 'Content-type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'AWSCognitoIdentityService.GetCredentialsForIdentity'\n },\n body: JSON.stringify({ IdentityId })\n }\n return fetch(COGNITO_URL, options)\n })\n .then(response => {\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return response.json()\n })\n .then(({ Credentials }) => {\n storage.set(COGNITO_KEY, Credentials)\n return Credentials\n })\n}\n","export default function formatTelemetryAttributes ({ telemetryData, dimensionLookup = {}, excludeKeys = [] }) {\n return Object.keys(telemetryData)\n .filter(key => {\n return !excludeKeys.includes(key)\n })\n .map(key => {\n if (dimensionLookup[key]) {\n return {\n key: getCustomDimensionKey(dimensionLookup, key),\n value: telemetryData[key] }\n }\n\n return {\n key,\n value: getValue(telemetryData, key)\n }\n })\n .reduce((acc, { key, value }) => {\n acc[key] = value\n return acc\n }, {})\n}\n\nfunction getValue (data, key) {\n if (key === 'json') {\n return data[key] ? JSON.stringify(data[key]) : 'null'\n }\n\n return data[key] === undefined ? 'null' : data[key].toString()\n}\n\nfunction getCustomDimensionKey (lookup, key) {\n return `dimension${lookup[key]}`\n}","const METRICS = ['size', 'duration', 'position', 'number', 'count']\n\nexport default function formatTelemetryMetrtics (telemetryData, metricLookup = {}) {\n return Object.keys(telemetryData).filter(key => {\n return metricLookup[key] || METRICS.includes(key)\n }).map(key => {\n if (metricLookup[key]) {\n return {\n key: getCustomMetricKey(metricLookup, key),\n value: telemetryData[key]\n }\n }\n\n return {\n key,\n value: telemetryData[key]\n }\n }).reduce((acc, { key, value }) => {\n acc[key] = value\n return acc\n }, {});\n}\n\nfunction getCustomMetricKey (lookup, key) {\n return `metric${lookup[key]}`\n}\n","import formatTelemetryAttributes from './format-telemetry-attributes'\nimport formatTelemetryMetrics from './format-telemetry-metrics'\n\nexport default function createEventLog ({\n event = {},\n dimensionLookup = {},\n metricLookup = {}\n}) {\n const { eventType = 'other' } = event\n const metrics = formatTelemetryMetrics(event, metricLookup)\n const eventAttributes = formatTelemetryAttributes({\n telemetryData: { eventType, ...event },\n dimensionLookup,\n excludeKeys: ['workflow', ...Object.keys(metrics), ...Object.keys(metricLookup)]\n })\n\n return {\n name: eventType,\n referrer: document.referrer,\n hostname: window.location.hostname,\n path: window.location.pathname,\n ...eventAttributes,\n ...metrics\n }\n}\n","import formatTelemetryAttributes from './format-telemetry-attributes'\nimport formatTelemetryMetrics from './format-telemetry-metrics'\n\nexport default function createPageViewLog ({\n page,\n previousPage = {},\n options = {},\n dimensionLookup = {},\n metricLookup = {}\n}) {\n const metrics = formatTelemetryMetrics(options, metricLookup)\n const attributes = formatTelemetryAttributes({\n telemetryData: options,\n dimensionLookup,\n excludeKeys: ['workflow', ...Object.keys(metrics), ...Object.keys(metricLookup)]\n })\n\n const { referrer, title } = document || {}\n const { hostname, pathname } = window && window.location ? window.location : {}\n\n return {\n name: 'pageView',\n referrer,\n hostname,\n path: page || pathname,\n pageUrl: page || pathname,\n pageName: title,\n previousPageUrl: previousPage.pageUrl,\n previousPageName: previousPage.pageName,\n ...attributes,\n ...metrics\n }\n}\n","import { getCredentials } from './auth'\nimport createEventLog from './create-event-log'\nimport createPageView from './create-page-view-log'\nimport Analytics from 'analytics'\nimport awsPinpointPlugin from '@analytics/aws-pinpoint'\n\nexport default class Amazon {\n constructor(options) {\n const { app = {}, fips, userPoolID } = options\n this.analytics = Analytics({\n app: app.name,\n plugins: [\n awsPinpointPlugin({\n fips,\n pinpointAppId: app.id,\n getCredentials: () => {\n return getCredentials(userPoolID, { fips })\n },\n }),\n ],\n })\n\n this.name = 'amazon'\n Object.assign(this, options)\n }\n\n logPageView(page, options) {\n const telemetryPayload = createPageView({\n page,\n previousPage: this.previousPage,\n options,\n dimensionLookup: this.dimensions,\n metricLookup: this.metrics,\n })\n this.previousPage = telemetryPayload.attributes\n this.analytics.track('pageView', telemetryPayload)\n }\n\n logEvent(event = {}) {\n const telemetryPayload = createEventLog({\n event,\n dimensionLookup: this.dimensions,\n metricLookup: this.metrics,\n })\n const { name } = telemetryPayload\n this.analytics.track(name, telemetryPayload)\n }\n}\n"],"names":["getCredentials","IdentityPoolId","options","fipsSubdomainSuffix","fips","COGNITO_URL","cached","storage","get","COGNITO_KEY","Date","now","Expiration","Promise","resolve","fetchOptions","JSON","stringify","fetch","then","response","ok","Error","statusText","json","IdentityId","Credentials","set","formatTelemetryAttributes","telemetryData","dimensionLookup","excludeKeys","Object","keys","filter","includes","key","map","getCustomDimensionKey","getValue","reduce","acc","value","data","undefined","toString","lookup","formatTelemetryMetrtics","metricLookup","METRICS","getCustomMetricKey","createEventLog","event","eventType","metrics","formatTelemetryMetrics","eventAttributes","document","referrer","window","location","hostname","pathname","createPageViewLog","page","previousPage","attributes","title","pageUrl","pageName","Telemetry","app","userPoolID","analytics","Analytics","name","awsPinpointPlugin","id","this","telemetryPayload","createPageView","dimensions","track"],"mappings":"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"}
1
+ {"version":3,"file":"telemetry-amazon.js.amd.min.js","sources":["../src/auth.js","../src/format-telemetry-attributes.js","../src/format-telemetry-metrics.js","../src/create-event-log.js","../src/create-page-view-log.js","../src/index.js"],"sourcesContent":["import Telemetry from '@esri/telemetry'\nconst { storage } = Telemetry\nconst COGNITO_KEY = 'TELEMETRY_COGNITO_CREDENTIALS'\n\nexport function getCredentials (IdentityPoolId, options = {}) {\n const fipsSubdomainSuffix = options.fips === true ? '-fips' : ''\n const COGNITO_URL = `https://cognito-identity${fipsSubdomainSuffix}.us-east-1.amazonaws.com/`\n let cached = storage.get(COGNITO_KEY)\n if (cached && Date.now() / 1000 < cached.Expiration) return Promise.resolve(cached)\n\n const fetchOptions = {\n method: 'POST',\n headers: {\n 'Content-type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'AWSCognitoIdentityService.GetId'\n },\n body: JSON.stringify({ IdentityPoolId })\n }\n\n return fetch(COGNITO_URL, fetchOptions)\n .then(response => {\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return response.json()\n })\n .then((response) => {\n const { IdentityId } = response\n const options = {\n method: 'POST',\n headers: {\n 'Content-type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'AWSCognitoIdentityService.GetCredentialsForIdentity'\n },\n body: JSON.stringify({ IdentityId })\n }\n return fetch(COGNITO_URL, options)\n })\n .then(response => {\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return response.json()\n })\n .then(({ Credentials }) => {\n storage.set(COGNITO_KEY, Credentials)\n return Credentials\n })\n}\n","export default function formatTelemetryAttributes ({ telemetryData, dimensionLookup = {}, excludeKeys = [] }) {\n return Object.keys(telemetryData)\n .filter(key => {\n return !excludeKeys.includes(key)\n })\n .map(key => {\n if (dimensionLookup[key]) {\n return {\n key: getCustomDimensionKey(dimensionLookup, key),\n value: telemetryData[key] }\n }\n\n return {\n key,\n value: getValue(telemetryData, key)\n }\n })\n .reduce((acc, { key, value }) => {\n acc[key] = value\n return acc\n }, {})\n}\n\nfunction getValue (data, key) {\n if (key === 'json') {\n return data[key] ? JSON.stringify(data[key]) : 'null'\n }\n\n return data[key] === undefined ? 'null' : data[key].toString()\n}\n\nfunction getCustomDimensionKey (lookup, key) {\n return `dimension${lookup[key]}`\n}","const METRICS = ['size', 'duration', 'position', 'number', 'count']\n\nexport default function formatTelemetryMetrtics (telemetryData, metricLookup = {}) {\n return Object.keys(telemetryData).filter(key => {\n return metricLookup[key] || METRICS.includes(key)\n }).map(key => {\n if (metricLookup[key]) {\n return {\n key: getCustomMetricKey(metricLookup, key),\n value: telemetryData[key]\n }\n }\n\n return {\n key,\n value: telemetryData[key]\n }\n }).reduce((acc, { key, value }) => {\n acc[key] = value\n return acc\n }, {});\n}\n\nfunction getCustomMetricKey (lookup, key) {\n return `metric${lookup[key]}`\n}\n","import { getProp } from '@esri/hub-common';\nimport formatTelemetryAttributes from './format-telemetry-attributes'\nimport formatTelemetryMetrics from './format-telemetry-metrics'\n\n\nexport default function createEventLog({\n event = {},\n dimensionLookup = {},\n metricLookup = {},\n}) {\n const { pathname: eventPathname, eventType = 'other' } = event\n const metrics = formatTelemetryMetrics(event, metricLookup)\n const eventAttributes = formatTelemetryAttributes({\n telemetryData: { eventType, ...event },\n dimensionLookup,\n excludeKeys: [\n 'workflow',\n 'pathname',\n ...Object.keys(metrics),\n ...Object.keys(metricLookup),\n ],\n })\n\n const telemetryPayload = {\n name: eventType,\n ...eventAttributes,\n ...metrics,\n }\n\n // Browser document check and set referrer if it exists\n if (typeof document !== 'undefined' && document.referrer) {\n telemetryPayload.referrer = getProp(document, 'referrer')\n }\n\n // Browser hostname check and set if it exists\n if (typeof window !== 'undefined' && !telemetryPayload.hostname) {\n telemetryPayload.hostname = getProp(window, 'location.hostname')\n }\n\n // Browser and server pathname check and set\n telemetryPayload.path = typeof window !== 'undefined' && window.location.pathname ? getProp(window, 'location.pathname') : eventPathname\n\n return telemetryPayload\n}\n","import formatTelemetryAttributes from './format-telemetry-attributes'\nimport formatTelemetryMetrics from './format-telemetry-metrics'\n\nexport default function createPageViewLog ({\n page,\n previousPage = {},\n options = {},\n dimensionLookup = {},\n metricLookup = {}\n}) {\n const metrics = formatTelemetryMetrics(options, metricLookup)\n const attributes = formatTelemetryAttributes({\n telemetryData: options,\n dimensionLookup,\n excludeKeys: ['workflow', ...Object.keys(metrics), ...Object.keys(metricLookup)]\n })\n\n const { referrer, title } = document || {}\n const { hostname, pathname } = window && window.location ? window.location : {}\n\n return {\n name: 'pageView',\n referrer,\n hostname,\n path: page || pathname,\n pageUrl: page || pathname,\n pageName: title,\n previousPageUrl: previousPage.pageUrl,\n previousPageName: previousPage.pageName,\n ...attributes,\n ...metrics\n }\n}\n","import { getCredentials } from './auth'\nimport createEventLog from './create-event-log'\nimport createPageView from './create-page-view-log'\nimport Analytics from 'analytics'\nimport awsPinpointPlugin from '@analytics/aws-pinpoint'\n\nexport default class Amazon {\n constructor(options) {\n const { app = {}, fips, userPoolID } = options\n this.analytics = Analytics({\n app: app.name,\n plugins: [\n awsPinpointPlugin({\n fips,\n pinpointAppId: app.id,\n getCredentials: () => {\n return getCredentials(userPoolID, { fips })\n },\n }),\n ],\n })\n\n this.name = 'amazon'\n Object.assign(this, options)\n }\n\n logPageView(page, options) {\n const telemetryPayload = createPageView({\n page,\n previousPage: this.previousPage,\n options,\n dimensionLookup: this.dimensions,\n metricLookup: this.metrics,\n })\n this.previousPage = telemetryPayload.attributes\n this.analytics.track('pageView', telemetryPayload)\n }\n\n logEvent(event = {}) {\n const telemetryPayload = createEventLog({\n event,\n dimensionLookup: this.dimensions,\n metricLookup: this.metrics,\n })\n const { name } = telemetryPayload\n this.analytics.track(name, telemetryPayload)\n }\n}\n"],"names":["getCredentials","IdentityPoolId","options","fipsSubdomainSuffix","fips","COGNITO_URL","cached","storage","get","COGNITO_KEY","Date","now","Expiration","Promise","resolve","fetchOptions","JSON","stringify","fetch","then","response","ok","Error","statusText","json","IdentityId","Credentials","set","formatTelemetryAttributes","telemetryData","dimensionLookup","excludeKeys","Object","keys","filter","includes","key","map","getCustomDimensionKey","getValue","reduce","acc","value","data","undefined","toString","lookup","formatTelemetryMetrtics","metricLookup","METRICS","getCustomMetricKey","createEventLog","event","eventPathname","pathname","eventType","metrics","formatTelemetryMetrics","eventAttributes","telemetryPayload","document","referrer","getProp","window","hostname","path","location","createPageViewLog","page","previousPage","attributes","title","pageUrl","pageName","Telemetry","app","userPoolID","analytics","Analytics","name","awsPinpointPlugin","id","this","createPageView","dimensions","track"],"mappings":"8HAIA,SAAgBA,GAAgBC,MAAgBC,6DACxCC,GAAuC,IAAjBD,EAAQE,KAAgB,QAAU,GACxDC,6BAAyCF,8BAC3CG,EAASC,EAAQC,IAAIC,MACrBH,GAAUI,KAAKC,MAAQ,IAAOL,EAAOM,WAAY,MAAOC,SAAQC,QAAQR,MAEtES,WACI,+BAEU,4CACA,wCAEZC,KAAKC,WAAYhB,0BAGlBiB,OAAMb,EAAaU,GACvBI,KAAK,gBACCC,EAASC,QACN,IAAIC,OAAMF,EAASG,kBAEpBH,GAASI,SAEjBL,KAAK,SAACC,MACGK,GAAeL,EAAfK,WACFvB,UACI,+BAEU,4CACA,4DAEZc,KAAKC,WAAYQ,sBAElBP,OAAMb,EAAaH,KAE3BiB,KAAK,gBACCC,EAASC,QACN,IAAIC,OAAMF,EAASG,kBAEpBH,GAASI,SAEjBL,KAAK,eAAGO,KAAAA,qBACCC,IAAIlB,EAAaiB,GAClBA,IC9CE,QAASE,SAA6BC,KAAAA,kBAAeC,gBAAAA,sBAAsBC,YAAAA,wBACjFC,QAAOC,KAAKJ,GAChBK,OAAO,mBACEH,EAAYI,SAASC,KAE9BC,IAAI,kBACCP,GAAgBM,QAEXE,EAAsBR,EAAiBM,SACrCP,EAAcO,iBAKhBG,EAASV,EAAeO,MAGlCI,OAAO,SAACC,QAAOL,KAAAA,IAAKM,IAAAA,eACfN,GAAOM,EACJD,OAIb,QAASF,GAAUI,EAAMP,SACX,SAARA,EACKO,EAAKP,GAAOpB,KAAKC,UAAU0B,EAAKP,IAAQ,WAG5BQ,KAAdD,EAAKP,GAAqB,OAASO,EAAKP,GAAKS,WAGtD,QAASP,GAAuBQ,EAAQV,qBACnBU,EAAOV,GC9B5B,QAAwBW,GAAyBlB,MAAemB,mEACvDhB,QAAOC,KAAKJ,GAAeK,OAAO,kBAChCc,GAAaZ,IAAQa,EAAQd,SAASC,KAC5CC,IAAI,kBACDW,GAAaZ,QAERc,EAAmBF,EAAcZ,SAC/BP,EAAcO,iBAMhBP,EAAcO,MAEtBI,OAAO,SAACC,QAAOL,KAAAA,IAAKM,IAAAA,eACjBN,GAAOM,EACJD,OAIX,QAASS,GAAoBJ,EAAQV,kBACnBU,EAAOV,GCnBV,QAASe,cACtBC,MAAAA,sBACAtB,gBAAAA,sBACAkB,aAAAA,kBAEkBK,EAAuCD,EAAjDE,WAAiDF,EAAxBG,UAAAA,aAAY,UACvCC,EAAUC,EAAuBL,EAAOJ,GACxCU,EAAkB9B,oBACL2B,aAAcH,kCAG7B,WACA,qBACGpB,OAAOC,KAAKuB,MACZxB,OAAOC,KAAKe,OAIbW,UACEJ,GACHG,EACAF,SAImB,mBAAbI,WAA4BA,SAASC,aAC7BA,SAAWC,UAAQF,SAAU,aAI1B,mBAAXG,SAA2BJ,EAAiBK,aACpCA,SAAWF,UAAQC,OAAQ,wBAI7BE,KAAyB,mBAAXF,SAA0BA,OAAOG,SAASZ,SAAWQ,UAAQC,OAAQ,qBAAuBV,EAEpHM,ECvCM,QAASQ,SACtBC,KAAAA,SACAC,aAAAA,sBACAnE,QAAAA,sBACA4B,gBAAAA,sBACAkB,aAAAA,kBAEMQ,EAAUC,EAAuBvD,EAAS8C,GAC1CsB,EAAa1C,iBACF1B,iCAED,qBAAe8B,OAAOC,KAAKuB,MAAaxB,OAAOC,KAAKe,SAGxCY,aAApBC,IAAAA,SAAUU,IAAAA,QACaR,QAAUA,OAAOG,SAAWH,OAAOG,YAA1DF,IAAAA,SAAUV,IAAAA,wBAGV,sCAGAc,GAAQd,UACLc,GAAQd,WACPiB,kBACOF,EAAaG,yBACZH,EAAaI,UAC5BH,EACAd,0FJ7BCjD,GAAYmE,EAAZnE,QACFE,EAAc,gCEFdwC,GAAW,OAAQ,WAAY,WAAY,SAAU,upBGO7C/C,mBAC6BA,EAA/ByE,IAAAA,kBAAUvE,EAAqBF,EAArBE,KAAMwE,EAAe1E,EAAf0E,gBACnBC,UAAYC,OACVH,EAAII,cAEPC,wBAEiBL,EAAIM,kBACH,iBACPjF,GAAe4E,GAAcxE,oBAMvC2E,KAAO,WACEG,KAAMhF,iDAGVkE,EAAMlE,MACVyD,GAAmBwB,uBAETD,KAAKb,uCAEFa,KAAKE,wBACRF,KAAK1B,eAEhBa,aAAeV,EAAiBW,gBAChCO,UAAUQ,MAAM,WAAY1B,yCAG1BP,6DACDO,EAAmBR,2BAEN+B,KAAKE,wBACRF,KAAK1B,UAEbuB,EAASpB,EAAToB,UACHF,UAAUQ,MAAMN,EAAMpB"}
@@ -1,4 +1,4 @@
1
- define('telemetry', ['@esri/telemetry', 'analytics', '@analytics/aws-pinpoint'], function (Telemetry, Analytics, awsPinpointPlugin) { 'use strict';
1
+ define('telemetry', ['@esri/telemetry', '@esri/hub-common', 'analytics', '@analytics/aws-pinpoint'], function (Telemetry, _esri_hubCommon, Analytics, awsPinpointPlugin) { 'use strict';
2
2
 
3
3
  Telemetry = 'default' in Telemetry ? Telemetry['default'] : Telemetry;
4
4
  Analytics = 'default' in Analytics ? Analytics['default'] : Analytics;
@@ -223,22 +223,35 @@ function createEventLog(_ref) {
223
223
  dimensionLookup = _ref$dimensionLookup === undefined ? {} : _ref$dimensionLookup,
224
224
  _ref$metricLookup = _ref.metricLookup,
225
225
  metricLookup = _ref$metricLookup === undefined ? {} : _ref$metricLookup;
226
- var _event$eventType = event.eventType,
226
+ var eventPathname = event.pathname,
227
+ _event$eventType = event.eventType,
227
228
  eventType = _event$eventType === undefined ? 'other' : _event$eventType;
228
229
 
229
230
  var metrics = formatTelemetryMetrtics(event, metricLookup);
230
231
  var eventAttributes = formatTelemetryAttributes({
231
232
  telemetryData: _extends({ eventType: eventType }, event),
232
233
  dimensionLookup: dimensionLookup,
233
- excludeKeys: ['workflow'].concat(toConsumableArray(Object.keys(metrics)), toConsumableArray(Object.keys(metricLookup)))
234
+ excludeKeys: ['workflow', 'pathname'].concat(toConsumableArray(Object.keys(metrics)), toConsumableArray(Object.keys(metricLookup)))
234
235
  });
235
236
 
236
- return _extends({
237
- name: eventType,
238
- referrer: document.referrer,
239
- hostname: window.location.hostname,
240
- path: window.location.pathname
237
+ var telemetryPayload = _extends({
238
+ name: eventType
241
239
  }, eventAttributes, metrics);
240
+
241
+ // Browser document check and set referrer if it exists
242
+ if (typeof document !== 'undefined' && document.referrer) {
243
+ telemetryPayload.referrer = _esri_hubCommon.getProp(document, 'referrer');
244
+ }
245
+
246
+ // Browser hostname check and set if it exists
247
+ if (typeof window !== 'undefined' && !telemetryPayload.hostname) {
248
+ telemetryPayload.hostname = _esri_hubCommon.getProp(window, 'location.hostname');
249
+ }
250
+
251
+ // Browser and server pathname check and set
252
+ telemetryPayload.path = typeof window !== 'undefined' && window.location.pathname ? _esri_hubCommon.getProp(window, 'location.pathname') : eventPathname;
253
+
254
+ return telemetryPayload;
242
255
  }
243
256
 
244
257
  function createPageViewLog(_ref) {
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-amazon.js.dojo.js","sources":["../src/auth.js","../src/format-telemetry-attributes.js","../src/format-telemetry-metrics.js","../src/create-event-log.js","../src/create-page-view-log.js","../src/index.js"],"sourcesContent":["import Telemetry from '@esri/telemetry'\nconst { storage } = Telemetry\nconst COGNITO_KEY = 'TELEMETRY_COGNITO_CREDENTIALS'\n\nexport function getCredentials (IdentityPoolId, options = {}) {\n const fipsSubdomainSuffix = options.fips === true ? '-fips' : ''\n const COGNITO_URL = `https://cognito-identity${fipsSubdomainSuffix}.us-east-1.amazonaws.com/`\n let cached = storage.get(COGNITO_KEY)\n if (cached && Date.now() / 1000 < cached.Expiration) return Promise.resolve(cached)\n\n const fetchOptions = {\n method: 'POST',\n headers: {\n 'Content-type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'AWSCognitoIdentityService.GetId'\n },\n body: JSON.stringify({ IdentityPoolId })\n }\n\n return fetch(COGNITO_URL, fetchOptions)\n .then(response => {\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return response.json()\n })\n .then((response) => {\n const { IdentityId } = response\n const options = {\n method: 'POST',\n headers: {\n 'Content-type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'AWSCognitoIdentityService.GetCredentialsForIdentity'\n },\n body: JSON.stringify({ IdentityId })\n }\n return fetch(COGNITO_URL, options)\n })\n .then(response => {\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return response.json()\n })\n .then(({ Credentials }) => {\n storage.set(COGNITO_KEY, Credentials)\n return Credentials\n })\n}\n","export default function formatTelemetryAttributes ({ telemetryData, dimensionLookup = {}, excludeKeys = [] }) {\n return Object.keys(telemetryData)\n .filter(key => {\n return !excludeKeys.includes(key)\n })\n .map(key => {\n if (dimensionLookup[key]) {\n return {\n key: getCustomDimensionKey(dimensionLookup, key),\n value: telemetryData[key] }\n }\n\n return {\n key,\n value: getValue(telemetryData, key)\n }\n })\n .reduce((acc, { key, value }) => {\n acc[key] = value\n return acc\n }, {})\n}\n\nfunction getValue (data, key) {\n if (key === 'json') {\n return data[key] ? JSON.stringify(data[key]) : 'null'\n }\n\n return data[key] === undefined ? 'null' : data[key].toString()\n}\n\nfunction getCustomDimensionKey (lookup, key) {\n return `dimension${lookup[key]}`\n}","const METRICS = ['size', 'duration', 'position', 'number', 'count']\n\nexport default function formatTelemetryMetrtics (telemetryData, metricLookup = {}) {\n return Object.keys(telemetryData).filter(key => {\n return metricLookup[key] || METRICS.includes(key)\n }).map(key => {\n if (metricLookup[key]) {\n return {\n key: getCustomMetricKey(metricLookup, key),\n value: telemetryData[key]\n }\n }\n\n return {\n key,\n value: telemetryData[key]\n }\n }).reduce((acc, { key, value }) => {\n acc[key] = value\n return acc\n }, {});\n}\n\nfunction getCustomMetricKey (lookup, key) {\n return `metric${lookup[key]}`\n}\n","import formatTelemetryAttributes from './format-telemetry-attributes'\nimport formatTelemetryMetrics from './format-telemetry-metrics'\n\nexport default function createEventLog ({\n event = {},\n dimensionLookup = {},\n metricLookup = {}\n}) {\n const { eventType = 'other' } = event\n const metrics = formatTelemetryMetrics(event, metricLookup)\n const eventAttributes = formatTelemetryAttributes({\n telemetryData: { eventType, ...event },\n dimensionLookup,\n excludeKeys: ['workflow', ...Object.keys(metrics), ...Object.keys(metricLookup)]\n })\n\n return {\n name: eventType,\n referrer: document.referrer,\n hostname: window.location.hostname,\n path: window.location.pathname,\n ...eventAttributes,\n ...metrics\n }\n}\n","import formatTelemetryAttributes from './format-telemetry-attributes'\nimport formatTelemetryMetrics from './format-telemetry-metrics'\n\nexport default function createPageViewLog ({\n page,\n previousPage = {},\n options = {},\n dimensionLookup = {},\n metricLookup = {}\n}) {\n const metrics = formatTelemetryMetrics(options, metricLookup)\n const attributes = formatTelemetryAttributes({\n telemetryData: options,\n dimensionLookup,\n excludeKeys: ['workflow', ...Object.keys(metrics), ...Object.keys(metricLookup)]\n })\n\n const { referrer, title } = document || {}\n const { hostname, pathname } = window && window.location ? window.location : {}\n\n return {\n name: 'pageView',\n referrer,\n hostname,\n path: page || pathname,\n pageUrl: page || pathname,\n pageName: title,\n previousPageUrl: previousPage.pageUrl,\n previousPageName: previousPage.pageName,\n ...attributes,\n ...metrics\n }\n}\n","import { getCredentials } from './auth'\nimport createEventLog from './create-event-log'\nimport createPageView from './create-page-view-log'\nimport Analytics from 'analytics'\nimport awsPinpointPlugin from '@analytics/aws-pinpoint'\n\nexport default class Amazon {\n constructor(options) {\n const { app = {}, fips, userPoolID } = options\n this.analytics = Analytics({\n app: app.name,\n plugins: [\n awsPinpointPlugin({\n fips,\n pinpointAppId: app.id,\n getCredentials: () => {\n return getCredentials(userPoolID, { fips })\n },\n }),\n ],\n })\n\n this.name = 'amazon'\n Object.assign(this, options)\n }\n\n logPageView(page, options) {\n const telemetryPayload = createPageView({\n page,\n previousPage: this.previousPage,\n options,\n dimensionLookup: this.dimensions,\n metricLookup: this.metrics,\n })\n this.previousPage = telemetryPayload.attributes\n this.analytics.track('pageView', telemetryPayload)\n }\n\n logEvent(event = {}) {\n const telemetryPayload = createEventLog({\n event,\n dimensionLookup: this.dimensions,\n metricLookup: this.metrics,\n })\n const { name } = telemetryPayload\n this.analytics.track(name, telemetryPayload)\n }\n}\n"],"names":["storage","Telemetry","COGNITO_KEY","getCredentials","IdentityPoolId","options","fipsSubdomainSuffix","fips","COGNITO_URL","cached","get","Date","now","Expiration","Promise","resolve","fetchOptions","JSON","stringify","fetch","then","response","ok","Error","statusText","json","IdentityId","Credentials","set","formatTelemetryAttributes","telemetryData","dimensionLookup","excludeKeys","Object","keys","filter","includes","key","map","getCustomDimensionKey","getValue","reduce","acc","value","data","undefined","toString","lookup","METRICS","formatTelemetryMetrtics","metricLookup","getCustomMetricKey","createEventLog","event","eventType","metrics","formatTelemetryMetrics","eventAttributes","document","referrer","window","location","hostname","pathname","createPageViewLog","page","previousPage","attributes","title","pageUrl","pageName","Amazon","app","userPoolID","analytics","Analytics","name","awsPinpointPlugin","id","telemetryPayload","createPageView","dimensions","track"],"mappings":"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"}
1
+ {"version":3,"file":"telemetry-amazon.js.dojo.js","sources":["../src/auth.js","../src/format-telemetry-attributes.js","../src/format-telemetry-metrics.js","../src/create-event-log.js","../src/create-page-view-log.js","../src/index.js"],"sourcesContent":["import Telemetry from '@esri/telemetry'\nconst { storage } = Telemetry\nconst COGNITO_KEY = 'TELEMETRY_COGNITO_CREDENTIALS'\n\nexport function getCredentials (IdentityPoolId, options = {}) {\n const fipsSubdomainSuffix = options.fips === true ? '-fips' : ''\n const COGNITO_URL = `https://cognito-identity${fipsSubdomainSuffix}.us-east-1.amazonaws.com/`\n let cached = storage.get(COGNITO_KEY)\n if (cached && Date.now() / 1000 < cached.Expiration) return Promise.resolve(cached)\n\n const fetchOptions = {\n method: 'POST',\n headers: {\n 'Content-type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'AWSCognitoIdentityService.GetId'\n },\n body: JSON.stringify({ IdentityPoolId })\n }\n\n return fetch(COGNITO_URL, fetchOptions)\n .then(response => {\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return response.json()\n })\n .then((response) => {\n const { IdentityId } = response\n const options = {\n method: 'POST',\n headers: {\n 'Content-type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'AWSCognitoIdentityService.GetCredentialsForIdentity'\n },\n body: JSON.stringify({ IdentityId })\n }\n return fetch(COGNITO_URL, options)\n })\n .then(response => {\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return response.json()\n })\n .then(({ Credentials }) => {\n storage.set(COGNITO_KEY, Credentials)\n return Credentials\n })\n}\n","export default function formatTelemetryAttributes ({ telemetryData, dimensionLookup = {}, excludeKeys = [] }) {\n return Object.keys(telemetryData)\n .filter(key => {\n return !excludeKeys.includes(key)\n })\n .map(key => {\n if (dimensionLookup[key]) {\n return {\n key: getCustomDimensionKey(dimensionLookup, key),\n value: telemetryData[key] }\n }\n\n return {\n key,\n value: getValue(telemetryData, key)\n }\n })\n .reduce((acc, { key, value }) => {\n acc[key] = value\n return acc\n }, {})\n}\n\nfunction getValue (data, key) {\n if (key === 'json') {\n return data[key] ? JSON.stringify(data[key]) : 'null'\n }\n\n return data[key] === undefined ? 'null' : data[key].toString()\n}\n\nfunction getCustomDimensionKey (lookup, key) {\n return `dimension${lookup[key]}`\n}","const METRICS = ['size', 'duration', 'position', 'number', 'count']\n\nexport default function formatTelemetryMetrtics (telemetryData, metricLookup = {}) {\n return Object.keys(telemetryData).filter(key => {\n return metricLookup[key] || METRICS.includes(key)\n }).map(key => {\n if (metricLookup[key]) {\n return {\n key: getCustomMetricKey(metricLookup, key),\n value: telemetryData[key]\n }\n }\n\n return {\n key,\n value: telemetryData[key]\n }\n }).reduce((acc, { key, value }) => {\n acc[key] = value\n return acc\n }, {});\n}\n\nfunction getCustomMetricKey (lookup, key) {\n return `metric${lookup[key]}`\n}\n","import { getProp } from '@esri/hub-common';\nimport formatTelemetryAttributes from './format-telemetry-attributes'\nimport formatTelemetryMetrics from './format-telemetry-metrics'\n\n\nexport default function createEventLog({\n event = {},\n dimensionLookup = {},\n metricLookup = {},\n}) {\n const { pathname: eventPathname, eventType = 'other' } = event\n const metrics = formatTelemetryMetrics(event, metricLookup)\n const eventAttributes = formatTelemetryAttributes({\n telemetryData: { eventType, ...event },\n dimensionLookup,\n excludeKeys: [\n 'workflow',\n 'pathname',\n ...Object.keys(metrics),\n ...Object.keys(metricLookup),\n ],\n })\n\n const telemetryPayload = {\n name: eventType,\n ...eventAttributes,\n ...metrics,\n }\n\n // Browser document check and set referrer if it exists\n if (typeof document !== 'undefined' && document.referrer) {\n telemetryPayload.referrer = getProp(document, 'referrer')\n }\n\n // Browser hostname check and set if it exists\n if (typeof window !== 'undefined' && !telemetryPayload.hostname) {\n telemetryPayload.hostname = getProp(window, 'location.hostname')\n }\n\n // Browser and server pathname check and set\n telemetryPayload.path = typeof window !== 'undefined' && window.location.pathname ? getProp(window, 'location.pathname') : eventPathname\n\n return telemetryPayload\n}\n","import formatTelemetryAttributes from './format-telemetry-attributes'\nimport formatTelemetryMetrics from './format-telemetry-metrics'\n\nexport default function createPageViewLog ({\n page,\n previousPage = {},\n options = {},\n dimensionLookup = {},\n metricLookup = {}\n}) {\n const metrics = formatTelemetryMetrics(options, metricLookup)\n const attributes = formatTelemetryAttributes({\n telemetryData: options,\n dimensionLookup,\n excludeKeys: ['workflow', ...Object.keys(metrics), ...Object.keys(metricLookup)]\n })\n\n const { referrer, title } = document || {}\n const { hostname, pathname } = window && window.location ? window.location : {}\n\n return {\n name: 'pageView',\n referrer,\n hostname,\n path: page || pathname,\n pageUrl: page || pathname,\n pageName: title,\n previousPageUrl: previousPage.pageUrl,\n previousPageName: previousPage.pageName,\n ...attributes,\n ...metrics\n }\n}\n","import { getCredentials } from './auth'\nimport createEventLog from './create-event-log'\nimport createPageView from './create-page-view-log'\nimport Analytics from 'analytics'\nimport awsPinpointPlugin from '@analytics/aws-pinpoint'\n\nexport default class Amazon {\n constructor(options) {\n const { app = {}, fips, userPoolID } = options\n this.analytics = Analytics({\n app: app.name,\n plugins: [\n awsPinpointPlugin({\n fips,\n pinpointAppId: app.id,\n getCredentials: () => {\n return getCredentials(userPoolID, { fips })\n },\n }),\n ],\n })\n\n this.name = 'amazon'\n Object.assign(this, options)\n }\n\n logPageView(page, options) {\n const telemetryPayload = createPageView({\n page,\n previousPage: this.previousPage,\n options,\n dimensionLookup: this.dimensions,\n metricLookup: this.metrics,\n })\n this.previousPage = telemetryPayload.attributes\n this.analytics.track('pageView', telemetryPayload)\n }\n\n logEvent(event = {}) {\n const telemetryPayload = createEventLog({\n event,\n dimensionLookup: this.dimensions,\n metricLookup: this.metrics,\n })\n const { name } = telemetryPayload\n this.analytics.track(name, telemetryPayload)\n }\n}\n"],"names":["storage","Telemetry","COGNITO_KEY","getCredentials","IdentityPoolId","options","fipsSubdomainSuffix","fips","COGNITO_URL","cached","get","Date","now","Expiration","Promise","resolve","fetchOptions","JSON","stringify","fetch","then","response","ok","Error","statusText","json","IdentityId","Credentials","set","formatTelemetryAttributes","telemetryData","dimensionLookup","excludeKeys","Object","keys","filter","includes","key","map","getCustomDimensionKey","getValue","reduce","acc","value","data","undefined","toString","lookup","METRICS","formatTelemetryMetrtics","metricLookup","getCustomMetricKey","createEventLog","event","eventPathname","pathname","eventType","metrics","formatTelemetryMetrics","eventAttributes","telemetryPayload","document","referrer","getProp","window","hostname","path","location","createPageViewLog","page","previousPage","attributes","title","pageUrl","pageName","Amazon","app","userPoolID","analytics","Analytics","name","awsPinpointPlugin","id","createPageView","dimensions","track"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- define("telemetry",["@esri/telemetry","analytics","@analytics/aws-pinpoint"],function(e,t,n){"use strict";function i(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=!0===t.fips?"-fips":"",i="https://cognito-identity"+n+".us-east-1.amazonaws.com/",r=d.get(f);if(r&&Date.now()/1e3<r.Expiration)return Promise.resolve(r);var o={method:"POST",headers:{"Content-type":"application/x-amz-json-1.1","X-Amz-Target":"AWSCognitoIdentityService.GetId"},body:JSON.stringify({IdentityPoolId:e})};return fetch(i,o).then(function(e){if(!e.ok)throw new Error(e.statusText);return e.json()}).then(function(e){var t=e.IdentityId,n={method:"POST",headers:{"Content-type":"application/x-amz-json-1.1","X-Amz-Target":"AWSCognitoIdentityService.GetCredentialsForIdentity"},body:JSON.stringify({IdentityId:t})};return fetch(i,n)}).then(function(e){if(!e.ok)throw new Error(e.statusText);return e.json()}).then(function(e){var t=e.Credentials;return d.set(f,t),t})}function r(e){var t=e.telemetryData,n=e.dimensionLookup,i=void 0===n?{}:n,r=e.excludeKeys,u=void 0===r?[]:r;return Object.keys(t).filter(function(e){return!u.includes(e)}).map(function(e){return i[e]?{key:a(i,e),value:t[e]}:{key:e,value:o(t,e)}}).reduce(function(e,t){var n=t.key,i=t.value;return e[n]=i,e},{})}function o(e,t){return"json"===t?e[t]?JSON.stringify(e[t]):"null":void 0===e[t]?"null":e[t].toString()}function a(e,t){return"dimension"+e[t]}function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).filter(function(e){return t[e]||p.includes(e)}).map(function(n){return t[n]?{key:s(t,n),value:e[n]}:{key:n,value:e[n]}}).reduce(function(e,t){var n=t.key,i=t.value;return e[n]=i,e},{})}function s(e,t){return"metric"+e[t]}function c(e){var t=e.event,n=void 0===t?{}:t,i=e.dimensionLookup,o=void 0===i?{}:i,a=e.metricLookup,s=void 0===a?{}:a,c=n.eventType,l=void 0===c?"other":c,d=u(n,s),f=r({telemetryData:y({eventType:l},n),dimensionLookup:o,excludeKeys:["workflow"].concat(h(Object.keys(d)),h(Object.keys(s)))});return y({name:l,referrer:document.referrer,hostname:window.location.hostname,path:window.location.pathname},f,d)}function l(e){var t=e.page,n=e.previousPage,i=void 0===n?{}:n,o=e.options,a=void 0===o?{}:o,s=e.dimensionLookup,c=void 0===s?{}:s,l=e.metricLookup,d=void 0===l?{}:l,f=u(a,d),p=r({telemetryData:a,dimensionLookup:c,excludeKeys:["workflow"].concat(h(Object.keys(f)),h(Object.keys(d)))}),v=document||{},m=v.referrer,g=v.title,k=window&&window.location?window.location:{},w=k.hostname,b=k.pathname;return y({name:"pageView",referrer:m,hostname:w,path:t||b,pageUrl:t||b,pageName:g,previousPageUrl:i.pageUrl,previousPageName:i.pageName},p,f)}e="default"in e?e.default:e,t="default"in t?t.default:t,n="default"in n?n.default:n;var d=e.storage,f="TELEMETRY_COGNITO_CREDENTIALS",p=["size","duration","position","number","count"],v=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},m=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),y=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},h=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)};return function(){function e(r){v(this,e);var o=r.app,a=void 0===o?{}:o,u=r.fips,s=r.userPoolID;this.analytics=t({app:a.name,plugins:[n({fips:u,pinpointAppId:a.id,getCredentials:function(){return i(s,{fips:u})}})]}),this.name="amazon",y(this,r)}return m(e,[{key:"logPageView",value:function(e,t){var n=l({page:e,previousPage:this.previousPage,options:t,dimensionLookup:this.dimensions,metricLookup:this.metrics});this.previousPage=n.attributes,this.analytics.track("pageView",n)}},{key:"logEvent",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=c({event:e,dimensionLookup:this.dimensions,metricLookup:this.metrics}),n=t.name;this.analytics.track(n,t)}}]),e}()});
1
+ define("telemetry",["@esri/telemetry","@esri/hub-common","analytics","@analytics/aws-pinpoint"],function(e,t,n,o){"use strict";function i(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=!0===t.fips?"-fips":"",o="https://cognito-identity"+n+".us-east-1.amazonaws.com/",i=p.get(l);if(i&&Date.now()/1e3<i.Expiration)return Promise.resolve(i);var r={method:"POST",headers:{"Content-type":"application/x-amz-json-1.1","X-Amz-Target":"AWSCognitoIdentityService.GetId"},body:JSON.stringify({IdentityPoolId:e})};return fetch(o,r).then(function(e){if(!e.ok)throw new Error(e.statusText);return e.json()}).then(function(e){var t=e.IdentityId,n={method:"POST",headers:{"Content-type":"application/x-amz-json-1.1","X-Amz-Target":"AWSCognitoIdentityService.GetCredentialsForIdentity"},body:JSON.stringify({IdentityId:t})};return fetch(o,n)}).then(function(e){if(!e.ok)throw new Error(e.statusText);return e.json()}).then(function(e){var t=e.Credentials;return p.set(l,t),t})}function r(e){var t=e.telemetryData,n=e.dimensionLookup,o=void 0===n?{}:n,i=e.excludeKeys,r=void 0===i?[]:i;return Object.keys(t).filter(function(e){return!r.includes(e)}).map(function(e){return o[e]?{key:u(o,e),value:t[e]}:{key:e,value:a(t,e)}}).reduce(function(e,t){var n=t.key,o=t.value;return e[n]=o,e},{})}function a(e,t){return"json"===t?e[t]?JSON.stringify(e[t]):"null":void 0===e[t]?"null":e[t].toString()}function u(e,t){return"dimension"+e[t]}function s(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).filter(function(e){return t[e]||m.includes(e)}).map(function(n){return t[n]?{key:c(t,n),value:e[n]}:{key:n,value:e[n]}}).reduce(function(e,t){var n=t.key,o=t.value;return e[n]=o,e},{})}function c(e,t){return"metric"+e[t]}function d(e){var n=e.event,o=void 0===n?{}:n,i=e.dimensionLookup,a=void 0===i?{}:i,u=e.metricLookup,c=void 0===u?{}:u,d=o.pathname,f=o.eventType,p=void 0===f?"other":f,l=s(o,c),m=r({telemetryData:h({eventType:p},o),dimensionLookup:a,excludeKeys:["workflow","pathname"].concat(g(Object.keys(l)),g(Object.keys(c)))}),v=h({name:p},m,l);return"undefined"!=typeof document&&document.referrer&&(v.referrer=t.getProp(document,"referrer")),"undefined"==typeof window||v.hostname||(v.hostname=t.getProp(window,"location.hostname")),v.path="undefined"!=typeof window&&window.location.pathname?t.getProp(window,"location.pathname"):d,v}function f(e){var t=e.page,n=e.previousPage,o=void 0===n?{}:n,i=e.options,a=void 0===i?{}:i,u=e.dimensionLookup,c=void 0===u?{}:u,d=e.metricLookup,f=void 0===d?{}:d,p=s(a,f),l=r({telemetryData:a,dimensionLookup:c,excludeKeys:["workflow"].concat(g(Object.keys(p)),g(Object.keys(f)))}),m=document||{},v=m.referrer,y=m.title,w=window&&window.location?window.location:{},k=w.hostname,b=w.pathname;return h({name:"pageView",referrer:v,hostname:k,path:t||b,pageUrl:t||b,pageName:y,previousPageUrl:o.pageUrl,previousPageName:o.pageName},l,p)}e="default"in e?e.default:e,n="default"in n?n.default:n,o="default"in o?o.default:o;var p=e.storage,l="TELEMETRY_COGNITO_CREDENTIALS",m=["size","duration","position","number","count"],v=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},y=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),h=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},g=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)};return function(){function e(t){v(this,e);var r=t.app,a=void 0===r?{}:r,u=t.fips,s=t.userPoolID;this.analytics=n({app:a.name,plugins:[o({fips:u,pinpointAppId:a.id,getCredentials:function(){return i(s,{fips:u})}})]}),this.name="amazon",h(this,t)}return y(e,[{key:"logPageView",value:function(e,t){var n=f({page:e,previousPage:this.previousPage,options:t,dimensionLookup:this.dimensions,metricLookup:this.metrics});this.previousPage=n.attributes,this.analytics.track("pageView",n)}},{key:"logEvent",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=d({event:e,dimensionLookup:this.dimensions,metricLookup:this.metrics}),n=t.name;this.analytics.track(n,t)}}]),e}()});
2
2
  //# sourceMappingURL=telemetry-amazon.js.dojo.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-amazon.js.dojo.min.js","sources":["../src/auth.js","../src/format-telemetry-attributes.js","../src/format-telemetry-metrics.js","../src/create-event-log.js","../src/create-page-view-log.js","../src/index.js"],"sourcesContent":["import Telemetry from '@esri/telemetry'\nconst { storage } = Telemetry\nconst COGNITO_KEY = 'TELEMETRY_COGNITO_CREDENTIALS'\n\nexport function getCredentials (IdentityPoolId, options = {}) {\n const fipsSubdomainSuffix = options.fips === true ? '-fips' : ''\n const COGNITO_URL = `https://cognito-identity${fipsSubdomainSuffix}.us-east-1.amazonaws.com/`\n let cached = storage.get(COGNITO_KEY)\n if (cached && Date.now() / 1000 < cached.Expiration) return Promise.resolve(cached)\n\n const fetchOptions = {\n method: 'POST',\n headers: {\n 'Content-type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'AWSCognitoIdentityService.GetId'\n },\n body: JSON.stringify({ IdentityPoolId })\n }\n\n return fetch(COGNITO_URL, fetchOptions)\n .then(response => {\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return response.json()\n })\n .then((response) => {\n const { IdentityId } = response\n const options = {\n method: 'POST',\n headers: {\n 'Content-type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'AWSCognitoIdentityService.GetCredentialsForIdentity'\n },\n body: JSON.stringify({ IdentityId })\n }\n return fetch(COGNITO_URL, options)\n })\n .then(response => {\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return response.json()\n })\n .then(({ Credentials }) => {\n storage.set(COGNITO_KEY, Credentials)\n return Credentials\n })\n}\n","export default function formatTelemetryAttributes ({ telemetryData, dimensionLookup = {}, excludeKeys = [] }) {\n return Object.keys(telemetryData)\n .filter(key => {\n return !excludeKeys.includes(key)\n })\n .map(key => {\n if (dimensionLookup[key]) {\n return {\n key: getCustomDimensionKey(dimensionLookup, key),\n value: telemetryData[key] }\n }\n\n return {\n key,\n value: getValue(telemetryData, key)\n }\n })\n .reduce((acc, { key, value }) => {\n acc[key] = value\n return acc\n }, {})\n}\n\nfunction getValue (data, key) {\n if (key === 'json') {\n return data[key] ? JSON.stringify(data[key]) : 'null'\n }\n\n return data[key] === undefined ? 'null' : data[key].toString()\n}\n\nfunction getCustomDimensionKey (lookup, key) {\n return `dimension${lookup[key]}`\n}","const METRICS = ['size', 'duration', 'position', 'number', 'count']\n\nexport default function formatTelemetryMetrtics (telemetryData, metricLookup = {}) {\n return Object.keys(telemetryData).filter(key => {\n return metricLookup[key] || METRICS.includes(key)\n }).map(key => {\n if (metricLookup[key]) {\n return {\n key: getCustomMetricKey(metricLookup, key),\n value: telemetryData[key]\n }\n }\n\n return {\n key,\n value: telemetryData[key]\n }\n }).reduce((acc, { key, value }) => {\n acc[key] = value\n return acc\n }, {});\n}\n\nfunction getCustomMetricKey (lookup, key) {\n return `metric${lookup[key]}`\n}\n","import formatTelemetryAttributes from './format-telemetry-attributes'\nimport formatTelemetryMetrics from './format-telemetry-metrics'\n\nexport default function createEventLog ({\n event = {},\n dimensionLookup = {},\n metricLookup = {}\n}) {\n const { eventType = 'other' } = event\n const metrics = formatTelemetryMetrics(event, metricLookup)\n const eventAttributes = formatTelemetryAttributes({\n telemetryData: { eventType, ...event },\n dimensionLookup,\n excludeKeys: ['workflow', ...Object.keys(metrics), ...Object.keys(metricLookup)]\n })\n\n return {\n name: eventType,\n referrer: document.referrer,\n hostname: window.location.hostname,\n path: window.location.pathname,\n ...eventAttributes,\n ...metrics\n }\n}\n","import formatTelemetryAttributes from './format-telemetry-attributes'\nimport formatTelemetryMetrics from './format-telemetry-metrics'\n\nexport default function createPageViewLog ({\n page,\n previousPage = {},\n options = {},\n dimensionLookup = {},\n metricLookup = {}\n}) {\n const metrics = formatTelemetryMetrics(options, metricLookup)\n const attributes = formatTelemetryAttributes({\n telemetryData: options,\n dimensionLookup,\n excludeKeys: ['workflow', ...Object.keys(metrics), ...Object.keys(metricLookup)]\n })\n\n const { referrer, title } = document || {}\n const { hostname, pathname } = window && window.location ? window.location : {}\n\n return {\n name: 'pageView',\n referrer,\n hostname,\n path: page || pathname,\n pageUrl: page || pathname,\n pageName: title,\n previousPageUrl: previousPage.pageUrl,\n previousPageName: previousPage.pageName,\n ...attributes,\n ...metrics\n }\n}\n","import { getCredentials } from './auth'\nimport createEventLog from './create-event-log'\nimport createPageView from './create-page-view-log'\nimport Analytics from 'analytics'\nimport awsPinpointPlugin from '@analytics/aws-pinpoint'\n\nexport default class Amazon {\n constructor(options) {\n const { app = {}, fips, userPoolID } = options\n this.analytics = Analytics({\n app: app.name,\n plugins: [\n awsPinpointPlugin({\n fips,\n pinpointAppId: app.id,\n getCredentials: () => {\n return getCredentials(userPoolID, { fips })\n },\n }),\n ],\n })\n\n this.name = 'amazon'\n Object.assign(this, options)\n }\n\n logPageView(page, options) {\n const telemetryPayload = createPageView({\n page,\n previousPage: this.previousPage,\n options,\n dimensionLookup: this.dimensions,\n metricLookup: this.metrics,\n })\n this.previousPage = telemetryPayload.attributes\n this.analytics.track('pageView', telemetryPayload)\n }\n\n logEvent(event = {}) {\n const telemetryPayload = createEventLog({\n event,\n dimensionLookup: this.dimensions,\n metricLookup: this.metrics,\n })\n const { name } = telemetryPayload\n this.analytics.track(name, telemetryPayload)\n }\n}\n"],"names":["getCredentials","IdentityPoolId","options","fipsSubdomainSuffix","fips","COGNITO_URL","cached","storage","get","COGNITO_KEY","Date","now","Expiration","Promise","resolve","fetchOptions","JSON","stringify","fetch","then","response","ok","Error","statusText","json","IdentityId","Credentials","set","formatTelemetryAttributes","telemetryData","dimensionLookup","excludeKeys","Object","keys","filter","includes","key","map","getCustomDimensionKey","getValue","reduce","acc","value","data","undefined","toString","lookup","formatTelemetryMetrtics","metricLookup","METRICS","getCustomMetricKey","createEventLog","event","eventType","metrics","formatTelemetryMetrics","eventAttributes","document","referrer","window","location","hostname","pathname","createPageViewLog","page","previousPage","attributes","title","pageUrl","pageName","Telemetry","app","userPoolID","analytics","Analytics","name","awsPinpointPlugin","id","this","telemetryPayload","createPageView","dimensions","track"],"mappings":"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"}
1
+ {"version":3,"file":"telemetry-amazon.js.dojo.min.js","sources":["../src/auth.js","../src/format-telemetry-attributes.js","../src/format-telemetry-metrics.js","../src/create-event-log.js","../src/create-page-view-log.js","../src/index.js"],"sourcesContent":["import Telemetry from '@esri/telemetry'\nconst { storage } = Telemetry\nconst COGNITO_KEY = 'TELEMETRY_COGNITO_CREDENTIALS'\n\nexport function getCredentials (IdentityPoolId, options = {}) {\n const fipsSubdomainSuffix = options.fips === true ? '-fips' : ''\n const COGNITO_URL = `https://cognito-identity${fipsSubdomainSuffix}.us-east-1.amazonaws.com/`\n let cached = storage.get(COGNITO_KEY)\n if (cached && Date.now() / 1000 < cached.Expiration) return Promise.resolve(cached)\n\n const fetchOptions = {\n method: 'POST',\n headers: {\n 'Content-type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'AWSCognitoIdentityService.GetId'\n },\n body: JSON.stringify({ IdentityPoolId })\n }\n\n return fetch(COGNITO_URL, fetchOptions)\n .then(response => {\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return response.json()\n })\n .then((response) => {\n const { IdentityId } = response\n const options = {\n method: 'POST',\n headers: {\n 'Content-type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'AWSCognitoIdentityService.GetCredentialsForIdentity'\n },\n body: JSON.stringify({ IdentityId })\n }\n return fetch(COGNITO_URL, options)\n })\n .then(response => {\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return response.json()\n })\n .then(({ Credentials }) => {\n storage.set(COGNITO_KEY, Credentials)\n return Credentials\n })\n}\n","export default function formatTelemetryAttributes ({ telemetryData, dimensionLookup = {}, excludeKeys = [] }) {\n return Object.keys(telemetryData)\n .filter(key => {\n return !excludeKeys.includes(key)\n })\n .map(key => {\n if (dimensionLookup[key]) {\n return {\n key: getCustomDimensionKey(dimensionLookup, key),\n value: telemetryData[key] }\n }\n\n return {\n key,\n value: getValue(telemetryData, key)\n }\n })\n .reduce((acc, { key, value }) => {\n acc[key] = value\n return acc\n }, {})\n}\n\nfunction getValue (data, key) {\n if (key === 'json') {\n return data[key] ? JSON.stringify(data[key]) : 'null'\n }\n\n return data[key] === undefined ? 'null' : data[key].toString()\n}\n\nfunction getCustomDimensionKey (lookup, key) {\n return `dimension${lookup[key]}`\n}","const METRICS = ['size', 'duration', 'position', 'number', 'count']\n\nexport default function formatTelemetryMetrtics (telemetryData, metricLookup = {}) {\n return Object.keys(telemetryData).filter(key => {\n return metricLookup[key] || METRICS.includes(key)\n }).map(key => {\n if (metricLookup[key]) {\n return {\n key: getCustomMetricKey(metricLookup, key),\n value: telemetryData[key]\n }\n }\n\n return {\n key,\n value: telemetryData[key]\n }\n }).reduce((acc, { key, value }) => {\n acc[key] = value\n return acc\n }, {});\n}\n\nfunction getCustomMetricKey (lookup, key) {\n return `metric${lookup[key]}`\n}\n","import { getProp } from '@esri/hub-common';\nimport formatTelemetryAttributes from './format-telemetry-attributes'\nimport formatTelemetryMetrics from './format-telemetry-metrics'\n\n\nexport default function createEventLog({\n event = {},\n dimensionLookup = {},\n metricLookup = {},\n}) {\n const { pathname: eventPathname, eventType = 'other' } = event\n const metrics = formatTelemetryMetrics(event, metricLookup)\n const eventAttributes = formatTelemetryAttributes({\n telemetryData: { eventType, ...event },\n dimensionLookup,\n excludeKeys: [\n 'workflow',\n 'pathname',\n ...Object.keys(metrics),\n ...Object.keys(metricLookup),\n ],\n })\n\n const telemetryPayload = {\n name: eventType,\n ...eventAttributes,\n ...metrics,\n }\n\n // Browser document check and set referrer if it exists\n if (typeof document !== 'undefined' && document.referrer) {\n telemetryPayload.referrer = getProp(document, 'referrer')\n }\n\n // Browser hostname check and set if it exists\n if (typeof window !== 'undefined' && !telemetryPayload.hostname) {\n telemetryPayload.hostname = getProp(window, 'location.hostname')\n }\n\n // Browser and server pathname check and set\n telemetryPayload.path = typeof window !== 'undefined' && window.location.pathname ? getProp(window, 'location.pathname') : eventPathname\n\n return telemetryPayload\n}\n","import formatTelemetryAttributes from './format-telemetry-attributes'\nimport formatTelemetryMetrics from './format-telemetry-metrics'\n\nexport default function createPageViewLog ({\n page,\n previousPage = {},\n options = {},\n dimensionLookup = {},\n metricLookup = {}\n}) {\n const metrics = formatTelemetryMetrics(options, metricLookup)\n const attributes = formatTelemetryAttributes({\n telemetryData: options,\n dimensionLookup,\n excludeKeys: ['workflow', ...Object.keys(metrics), ...Object.keys(metricLookup)]\n })\n\n const { referrer, title } = document || {}\n const { hostname, pathname } = window && window.location ? window.location : {}\n\n return {\n name: 'pageView',\n referrer,\n hostname,\n path: page || pathname,\n pageUrl: page || pathname,\n pageName: title,\n previousPageUrl: previousPage.pageUrl,\n previousPageName: previousPage.pageName,\n ...attributes,\n ...metrics\n }\n}\n","import { getCredentials } from './auth'\nimport createEventLog from './create-event-log'\nimport createPageView from './create-page-view-log'\nimport Analytics from 'analytics'\nimport awsPinpointPlugin from '@analytics/aws-pinpoint'\n\nexport default class Amazon {\n constructor(options) {\n const { app = {}, fips, userPoolID } = options\n this.analytics = Analytics({\n app: app.name,\n plugins: [\n awsPinpointPlugin({\n fips,\n pinpointAppId: app.id,\n getCredentials: () => {\n return getCredentials(userPoolID, { fips })\n },\n }),\n ],\n })\n\n this.name = 'amazon'\n Object.assign(this, options)\n }\n\n logPageView(page, options) {\n const telemetryPayload = createPageView({\n page,\n previousPage: this.previousPage,\n options,\n dimensionLookup: this.dimensions,\n metricLookup: this.metrics,\n })\n this.previousPage = telemetryPayload.attributes\n this.analytics.track('pageView', telemetryPayload)\n }\n\n logEvent(event = {}) {\n const telemetryPayload = createEventLog({\n event,\n dimensionLookup: this.dimensions,\n metricLookup: this.metrics,\n })\n const { name } = telemetryPayload\n this.analytics.track(name, telemetryPayload)\n }\n}\n"],"names":["getCredentials","IdentityPoolId","options","fipsSubdomainSuffix","fips","COGNITO_URL","cached","storage","get","COGNITO_KEY","Date","now","Expiration","Promise","resolve","fetchOptions","JSON","stringify","fetch","then","response","ok","Error","statusText","json","IdentityId","Credentials","set","formatTelemetryAttributes","telemetryData","dimensionLookup","excludeKeys","Object","keys","filter","includes","key","map","getCustomDimensionKey","getValue","reduce","acc","value","data","undefined","toString","lookup","formatTelemetryMetrtics","metricLookup","METRICS","getCustomMetricKey","createEventLog","event","eventPathname","pathname","eventType","metrics","formatTelemetryMetrics","eventAttributes","telemetryPayload","document","referrer","getProp","window","hostname","path","location","createPageViewLog","page","previousPage","attributes","title","pageUrl","pageName","Telemetry","app","userPoolID","analytics","Analytics","name","awsPinpointPlugin","id","this","createPageView","dimensions","track"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@esri/telemetry'), require('analytics'), require('@analytics/aws-pinpoint')) :
3
- typeof define === 'function' && define.amd ? define('telemetry', ['@esri/telemetry', 'analytics', '@analytics/aws-pinpoint'], factory) :
4
- (global.telemetry = factory(global.Telemetry,global.Analytics,global.awsPinpointPlugin));
5
- }(this, (function (Telemetry,Analytics,awsPinpointPlugin) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@esri/telemetry'), require('@esri/hub-common'), require('analytics'), require('@analytics/aws-pinpoint')) :
3
+ typeof define === 'function' && define.amd ? define('telemetry', ['@esri/telemetry', '@esri/hub-common', 'analytics', '@analytics/aws-pinpoint'], factory) :
4
+ (global.telemetry = factory(global.Telemetry,global._esri_hubCommon,global.Analytics,global.awsPinpointPlugin));
5
+ }(this, (function (Telemetry,_esri_hubCommon,Analytics,awsPinpointPlugin) { 'use strict';
6
6
 
7
7
  Telemetry = 'default' in Telemetry ? Telemetry['default'] : Telemetry;
8
8
  Analytics = 'default' in Analytics ? Analytics['default'] : Analytics;
@@ -227,22 +227,35 @@ function createEventLog(_ref) {
227
227
  dimensionLookup = _ref$dimensionLookup === undefined ? {} : _ref$dimensionLookup,
228
228
  _ref$metricLookup = _ref.metricLookup,
229
229
  metricLookup = _ref$metricLookup === undefined ? {} : _ref$metricLookup;
230
- var _event$eventType = event.eventType,
230
+ var eventPathname = event.pathname,
231
+ _event$eventType = event.eventType,
231
232
  eventType = _event$eventType === undefined ? 'other' : _event$eventType;
232
233
 
233
234
  var metrics = formatTelemetryMetrtics(event, metricLookup);
234
235
  var eventAttributes = formatTelemetryAttributes({
235
236
  telemetryData: _extends({ eventType: eventType }, event),
236
237
  dimensionLookup: dimensionLookup,
237
- excludeKeys: ['workflow'].concat(toConsumableArray(Object.keys(metrics)), toConsumableArray(Object.keys(metricLookup)))
238
+ excludeKeys: ['workflow', 'pathname'].concat(toConsumableArray(Object.keys(metrics)), toConsumableArray(Object.keys(metricLookup)))
238
239
  });
239
240
 
240
- return _extends({
241
- name: eventType,
242
- referrer: document.referrer,
243
- hostname: window.location.hostname,
244
- path: window.location.pathname
241
+ var telemetryPayload = _extends({
242
+ name: eventType
245
243
  }, eventAttributes, metrics);
244
+
245
+ // Browser document check and set referrer if it exists
246
+ if (typeof document !== 'undefined' && document.referrer) {
247
+ telemetryPayload.referrer = _esri_hubCommon.getProp(document, 'referrer');
248
+ }
249
+
250
+ // Browser hostname check and set if it exists
251
+ if (typeof window !== 'undefined' && !telemetryPayload.hostname) {
252
+ telemetryPayload.hostname = _esri_hubCommon.getProp(window, 'location.hostname');
253
+ }
254
+
255
+ // Browser and server pathname check and set
256
+ telemetryPayload.path = typeof window !== 'undefined' && window.location.pathname ? _esri_hubCommon.getProp(window, 'location.pathname') : eventPathname;
257
+
258
+ return telemetryPayload;
246
259
  }
247
260
 
248
261
  function createPageViewLog(_ref) {
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-amazon.js.js","sources":["../src/auth.js","../src/format-telemetry-attributes.js","../src/format-telemetry-metrics.js","../src/create-event-log.js","../src/create-page-view-log.js","../src/index.js"],"sourcesContent":["import Telemetry from '@esri/telemetry'\nconst { storage } = Telemetry\nconst COGNITO_KEY = 'TELEMETRY_COGNITO_CREDENTIALS'\n\nexport function getCredentials (IdentityPoolId, options = {}) {\n const fipsSubdomainSuffix = options.fips === true ? '-fips' : ''\n const COGNITO_URL = `https://cognito-identity${fipsSubdomainSuffix}.us-east-1.amazonaws.com/`\n let cached = storage.get(COGNITO_KEY)\n if (cached && Date.now() / 1000 < cached.Expiration) return Promise.resolve(cached)\n\n const fetchOptions = {\n method: 'POST',\n headers: {\n 'Content-type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'AWSCognitoIdentityService.GetId'\n },\n body: JSON.stringify({ IdentityPoolId })\n }\n\n return fetch(COGNITO_URL, fetchOptions)\n .then(response => {\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return response.json()\n })\n .then((response) => {\n const { IdentityId } = response\n const options = {\n method: 'POST',\n headers: {\n 'Content-type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'AWSCognitoIdentityService.GetCredentialsForIdentity'\n },\n body: JSON.stringify({ IdentityId })\n }\n return fetch(COGNITO_URL, options)\n })\n .then(response => {\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return response.json()\n })\n .then(({ Credentials }) => {\n storage.set(COGNITO_KEY, Credentials)\n return Credentials\n })\n}\n","export default function formatTelemetryAttributes ({ telemetryData, dimensionLookup = {}, excludeKeys = [] }) {\n return Object.keys(telemetryData)\n .filter(key => {\n return !excludeKeys.includes(key)\n })\n .map(key => {\n if (dimensionLookup[key]) {\n return {\n key: getCustomDimensionKey(dimensionLookup, key),\n value: telemetryData[key] }\n }\n\n return {\n key,\n value: getValue(telemetryData, key)\n }\n })\n .reduce((acc, { key, value }) => {\n acc[key] = value\n return acc\n }, {})\n}\n\nfunction getValue (data, key) {\n if (key === 'json') {\n return data[key] ? JSON.stringify(data[key]) : 'null'\n }\n\n return data[key] === undefined ? 'null' : data[key].toString()\n}\n\nfunction getCustomDimensionKey (lookup, key) {\n return `dimension${lookup[key]}`\n}","const METRICS = ['size', 'duration', 'position', 'number', 'count']\n\nexport default function formatTelemetryMetrtics (telemetryData, metricLookup = {}) {\n return Object.keys(telemetryData).filter(key => {\n return metricLookup[key] || METRICS.includes(key)\n }).map(key => {\n if (metricLookup[key]) {\n return {\n key: getCustomMetricKey(metricLookup, key),\n value: telemetryData[key]\n }\n }\n\n return {\n key,\n value: telemetryData[key]\n }\n }).reduce((acc, { key, value }) => {\n acc[key] = value\n return acc\n }, {});\n}\n\nfunction getCustomMetricKey (lookup, key) {\n return `metric${lookup[key]}`\n}\n","import formatTelemetryAttributes from './format-telemetry-attributes'\nimport formatTelemetryMetrics from './format-telemetry-metrics'\n\nexport default function createEventLog ({\n event = {},\n dimensionLookup = {},\n metricLookup = {}\n}) {\n const { eventType = 'other' } = event\n const metrics = formatTelemetryMetrics(event, metricLookup)\n const eventAttributes = formatTelemetryAttributes({\n telemetryData: { eventType, ...event },\n dimensionLookup,\n excludeKeys: ['workflow', ...Object.keys(metrics), ...Object.keys(metricLookup)]\n })\n\n return {\n name: eventType,\n referrer: document.referrer,\n hostname: window.location.hostname,\n path: window.location.pathname,\n ...eventAttributes,\n ...metrics\n }\n}\n","import formatTelemetryAttributes from './format-telemetry-attributes'\nimport formatTelemetryMetrics from './format-telemetry-metrics'\n\nexport default function createPageViewLog ({\n page,\n previousPage = {},\n options = {},\n dimensionLookup = {},\n metricLookup = {}\n}) {\n const metrics = formatTelemetryMetrics(options, metricLookup)\n const attributes = formatTelemetryAttributes({\n telemetryData: options,\n dimensionLookup,\n excludeKeys: ['workflow', ...Object.keys(metrics), ...Object.keys(metricLookup)]\n })\n\n const { referrer, title } = document || {}\n const { hostname, pathname } = window && window.location ? window.location : {}\n\n return {\n name: 'pageView',\n referrer,\n hostname,\n path: page || pathname,\n pageUrl: page || pathname,\n pageName: title,\n previousPageUrl: previousPage.pageUrl,\n previousPageName: previousPage.pageName,\n ...attributes,\n ...metrics\n }\n}\n","import { getCredentials } from './auth'\nimport createEventLog from './create-event-log'\nimport createPageView from './create-page-view-log'\nimport Analytics from 'analytics'\nimport awsPinpointPlugin from '@analytics/aws-pinpoint'\n\nexport default class Amazon {\n constructor(options) {\n const { app = {}, fips, userPoolID } = options\n this.analytics = Analytics({\n app: app.name,\n plugins: [\n awsPinpointPlugin({\n fips,\n pinpointAppId: app.id,\n getCredentials: () => {\n return getCredentials(userPoolID, { fips })\n },\n }),\n ],\n })\n\n this.name = 'amazon'\n Object.assign(this, options)\n }\n\n logPageView(page, options) {\n const telemetryPayload = createPageView({\n page,\n previousPage: this.previousPage,\n options,\n dimensionLookup: this.dimensions,\n metricLookup: this.metrics,\n })\n this.previousPage = telemetryPayload.attributes\n this.analytics.track('pageView', telemetryPayload)\n }\n\n logEvent(event = {}) {\n const telemetryPayload = createEventLog({\n event,\n dimensionLookup: this.dimensions,\n metricLookup: this.metrics,\n })\n const { name } = telemetryPayload\n this.analytics.track(name, telemetryPayload)\n }\n}\n"],"names":["storage","Telemetry","COGNITO_KEY","getCredentials","IdentityPoolId","options","fipsSubdomainSuffix","fips","COGNITO_URL","cached","get","Date","now","Expiration","Promise","resolve","fetchOptions","JSON","stringify","fetch","then","response","ok","Error","statusText","json","IdentityId","Credentials","set","formatTelemetryAttributes","telemetryData","dimensionLookup","excludeKeys","Object","keys","filter","includes","key","map","getCustomDimensionKey","getValue","reduce","acc","value","data","undefined","toString","lookup","METRICS","formatTelemetryMetrtics","metricLookup","getCustomMetricKey","createEventLog","event","eventType","metrics","formatTelemetryMetrics","eventAttributes","document","referrer","window","location","hostname","pathname","createPageViewLog","page","previousPage","attributes","title","pageUrl","pageName","Amazon","app","userPoolID","analytics","Analytics","name","awsPinpointPlugin","id","telemetryPayload","createPageView","dimensions","track"],"mappings":"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"}
1
+ {"version":3,"file":"telemetry-amazon.js.js","sources":["../src/auth.js","../src/format-telemetry-attributes.js","../src/format-telemetry-metrics.js","../src/create-event-log.js","../src/create-page-view-log.js","../src/index.js"],"sourcesContent":["import Telemetry from '@esri/telemetry'\nconst { storage } = Telemetry\nconst COGNITO_KEY = 'TELEMETRY_COGNITO_CREDENTIALS'\n\nexport function getCredentials (IdentityPoolId, options = {}) {\n const fipsSubdomainSuffix = options.fips === true ? '-fips' : ''\n const COGNITO_URL = `https://cognito-identity${fipsSubdomainSuffix}.us-east-1.amazonaws.com/`\n let cached = storage.get(COGNITO_KEY)\n if (cached && Date.now() / 1000 < cached.Expiration) return Promise.resolve(cached)\n\n const fetchOptions = {\n method: 'POST',\n headers: {\n 'Content-type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'AWSCognitoIdentityService.GetId'\n },\n body: JSON.stringify({ IdentityPoolId })\n }\n\n return fetch(COGNITO_URL, fetchOptions)\n .then(response => {\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return response.json()\n })\n .then((response) => {\n const { IdentityId } = response\n const options = {\n method: 'POST',\n headers: {\n 'Content-type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'AWSCognitoIdentityService.GetCredentialsForIdentity'\n },\n body: JSON.stringify({ IdentityId })\n }\n return fetch(COGNITO_URL, options)\n })\n .then(response => {\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return response.json()\n })\n .then(({ Credentials }) => {\n storage.set(COGNITO_KEY, Credentials)\n return Credentials\n })\n}\n","export default function formatTelemetryAttributes ({ telemetryData, dimensionLookup = {}, excludeKeys = [] }) {\n return Object.keys(telemetryData)\n .filter(key => {\n return !excludeKeys.includes(key)\n })\n .map(key => {\n if (dimensionLookup[key]) {\n return {\n key: getCustomDimensionKey(dimensionLookup, key),\n value: telemetryData[key] }\n }\n\n return {\n key,\n value: getValue(telemetryData, key)\n }\n })\n .reduce((acc, { key, value }) => {\n acc[key] = value\n return acc\n }, {})\n}\n\nfunction getValue (data, key) {\n if (key === 'json') {\n return data[key] ? JSON.stringify(data[key]) : 'null'\n }\n\n return data[key] === undefined ? 'null' : data[key].toString()\n}\n\nfunction getCustomDimensionKey (lookup, key) {\n return `dimension${lookup[key]}`\n}","const METRICS = ['size', 'duration', 'position', 'number', 'count']\n\nexport default function formatTelemetryMetrtics (telemetryData, metricLookup = {}) {\n return Object.keys(telemetryData).filter(key => {\n return metricLookup[key] || METRICS.includes(key)\n }).map(key => {\n if (metricLookup[key]) {\n return {\n key: getCustomMetricKey(metricLookup, key),\n value: telemetryData[key]\n }\n }\n\n return {\n key,\n value: telemetryData[key]\n }\n }).reduce((acc, { key, value }) => {\n acc[key] = value\n return acc\n }, {});\n}\n\nfunction getCustomMetricKey (lookup, key) {\n return `metric${lookup[key]}`\n}\n","import { getProp } from '@esri/hub-common';\nimport formatTelemetryAttributes from './format-telemetry-attributes'\nimport formatTelemetryMetrics from './format-telemetry-metrics'\n\n\nexport default function createEventLog({\n event = {},\n dimensionLookup = {},\n metricLookup = {},\n}) {\n const { pathname: eventPathname, eventType = 'other' } = event\n const metrics = formatTelemetryMetrics(event, metricLookup)\n const eventAttributes = formatTelemetryAttributes({\n telemetryData: { eventType, ...event },\n dimensionLookup,\n excludeKeys: [\n 'workflow',\n 'pathname',\n ...Object.keys(metrics),\n ...Object.keys(metricLookup),\n ],\n })\n\n const telemetryPayload = {\n name: eventType,\n ...eventAttributes,\n ...metrics,\n }\n\n // Browser document check and set referrer if it exists\n if (typeof document !== 'undefined' && document.referrer) {\n telemetryPayload.referrer = getProp(document, 'referrer')\n }\n\n // Browser hostname check and set if it exists\n if (typeof window !== 'undefined' && !telemetryPayload.hostname) {\n telemetryPayload.hostname = getProp(window, 'location.hostname')\n }\n\n // Browser and server pathname check and set\n telemetryPayload.path = typeof window !== 'undefined' && window.location.pathname ? getProp(window, 'location.pathname') : eventPathname\n\n return telemetryPayload\n}\n","import formatTelemetryAttributes from './format-telemetry-attributes'\nimport formatTelemetryMetrics from './format-telemetry-metrics'\n\nexport default function createPageViewLog ({\n page,\n previousPage = {},\n options = {},\n dimensionLookup = {},\n metricLookup = {}\n}) {\n const metrics = formatTelemetryMetrics(options, metricLookup)\n const attributes = formatTelemetryAttributes({\n telemetryData: options,\n dimensionLookup,\n excludeKeys: ['workflow', ...Object.keys(metrics), ...Object.keys(metricLookup)]\n })\n\n const { referrer, title } = document || {}\n const { hostname, pathname } = window && window.location ? window.location : {}\n\n return {\n name: 'pageView',\n referrer,\n hostname,\n path: page || pathname,\n pageUrl: page || pathname,\n pageName: title,\n previousPageUrl: previousPage.pageUrl,\n previousPageName: previousPage.pageName,\n ...attributes,\n ...metrics\n }\n}\n","import { getCredentials } from './auth'\nimport createEventLog from './create-event-log'\nimport createPageView from './create-page-view-log'\nimport Analytics from 'analytics'\nimport awsPinpointPlugin from '@analytics/aws-pinpoint'\n\nexport default class Amazon {\n constructor(options) {\n const { app = {}, fips, userPoolID } = options\n this.analytics = Analytics({\n app: app.name,\n plugins: [\n awsPinpointPlugin({\n fips,\n pinpointAppId: app.id,\n getCredentials: () => {\n return getCredentials(userPoolID, { fips })\n },\n }),\n ],\n })\n\n this.name = 'amazon'\n Object.assign(this, options)\n }\n\n logPageView(page, options) {\n const telemetryPayload = createPageView({\n page,\n previousPage: this.previousPage,\n options,\n dimensionLookup: this.dimensions,\n metricLookup: this.metrics,\n })\n this.previousPage = telemetryPayload.attributes\n this.analytics.track('pageView', telemetryPayload)\n }\n\n logEvent(event = {}) {\n const telemetryPayload = createEventLog({\n event,\n dimensionLookup: this.dimensions,\n metricLookup: this.metrics,\n })\n const { name } = telemetryPayload\n this.analytics.track(name, telemetryPayload)\n }\n}\n"],"names":["storage","Telemetry","COGNITO_KEY","getCredentials","IdentityPoolId","options","fipsSubdomainSuffix","fips","COGNITO_URL","cached","get","Date","now","Expiration","Promise","resolve","fetchOptions","JSON","stringify","fetch","then","response","ok","Error","statusText","json","IdentityId","Credentials","set","formatTelemetryAttributes","telemetryData","dimensionLookup","excludeKeys","Object","keys","filter","includes","key","map","getCustomDimensionKey","getValue","reduce","acc","value","data","undefined","toString","lookup","METRICS","formatTelemetryMetrtics","metricLookup","getCustomMetricKey","createEventLog","event","eventPathname","pathname","eventType","metrics","formatTelemetryMetrics","eventAttributes","telemetryPayload","document","referrer","getProp","window","hostname","path","location","createPageViewLog","page","previousPage","attributes","title","pageUrl","pageName","Amazon","app","userPoolID","analytics","Analytics","name","awsPinpointPlugin","id","createPageView","dimensions","track"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("@esri/telemetry"),require("analytics"),require("@analytics/aws-pinpoint")):"function"==typeof define&&define.amd?define("telemetry",["@esri/telemetry","analytics","@analytics/aws-pinpoint"],t):e.telemetry=t(e.Telemetry,e.Analytics,e.awsPinpointPlugin)}(this,function(e,t,n){"use strict";function i(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=!0===t.fips?"-fips":"",i="https://cognito-identity"+n+".us-east-1.amazonaws.com/",r=d.get(f);if(r&&Date.now()/1e3<r.Expiration)return Promise.resolve(r);var o={method:"POST",headers:{"Content-type":"application/x-amz-json-1.1","X-Amz-Target":"AWSCognitoIdentityService.GetId"},body:JSON.stringify({IdentityPoolId:e})};return fetch(i,o).then(function(e){if(!e.ok)throw new Error(e.statusText);return e.json()}).then(function(e){var t=e.IdentityId,n={method:"POST",headers:{"Content-type":"application/x-amz-json-1.1","X-Amz-Target":"AWSCognitoIdentityService.GetCredentialsForIdentity"},body:JSON.stringify({IdentityId:t})};return fetch(i,n)}).then(function(e){if(!e.ok)throw new Error(e.statusText);return e.json()}).then(function(e){var t=e.Credentials;return d.set(f,t),t})}function r(e){var t=e.telemetryData,n=e.dimensionLookup,i=void 0===n?{}:n,r=e.excludeKeys,u=void 0===r?[]:r;return Object.keys(t).filter(function(e){return!u.includes(e)}).map(function(e){return i[e]?{key:a(i,e),value:t[e]}:{key:e,value:o(t,e)}}).reduce(function(e,t){var n=t.key,i=t.value;return e[n]=i,e},{})}function o(e,t){return"json"===t?e[t]?JSON.stringify(e[t]):"null":void 0===e[t]?"null":e[t].toString()}function a(e,t){return"dimension"+e[t]}function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).filter(function(e){return t[e]||p.includes(e)}).map(function(n){return t[n]?{key:s(t,n),value:e[n]}:{key:n,value:e[n]}}).reduce(function(e,t){var n=t.key,i=t.value;return e[n]=i,e},{})}function s(e,t){return"metric"+e[t]}function c(e){var t=e.event,n=void 0===t?{}:t,i=e.dimensionLookup,o=void 0===i?{}:i,a=e.metricLookup,s=void 0===a?{}:a,c=n.eventType,l=void 0===c?"other":c,d=u(n,s),f=r({telemetryData:v({eventType:l},n),dimensionLookup:o,excludeKeys:["workflow"].concat(h(Object.keys(d)),h(Object.keys(s)))});return v({name:l,referrer:document.referrer,hostname:window.location.hostname,path:window.location.pathname},f,d)}function l(e){var t=e.page,n=e.previousPage,i=void 0===n?{}:n,o=e.options,a=void 0===o?{}:o,s=e.dimensionLookup,c=void 0===s?{}:s,l=e.metricLookup,d=void 0===l?{}:l,f=u(a,d),p=r({telemetryData:a,dimensionLookup:c,excludeKeys:["workflow"].concat(h(Object.keys(f)),h(Object.keys(d)))}),y=document||{},m=y.referrer,g=y.title,k=window&&window.location?window.location:{},w=k.hostname,b=k.pathname;return v({name:"pageView",referrer:m,hostname:w,path:t||b,pageUrl:t||b,pageName:g,previousPageUrl:i.pageUrl,previousPageName:i.pageName},p,f)}e="default"in e?e.default:e,t="default"in t?t.default:t,n="default"in n?n.default:n;var d=e.storage,f="TELEMETRY_COGNITO_CREDENTIALS",p=["size","duration","position","number","count"],y=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},m=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),v=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},h=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)};return function(){function e(r){y(this,e);var o=r.app,a=void 0===o?{}:o,u=r.fips,s=r.userPoolID;this.analytics=t({app:a.name,plugins:[n({fips:u,pinpointAppId:a.id,getCredentials:function(){return i(s,{fips:u})}})]}),this.name="amazon",v(this,r)}return m(e,[{key:"logPageView",value:function(e,t){var n=l({page:e,previousPage:this.previousPage,options:t,dimensionLookup:this.dimensions,metricLookup:this.metrics});this.previousPage=n.attributes,this.analytics.track("pageView",n)}},{key:"logEvent",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=c({event:e,dimensionLookup:this.dimensions,metricLookup:this.metrics}),n=t.name;this.analytics.track(n,t)}}]),e}()});
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("@esri/telemetry"),require("@esri/hub-common"),require("analytics"),require("@analytics/aws-pinpoint")):"function"==typeof define&&define.amd?define("telemetry",["@esri/telemetry","@esri/hub-common","analytics","@analytics/aws-pinpoint"],t):e.telemetry=t(e.Telemetry,e._esri_hubCommon,e.Analytics,e.awsPinpointPlugin)}(this,function(e,t,n,i){"use strict";function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=!0===t.fips?"-fips":"",i="https://cognito-identity"+n+".us-east-1.amazonaws.com/",o=p.get(l);if(o&&Date.now()/1e3<o.Expiration)return Promise.resolve(o);var r={method:"POST",headers:{"Content-type":"application/x-amz-json-1.1","X-Amz-Target":"AWSCognitoIdentityService.GetId"},body:JSON.stringify({IdentityPoolId:e})};return fetch(i,r).then(function(e){if(!e.ok)throw new Error(e.statusText);return e.json()}).then(function(e){var t=e.IdentityId,n={method:"POST",headers:{"Content-type":"application/x-amz-json-1.1","X-Amz-Target":"AWSCognitoIdentityService.GetCredentialsForIdentity"},body:JSON.stringify({IdentityId:t})};return fetch(i,n)}).then(function(e){if(!e.ok)throw new Error(e.statusText);return e.json()}).then(function(e){var t=e.Credentials;return p.set(l,t),t})}function r(e){var t=e.telemetryData,n=e.dimensionLookup,i=void 0===n?{}:n,o=e.excludeKeys,r=void 0===o?[]:o;return Object.keys(t).filter(function(e){return!r.includes(e)}).map(function(e){return i[e]?{key:u(i,e),value:t[e]}:{key:e,value:a(t,e)}}).reduce(function(e,t){var n=t.key,i=t.value;return e[n]=i,e},{})}function a(e,t){return"json"===t?e[t]?JSON.stringify(e[t]):"null":void 0===e[t]?"null":e[t].toString()}function u(e,t){return"dimension"+e[t]}function s(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).filter(function(e){return t[e]||m.includes(e)}).map(function(n){return t[n]?{key:c(t,n),value:e[n]}:{key:n,value:e[n]}}).reduce(function(e,t){var n=t.key,i=t.value;return e[n]=i,e},{})}function c(e,t){return"metric"+e[t]}function d(e){var n=e.event,i=void 0===n?{}:n,o=e.dimensionLookup,a=void 0===o?{}:o,u=e.metricLookup,c=void 0===u?{}:u,d=i.pathname,f=i.eventType,p=void 0===f?"other":f,l=s(i,c),m=r({telemetryData:h({eventType:p},i),dimensionLookup:a,excludeKeys:["workflow","pathname"].concat(g(Object.keys(l)),g(Object.keys(c)))}),y=h({name:p},m,l);return"undefined"!=typeof document&&document.referrer&&(y.referrer=t.getProp(document,"referrer")),"undefined"==typeof window||y.hostname||(y.hostname=t.getProp(window,"location.hostname")),y.path="undefined"!=typeof window&&window.location.pathname?t.getProp(window,"location.pathname"):d,y}function f(e){var t=e.page,n=e.previousPage,i=void 0===n?{}:n,o=e.options,a=void 0===o?{}:o,u=e.dimensionLookup,c=void 0===u?{}:u,d=e.metricLookup,f=void 0===d?{}:d,p=s(a,f),l=r({telemetryData:a,dimensionLookup:c,excludeKeys:["workflow"].concat(g(Object.keys(p)),g(Object.keys(f)))}),m=document||{},y=m.referrer,v=m.title,w=window&&window.location?window.location:{},k=w.hostname,b=w.pathname;return h({name:"pageView",referrer:y,hostname:k,path:t||b,pageUrl:t||b,pageName:v,previousPageUrl:i.pageUrl,previousPageName:i.pageName},l,p)}e="default"in e?e.default:e,n="default"in n?n.default:n,i="default"in i?i.default:i;var p=e.storage,l="TELEMETRY_COGNITO_CREDENTIALS",m=["size","duration","position","number","count"],y=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},v=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),h=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},g=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)};return function(){function e(t){y(this,e);var r=t.app,a=void 0===r?{}:r,u=t.fips,s=t.userPoolID;this.analytics=n({app:a.name,plugins:[i({fips:u,pinpointAppId:a.id,getCredentials:function(){return o(s,{fips:u})}})]}),this.name="amazon",h(this,t)}return v(e,[{key:"logPageView",value:function(e,t){var n=f({page:e,previousPage:this.previousPage,options:t,dimensionLookup:this.dimensions,metricLookup:this.metrics});this.previousPage=n.attributes,this.analytics.track("pageView",n)}},{key:"logEvent",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=d({event:e,dimensionLookup:this.dimensions,metricLookup:this.metrics}),n=t.name;this.analytics.track(n,t)}}]),e}()});
2
2
  //# sourceMappingURL=telemetry-amazon.js.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-amazon.js.min.js","sources":["../src/auth.js","../src/format-telemetry-attributes.js","../src/format-telemetry-metrics.js","../src/create-event-log.js","../src/create-page-view-log.js","../src/index.js"],"sourcesContent":["import Telemetry from '@esri/telemetry'\nconst { storage } = Telemetry\nconst COGNITO_KEY = 'TELEMETRY_COGNITO_CREDENTIALS'\n\nexport function getCredentials (IdentityPoolId, options = {}) {\n const fipsSubdomainSuffix = options.fips === true ? '-fips' : ''\n const COGNITO_URL = `https://cognito-identity${fipsSubdomainSuffix}.us-east-1.amazonaws.com/`\n let cached = storage.get(COGNITO_KEY)\n if (cached && Date.now() / 1000 < cached.Expiration) return Promise.resolve(cached)\n\n const fetchOptions = {\n method: 'POST',\n headers: {\n 'Content-type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'AWSCognitoIdentityService.GetId'\n },\n body: JSON.stringify({ IdentityPoolId })\n }\n\n return fetch(COGNITO_URL, fetchOptions)\n .then(response => {\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return response.json()\n })\n .then((response) => {\n const { IdentityId } = response\n const options = {\n method: 'POST',\n headers: {\n 'Content-type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'AWSCognitoIdentityService.GetCredentialsForIdentity'\n },\n body: JSON.stringify({ IdentityId })\n }\n return fetch(COGNITO_URL, options)\n })\n .then(response => {\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return response.json()\n })\n .then(({ Credentials }) => {\n storage.set(COGNITO_KEY, Credentials)\n return Credentials\n })\n}\n","export default function formatTelemetryAttributes ({ telemetryData, dimensionLookup = {}, excludeKeys = [] }) {\n return Object.keys(telemetryData)\n .filter(key => {\n return !excludeKeys.includes(key)\n })\n .map(key => {\n if (dimensionLookup[key]) {\n return {\n key: getCustomDimensionKey(dimensionLookup, key),\n value: telemetryData[key] }\n }\n\n return {\n key,\n value: getValue(telemetryData, key)\n }\n })\n .reduce((acc, { key, value }) => {\n acc[key] = value\n return acc\n }, {})\n}\n\nfunction getValue (data, key) {\n if (key === 'json') {\n return data[key] ? JSON.stringify(data[key]) : 'null'\n }\n\n return data[key] === undefined ? 'null' : data[key].toString()\n}\n\nfunction getCustomDimensionKey (lookup, key) {\n return `dimension${lookup[key]}`\n}","const METRICS = ['size', 'duration', 'position', 'number', 'count']\n\nexport default function formatTelemetryMetrtics (telemetryData, metricLookup = {}) {\n return Object.keys(telemetryData).filter(key => {\n return metricLookup[key] || METRICS.includes(key)\n }).map(key => {\n if (metricLookup[key]) {\n return {\n key: getCustomMetricKey(metricLookup, key),\n value: telemetryData[key]\n }\n }\n\n return {\n key,\n value: telemetryData[key]\n }\n }).reduce((acc, { key, value }) => {\n acc[key] = value\n return acc\n }, {});\n}\n\nfunction getCustomMetricKey (lookup, key) {\n return `metric${lookup[key]}`\n}\n","import formatTelemetryAttributes from './format-telemetry-attributes'\nimport formatTelemetryMetrics from './format-telemetry-metrics'\n\nexport default function createEventLog ({\n event = {},\n dimensionLookup = {},\n metricLookup = {}\n}) {\n const { eventType = 'other' } = event\n const metrics = formatTelemetryMetrics(event, metricLookup)\n const eventAttributes = formatTelemetryAttributes({\n telemetryData: { eventType, ...event },\n dimensionLookup,\n excludeKeys: ['workflow', ...Object.keys(metrics), ...Object.keys(metricLookup)]\n })\n\n return {\n name: eventType,\n referrer: document.referrer,\n hostname: window.location.hostname,\n path: window.location.pathname,\n ...eventAttributes,\n ...metrics\n }\n}\n","import formatTelemetryAttributes from './format-telemetry-attributes'\nimport formatTelemetryMetrics from './format-telemetry-metrics'\n\nexport default function createPageViewLog ({\n page,\n previousPage = {},\n options = {},\n dimensionLookup = {},\n metricLookup = {}\n}) {\n const metrics = formatTelemetryMetrics(options, metricLookup)\n const attributes = formatTelemetryAttributes({\n telemetryData: options,\n dimensionLookup,\n excludeKeys: ['workflow', ...Object.keys(metrics), ...Object.keys(metricLookup)]\n })\n\n const { referrer, title } = document || {}\n const { hostname, pathname } = window && window.location ? window.location : {}\n\n return {\n name: 'pageView',\n referrer,\n hostname,\n path: page || pathname,\n pageUrl: page || pathname,\n pageName: title,\n previousPageUrl: previousPage.pageUrl,\n previousPageName: previousPage.pageName,\n ...attributes,\n ...metrics\n }\n}\n","import { getCredentials } from './auth'\nimport createEventLog from './create-event-log'\nimport createPageView from './create-page-view-log'\nimport Analytics from 'analytics'\nimport awsPinpointPlugin from '@analytics/aws-pinpoint'\n\nexport default class Amazon {\n constructor(options) {\n const { app = {}, fips, userPoolID } = options\n this.analytics = Analytics({\n app: app.name,\n plugins: [\n awsPinpointPlugin({\n fips,\n pinpointAppId: app.id,\n getCredentials: () => {\n return getCredentials(userPoolID, { fips })\n },\n }),\n ],\n })\n\n this.name = 'amazon'\n Object.assign(this, options)\n }\n\n logPageView(page, options) {\n const telemetryPayload = createPageView({\n page,\n previousPage: this.previousPage,\n options,\n dimensionLookup: this.dimensions,\n metricLookup: this.metrics,\n })\n this.previousPage = telemetryPayload.attributes\n this.analytics.track('pageView', telemetryPayload)\n }\n\n logEvent(event = {}) {\n const telemetryPayload = createEventLog({\n event,\n dimensionLookup: this.dimensions,\n metricLookup: this.metrics,\n })\n const { name } = telemetryPayload\n this.analytics.track(name, telemetryPayload)\n }\n}\n"],"names":["getCredentials","IdentityPoolId","options","fipsSubdomainSuffix","fips","COGNITO_URL","cached","storage","get","COGNITO_KEY","Date","now","Expiration","Promise","resolve","fetchOptions","JSON","stringify","fetch","then","response","ok","Error","statusText","json","IdentityId","Credentials","set","formatTelemetryAttributes","telemetryData","dimensionLookup","excludeKeys","Object","keys","filter","includes","key","map","getCustomDimensionKey","getValue","reduce","acc","value","data","undefined","toString","lookup","formatTelemetryMetrtics","metricLookup","METRICS","getCustomMetricKey","createEventLog","event","eventType","metrics","formatTelemetryMetrics","eventAttributes","document","referrer","window","location","hostname","pathname","createPageViewLog","page","previousPage","attributes","title","pageUrl","pageName","Telemetry","app","userPoolID","analytics","Analytics","name","awsPinpointPlugin","id","this","telemetryPayload","createPageView","dimensions","track"],"mappings":"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"}
1
+ {"version":3,"file":"telemetry-amazon.js.min.js","sources":["../src/auth.js","../src/format-telemetry-attributes.js","../src/format-telemetry-metrics.js","../src/create-event-log.js","../src/create-page-view-log.js","../src/index.js"],"sourcesContent":["import Telemetry from '@esri/telemetry'\nconst { storage } = Telemetry\nconst COGNITO_KEY = 'TELEMETRY_COGNITO_CREDENTIALS'\n\nexport function getCredentials (IdentityPoolId, options = {}) {\n const fipsSubdomainSuffix = options.fips === true ? '-fips' : ''\n const COGNITO_URL = `https://cognito-identity${fipsSubdomainSuffix}.us-east-1.amazonaws.com/`\n let cached = storage.get(COGNITO_KEY)\n if (cached && Date.now() / 1000 < cached.Expiration) return Promise.resolve(cached)\n\n const fetchOptions = {\n method: 'POST',\n headers: {\n 'Content-type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'AWSCognitoIdentityService.GetId'\n },\n body: JSON.stringify({ IdentityPoolId })\n }\n\n return fetch(COGNITO_URL, fetchOptions)\n .then(response => {\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return response.json()\n })\n .then((response) => {\n const { IdentityId } = response\n const options = {\n method: 'POST',\n headers: {\n 'Content-type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': 'AWSCognitoIdentityService.GetCredentialsForIdentity'\n },\n body: JSON.stringify({ IdentityId })\n }\n return fetch(COGNITO_URL, options)\n })\n .then(response => {\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return response.json()\n })\n .then(({ Credentials }) => {\n storage.set(COGNITO_KEY, Credentials)\n return Credentials\n })\n}\n","export default function formatTelemetryAttributes ({ telemetryData, dimensionLookup = {}, excludeKeys = [] }) {\n return Object.keys(telemetryData)\n .filter(key => {\n return !excludeKeys.includes(key)\n })\n .map(key => {\n if (dimensionLookup[key]) {\n return {\n key: getCustomDimensionKey(dimensionLookup, key),\n value: telemetryData[key] }\n }\n\n return {\n key,\n value: getValue(telemetryData, key)\n }\n })\n .reduce((acc, { key, value }) => {\n acc[key] = value\n return acc\n }, {})\n}\n\nfunction getValue (data, key) {\n if (key === 'json') {\n return data[key] ? JSON.stringify(data[key]) : 'null'\n }\n\n return data[key] === undefined ? 'null' : data[key].toString()\n}\n\nfunction getCustomDimensionKey (lookup, key) {\n return `dimension${lookup[key]}`\n}","const METRICS = ['size', 'duration', 'position', 'number', 'count']\n\nexport default function formatTelemetryMetrtics (telemetryData, metricLookup = {}) {\n return Object.keys(telemetryData).filter(key => {\n return metricLookup[key] || METRICS.includes(key)\n }).map(key => {\n if (metricLookup[key]) {\n return {\n key: getCustomMetricKey(metricLookup, key),\n value: telemetryData[key]\n }\n }\n\n return {\n key,\n value: telemetryData[key]\n }\n }).reduce((acc, { key, value }) => {\n acc[key] = value\n return acc\n }, {});\n}\n\nfunction getCustomMetricKey (lookup, key) {\n return `metric${lookup[key]}`\n}\n","import { getProp } from '@esri/hub-common';\nimport formatTelemetryAttributes from './format-telemetry-attributes'\nimport formatTelemetryMetrics from './format-telemetry-metrics'\n\n\nexport default function createEventLog({\n event = {},\n dimensionLookup = {},\n metricLookup = {},\n}) {\n const { pathname: eventPathname, eventType = 'other' } = event\n const metrics = formatTelemetryMetrics(event, metricLookup)\n const eventAttributes = formatTelemetryAttributes({\n telemetryData: { eventType, ...event },\n dimensionLookup,\n excludeKeys: [\n 'workflow',\n 'pathname',\n ...Object.keys(metrics),\n ...Object.keys(metricLookup),\n ],\n })\n\n const telemetryPayload = {\n name: eventType,\n ...eventAttributes,\n ...metrics,\n }\n\n // Browser document check and set referrer if it exists\n if (typeof document !== 'undefined' && document.referrer) {\n telemetryPayload.referrer = getProp(document, 'referrer')\n }\n\n // Browser hostname check and set if it exists\n if (typeof window !== 'undefined' && !telemetryPayload.hostname) {\n telemetryPayload.hostname = getProp(window, 'location.hostname')\n }\n\n // Browser and server pathname check and set\n telemetryPayload.path = typeof window !== 'undefined' && window.location.pathname ? getProp(window, 'location.pathname') : eventPathname\n\n return telemetryPayload\n}\n","import formatTelemetryAttributes from './format-telemetry-attributes'\nimport formatTelemetryMetrics from './format-telemetry-metrics'\n\nexport default function createPageViewLog ({\n page,\n previousPage = {},\n options = {},\n dimensionLookup = {},\n metricLookup = {}\n}) {\n const metrics = formatTelemetryMetrics(options, metricLookup)\n const attributes = formatTelemetryAttributes({\n telemetryData: options,\n dimensionLookup,\n excludeKeys: ['workflow', ...Object.keys(metrics), ...Object.keys(metricLookup)]\n })\n\n const { referrer, title } = document || {}\n const { hostname, pathname } = window && window.location ? window.location : {}\n\n return {\n name: 'pageView',\n referrer,\n hostname,\n path: page || pathname,\n pageUrl: page || pathname,\n pageName: title,\n previousPageUrl: previousPage.pageUrl,\n previousPageName: previousPage.pageName,\n ...attributes,\n ...metrics\n }\n}\n","import { getCredentials } from './auth'\nimport createEventLog from './create-event-log'\nimport createPageView from './create-page-view-log'\nimport Analytics from 'analytics'\nimport awsPinpointPlugin from '@analytics/aws-pinpoint'\n\nexport default class Amazon {\n constructor(options) {\n const { app = {}, fips, userPoolID } = options\n this.analytics = Analytics({\n app: app.name,\n plugins: [\n awsPinpointPlugin({\n fips,\n pinpointAppId: app.id,\n getCredentials: () => {\n return getCredentials(userPoolID, { fips })\n },\n }),\n ],\n })\n\n this.name = 'amazon'\n Object.assign(this, options)\n }\n\n logPageView(page, options) {\n const telemetryPayload = createPageView({\n page,\n previousPage: this.previousPage,\n options,\n dimensionLookup: this.dimensions,\n metricLookup: this.metrics,\n })\n this.previousPage = telemetryPayload.attributes\n this.analytics.track('pageView', telemetryPayload)\n }\n\n logEvent(event = {}) {\n const telemetryPayload = createEventLog({\n event,\n dimensionLookup: this.dimensions,\n metricLookup: this.metrics,\n })\n const { name } = telemetryPayload\n this.analytics.track(name, telemetryPayload)\n }\n}\n"],"names":["getCredentials","IdentityPoolId","options","fipsSubdomainSuffix","fips","COGNITO_URL","cached","storage","get","COGNITO_KEY","Date","now","Expiration","Promise","resolve","fetchOptions","JSON","stringify","fetch","then","response","ok","Error","statusText","json","IdentityId","Credentials","set","formatTelemetryAttributes","telemetryData","dimensionLookup","excludeKeys","Object","keys","filter","includes","key","map","getCustomDimensionKey","getValue","reduce","acc","value","data","undefined","toString","lookup","formatTelemetryMetrtics","metricLookup","METRICS","getCustomMetricKey","createEventLog","event","eventPathname","pathname","eventType","metrics","formatTelemetryMetrics","eventAttributes","telemetryPayload","document","referrer","getProp","window","hostname","path","location","createPageViewLog","page","previousPage","attributes","title","pageUrl","pageName","Telemetry","app","userPoolID","analytics","Analytics","name","awsPinpointPlugin","id","this","createPageView","dimensions","track"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@esri/telemetry-amazon",
3
- "version": "0.1.0",
3
+ "version": "0.2.2",
4
4
  "description": "Amazon plugin for 'Telemetry.js' library",
5
5
  "homepage": "https://devtopia.esri.com/WebGIS/arcgis-telemetry.js/packages/telemetry-amazon#readme",
6
6
  "license": "Apache-2.0",
@@ -29,13 +29,14 @@
29
29
  ],
30
30
  "dependencies": {
31
31
  "@analytics/aws-pinpoint": "^0.7.1",
32
+ "@esri/hub-common": "^9.7.3",
32
33
  "analytics": "^0.7.18"
33
34
  },
34
35
  "devDependencies": {
35
- "@esri/telemetry": "4.0.0-beta.0"
36
+ "@esri/telemetry": "^4.1.2"
36
37
  },
37
38
  "peerDependencies": {
38
- "@esri/telemetry": "4.0.0-beta.0^"
39
+ "@esri/telemetry": "^4.0.0"
39
40
  },
40
- "gitHead": "010e9517264cc02f5e5da766458433c154b799f5"
41
+ "gitHead": "8dcfbd2f7063ca37d2cdfd0732d70854bb9a24e8"
41
42
  }