@microsoft/applicationinsights-analytics-js 3.4.0-nightlybeta3.2505-36 → 3.4.0-nightlybeta3.2507-23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/browser/es5/applicationinsights-analytics-js.cjs.js +471 -422
  2. package/browser/es5/applicationinsights-analytics-js.cjs.js.map +1 -1
  3. package/browser/es5/applicationinsights-analytics-js.cjs.min.js +2 -2
  4. package/browser/es5/applicationinsights-analytics-js.cjs.min.js.map +1 -1
  5. package/browser/es5/applicationinsights-analytics-js.gbl.js +473 -424
  6. package/browser/es5/applicationinsights-analytics-js.gbl.js.map +1 -1
  7. package/browser/es5/applicationinsights-analytics-js.gbl.min.js +2 -2
  8. package/browser/es5/applicationinsights-analytics-js.gbl.min.js.map +1 -1
  9. package/browser/es5/applicationinsights-analytics-js.integrity.json +25 -25
  10. package/browser/es5/applicationinsights-analytics-js.js +473 -424
  11. package/browser/es5/applicationinsights-analytics-js.js.map +1 -1
  12. package/browser/es5/applicationinsights-analytics-js.min.js +2 -2
  13. package/browser/es5/applicationinsights-analytics-js.min.js.map +1 -1
  14. package/dist/es5/applicationinsights-analytics-js.js +471 -422
  15. package/dist/es5/applicationinsights-analytics-js.js.map +1 -1
  16. package/dist/es5/applicationinsights-analytics-js.min.js +2 -2
  17. package/dist/es5/applicationinsights-analytics-js.min.js.map +1 -1
  18. package/dist-es5/JavaScriptSDK/AnalyticsPlugin.js +40 -41
  19. package/dist-es5/JavaScriptSDK/AnalyticsPlugin.js.map +1 -1
  20. package/dist-es5/JavaScriptSDK/Interfaces/IAnalyticsConfig.js +8 -0
  21. package/dist-es5/JavaScriptSDK/Interfaces/IAnalyticsConfig.js.map +1 -0
  22. package/dist-es5/JavaScriptSDK/Telemetry/PageViewManager.js +175 -178
  23. package/dist-es5/JavaScriptSDK/Telemetry/PageViewManager.js.map +1 -1
  24. package/dist-es5/JavaScriptSDK/Telemetry/PageViewPerformanceManager.js +86 -96
  25. package/dist-es5/JavaScriptSDK/Telemetry/PageViewPerformanceManager.js.map +1 -1
  26. package/dist-es5/JavaScriptSDK/Telemetry/PageVisitTimeManager.js +85 -92
  27. package/dist-es5/JavaScriptSDK/Telemetry/PageVisitTimeManager.js.map +1 -1
  28. package/dist-es5/JavaScriptSDK/Timing.js +18 -15
  29. package/dist-es5/JavaScriptSDK/Timing.js.map +1 -1
  30. package/dist-es5/__DynamicConstants.js +7 -4
  31. package/dist-es5/__DynamicConstants.js.map +1 -1
  32. package/dist-es5/applicationinsights-analytics-js.js +1 -1
  33. package/package.json +5 -5
  34. package/types/applicationinsights-analytics-js.d.ts +100 -1
  35. package/types/applicationinsights-analytics-js.namespaced.d.ts +381 -14
@@ -1,11 +1,11 @@
1
1
  /*!
2
- * Application Insights JavaScript SDK - Web Analytics, 3.4.0-nightlybeta3.2505-36
2
+ * Application Insights JavaScript SDK - Web Analytics, 3.4.0-nightlybeta3.2507-23
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
  (function (global, factory) {
6
6
  var undef = "undefined";
7
- var nsKey, key, nm, theExports = {}, modName = "es5_applicationinsights_analytics_js_3_4_0_nightlybeta3_2505_36", msMod="__ms$mod__";
8
- var mods={}, modDetail=mods[modName]={}, ver="3.4.0-nightlybeta3.2505-36";
7
+ var nsKey, key, nm, theExports = {}, modName = "es5_applicationinsights_analytics_js_3_4_0_nightlybeta3_2507_23", msMod="__ms$mod__";
8
+ var mods={}, modDetail=mods[modName]={}, ver="3.4.0-nightlybeta3.2507-23";
9
9
  var baseNs=global, nsKey="Microsoft", baseNs=baseNs[nsKey]=(baseNs[nsKey]||{});
10
10
  // Versioned namespace "Microsoft.ApplicationInsights3"
11
11
  var exportNs=baseNs, nsKey="ApplicationInsights3", exportNs=exportNs[nsKey]=(exportNs[nsKey]||{});
@@ -1218,6 +1218,8 @@ var _DYN_SET_NEXT_PLUGIN = "setNextPlugin";
1218
1218
  var _DYN_USER_AGENT = "userAgent";
1219
1219
  var _DYN_SPLIT$1 = "split";
1220
1220
  var _DYN_REPLACE = "replace";
1221
+ var _DYN_SUBSTRING = "substring";
1222
+ var _DYN_INDEX_OF = "indexOf";
1221
1223
  var _DYN_TYPE = "type";
1222
1224
  var _DYN_EVT_NAME = "evtName";
1223
1225
  var _DYN_IS_CHILD_EVT = "isChildEvt";
@@ -1252,6 +1254,8 @@ var STR_GET_PERF_MGR = "getPerfMgr";
1252
1254
  var STR_DOMAIN = "domain";
1253
1255
  var STR_PATH = "path";
1254
1256
  var STR_NOT_DYNAMIC_ERROR = "Not dynamic - ";
1257
+ var STR_REDACTED = "REDACTED";
1258
+ var DEFAULT_SENSITIVE_PARAMS = ["sig", "Signature", "AWSAccessKeyId", "X-Goog-Signature"];
1255
1259
 
1256
1260
  var strGetPrototypeOf = "getPrototypeOf";
1257
1261
  var rCamelCase = /-([a-z])/g;
@@ -1379,6 +1383,110 @@ function isIE() {
1379
1383
  }
1380
1384
  return _isTrident;
1381
1385
  }
1386
+ function redactUserInfo(url) {
1387
+ return url.replace(/^([a-zA-Z][a-zA-Z0-9+.-]*:\/\/)([^:@]{1,200}):([^@]{1,200})@(.*)$/, "$1REDACTED:REDACTED@$4");
1388
+ }
1389
+ function redactQueryParameters(url, config) {
1390
+ var sensitiveParams;
1391
+ var questionMarkIndex = strIndexOf(url, "?");
1392
+ if (questionMarkIndex === -1) {
1393
+ return url;
1394
+ }
1395
+ if (config && config.redactQueryParams) {
1396
+ sensitiveParams = DEFAULT_SENSITIVE_PARAMS.concat(config.redactQueryParams);
1397
+ }
1398
+ else {
1399
+ sensitiveParams = DEFAULT_SENSITIVE_PARAMS;
1400
+ }
1401
+ var baseUrl = strSubstring(url, 0, questionMarkIndex + 1);
1402
+ var queryString = strSubstring(url, questionMarkIndex + 1);
1403
+ var fragment = STR_EMPTY;
1404
+ var hashIndex = strIndexOf(queryString, "#");
1405
+ if (hashIndex !== -1) {
1406
+ fragment = strSubstring(queryString, hashIndex);
1407
+ queryString = strSubstring(queryString, 0, hashIndex);
1408
+ }
1409
+ var hasPotentialSensitiveParam = false;
1410
+ for (var i = 0; i < sensitiveParams[_DYN_LENGTH$2 ]; i++) {
1411
+ var paramCheck = sensitiveParams[i] + "=";
1412
+ if (strIndexOf(queryString, paramCheck) !== -1) {
1413
+ hasPotentialSensitiveParam = true;
1414
+ break;
1415
+ }
1416
+ }
1417
+ if (!hasPotentialSensitiveParam) {
1418
+ return url;
1419
+ }
1420
+ var resultParts = [];
1421
+ var anyParamRedacted = false;
1422
+ if (queryString && queryString[_DYN_LENGTH$2 ]) {
1423
+ var pairs = queryString[_DYN_SPLIT$1 ]("&");
1424
+ for (var i = 0; i < pairs[_DYN_LENGTH$2 ]; i++) {
1425
+ var pair = pairs[i];
1426
+ if (!pair) {
1427
+ continue;
1428
+ }
1429
+ var equalsIndex = strIndexOf(pair, "=");
1430
+ if (equalsIndex === -1) {
1431
+ resultParts[_DYN_PUSH ](pair);
1432
+ }
1433
+ else {
1434
+ var paramName = pair[_DYN_SUBSTRING ](0, equalsIndex);
1435
+ var paramValue = pair[_DYN_SUBSTRING ](equalsIndex + 1);
1436
+ if (paramValue === STR_EMPTY) {
1437
+ resultParts[_DYN_PUSH ](pair);
1438
+ }
1439
+ else {
1440
+ var shouldRedact = false;
1441
+ for (var j = 0; j < sensitiveParams[_DYN_LENGTH$2 ]; j++) {
1442
+ if (paramName === sensitiveParams[j]) {
1443
+ shouldRedact = true;
1444
+ anyParamRedacted = true;
1445
+ break;
1446
+ }
1447
+ }
1448
+ if (shouldRedact) {
1449
+ resultParts[_DYN_PUSH ](paramName + "=" + STR_REDACTED);
1450
+ }
1451
+ else {
1452
+ resultParts[_DYN_PUSH ](pair);
1453
+ }
1454
+ }
1455
+ }
1456
+ }
1457
+ }
1458
+ if (!anyParamRedacted) {
1459
+ return url;
1460
+ }
1461
+ return baseUrl + resultParts.join("&") + fragment;
1462
+ }
1463
+ function fieldRedaction(input, config) {
1464
+ if (!input || input[_DYN_INDEX_OF ](" ") !== -1) {
1465
+ return input;
1466
+ }
1467
+ var isRedactionDisabled = config && config.redactUrls === false;
1468
+ if (isRedactionDisabled) {
1469
+ return input;
1470
+ }
1471
+ var hasCredentials = strIndexOf(input, "@") !== -1;
1472
+ var hasQueryParams = strIndexOf(input, "?") !== -1;
1473
+ if (!hasCredentials && !hasQueryParams) {
1474
+ return input;
1475
+ }
1476
+ try {
1477
+ var result = input;
1478
+ if (hasCredentials) {
1479
+ result = redactUserInfo(input);
1480
+ }
1481
+ if (hasQueryParams) {
1482
+ result = redactQueryParameters(result, config);
1483
+ }
1484
+ return result;
1485
+ }
1486
+ catch (e) {
1487
+ return input;
1488
+ }
1489
+ }
1382
1490
 
1383
1491
  var UInt32Mask = 0x100000000;
1384
1492
  var MaxUInt32 = 0xffffffff;
@@ -1450,7 +1558,7 @@ function newId(maxLength) {
1450
1558
  return result;
1451
1559
  }
1452
1560
 
1453
- var version = '3.4.0-nightlybeta3.2505-36';
1561
+ var version = '3.4.0-nightlybeta3.2507-23';
1454
1562
  var instanceName = "." + newId(6);
1455
1563
  var _dataUid = 0;
1456
1564
  function _canAcceptData(target) {
@@ -2116,6 +2224,54 @@ function onConfigChange(config, configHandler, logger) {
2116
2224
  return createDynamicConfig(config, null, logger)[_DYN_WATCH ](configHandler);
2117
2225
  }
2118
2226
 
2227
+ function generateW3CId() {
2228
+ var hexValues = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"];
2229
+ var oct = STR_EMPTY, tmp;
2230
+ for (var a = 0; a < 4; a++) {
2231
+ tmp = random32();
2232
+ oct +=
2233
+ hexValues[tmp & 0xF] +
2234
+ hexValues[tmp >> 4 & 0xF] +
2235
+ hexValues[tmp >> 8 & 0xF] +
2236
+ hexValues[tmp >> 12 & 0xF] +
2237
+ hexValues[tmp >> 16 & 0xF] +
2238
+ hexValues[tmp >> 20 & 0xF] +
2239
+ hexValues[tmp >> 24 & 0xF] +
2240
+ hexValues[tmp >> 28 & 0xF];
2241
+ }
2242
+ var clockSequenceHi = hexValues[8 + (random32() & 0x03) | 0];
2243
+ return strSubstr(oct, 0, 8) + strSubstr(oct, 9, 4) + "4" + strSubstr(oct, 13, 3) + clockSequenceHi + strSubstr(oct, 16, 3) + strSubstr(oct, 19, 12);
2244
+ }
2245
+
2246
+ function findAllScripts(doc) {
2247
+ var scripts = doc.getElementsByTagName("script");
2248
+ var result = [];
2249
+ arrForEach(scripts, function (script) {
2250
+ var src = script[_DYN_GET_ATTRIBUTE ]("src");
2251
+ if (src) {
2252
+ var crossOrigin = script[_DYN_GET_ATTRIBUTE ]("crossorigin");
2253
+ var async = script.hasAttribute("async") === true;
2254
+ var defer = script.hasAttribute("defer") === true;
2255
+ var referrerPolicy = script[_DYN_GET_ATTRIBUTE ]("referrerpolicy");
2256
+ var info = { url: src };
2257
+ if (crossOrigin) {
2258
+ info.crossOrigin = crossOrigin;
2259
+ }
2260
+ if (async) {
2261
+ info.async = async;
2262
+ }
2263
+ if (defer) {
2264
+ info.defer = defer;
2265
+ }
2266
+ if (referrerPolicy) {
2267
+ info.referrerPolicy = referrerPolicy;
2268
+ }
2269
+ result[_DYN_PUSH ](info);
2270
+ }
2271
+ });
2272
+ return result;
2273
+ }
2274
+
2119
2275
  function _stringToBoolOrDefault(theValue, defaultValue, theConfig) {
2120
2276
  if (!theValue && isNullOrUndefined(theValue)) {
2121
2277
  return defaultValue;
@@ -2765,68 +2921,6 @@ function doPerf(mgrSource, getSource, func, details, isAsync) {
2765
2921
  return func();
2766
2922
  }
2767
2923
 
2768
- function generateW3CId() {
2769
- var hexValues = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"];
2770
- var oct = STR_EMPTY, tmp;
2771
- for (var a = 0; a < 4; a++) {
2772
- tmp = random32();
2773
- oct +=
2774
- hexValues[tmp & 0xF] +
2775
- hexValues[tmp >> 4 & 0xF] +
2776
- hexValues[tmp >> 8 & 0xF] +
2777
- hexValues[tmp >> 12 & 0xF] +
2778
- hexValues[tmp >> 16 & 0xF] +
2779
- hexValues[tmp >> 20 & 0xF] +
2780
- hexValues[tmp >> 24 & 0xF] +
2781
- hexValues[tmp >> 28 & 0xF];
2782
- }
2783
- var clockSequenceHi = hexValues[8 + (random32() & 0x03) | 0];
2784
- return strSubstr(oct, 0, 8) + strSubstr(oct, 9, 4) + "4" + strSubstr(oct, 13, 3) + clockSequenceHi + strSubstr(oct, 16, 3) + strSubstr(oct, 19, 12);
2785
- }
2786
-
2787
- var INVALID_TRACE_ID = "00000000000000000000000000000000";
2788
- var INVALID_SPAN_ID = "0000000000000000";
2789
- function _isValid(value, len, invalidValue) {
2790
- if (value && value[_DYN_LENGTH$2 ] === len && value !== invalidValue) {
2791
- return !!value.match(/^[\da-f]*$/i);
2792
- }
2793
- return false;
2794
- }
2795
- function isValidTraceId(value) {
2796
- return _isValid(value, 32, INVALID_TRACE_ID);
2797
- }
2798
- function isValidSpanId(value) {
2799
- return _isValid(value, 16, INVALID_SPAN_ID);
2800
- }
2801
- function findAllScripts(doc) {
2802
- var scripts = doc.getElementsByTagName("script");
2803
- var result = [];
2804
- arrForEach(scripts, function (script) {
2805
- var src = script[_DYN_GET_ATTRIBUTE ]("src");
2806
- if (src) {
2807
- var crossOrigin = script[_DYN_GET_ATTRIBUTE ]("crossorigin");
2808
- var async = script.hasAttribute("async") === true;
2809
- var defer = script.hasAttribute("defer") === true;
2810
- var referrerPolicy = script[_DYN_GET_ATTRIBUTE ]("referrerpolicy");
2811
- var info = { url: src };
2812
- if (crossOrigin) {
2813
- info.crossOrigin = crossOrigin;
2814
- }
2815
- if (async) {
2816
- info.async = async;
2817
- }
2818
- if (defer) {
2819
- info.defer = defer;
2820
- }
2821
- if (referrerPolicy) {
2822
- info.referrerPolicy = referrerPolicy;
2823
- }
2824
- result[_DYN_PUSH ](info);
2825
- }
2826
- });
2827
- return result;
2828
- }
2829
-
2830
2924
  var pluginStateData = createElmNodeData("plugin");
2831
2925
  function _getPluginState(plugin) {
2832
2926
  return pluginStateData.get(plugin, "state", {}, true);
@@ -2915,27 +3009,26 @@ function _createInternalContext(telemetryChain, dynamicHandler, core, startAt) {
2915
3009
  }
2916
3010
  function _getExtCfg(identifier, createIfMissing) {
2917
3011
  var idCfg = null;
2918
- var cfg = dynamicHandler.cfg;
3012
+ var extCfg = _getCfg(dynamicHandler.cfg, "extensionConfig", createIfMissing);
3013
+ if (extCfg) {
3014
+ idCfg = _getCfg(extCfg, identifier, createIfMissing);
3015
+ }
3016
+ return idCfg;
3017
+ }
3018
+ function _getCfg(cfg, identifier, createIfMissing) {
3019
+ var idCfg = null;
2919
3020
  if (cfg && identifier) {
2920
- var extCfg = cfg[STR_EXTENSION_CONFIG ];
2921
- if (!extCfg && createIfMissing) {
2922
- extCfg = {};
2923
- }
2924
- cfg[STR_EXTENSION_CONFIG] = extCfg;
2925
- extCfg = dynamicHandler.ref(cfg, STR_EXTENSION_CONFIG);
2926
- if (extCfg) {
2927
- idCfg = extCfg[identifier];
2928
- if (!idCfg && createIfMissing) {
2929
- idCfg = {};
2930
- }
2931
- extCfg[identifier] = idCfg;
2932
- idCfg = dynamicHandler.ref(extCfg, identifier);
3021
+ idCfg = cfg[identifier];
3022
+ if (!idCfg && createIfMissing) {
3023
+ idCfg = {};
2933
3024
  }
3025
+ cfg[identifier] = idCfg;
3026
+ idCfg = dynamicHandler.ref(cfg, identifier);
2934
3027
  }
2935
3028
  return idCfg;
2936
3029
  }
2937
- function _resolveExtCfg(identifier, defaultValues) {
2938
- var newConfig = _getExtCfg(identifier, true);
3030
+ function _resolveExtCfg(identifier, defaultValues, rootOnly) {
3031
+ var newConfig = rootOnly ? _getCfg(dynamicHandler.cfg, identifier, true) : _getExtCfg(identifier, true);
2939
3032
  if (defaultValues) {
2940
3033
  objForEachKey(defaultValues, function (field, defaultValue) {
2941
3034
  if (isNullOrUndefined(newConfig[field])) {
@@ -3756,7 +3849,10 @@ function dataSanitizeString(logger, value, maxLength) {
3756
3849
  }
3757
3850
  return valueTrunc || value;
3758
3851
  }
3759
- function dataSanitizeUrl(logger, url) {
3852
+ function dataSanitizeUrl(logger, url, config) {
3853
+ if (isString(url)) {
3854
+ url = fieldRedaction(url, config);
3855
+ }
3760
3856
  return dataSanitizeInput(logger, url, 2048 , 66 );
3761
3857
  }
3762
3858
  function dataSanitizeMessage(logger, message) {
@@ -3919,48 +4015,11 @@ function dateTimeUtilsDuration(start, end) {
3919
4015
  }
3920
4016
  return result;
3921
4017
  }
3922
- function createDistributedTraceContextFromTrace(telemetryTrace, parentCtx) {
3923
- var trace = telemetryTrace || {};
3924
- return {
3925
- getName: function () {
3926
- return trace[_DYN_NAME ];
3927
- },
3928
- setName: function (newValue) {
3929
- parentCtx && parentCtx.setName(newValue);
3930
- trace[_DYN_NAME ] = newValue;
3931
- },
3932
- getTraceId: function () {
3933
- return trace.traceID;
3934
- },
3935
- setTraceId: function (newValue) {
3936
- parentCtx && parentCtx.setTraceId(newValue);
3937
- if (isValidTraceId(newValue)) {
3938
- trace.traceID = newValue;
3939
- }
3940
- },
3941
- getSpanId: function () {
3942
- return trace.parentID;
3943
- },
3944
- setSpanId: function (newValue) {
3945
- parentCtx && parentCtx.setSpanId(newValue);
3946
- if (isValidSpanId(newValue)) {
3947
- trace.parentID = newValue;
3948
- }
3949
- },
3950
- getTraceFlags: function () {
3951
- return trace.traceFlags;
3952
- },
3953
- setTraceFlags: function (newTraceFlags) {
3954
- parentCtx && parentCtx.setTraceFlags(newTraceFlags);
3955
- trace.traceFlags = newTraceFlags;
3956
- }
3957
- };
3958
- }
3959
4018
 
3960
- var StorageType = createEnumStyle({
4019
+ var StorageType = ( /* @__PURE__ */createEnumStyle({
3961
4020
  LocalStorage: 0 ,
3962
4021
  SessionStorage: 1
3963
- });
4022
+ }));
3964
4023
 
3965
4024
  var _canUseLocalStorage = undefined;
3966
4025
  var _canUseSessionStorage = undefined;
@@ -4893,7 +4952,6 @@ function createDomEvent(eventName) {
4893
4952
  return event;
4894
4953
  }
4895
4954
 
4896
- var PropertiesPluginIdentifier = "AppInsightsPropertiesPlugin";
4897
4955
  var AnalyticsPluginIdentifier = "ApplicationInsightsAnalytics";
4898
4956
 
4899
4957
  var _DYN_TO_STRING = "toString";
@@ -4905,8 +4963,10 @@ var _DYN_ENVELOPE_TYPE = "envelopeType";
4905
4963
  var _DYN_DIAG_LOG = "diagLog";
4906
4964
  var _DYN_TRACK = "track";
4907
4965
  var _DYN_TRACK_PAGE_VIEW = "trackPageView";
4966
+ var _DYN_CONFIG = "config";
4908
4967
  var _DYN_TRACK_PREVIOUS_PAGE_1 = "trackPreviousPageVisit";
4909
4968
  var _DYN_SEND_PAGE_VIEW_INTER2 = "sendPageViewInternal";
4969
+ var _DYN_REF_URI = "refUri";
4910
4970
  var _DYN_START_TIME = "startTime";
4911
4971
  var _DYN_PROPERTIES = "properties";
4912
4972
  var _DYN_DURATION = "duration";
@@ -4938,168 +4998,168 @@ var _DYN_REQUEST_START = "requestStart";
4938
4998
  var _DYN_LOAD_EVENT_END = "loadEventEnd";
4939
4999
  var _DYN_RESPONSE_END = "responseEnd";
4940
5000
  var _DYN_CONNECT_END = "connectEnd";
5001
+ var _DYN_PAGE_VISIT_TIME = "pageVisitTime";
4941
5002
 
4942
- var PageViewManager = /** @class */ (function () {
4943
- function PageViewManager(appInsights, overridePageViewDuration, core, pageViewPerformanceManager) {
4944
- dynamicProto(PageViewManager, this, function (_self) {
4945
- var queueTimer = null;
4946
- var itemQueue = [];
4947
- var pageViewPerformanceSent = false;
4948
- var firstPageViewSent = false;
4949
- var _logger;
4950
- if (core) {
4951
- _logger = core.logger;
4952
- }
4953
- function _flushChannels(isAsync) {
4954
- if (core) {
4955
- core.flush(isAsync, function () {
4956
- });
4957
- }
4958
- }
4959
- function _startTimer() {
4960
- if (!queueTimer) {
4961
- queueTimer = scheduleTimeout((function () {
4962
- queueTimer = null;
4963
- var allItems = itemQueue.slice(0);
4964
- var doFlush = false;
4965
- itemQueue = [];
4966
- arrForEach(allItems, function (item) {
4967
- if (!item()) {
4968
- itemQueue.push(item);
4969
- }
4970
- else {
4971
- doFlush = true;
4972
- }
4973
- });
4974
- if (itemQueue[_DYN_LENGTH ] > 0) {
4975
- _startTimer();
4976
- }
4977
- if (doFlush) {
4978
- _flushChannels(true);
4979
- }
4980
- }), 100);
4981
- }
4982
- }
4983
- function _addQueue(cb) {
4984
- itemQueue.push(cb);
4985
- _startTimer();
4986
- }
4987
- _self[_DYN_TRACK_PAGE_VIEW ] = function (pageView, customProperties) {
4988
- var name = pageView.name;
4989
- if (isNullOrUndefined(name) || typeof name !== "string") {
4990
- var doc = getDocument();
4991
- name = pageView.name = doc && doc.title || "";
4992
- }
4993
- var uri = pageView.uri;
4994
- if (isNullOrUndefined(uri) || typeof uri !== "string") {
4995
- var location_1 = getLocation();
4996
- uri = pageView.uri = location_1 && location_1[_DYN_HREF ] || "";
4997
- }
4998
- if (!firstPageViewSent) {
4999
- var perf = getPerformance();
5000
- var navigationEntries = (perf && perf[_DYN_GET_ENTRIES_BY_TYPE ] && perf[_DYN_GET_ENTRIES_BY_TYPE ]("navigation"));
5001
- if (navigationEntries && navigationEntries[0] && !isUndefined(perf.timeOrigin)) {
5002
- var loadEventStart = navigationEntries[0].loadEventStart;
5003
- pageView[_DYN_START_TIME ] = new Date(perf.timeOrigin + loadEventStart);
5003
+ function createPageViewManager(appInsights, overridePageViewDuration, core, pageViewPerformanceManager) {
5004
+ var queueTimer = null;
5005
+ var itemQueue = [];
5006
+ var pageViewPerformanceSent = false;
5007
+ var firstPageViewSent = false;
5008
+ var _logger;
5009
+ if (core) {
5010
+ _logger = core.logger;
5011
+ }
5012
+ function _flushChannels(isAsync) {
5013
+ if (core) {
5014
+ core.flush(isAsync, function () {
5015
+ });
5016
+ }
5017
+ }
5018
+ function _startTimer() {
5019
+ if (!queueTimer) {
5020
+ queueTimer = scheduleTimeout((function () {
5021
+ queueTimer = null;
5022
+ var allItems = itemQueue.slice(0);
5023
+ var doFlush = false;
5024
+ itemQueue = [];
5025
+ arrForEach(allItems, function (item) {
5026
+ if (!item()) {
5027
+ itemQueue.push(item);
5004
5028
  }
5005
5029
  else {
5006
- var duration_1 = ((customProperties || pageView[_DYN_PROPERTIES ] || {})[_DYN_DURATION ] || 0);
5007
- pageView[_DYN_START_TIME ] = new Date(new Date().getTime() - duration_1);
5030
+ doFlush = true;
5008
5031
  }
5009
- firstPageViewSent = true;
5032
+ });
5033
+ if (itemQueue[_DYN_LENGTH ] > 0) {
5034
+ _startTimer();
5010
5035
  }
5011
- if (!pageViewPerformanceManager[_DYN_IS_PERFORMANCE_TIMIN15 ]()) {
5012
- appInsights[_DYN_SEND_PAGE_VIEW_INTER2 ](pageView, customProperties);
5036
+ if (doFlush) {
5013
5037
  _flushChannels(true);
5014
- if (!isWebWorker()) {
5015
- _throwInternal(_logger, 2 , 25 , "trackPageView: navigation timing API used for calculation of page duration is not supported in this browser. This page view will be collected without duration and timing info.");
5016
- }
5017
- return;
5018
5038
  }
5019
- var pageViewSent = false;
5020
- var customDuration;
5021
- var start = pageViewPerformanceManager[_DYN_GET_PERFORMANCE_TIMI16 ]()[_DYN_NAVIGATION_START ];
5022
- if (start > 0) {
5023
- customDuration = dateTimeUtilsDuration(start, +new Date);
5024
- if (!pageViewPerformanceManager[_DYN_SHOULD_COLLECT_DURAT17 ](customDuration)) {
5025
- customDuration = undefined;
5026
- }
5039
+ }), 100);
5040
+ }
5041
+ }
5042
+ function _addQueue(cb) {
5043
+ itemQueue.push(cb);
5044
+ _startTimer();
5045
+ }
5046
+ return {
5047
+ trackPageView: function (pageView, customProperties) {
5048
+ var name = pageView.name;
5049
+ if (isNullOrUndefined(name) || typeof name !== "string") {
5050
+ var doc = getDocument();
5051
+ name = pageView.name = doc && doc.title || "";
5052
+ }
5053
+ var uri = pageView.uri;
5054
+ if (isNullOrUndefined(uri) || typeof uri !== "string") {
5055
+ var location_1 = getLocation();
5056
+ uri = pageView.uri = location_1 && location_1[_DYN_HREF ] || "";
5057
+ }
5058
+ if (core && core[_DYN_CONFIG ]) {
5059
+ uri = pageView.uri = fieldRedaction(pageView.uri, core[_DYN_CONFIG ]);
5060
+ }
5061
+ if (!firstPageViewSent) {
5062
+ var perf = getPerformance();
5063
+ var navigationEntries = (perf && perf[_DYN_GET_ENTRIES_BY_TYPE ] && perf[_DYN_GET_ENTRIES_BY_TYPE ]("navigation"));
5064
+ if (navigationEntries && navigationEntries[0] && !isUndefined(perf.timeOrigin)) {
5065
+ var loadEventStart = navigationEntries[0].loadEventStart;
5066
+ pageView[_DYN_START_TIME ] = new Date(perf.timeOrigin + loadEventStart);
5027
5067
  }
5028
- var duration;
5029
- if (!isNullOrUndefined(customProperties) &&
5030
- !isNullOrUndefined(customProperties[_DYN_DURATION ])) {
5031
- duration = customProperties[_DYN_DURATION ];
5068
+ else {
5069
+ var duration_1 = ((customProperties || pageView[_DYN_PROPERTIES ] || {})[_DYN_DURATION ] || 0);
5070
+ pageView[_DYN_START_TIME ] = new Date(new Date().getTime() - duration_1);
5032
5071
  }
5033
- if (overridePageViewDuration || !isNaN(duration)) {
5034
- if (isNaN(duration)) {
5035
- if (!customProperties) {
5036
- customProperties = {};
5037
- }
5038
- customProperties[_DYN_DURATION ] = customDuration;
5039
- }
5040
- appInsights[_DYN_SEND_PAGE_VIEW_INTER2 ](pageView, customProperties);
5041
- _flushChannels(true);
5042
- pageViewSent = true;
5072
+ firstPageViewSent = true;
5073
+ }
5074
+ if (!pageViewPerformanceManager[_DYN_IS_PERFORMANCE_TIMIN15 ]()) {
5075
+ appInsights[_DYN_SEND_PAGE_VIEW_INTER2 ](pageView, customProperties);
5076
+ _flushChannels(true);
5077
+ if (!isWebWorker()) {
5078
+ _throwInternal(_logger, 2 , 25 , "trackPageView: navigation timing API used for calculation of page duration is not supported in this browser. This page view will be collected without duration and timing info.");
5043
5079
  }
5044
- var maxDurationLimit = 60000;
5045
- if (!customProperties) {
5046
- customProperties = {};
5080
+ return;
5081
+ }
5082
+ var pageViewSent = false;
5083
+ var customDuration;
5084
+ var start = pageViewPerformanceManager[_DYN_GET_PERFORMANCE_TIMI16 ]()[_DYN_NAVIGATION_START ];
5085
+ if (start > 0) {
5086
+ customDuration = dateTimeUtilsDuration(start, +new Date);
5087
+ if (!pageViewPerformanceManager[_DYN_SHOULD_COLLECT_DURAT17 ](customDuration)) {
5088
+ customDuration = undefined;
5047
5089
  }
5048
- _addQueue(function () {
5049
- var processed = false;
5050
- try {
5051
- if (pageViewPerformanceManager[_DYN_IS_PERFORMANCE_TIMIN18 ]()) {
5052
- processed = true;
5053
- var pageViewPerformance = {
5054
- name: name,
5055
- uri: uri
5056
- };
5057
- pageViewPerformanceManager[_DYN_POPULATE_PAGE_VIEW_P4 ](pageViewPerformance);
5058
- if (!pageViewPerformance.isValid && !pageViewSent) {
5059
- customProperties[_DYN_DURATION ] = customDuration;
5060
- appInsights[_DYN_SEND_PAGE_VIEW_INTER2 ](pageView, customProperties);
5061
- }
5062
- else {
5063
- if (!pageViewSent) {
5064
- customProperties[_DYN_DURATION ] = pageViewPerformance.durationMs;
5065
- appInsights[_DYN_SEND_PAGE_VIEW_INTER2 ](pageView, customProperties);
5066
- }
5067
- if (!pageViewPerformanceSent) {
5068
- appInsights[_DYN_SEND_PAGE_VIEW_PERFO3 ](pageViewPerformance, customProperties);
5069
- pageViewPerformanceSent = true;
5070
- }
5071
- }
5090
+ }
5091
+ var duration;
5092
+ if (!isNullOrUndefined(customProperties) &&
5093
+ !isNullOrUndefined(customProperties[_DYN_DURATION ])) {
5094
+ duration = customProperties[_DYN_DURATION ];
5095
+ }
5096
+ if (overridePageViewDuration || !isNaN(duration)) {
5097
+ if (isNaN(duration)) {
5098
+ if (!customProperties) {
5099
+ customProperties = {};
5100
+ }
5101
+ customProperties[_DYN_DURATION ] = customDuration;
5102
+ }
5103
+ appInsights[_DYN_SEND_PAGE_VIEW_INTER2 ](pageView, customProperties);
5104
+ _flushChannels(true);
5105
+ pageViewSent = true;
5106
+ }
5107
+ var maxDurationLimit = 60000;
5108
+ if (!customProperties) {
5109
+ customProperties = {};
5110
+ }
5111
+ _addQueue(function () {
5112
+ var processed = false;
5113
+ try {
5114
+ if (pageViewPerformanceManager[_DYN_IS_PERFORMANCE_TIMIN18 ]()) {
5115
+ processed = true;
5116
+ var pageViewPerformance = {
5117
+ name: name,
5118
+ uri: uri
5119
+ };
5120
+ pageViewPerformanceManager[_DYN_POPULATE_PAGE_VIEW_P4 ](pageViewPerformance);
5121
+ if (!pageViewPerformance.isValid && !pageViewSent) {
5122
+ customProperties[_DYN_DURATION ] = customDuration;
5123
+ appInsights[_DYN_SEND_PAGE_VIEW_INTER2 ](pageView, customProperties);
5072
5124
  }
5073
- else if (start > 0 && dateTimeUtilsDuration(start, +new Date) > maxDurationLimit) {
5074
- processed = true;
5125
+ else {
5075
5126
  if (!pageViewSent) {
5076
- customProperties[_DYN_DURATION ] = maxDurationLimit;
5127
+ customProperties[_DYN_DURATION ] = pageViewPerformance.durationMs;
5077
5128
  appInsights[_DYN_SEND_PAGE_VIEW_INTER2 ](pageView, customProperties);
5078
5129
  }
5130
+ if (!pageViewPerformanceSent) {
5131
+ appInsights[_DYN_SEND_PAGE_VIEW_PERFO3 ](pageViewPerformance, customProperties);
5132
+ pageViewPerformanceSent = true;
5133
+ }
5079
5134
  }
5080
5135
  }
5081
- catch (e) {
5082
- _throwInternal(_logger, 1 , 38 , "trackPageView failed on page load calculation: " + getExceptionName(e), { exception: dumpObj(e) });
5136
+ else if (start > 0 && dateTimeUtilsDuration(start, +new Date) > maxDurationLimit) {
5137
+ processed = true;
5138
+ if (!pageViewSent) {
5139
+ customProperties[_DYN_DURATION ] = maxDurationLimit;
5140
+ appInsights[_DYN_SEND_PAGE_VIEW_INTER2 ](pageView, customProperties);
5141
+ }
5083
5142
  }
5084
- return processed;
5085
- });
5086
- };
5087
- _self.teardown = function (unloadCtx, unloadState) {
5088
- if (queueTimer) {
5089
- queueTimer.cancel();
5090
- queueTimer = null;
5091
- var allItems = itemQueue.slice(0);
5092
- itemQueue = [];
5093
- arrForEach(allItems, function (item) {
5094
- if (item()) ;
5095
- });
5096
5143
  }
5097
- };
5098
- });
5099
- }
5100
- PageViewManager.__ieDyn=1;
5101
- return PageViewManager;
5102
- }());
5144
+ catch (e) {
5145
+ _throwInternal(_logger, 1 , 38 , "trackPageView failed on page load calculation: " + getExceptionName(e), { exception: dumpObj(e) });
5146
+ }
5147
+ return processed;
5148
+ });
5149
+ },
5150
+ teardown: function (unloadCtx, unloadState) {
5151
+ if (queueTimer) {
5152
+ queueTimer.cancel();
5153
+ queueTimer = null;
5154
+ var allItems = itemQueue.slice(0);
5155
+ itemQueue = [];
5156
+ arrForEach(allItems, function (item) {
5157
+ if (item()) ;
5158
+ });
5159
+ }
5160
+ }
5161
+ };
5162
+ }
5103
5163
 
5104
5164
  var MAX_DURATION_ALLOWED = 3600000;
5105
5165
  var botAgentNames = ["googlebot", "adsbot-google", "apis-google", "mediapartners-google"];
@@ -5161,143 +5221,136 @@ function _shouldCollectDuration() {
5161
5221
  }
5162
5222
  return true;
5163
5223
  }
5164
- var PageViewPerformanceManager = /** @class */ (function () {
5165
- function PageViewPerformanceManager(core) {
5166
- var _logger = safeGetLogger(core);
5167
- dynamicProto(PageViewPerformanceManager, this, function (_self) {
5168
- _self[_DYN_POPULATE_PAGE_VIEW_P4 ] = function (pageViewPerformance) {
5169
- pageViewPerformance.isValid = false;
5170
- var navigationTiming = _getPerformanceNavigationTiming();
5171
- var timing = _getPerformanceTiming();
5172
- var total = 0;
5173
- var network = 0;
5174
- var request = 0;
5175
- var response = 0;
5176
- var dom = 0;
5177
- if (navigationTiming || timing) {
5178
- if (navigationTiming) {
5179
- total = navigationTiming[_DYN_DURATION ];
5180
- network = navigationTiming[_DYN_START_TIME ] === 0 ? navigationTiming[_DYN_CONNECT_END ] : dateTimeUtilsDuration(navigationTiming[_DYN_START_TIME ], navigationTiming[_DYN_CONNECT_END ]);
5181
- request = dateTimeUtilsDuration(navigationTiming.requestStart, navigationTiming[_DYN_RESPONSE_START ]);
5182
- response = dateTimeUtilsDuration(navigationTiming[_DYN_RESPONSE_START ], navigationTiming[_DYN_RESPONSE_END ]);
5183
- dom = dateTimeUtilsDuration(navigationTiming.responseEnd, navigationTiming[_DYN_LOAD_EVENT_END ]);
5184
- }
5185
- else {
5186
- total = dateTimeUtilsDuration(timing[_DYN_NAVIGATION_START ], timing[_DYN_LOAD_EVENT_END ]);
5187
- network = dateTimeUtilsDuration(timing[_DYN_NAVIGATION_START ], timing[_DYN_CONNECT_END ]);
5188
- request = dateTimeUtilsDuration(timing.requestStart, timing[_DYN_RESPONSE_START ]);
5189
- response = dateTimeUtilsDuration(timing[_DYN_RESPONSE_START ], timing[_DYN_RESPONSE_END ]);
5190
- dom = dateTimeUtilsDuration(timing.responseEnd, timing[_DYN_LOAD_EVENT_END ]);
5191
- }
5192
- if (total === 0) {
5193
- _throwInternal(_logger, 2 , 10 , "error calculating page view performance.", { total: total, network: network, request: request, response: response, dom: dom });
5194
- }
5195
- else if (!_self[_DYN_SHOULD_COLLECT_DURAT17 ](total, network, request, response, dom)) {
5196
- _throwInternal(_logger, 2 , 45 , "Invalid page load duration value. Browser perf data won't be sent.", { total: total, network: network, request: request, response: response, dom: dom });
5197
- }
5198
- else if (total < mathFloor(network) + mathFloor(request) + mathFloor(response) + mathFloor(dom)) {
5199
- _throwInternal(_logger, 2 , 8 , "client performance math error.", { total: total, network: network, request: request, response: response, dom: dom });
5200
- }
5201
- else {
5202
- pageViewPerformance.durationMs = total;
5203
- pageViewPerformance.perfTotal = pageViewPerformance[_DYN_DURATION ] = msToTimeSpan(total);
5204
- pageViewPerformance.networkConnect = msToTimeSpan(network);
5205
- pageViewPerformance.sentRequest = msToTimeSpan(request);
5206
- pageViewPerformance.receivedResponse = msToTimeSpan(response);
5207
- pageViewPerformance.domProcessing = msToTimeSpan(dom);
5208
- pageViewPerformance.isValid = true;
5209
- }
5224
+ function createPageViewPerformanceManager(core) {
5225
+ var _a;
5226
+ var _logger = safeGetLogger(core);
5227
+ return _a = {},
5228
+ _a[_DYN_POPULATE_PAGE_VIEW_P4 ] = function (pageViewPerformance) {
5229
+ pageViewPerformance.isValid = false;
5230
+ var navigationTiming = _getPerformanceNavigationTiming();
5231
+ var timing = _getPerformanceTiming();
5232
+ var total = 0;
5233
+ var network = 0;
5234
+ var request = 0;
5235
+ var response = 0;
5236
+ var dom = 0;
5237
+ if (navigationTiming || timing) {
5238
+ if (navigationTiming) {
5239
+ total = navigationTiming[_DYN_DURATION ];
5240
+ network = navigationTiming[_DYN_START_TIME ] === 0 ? navigationTiming[_DYN_CONNECT_END ] : dateTimeUtilsDuration(navigationTiming[_DYN_START_TIME ], navigationTiming[_DYN_CONNECT_END ]);
5241
+ request = dateTimeUtilsDuration(navigationTiming.requestStart, navigationTiming[_DYN_RESPONSE_START ]);
5242
+ response = dateTimeUtilsDuration(navigationTiming[_DYN_RESPONSE_START ], navigationTiming[_DYN_RESPONSE_END ]);
5243
+ dom = dateTimeUtilsDuration(navigationTiming.responseEnd, navigationTiming[_DYN_LOAD_EVENT_END ]);
5210
5244
  }
5211
- };
5212
- _self[_DYN_GET_PERFORMANCE_TIMI16 ] = _getPerformanceTiming;
5213
- _self[_DYN_IS_PERFORMANCE_TIMIN15 ] = _isPerformanceTimingSupported;
5214
- _self[_DYN_IS_PERFORMANCE_TIMIN18 ] = _isPerformanceTimingDataReady;
5215
- _self[_DYN_SHOULD_COLLECT_DURAT17 ] = _shouldCollectDuration;
5216
- });
5217
- }
5218
- PageViewPerformanceManager.__ieDyn=1;
5219
- return PageViewPerformanceManager;
5220
- }());
5221
-
5222
- var PageVisitTimeManager = /** @class */ (function () {
5223
- function PageVisitTimeManager(logger, pageVisitTimeTrackingHandler) {
5224
- var prevPageVisitDataKeyName = "prevPageVisitData";
5225
- dynamicProto(PageVisitTimeManager, this, function (_self) {
5226
- _self[_DYN_TRACK_PREVIOUS_PAGE_1 ] = function (currentPageName, currentPageUrl) {
5227
- try {
5228
- var prevPageVisitTimeData = restartPageVisitTimer(currentPageName, currentPageUrl);
5229
- if (prevPageVisitTimeData) {
5230
- pageVisitTimeTrackingHandler(prevPageVisitTimeData.pageName, prevPageVisitTimeData.pageUrl, prevPageVisitTimeData.pageVisitTime);
5231
- }
5245
+ else {
5246
+ total = dateTimeUtilsDuration(timing[_DYN_NAVIGATION_START ], timing[_DYN_LOAD_EVENT_END ]);
5247
+ network = dateTimeUtilsDuration(timing[_DYN_NAVIGATION_START ], timing[_DYN_CONNECT_END ]);
5248
+ request = dateTimeUtilsDuration(timing.requestStart, timing[_DYN_RESPONSE_START ]);
5249
+ response = dateTimeUtilsDuration(timing[_DYN_RESPONSE_START ], timing[_DYN_RESPONSE_END ]);
5250
+ dom = dateTimeUtilsDuration(timing.responseEnd, timing[_DYN_LOAD_EVENT_END ]);
5232
5251
  }
5233
- catch (e) {
5234
- _warnToConsole(logger, "Auto track page visit time failed, metric will not be collected: " + dumpObj(e));
5252
+ if (total === 0) {
5253
+ _throwInternal(_logger, 2 , 10 , "error calculating page view performance.", { total: total, network: network, request: request, response: response, dom: dom });
5235
5254
  }
5236
- };
5237
- function restartPageVisitTimer(pageName, pageUrl) {
5238
- var prevPageVisitData = null;
5239
- try {
5240
- prevPageVisitData = stopPageVisitTimer();
5241
- if (utlCanUseSessionStorage()) {
5242
- if (utlGetSessionStorage(logger, prevPageVisitDataKeyName) != null) {
5243
- throwError("Cannot call startPageVisit consecutively without first calling stopPageVisit");
5244
- }
5245
- var currPageVisitDataStr = getJSON().stringify(new PageVisitData(pageName, pageUrl));
5246
- utlSetSessionStorage(logger, prevPageVisitDataKeyName, currPageVisitDataStr);
5247
- }
5255
+ else if (!_shouldCollectDuration(total, network, request, response, dom)) {
5256
+ _throwInternal(_logger, 2 , 45 , "Invalid page load duration value. Browser perf data won't be sent.", { total: total, network: network, request: request, response: response, dom: dom });
5248
5257
  }
5249
- catch (e) {
5250
- _warnToConsole(logger, "Call to restart failed: " + dumpObj(e));
5251
- prevPageVisitData = null;
5258
+ else if (total < mathFloor(network) + mathFloor(request) + mathFloor(response) + mathFloor(dom)) {
5259
+ _throwInternal(_logger, 2 , 8 , "client performance math error.", { total: total, network: network, request: request, response: response, dom: dom });
5252
5260
  }
5253
- return prevPageVisitData;
5254
- }
5255
- function stopPageVisitTimer() {
5256
- var prevPageVisitData = null;
5257
- try {
5258
- if (utlCanUseSessionStorage()) {
5259
- var pageVisitEndTime = utcNow();
5260
- var pageVisitDataJsonStr = utlGetSessionStorage(logger, prevPageVisitDataKeyName);
5261
- if (pageVisitDataJsonStr && hasJSON()) {
5262
- prevPageVisitData = getJSON().parse(pageVisitDataJsonStr);
5263
- prevPageVisitData.pageVisitTime = pageVisitEndTime - prevPageVisitData.pageVisitStartTime;
5264
- utlRemoveSessionStorage(logger, prevPageVisitDataKeyName);
5265
- }
5266
- }
5261
+ else {
5262
+ pageViewPerformance.durationMs = total;
5263
+ pageViewPerformance.perfTotal = pageViewPerformance[_DYN_DURATION ] = msToTimeSpan(total);
5264
+ pageViewPerformance.networkConnect = msToTimeSpan(network);
5265
+ pageViewPerformance.sentRequest = msToTimeSpan(request);
5266
+ pageViewPerformance.receivedResponse = msToTimeSpan(response);
5267
+ pageViewPerformance.domProcessing = msToTimeSpan(dom);
5268
+ pageViewPerformance.isValid = true;
5267
5269
  }
5268
- catch (e) {
5269
- _warnToConsole(logger, "Stop page visit timer failed: " + dumpObj(e));
5270
- prevPageVisitData = null;
5270
+ }
5271
+ },
5272
+ _a[_DYN_GET_PERFORMANCE_TIMI16 ] = _getPerformanceTiming,
5273
+ _a[_DYN_IS_PERFORMANCE_TIMIN15 ] = _isPerformanceTimingSupported,
5274
+ _a[_DYN_IS_PERFORMANCE_TIMIN18 ] = _isPerformanceTimingDataReady,
5275
+ _a[_DYN_SHOULD_COLLECT_DURAT17 ] = _shouldCollectDuration,
5276
+ _a;
5277
+ }
5278
+
5279
+ function createPageVisitData(pageName, pageUrl) {
5280
+ return {
5281
+ pageVisitStartTime: utcNow(),
5282
+ pageName: pageName,
5283
+ pageUrl: pageUrl,
5284
+ pageVisitTime: 0
5285
+ };
5286
+ }
5287
+ function createPageVisitTimeManager(logger, pageVisitTimeTrackingHandler) {
5288
+ var prevPageVisitDataKeyName = "prevPageVisitData";
5289
+ function restartPageVisitTimer(pageName, pageUrl) {
5290
+ var prevPageVisitData = null;
5291
+ try {
5292
+ prevPageVisitData = stopPageVisitTimer();
5293
+ if (utlCanUseSessionStorage()) {
5294
+ if (utlGetSessionStorage(logger, prevPageVisitDataKeyName) != null) {
5295
+ throwError("Cannot call startPageVisit consecutively without first calling stopPageVisit");
5271
5296
  }
5272
- return prevPageVisitData;
5297
+ var currPageVisitDataStr = getJSON().stringify(createPageVisitData(pageName, pageUrl));
5298
+ utlSetSessionStorage(logger, prevPageVisitDataKeyName, currPageVisitDataStr);
5273
5299
  }
5274
- objDefine(_self, "_logger", { g: function () { return logger; } });
5275
- objDefine(_self, "pageVisitTimeTrackingHandler", { g: function () { return pageVisitTimeTrackingHandler; } });
5276
- });
5300
+ }
5301
+ catch (e) {
5302
+ _warnToConsole(logger, "Call to restart failed: " + dumpObj(e));
5303
+ prevPageVisitData = null;
5304
+ }
5305
+ return prevPageVisitData;
5277
5306
  }
5278
- PageVisitTimeManager.__ieDyn=1;
5279
- return PageVisitTimeManager;
5280
- }());
5281
- var PageVisitData = /** @class */ (function () {
5282
- function PageVisitData(pageName, pageUrl) {
5283
- this.pageVisitStartTime = utcNow();
5284
- this.pageName = pageName;
5285
- this.pageUrl = pageUrl;
5307
+ function stopPageVisitTimer() {
5308
+ var prevPageVisitData = null;
5309
+ try {
5310
+ if (utlCanUseSessionStorage()) {
5311
+ var pageVisitEndTime = utcNow();
5312
+ var pageVisitDataJsonStr = utlGetSessionStorage(logger, prevPageVisitDataKeyName);
5313
+ if (pageVisitDataJsonStr && hasJSON()) {
5314
+ prevPageVisitData = getJSON().parse(pageVisitDataJsonStr);
5315
+ prevPageVisitData[_DYN_PAGE_VISIT_TIME ] = pageVisitEndTime - prevPageVisitData.pageVisitStartTime;
5316
+ utlRemoveSessionStorage(logger, prevPageVisitDataKeyName);
5317
+ }
5318
+ }
5319
+ }
5320
+ catch (e) {
5321
+ _warnToConsole(logger, "Stop page visit timer failed: " + dumpObj(e));
5322
+ prevPageVisitData = null;
5323
+ }
5324
+ return prevPageVisitData;
5286
5325
  }
5287
- return PageVisitData;
5288
- }());
5326
+ return {
5327
+ trackPreviousPageVisit: function (currentPageName, currentPageUrl) {
5328
+ try {
5329
+ var prevPageVisitTimeData = restartPageVisitTimer(currentPageName, currentPageUrl);
5330
+ if (prevPageVisitTimeData) {
5331
+ pageVisitTimeTrackingHandler(prevPageVisitTimeData.pageName, prevPageVisitTimeData.pageUrl, prevPageVisitTimeData[_DYN_PAGE_VISIT_TIME ]);
5332
+ }
5333
+ }
5334
+ catch (e) {
5335
+ _warnToConsole(logger, "Auto track page visit time failed, metric will not be collected: " + dumpObj(e));
5336
+ }
5337
+ },
5338
+ _logger: logger,
5339
+ pageVisitTimeTrackingHandler: pageVisitTimeTrackingHandler
5340
+ };
5341
+ }
5289
5342
 
5290
- var Timing = /** @class */ (function () {
5291
- function Timing(logger, name) {
5292
- var _self = this;
5293
- var _events = {};
5294
- _self.start = function (name) {
5343
+ function createTiming(logger, name) {
5344
+ var _events = {};
5345
+ var timing = {
5346
+ action: null,
5347
+ start: function (name) {
5295
5348
  if (typeof _events[name] !== "undefined") {
5296
5349
  _throwInternal(logger, 2 , 62 , "start was called more than once for this event without calling stop.", { name: name, key: name }, true);
5297
5350
  }
5298
5351
  _events[name] = +new Date;
5299
- };
5300
- _self.stop = function (name, url, properties, measurements) {
5352
+ },
5353
+ stop: function (name, url, properties, measurements) {
5301
5354
  var start = _events[name];
5302
5355
  if (isNaN(start)) {
5303
5356
  _throwInternal(logger, 2 , 63 , "stop was called without a corresponding start.", { name: name, key: name }, true);
@@ -5305,14 +5358,14 @@ var Timing = /** @class */ (function () {
5305
5358
  else {
5306
5359
  var end = +new Date;
5307
5360
  var duration = dateTimeUtilsDuration(start, end);
5308
- _self.action(name, url, duration, properties, measurements);
5361
+ timing.action(name, url, duration, properties, measurements);
5309
5362
  }
5310
5363
  delete _events[name];
5311
5364
  _events[name] = undefined;
5312
- };
5313
- }
5314
- return Timing;
5315
- }());
5365
+ }
5366
+ };
5367
+ return timing;
5368
+ }
5316
5369
 
5317
5370
  var _a;
5318
5371
  var strEvent = "event";
@@ -5454,6 +5507,9 @@ var AnalyticsPlugin = /** @class */ (function (_super) {
5454
5507
  _self[_DYN_TRACK_PAGE_VIEW ] = function (pageView, customProperties) {
5455
5508
  try {
5456
5509
  var inPv = pageView || {};
5510
+ if (_self[_DYN_CORE ] && _self[_DYN_CORE ][_DYN_CONFIG ]) {
5511
+ inPv.uri = fieldRedaction(inPv.uri, _self[_DYN_CORE ][_DYN_CONFIG ]);
5512
+ }
5457
5513
  _pageViewManager[_DYN_TRACK_PAGE_VIEW ](inPv, __assignFn(__assignFn(__assignFn({}, inPv.properties), inPv.measurements), customProperties));
5458
5514
  if (_autoTrackPageVisitTime) {
5459
5515
  _pageVisitTimeManager[_DYN_TRACK_PREVIOUS_PAGE_1 ](inPv.name, inPv.uri);
@@ -5466,7 +5522,10 @@ var AnalyticsPlugin = /** @class */ (function (_super) {
5466
5522
  _self[_DYN_SEND_PAGE_VIEW_INTER2 ] = function (pageView, properties, systemProperties) {
5467
5523
  var doc = getDocument();
5468
5524
  if (doc) {
5469
- pageView.refUri = pageView.refUri === undefined ? doc.referrer : pageView.refUri;
5525
+ pageView[_DYN_REF_URI ] = pageView[_DYN_REF_URI ] === undefined ? doc.referrer : pageView[_DYN_REF_URI ];
5526
+ }
5527
+ if (_self[_DYN_CORE ] && _self[_DYN_CORE ][_DYN_CONFIG ]) {
5528
+ pageView.refUri = fieldRedaction(pageView.refUri, _self[_DYN_CORE ][_DYN_CONFIG ]);
5470
5529
  }
5471
5530
  if (isNullOrUndefined(pageView[_DYN_START_TIME ])) {
5472
5531
  var duration = ((properties || pageView[_DYN_PROPERTIES ] || {})[_DYN_DURATION ] || 0);
@@ -5511,6 +5570,9 @@ var AnalyticsPlugin = /** @class */ (function (_super) {
5511
5570
  var loc = getLocation();
5512
5571
  url = loc && loc[_DYN_HREF ] || "";
5513
5572
  }
5573
+ if (_self[_DYN_CORE ] && _self[_DYN_CORE ][_DYN_CONFIG ]) {
5574
+ url = fieldRedaction(url, _self[_DYN_CORE ][_DYN_CONFIG ]);
5575
+ }
5514
5576
  _pageTracking.stop(name, url, properties, measurement);
5515
5577
  if (_autoTrackPageVisitTime) {
5516
5578
  _pageVisitTimeManager[_DYN_TRACK_PREVIOUS_PAGE_1 ](name, url);
@@ -5612,10 +5674,10 @@ var AnalyticsPlugin = /** @class */ (function (_super) {
5612
5674
  _preInitTelemetryInitializers = null;
5613
5675
  }
5614
5676
  _populateDefaults(config);
5615
- _pageViewPerformanceManager = new PageViewPerformanceManager(_self[_DYN_CORE ]);
5616
- _pageViewManager = new PageViewManager(_self, _extConfig.overridePageViewDuration, _self[_DYN_CORE ], _pageViewPerformanceManager);
5617
- _pageVisitTimeManager = new PageVisitTimeManager(_self[_DYN_DIAG_LOG ](), function (pageName, pageUrl, pageVisitTime) { return trackPageVisitTime(pageName, pageUrl, pageVisitTime); });
5618
- _eventTracking = new Timing(_self[_DYN_DIAG_LOG ](), "trackEvent");
5677
+ _pageViewPerformanceManager = createPageViewPerformanceManager(_self[_DYN_CORE ]);
5678
+ _pageViewManager = createPageViewManager(_self, _extConfig.overridePageViewDuration, _self[_DYN_CORE ], _pageViewPerformanceManager);
5679
+ _pageVisitTimeManager = createPageVisitTimeManager(_self[_DYN_DIAG_LOG ](), function (pageName, pageUrl, pageVisitTime) { return trackPageVisitTime(pageName, pageUrl, pageVisitTime); });
5680
+ _eventTracking = createTiming(_self[_DYN_DIAG_LOG ]());
5619
5681
  _eventTracking.action =
5620
5682
  function (name, url, duration, properties, measurements) {
5621
5683
  if (!properties) {
@@ -5627,7 +5689,7 @@ var AnalyticsPlugin = /** @class */ (function (_super) {
5627
5689
  properties.duration = duration[_DYN_TO_STRING ]();
5628
5690
  _self.trackEvent({ name: name, properties: properties, measurements: measurements });
5629
5691
  };
5630
- _pageTracking = new Timing(_self[_DYN_DIAG_LOG ](), "trackPageView");
5692
+ _pageTracking = createTiming(_self[_DYN_DIAG_LOG ]());
5631
5693
  _pageTracking.action = function (name, url, duration, properties, measurements) {
5632
5694
  if (isNullOrUndefined(properties)) {
5633
5695
  properties = {};
@@ -5743,22 +5805,6 @@ var AnalyticsPlugin = /** @class */ (function (_super) {
5743
5805
  }
5744
5806
  }));
5745
5807
  }
5746
- function _getDistributedTraceCtx() {
5747
- var distributedTraceCtx = null;
5748
- if (_self[_DYN_CORE ] && _self[_DYN_CORE ].getTraceCtx) {
5749
- distributedTraceCtx = _self[_DYN_CORE ].getTraceCtx(false);
5750
- }
5751
- if (!distributedTraceCtx) {
5752
- var properties = _self[_DYN_CORE ].getPlugin(PropertiesPluginIdentifier);
5753
- if (properties) {
5754
- var context = properties.plugin.context;
5755
- if (context) {
5756
- distributedTraceCtx = createDistributedTraceContextFromTrace(context.telemetryTrace);
5757
- }
5758
- }
5759
- }
5760
- return distributedTraceCtx;
5761
- }
5762
5808
  function _addHistoryListener(win, history, locn) {
5763
5809
  if (_historyListenerAdded) {
5764
5810
  return;
@@ -5777,15 +5823,15 @@ var AnalyticsPlugin = /** @class */ (function (_super) {
5777
5823
  else {
5778
5824
  _currUri = locn && locn[_DYN_HREF ] || "";
5779
5825
  }
5826
+ if (_self[_DYN_CORE ] && _self[_DYN_CORE ][_DYN_CONFIG ]) {
5827
+ _currUri = fieldRedaction(_currUri, _self[_DYN_CORE ][_DYN_CONFIG ]);
5828
+ }
5780
5829
  if (_enableAutoRouteTracking) {
5781
- var distributedTraceCtx = _getDistributedTraceCtx();
5782
- if (distributedTraceCtx) {
5783
- distributedTraceCtx.setTraceId(generateW3CId());
5784
- var traceLocationName = "_unknown_";
5785
- if (locn && locn.pathname) {
5786
- traceLocationName = locn.pathname + (locn.hash || "");
5787
- }
5788
- distributedTraceCtx.setName(dataSanitizeString(_self[_DYN_DIAG_LOG ](), traceLocationName));
5830
+ var newContext = _self[_DYN_CORE ].getTraceCtx(true);
5831
+ newContext.setTraceId(generateW3CId());
5832
+ newContext.pageName = dataSanitizeString(_self[_DYN_DIAG_LOG ](), newContext.pageName || "_unknown_");
5833
+ if (_self[_DYN_CORE ] && _self[_DYN_CORE ].getTraceCtx) {
5834
+ _self[_DYN_CORE ].setTraceCtx(newContext);
5789
5835
  }
5790
5836
  scheduleTimeout((function (uri) {
5791
5837
  _self[_DYN_TRACK_PAGE_VIEW ]({ refUri: uri, properties: { duration: 0 } });
@@ -5853,6 +5899,9 @@ var AnalyticsPlugin = /** @class */ (function (_super) {
5853
5899
  _autoTrackPageVisitTime = false;
5854
5900
  var location = getLocation(true);
5855
5901
  _prevUri = location && location[_DYN_HREF ] || "";
5902
+ if (_self[_DYN_CORE ] && _self[_DYN_CORE ][_DYN_CONFIG ]) {
5903
+ _prevUri = fieldRedaction(_prevUri, _self[_DYN_CORE ][_DYN_CONFIG ]);
5904
+ }
5856
5905
  _currUri = null;
5857
5906
  _evtNamespace = null;
5858
5907
  _extConfig = null;
@@ -5868,7 +5917,7 @@ var AnalyticsPlugin = /** @class */ (function (_super) {
5868
5917
  });
5869
5918
  return _this;
5870
5919
  }
5871
- AnalyticsPlugin.Version = '3.4.0-nightlybeta3.2505-36';
5920
+ AnalyticsPlugin.Version = '3.4.0-nightlybeta3.2507-23';
5872
5921
  return AnalyticsPlugin;
5873
5922
  }(BaseTelemetryPlugin));
5874
5923