@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,5 +1,5 @@
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
  'use strict';
@@ -1197,6 +1197,8 @@ var _DYN_SET_NEXT_PLUGIN = "setNextPlugin";
1197
1197
  var _DYN_USER_AGENT = "userAgent";
1198
1198
  var _DYN_SPLIT$1 = "split";
1199
1199
  var _DYN_REPLACE = "replace";
1200
+ var _DYN_SUBSTRING = "substring";
1201
+ var _DYN_INDEX_OF = "indexOf";
1200
1202
  var _DYN_TYPE = "type";
1201
1203
  var _DYN_EVT_NAME = "evtName";
1202
1204
  var _DYN_IS_CHILD_EVT = "isChildEvt";
@@ -1231,6 +1233,8 @@ var STR_GET_PERF_MGR = "getPerfMgr";
1231
1233
  var STR_DOMAIN = "domain";
1232
1234
  var STR_PATH = "path";
1233
1235
  var STR_NOT_DYNAMIC_ERROR = "Not dynamic - ";
1236
+ var STR_REDACTED = "REDACTED";
1237
+ var DEFAULT_SENSITIVE_PARAMS = ["sig", "Signature", "AWSAccessKeyId", "X-Goog-Signature"];
1234
1238
 
1235
1239
  var strGetPrototypeOf = "getPrototypeOf";
1236
1240
  var rCamelCase = /-([a-z])/g;
@@ -1358,6 +1362,110 @@ function isIE() {
1358
1362
  }
1359
1363
  return _isTrident;
1360
1364
  }
1365
+ function redactUserInfo(url) {
1366
+ return url.replace(/^([a-zA-Z][a-zA-Z0-9+.-]*:\/\/)([^:@]{1,200}):([^@]{1,200})@(.*)$/, "$1REDACTED:REDACTED@$4");
1367
+ }
1368
+ function redactQueryParameters(url, config) {
1369
+ var sensitiveParams;
1370
+ var questionMarkIndex = strIndexOf(url, "?");
1371
+ if (questionMarkIndex === -1) {
1372
+ return url;
1373
+ }
1374
+ if (config && config.redactQueryParams) {
1375
+ sensitiveParams = DEFAULT_SENSITIVE_PARAMS.concat(config.redactQueryParams);
1376
+ }
1377
+ else {
1378
+ sensitiveParams = DEFAULT_SENSITIVE_PARAMS;
1379
+ }
1380
+ var baseUrl = strSubstring(url, 0, questionMarkIndex + 1);
1381
+ var queryString = strSubstring(url, questionMarkIndex + 1);
1382
+ var fragment = STR_EMPTY;
1383
+ var hashIndex = strIndexOf(queryString, "#");
1384
+ if (hashIndex !== -1) {
1385
+ fragment = strSubstring(queryString, hashIndex);
1386
+ queryString = strSubstring(queryString, 0, hashIndex);
1387
+ }
1388
+ var hasPotentialSensitiveParam = false;
1389
+ for (var i = 0; i < sensitiveParams[_DYN_LENGTH$2 ]; i++) {
1390
+ var paramCheck = sensitiveParams[i] + "=";
1391
+ if (strIndexOf(queryString, paramCheck) !== -1) {
1392
+ hasPotentialSensitiveParam = true;
1393
+ break;
1394
+ }
1395
+ }
1396
+ if (!hasPotentialSensitiveParam) {
1397
+ return url;
1398
+ }
1399
+ var resultParts = [];
1400
+ var anyParamRedacted = false;
1401
+ if (queryString && queryString[_DYN_LENGTH$2 ]) {
1402
+ var pairs = queryString[_DYN_SPLIT$1 ]("&");
1403
+ for (var i = 0; i < pairs[_DYN_LENGTH$2 ]; i++) {
1404
+ var pair = pairs[i];
1405
+ if (!pair) {
1406
+ continue;
1407
+ }
1408
+ var equalsIndex = strIndexOf(pair, "=");
1409
+ if (equalsIndex === -1) {
1410
+ resultParts[_DYN_PUSH ](pair);
1411
+ }
1412
+ else {
1413
+ var paramName = pair[_DYN_SUBSTRING ](0, equalsIndex);
1414
+ var paramValue = pair[_DYN_SUBSTRING ](equalsIndex + 1);
1415
+ if (paramValue === STR_EMPTY) {
1416
+ resultParts[_DYN_PUSH ](pair);
1417
+ }
1418
+ else {
1419
+ var shouldRedact = false;
1420
+ for (var j = 0; j < sensitiveParams[_DYN_LENGTH$2 ]; j++) {
1421
+ if (paramName === sensitiveParams[j]) {
1422
+ shouldRedact = true;
1423
+ anyParamRedacted = true;
1424
+ break;
1425
+ }
1426
+ }
1427
+ if (shouldRedact) {
1428
+ resultParts[_DYN_PUSH ](paramName + "=" + STR_REDACTED);
1429
+ }
1430
+ else {
1431
+ resultParts[_DYN_PUSH ](pair);
1432
+ }
1433
+ }
1434
+ }
1435
+ }
1436
+ }
1437
+ if (!anyParamRedacted) {
1438
+ return url;
1439
+ }
1440
+ return baseUrl + resultParts.join("&") + fragment;
1441
+ }
1442
+ function fieldRedaction(input, config) {
1443
+ if (!input || input[_DYN_INDEX_OF ](" ") !== -1) {
1444
+ return input;
1445
+ }
1446
+ var isRedactionDisabled = config && config.redactUrls === false;
1447
+ if (isRedactionDisabled) {
1448
+ return input;
1449
+ }
1450
+ var hasCredentials = strIndexOf(input, "@") !== -1;
1451
+ var hasQueryParams = strIndexOf(input, "?") !== -1;
1452
+ if (!hasCredentials && !hasQueryParams) {
1453
+ return input;
1454
+ }
1455
+ try {
1456
+ var result = input;
1457
+ if (hasCredentials) {
1458
+ result = redactUserInfo(input);
1459
+ }
1460
+ if (hasQueryParams) {
1461
+ result = redactQueryParameters(result, config);
1462
+ }
1463
+ return result;
1464
+ }
1465
+ catch (e) {
1466
+ return input;
1467
+ }
1468
+ }
1361
1469
 
1362
1470
  var UInt32Mask = 0x100000000;
1363
1471
  var MaxUInt32 = 0xffffffff;
@@ -1429,7 +1537,7 @@ function newId(maxLength) {
1429
1537
  return result;
1430
1538
  }
1431
1539
 
1432
- var version = '3.4.0-nightlybeta3.2505-36';
1540
+ var version = '3.4.0-nightlybeta3.2507-23';
1433
1541
  var instanceName = "." + newId(6);
1434
1542
  var _dataUid = 0;
1435
1543
  function _canAcceptData(target) {
@@ -2095,6 +2203,54 @@ function onConfigChange(config, configHandler, logger) {
2095
2203
  return createDynamicConfig(config, null, logger)[_DYN_WATCH ](configHandler);
2096
2204
  }
2097
2205
 
2206
+ function generateW3CId() {
2207
+ var hexValues = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"];
2208
+ var oct = STR_EMPTY, tmp;
2209
+ for (var a = 0; a < 4; a++) {
2210
+ tmp = random32();
2211
+ oct +=
2212
+ hexValues[tmp & 0xF] +
2213
+ hexValues[tmp >> 4 & 0xF] +
2214
+ hexValues[tmp >> 8 & 0xF] +
2215
+ hexValues[tmp >> 12 & 0xF] +
2216
+ hexValues[tmp >> 16 & 0xF] +
2217
+ hexValues[tmp >> 20 & 0xF] +
2218
+ hexValues[tmp >> 24 & 0xF] +
2219
+ hexValues[tmp >> 28 & 0xF];
2220
+ }
2221
+ var clockSequenceHi = hexValues[8 + (random32() & 0x03) | 0];
2222
+ return strSubstr(oct, 0, 8) + strSubstr(oct, 9, 4) + "4" + strSubstr(oct, 13, 3) + clockSequenceHi + strSubstr(oct, 16, 3) + strSubstr(oct, 19, 12);
2223
+ }
2224
+
2225
+ function findAllScripts(doc) {
2226
+ var scripts = doc.getElementsByTagName("script");
2227
+ var result = [];
2228
+ arrForEach(scripts, function (script) {
2229
+ var src = script[_DYN_GET_ATTRIBUTE ]("src");
2230
+ if (src) {
2231
+ var crossOrigin = script[_DYN_GET_ATTRIBUTE ]("crossorigin");
2232
+ var async = script.hasAttribute("async") === true;
2233
+ var defer = script.hasAttribute("defer") === true;
2234
+ var referrerPolicy = script[_DYN_GET_ATTRIBUTE ]("referrerpolicy");
2235
+ var info = { url: src };
2236
+ if (crossOrigin) {
2237
+ info.crossOrigin = crossOrigin;
2238
+ }
2239
+ if (async) {
2240
+ info.async = async;
2241
+ }
2242
+ if (defer) {
2243
+ info.defer = defer;
2244
+ }
2245
+ if (referrerPolicy) {
2246
+ info.referrerPolicy = referrerPolicy;
2247
+ }
2248
+ result[_DYN_PUSH ](info);
2249
+ }
2250
+ });
2251
+ return result;
2252
+ }
2253
+
2098
2254
  function _stringToBoolOrDefault(theValue, defaultValue, theConfig) {
2099
2255
  if (!theValue && isNullOrUndefined(theValue)) {
2100
2256
  return defaultValue;
@@ -2744,68 +2900,6 @@ function doPerf(mgrSource, getSource, func, details, isAsync) {
2744
2900
  return func();
2745
2901
  }
2746
2902
 
2747
- function generateW3CId() {
2748
- var hexValues = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"];
2749
- var oct = STR_EMPTY, tmp;
2750
- for (var a = 0; a < 4; a++) {
2751
- tmp = random32();
2752
- oct +=
2753
- hexValues[tmp & 0xF] +
2754
- hexValues[tmp >> 4 & 0xF] +
2755
- hexValues[tmp >> 8 & 0xF] +
2756
- hexValues[tmp >> 12 & 0xF] +
2757
- hexValues[tmp >> 16 & 0xF] +
2758
- hexValues[tmp >> 20 & 0xF] +
2759
- hexValues[tmp >> 24 & 0xF] +
2760
- hexValues[tmp >> 28 & 0xF];
2761
- }
2762
- var clockSequenceHi = hexValues[8 + (random32() & 0x03) | 0];
2763
- return strSubstr(oct, 0, 8) + strSubstr(oct, 9, 4) + "4" + strSubstr(oct, 13, 3) + clockSequenceHi + strSubstr(oct, 16, 3) + strSubstr(oct, 19, 12);
2764
- }
2765
-
2766
- var INVALID_TRACE_ID = "00000000000000000000000000000000";
2767
- var INVALID_SPAN_ID = "0000000000000000";
2768
- function _isValid(value, len, invalidValue) {
2769
- if (value && value[_DYN_LENGTH$2 ] === len && value !== invalidValue) {
2770
- return !!value.match(/^[\da-f]*$/i);
2771
- }
2772
- return false;
2773
- }
2774
- function isValidTraceId(value) {
2775
- return _isValid(value, 32, INVALID_TRACE_ID);
2776
- }
2777
- function isValidSpanId(value) {
2778
- return _isValid(value, 16, INVALID_SPAN_ID);
2779
- }
2780
- function findAllScripts(doc) {
2781
- var scripts = doc.getElementsByTagName("script");
2782
- var result = [];
2783
- arrForEach(scripts, function (script) {
2784
- var src = script[_DYN_GET_ATTRIBUTE ]("src");
2785
- if (src) {
2786
- var crossOrigin = script[_DYN_GET_ATTRIBUTE ]("crossorigin");
2787
- var async = script.hasAttribute("async") === true;
2788
- var defer = script.hasAttribute("defer") === true;
2789
- var referrerPolicy = script[_DYN_GET_ATTRIBUTE ]("referrerpolicy");
2790
- var info = { url: src };
2791
- if (crossOrigin) {
2792
- info.crossOrigin = crossOrigin;
2793
- }
2794
- if (async) {
2795
- info.async = async;
2796
- }
2797
- if (defer) {
2798
- info.defer = defer;
2799
- }
2800
- if (referrerPolicy) {
2801
- info.referrerPolicy = referrerPolicy;
2802
- }
2803
- result[_DYN_PUSH ](info);
2804
- }
2805
- });
2806
- return result;
2807
- }
2808
-
2809
2903
  var pluginStateData = createElmNodeData("plugin");
2810
2904
  function _getPluginState(plugin) {
2811
2905
  return pluginStateData.get(plugin, "state", {}, true);
@@ -2894,27 +2988,26 @@ function _createInternalContext(telemetryChain, dynamicHandler, core, startAt) {
2894
2988
  }
2895
2989
  function _getExtCfg(identifier, createIfMissing) {
2896
2990
  var idCfg = null;
2897
- var cfg = dynamicHandler.cfg;
2991
+ var extCfg = _getCfg(dynamicHandler.cfg, "extensionConfig", createIfMissing);
2992
+ if (extCfg) {
2993
+ idCfg = _getCfg(extCfg, identifier, createIfMissing);
2994
+ }
2995
+ return idCfg;
2996
+ }
2997
+ function _getCfg(cfg, identifier, createIfMissing) {
2998
+ var idCfg = null;
2898
2999
  if (cfg && identifier) {
2899
- var extCfg = cfg[STR_EXTENSION_CONFIG ];
2900
- if (!extCfg && createIfMissing) {
2901
- extCfg = {};
2902
- }
2903
- cfg[STR_EXTENSION_CONFIG] = extCfg;
2904
- extCfg = dynamicHandler.ref(cfg, STR_EXTENSION_CONFIG);
2905
- if (extCfg) {
2906
- idCfg = extCfg[identifier];
2907
- if (!idCfg && createIfMissing) {
2908
- idCfg = {};
2909
- }
2910
- extCfg[identifier] = idCfg;
2911
- idCfg = dynamicHandler.ref(extCfg, identifier);
3000
+ idCfg = cfg[identifier];
3001
+ if (!idCfg && createIfMissing) {
3002
+ idCfg = {};
2912
3003
  }
3004
+ cfg[identifier] = idCfg;
3005
+ idCfg = dynamicHandler.ref(cfg, identifier);
2913
3006
  }
2914
3007
  return idCfg;
2915
3008
  }
2916
- function _resolveExtCfg(identifier, defaultValues) {
2917
- var newConfig = _getExtCfg(identifier, true);
3009
+ function _resolveExtCfg(identifier, defaultValues, rootOnly) {
3010
+ var newConfig = rootOnly ? _getCfg(dynamicHandler.cfg, identifier, true) : _getExtCfg(identifier, true);
2918
3011
  if (defaultValues) {
2919
3012
  objForEachKey(defaultValues, function (field, defaultValue) {
2920
3013
  if (isNullOrUndefined(newConfig[field])) {
@@ -3735,7 +3828,10 @@ function dataSanitizeString(logger, value, maxLength) {
3735
3828
  }
3736
3829
  return valueTrunc || value;
3737
3830
  }
3738
- function dataSanitizeUrl(logger, url) {
3831
+ function dataSanitizeUrl(logger, url, config) {
3832
+ if (isString(url)) {
3833
+ url = fieldRedaction(url, config);
3834
+ }
3739
3835
  return dataSanitizeInput(logger, url, 2048 , 66 );
3740
3836
  }
3741
3837
  function dataSanitizeMessage(logger, message) {
@@ -3898,48 +3994,11 @@ function dateTimeUtilsDuration(start, end) {
3898
3994
  }
3899
3995
  return result;
3900
3996
  }
3901
- function createDistributedTraceContextFromTrace(telemetryTrace, parentCtx) {
3902
- var trace = telemetryTrace || {};
3903
- return {
3904
- getName: function () {
3905
- return trace[_DYN_NAME ];
3906
- },
3907
- setName: function (newValue) {
3908
- parentCtx && parentCtx.setName(newValue);
3909
- trace[_DYN_NAME ] = newValue;
3910
- },
3911
- getTraceId: function () {
3912
- return trace.traceID;
3913
- },
3914
- setTraceId: function (newValue) {
3915
- parentCtx && parentCtx.setTraceId(newValue);
3916
- if (isValidTraceId(newValue)) {
3917
- trace.traceID = newValue;
3918
- }
3919
- },
3920
- getSpanId: function () {
3921
- return trace.parentID;
3922
- },
3923
- setSpanId: function (newValue) {
3924
- parentCtx && parentCtx.setSpanId(newValue);
3925
- if (isValidSpanId(newValue)) {
3926
- trace.parentID = newValue;
3927
- }
3928
- },
3929
- getTraceFlags: function () {
3930
- return trace.traceFlags;
3931
- },
3932
- setTraceFlags: function (newTraceFlags) {
3933
- parentCtx && parentCtx.setTraceFlags(newTraceFlags);
3934
- trace.traceFlags = newTraceFlags;
3935
- }
3936
- };
3937
- }
3938
3997
 
3939
- var StorageType = createEnumStyle({
3998
+ var StorageType = ( /* @__PURE__ */createEnumStyle({
3940
3999
  LocalStorage: 0 ,
3941
4000
  SessionStorage: 1
3942
- });
4001
+ }));
3943
4002
 
3944
4003
  var _canUseLocalStorage = undefined;
3945
4004
  var _canUseSessionStorage = undefined;
@@ -4872,7 +4931,6 @@ function createDomEvent(eventName) {
4872
4931
  return event;
4873
4932
  }
4874
4933
 
4875
- var PropertiesPluginIdentifier = "AppInsightsPropertiesPlugin";
4876
4934
  var AnalyticsPluginIdentifier = "ApplicationInsightsAnalytics";
4877
4935
 
4878
4936
  var _DYN_TO_STRING = "toString";
@@ -4884,8 +4942,10 @@ var _DYN_ENVELOPE_TYPE = "envelopeType";
4884
4942
  var _DYN_DIAG_LOG = "diagLog";
4885
4943
  var _DYN_TRACK = "track";
4886
4944
  var _DYN_TRACK_PAGE_VIEW = "trackPageView";
4945
+ var _DYN_CONFIG = "config";
4887
4946
  var _DYN_TRACK_PREVIOUS_PAGE_1 = "trackPreviousPageVisit";
4888
4947
  var _DYN_SEND_PAGE_VIEW_INTER2 = "sendPageViewInternal";
4948
+ var _DYN_REF_URI = "refUri";
4889
4949
  var _DYN_START_TIME = "startTime";
4890
4950
  var _DYN_PROPERTIES = "properties";
4891
4951
  var _DYN_DURATION = "duration";
@@ -4917,168 +4977,168 @@ var _DYN_REQUEST_START = "requestStart";
4917
4977
  var _DYN_LOAD_EVENT_END = "loadEventEnd";
4918
4978
  var _DYN_RESPONSE_END = "responseEnd";
4919
4979
  var _DYN_CONNECT_END = "connectEnd";
4980
+ var _DYN_PAGE_VISIT_TIME = "pageVisitTime";
4920
4981
 
4921
- var PageViewManager = /** @class */ (function () {
4922
- function PageViewManager(appInsights, overridePageViewDuration, core, pageViewPerformanceManager) {
4923
- dynamicProto(PageViewManager, this, function (_self) {
4924
- var queueTimer = null;
4925
- var itemQueue = [];
4926
- var pageViewPerformanceSent = false;
4927
- var firstPageViewSent = false;
4928
- var _logger;
4929
- if (core) {
4930
- _logger = core.logger;
4931
- }
4932
- function _flushChannels(isAsync) {
4933
- if (core) {
4934
- core.flush(isAsync, function () {
4935
- });
4936
- }
4937
- }
4938
- function _startTimer() {
4939
- if (!queueTimer) {
4940
- queueTimer = scheduleTimeout((function () {
4941
- queueTimer = null;
4942
- var allItems = itemQueue.slice(0);
4943
- var doFlush = false;
4944
- itemQueue = [];
4945
- arrForEach(allItems, function (item) {
4946
- if (!item()) {
4947
- itemQueue.push(item);
4948
- }
4949
- else {
4950
- doFlush = true;
4951
- }
4952
- });
4953
- if (itemQueue[_DYN_LENGTH ] > 0) {
4954
- _startTimer();
4955
- }
4956
- if (doFlush) {
4957
- _flushChannels(true);
4958
- }
4959
- }), 100);
4960
- }
4961
- }
4962
- function _addQueue(cb) {
4963
- itemQueue.push(cb);
4964
- _startTimer();
4965
- }
4966
- _self[_DYN_TRACK_PAGE_VIEW ] = function (pageView, customProperties) {
4967
- var name = pageView.name;
4968
- if (isNullOrUndefined(name) || typeof name !== "string") {
4969
- var doc = getDocument();
4970
- name = pageView.name = doc && doc.title || "";
4971
- }
4972
- var uri = pageView.uri;
4973
- if (isNullOrUndefined(uri) || typeof uri !== "string") {
4974
- var location_1 = getLocation();
4975
- uri = pageView.uri = location_1 && location_1[_DYN_HREF ] || "";
4976
- }
4977
- if (!firstPageViewSent) {
4978
- var perf = getPerformance();
4979
- var navigationEntries = (perf && perf[_DYN_GET_ENTRIES_BY_TYPE ] && perf[_DYN_GET_ENTRIES_BY_TYPE ]("navigation"));
4980
- if (navigationEntries && navigationEntries[0] && !isUndefined(perf.timeOrigin)) {
4981
- var loadEventStart = navigationEntries[0].loadEventStart;
4982
- pageView[_DYN_START_TIME ] = new Date(perf.timeOrigin + loadEventStart);
4982
+ function createPageViewManager(appInsights, overridePageViewDuration, core, pageViewPerformanceManager) {
4983
+ var queueTimer = null;
4984
+ var itemQueue = [];
4985
+ var pageViewPerformanceSent = false;
4986
+ var firstPageViewSent = false;
4987
+ var _logger;
4988
+ if (core) {
4989
+ _logger = core.logger;
4990
+ }
4991
+ function _flushChannels(isAsync) {
4992
+ if (core) {
4993
+ core.flush(isAsync, function () {
4994
+ });
4995
+ }
4996
+ }
4997
+ function _startTimer() {
4998
+ if (!queueTimer) {
4999
+ queueTimer = scheduleTimeout((function () {
5000
+ queueTimer = null;
5001
+ var allItems = itemQueue.slice(0);
5002
+ var doFlush = false;
5003
+ itemQueue = [];
5004
+ arrForEach(allItems, function (item) {
5005
+ if (!item()) {
5006
+ itemQueue.push(item);
4983
5007
  }
4984
5008
  else {
4985
- var duration_1 = ((customProperties || pageView[_DYN_PROPERTIES ] || {})[_DYN_DURATION ] || 0);
4986
- pageView[_DYN_START_TIME ] = new Date(new Date().getTime() - duration_1);
5009
+ doFlush = true;
4987
5010
  }
4988
- firstPageViewSent = true;
5011
+ });
5012
+ if (itemQueue[_DYN_LENGTH ] > 0) {
5013
+ _startTimer();
4989
5014
  }
4990
- if (!pageViewPerformanceManager[_DYN_IS_PERFORMANCE_TIMIN15 ]()) {
4991
- appInsights[_DYN_SEND_PAGE_VIEW_INTER2 ](pageView, customProperties);
5015
+ if (doFlush) {
4992
5016
  _flushChannels(true);
4993
- if (!isWebWorker()) {
4994
- _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.");
4995
- }
4996
- return;
4997
5017
  }
4998
- var pageViewSent = false;
4999
- var customDuration;
5000
- var start = pageViewPerformanceManager[_DYN_GET_PERFORMANCE_TIMI16 ]()[_DYN_NAVIGATION_START ];
5001
- if (start > 0) {
5002
- customDuration = dateTimeUtilsDuration(start, +new Date);
5003
- if (!pageViewPerformanceManager[_DYN_SHOULD_COLLECT_DURAT17 ](customDuration)) {
5004
- customDuration = undefined;
5005
- }
5018
+ }), 100);
5019
+ }
5020
+ }
5021
+ function _addQueue(cb) {
5022
+ itemQueue.push(cb);
5023
+ _startTimer();
5024
+ }
5025
+ return {
5026
+ trackPageView: function (pageView, customProperties) {
5027
+ var name = pageView.name;
5028
+ if (isNullOrUndefined(name) || typeof name !== "string") {
5029
+ var doc = getDocument();
5030
+ name = pageView.name = doc && doc.title || "";
5031
+ }
5032
+ var uri = pageView.uri;
5033
+ if (isNullOrUndefined(uri) || typeof uri !== "string") {
5034
+ var location_1 = getLocation();
5035
+ uri = pageView.uri = location_1 && location_1[_DYN_HREF ] || "";
5036
+ }
5037
+ if (core && core[_DYN_CONFIG ]) {
5038
+ uri = pageView.uri = fieldRedaction(pageView.uri, core[_DYN_CONFIG ]);
5039
+ }
5040
+ if (!firstPageViewSent) {
5041
+ var perf = getPerformance();
5042
+ var navigationEntries = (perf && perf[_DYN_GET_ENTRIES_BY_TYPE ] && perf[_DYN_GET_ENTRIES_BY_TYPE ]("navigation"));
5043
+ if (navigationEntries && navigationEntries[0] && !isUndefined(perf.timeOrigin)) {
5044
+ var loadEventStart = navigationEntries[0].loadEventStart;
5045
+ pageView[_DYN_START_TIME ] = new Date(perf.timeOrigin + loadEventStart);
5006
5046
  }
5007
- var duration;
5008
- if (!isNullOrUndefined(customProperties) &&
5009
- !isNullOrUndefined(customProperties[_DYN_DURATION ])) {
5010
- duration = customProperties[_DYN_DURATION ];
5047
+ else {
5048
+ var duration_1 = ((customProperties || pageView[_DYN_PROPERTIES ] || {})[_DYN_DURATION ] || 0);
5049
+ pageView[_DYN_START_TIME ] = new Date(new Date().getTime() - duration_1);
5011
5050
  }
5012
- if (overridePageViewDuration || !isNaN(duration)) {
5013
- if (isNaN(duration)) {
5014
- if (!customProperties) {
5015
- customProperties = {};
5016
- }
5017
- customProperties[_DYN_DURATION ] = customDuration;
5018
- }
5019
- appInsights[_DYN_SEND_PAGE_VIEW_INTER2 ](pageView, customProperties);
5020
- _flushChannels(true);
5021
- pageViewSent = true;
5051
+ firstPageViewSent = true;
5052
+ }
5053
+ if (!pageViewPerformanceManager[_DYN_IS_PERFORMANCE_TIMIN15 ]()) {
5054
+ appInsights[_DYN_SEND_PAGE_VIEW_INTER2 ](pageView, customProperties);
5055
+ _flushChannels(true);
5056
+ if (!isWebWorker()) {
5057
+ _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.");
5022
5058
  }
5023
- var maxDurationLimit = 60000;
5024
- if (!customProperties) {
5025
- customProperties = {};
5059
+ return;
5060
+ }
5061
+ var pageViewSent = false;
5062
+ var customDuration;
5063
+ var start = pageViewPerformanceManager[_DYN_GET_PERFORMANCE_TIMI16 ]()[_DYN_NAVIGATION_START ];
5064
+ if (start > 0) {
5065
+ customDuration = dateTimeUtilsDuration(start, +new Date);
5066
+ if (!pageViewPerformanceManager[_DYN_SHOULD_COLLECT_DURAT17 ](customDuration)) {
5067
+ customDuration = undefined;
5026
5068
  }
5027
- _addQueue(function () {
5028
- var processed = false;
5029
- try {
5030
- if (pageViewPerformanceManager[_DYN_IS_PERFORMANCE_TIMIN18 ]()) {
5031
- processed = true;
5032
- var pageViewPerformance = {
5033
- name: name,
5034
- uri: uri
5035
- };
5036
- pageViewPerformanceManager[_DYN_POPULATE_PAGE_VIEW_P4 ](pageViewPerformance);
5037
- if (!pageViewPerformance.isValid && !pageViewSent) {
5038
- customProperties[_DYN_DURATION ] = customDuration;
5039
- appInsights[_DYN_SEND_PAGE_VIEW_INTER2 ](pageView, customProperties);
5040
- }
5041
- else {
5042
- if (!pageViewSent) {
5043
- customProperties[_DYN_DURATION ] = pageViewPerformance.durationMs;
5044
- appInsights[_DYN_SEND_PAGE_VIEW_INTER2 ](pageView, customProperties);
5045
- }
5046
- if (!pageViewPerformanceSent) {
5047
- appInsights[_DYN_SEND_PAGE_VIEW_PERFO3 ](pageViewPerformance, customProperties);
5048
- pageViewPerformanceSent = true;
5049
- }
5050
- }
5069
+ }
5070
+ var duration;
5071
+ if (!isNullOrUndefined(customProperties) &&
5072
+ !isNullOrUndefined(customProperties[_DYN_DURATION ])) {
5073
+ duration = customProperties[_DYN_DURATION ];
5074
+ }
5075
+ if (overridePageViewDuration || !isNaN(duration)) {
5076
+ if (isNaN(duration)) {
5077
+ if (!customProperties) {
5078
+ customProperties = {};
5079
+ }
5080
+ customProperties[_DYN_DURATION ] = customDuration;
5081
+ }
5082
+ appInsights[_DYN_SEND_PAGE_VIEW_INTER2 ](pageView, customProperties);
5083
+ _flushChannels(true);
5084
+ pageViewSent = true;
5085
+ }
5086
+ var maxDurationLimit = 60000;
5087
+ if (!customProperties) {
5088
+ customProperties = {};
5089
+ }
5090
+ _addQueue(function () {
5091
+ var processed = false;
5092
+ try {
5093
+ if (pageViewPerformanceManager[_DYN_IS_PERFORMANCE_TIMIN18 ]()) {
5094
+ processed = true;
5095
+ var pageViewPerformance = {
5096
+ name: name,
5097
+ uri: uri
5098
+ };
5099
+ pageViewPerformanceManager[_DYN_POPULATE_PAGE_VIEW_P4 ](pageViewPerformance);
5100
+ if (!pageViewPerformance.isValid && !pageViewSent) {
5101
+ customProperties[_DYN_DURATION ] = customDuration;
5102
+ appInsights[_DYN_SEND_PAGE_VIEW_INTER2 ](pageView, customProperties);
5051
5103
  }
5052
- else if (start > 0 && dateTimeUtilsDuration(start, +new Date) > maxDurationLimit) {
5053
- processed = true;
5104
+ else {
5054
5105
  if (!pageViewSent) {
5055
- customProperties[_DYN_DURATION ] = maxDurationLimit;
5106
+ customProperties[_DYN_DURATION ] = pageViewPerformance.durationMs;
5056
5107
  appInsights[_DYN_SEND_PAGE_VIEW_INTER2 ](pageView, customProperties);
5057
5108
  }
5109
+ if (!pageViewPerformanceSent) {
5110
+ appInsights[_DYN_SEND_PAGE_VIEW_PERFO3 ](pageViewPerformance, customProperties);
5111
+ pageViewPerformanceSent = true;
5112
+ }
5058
5113
  }
5059
5114
  }
5060
- catch (e) {
5061
- _throwInternal(_logger, 1 , 38 , "trackPageView failed on page load calculation: " + getExceptionName(e), { exception: dumpObj(e) });
5115
+ else if (start > 0 && dateTimeUtilsDuration(start, +new Date) > maxDurationLimit) {
5116
+ processed = true;
5117
+ if (!pageViewSent) {
5118
+ customProperties[_DYN_DURATION ] = maxDurationLimit;
5119
+ appInsights[_DYN_SEND_PAGE_VIEW_INTER2 ](pageView, customProperties);
5120
+ }
5062
5121
  }
5063
- return processed;
5064
- });
5065
- };
5066
- _self.teardown = function (unloadCtx, unloadState) {
5067
- if (queueTimer) {
5068
- queueTimer.cancel();
5069
- queueTimer = null;
5070
- var allItems = itemQueue.slice(0);
5071
- itemQueue = [];
5072
- arrForEach(allItems, function (item) {
5073
- if (item()) ;
5074
- });
5075
5122
  }
5076
- };
5077
- });
5078
- }
5079
- PageViewManager.__ieDyn=1;
5080
- return PageViewManager;
5081
- }());
5123
+ catch (e) {
5124
+ _throwInternal(_logger, 1 , 38 , "trackPageView failed on page load calculation: " + getExceptionName(e), { exception: dumpObj(e) });
5125
+ }
5126
+ return processed;
5127
+ });
5128
+ },
5129
+ teardown: function (unloadCtx, unloadState) {
5130
+ if (queueTimer) {
5131
+ queueTimer.cancel();
5132
+ queueTimer = null;
5133
+ var allItems = itemQueue.slice(0);
5134
+ itemQueue = [];
5135
+ arrForEach(allItems, function (item) {
5136
+ if (item()) ;
5137
+ });
5138
+ }
5139
+ }
5140
+ };
5141
+ }
5082
5142
 
5083
5143
  var MAX_DURATION_ALLOWED = 3600000;
5084
5144
  var botAgentNames = ["googlebot", "adsbot-google", "apis-google", "mediapartners-google"];
@@ -5140,143 +5200,136 @@ function _shouldCollectDuration() {
5140
5200
  }
5141
5201
  return true;
5142
5202
  }
5143
- var PageViewPerformanceManager = /** @class */ (function () {
5144
- function PageViewPerformanceManager(core) {
5145
- var _logger = safeGetLogger(core);
5146
- dynamicProto(PageViewPerformanceManager, this, function (_self) {
5147
- _self[_DYN_POPULATE_PAGE_VIEW_P4 ] = function (pageViewPerformance) {
5148
- pageViewPerformance.isValid = false;
5149
- var navigationTiming = _getPerformanceNavigationTiming();
5150
- var timing = _getPerformanceTiming();
5151
- var total = 0;
5152
- var network = 0;
5153
- var request = 0;
5154
- var response = 0;
5155
- var dom = 0;
5156
- if (navigationTiming || timing) {
5157
- if (navigationTiming) {
5158
- total = navigationTiming[_DYN_DURATION ];
5159
- network = navigationTiming[_DYN_START_TIME ] === 0 ? navigationTiming[_DYN_CONNECT_END ] : dateTimeUtilsDuration(navigationTiming[_DYN_START_TIME ], navigationTiming[_DYN_CONNECT_END ]);
5160
- request = dateTimeUtilsDuration(navigationTiming.requestStart, navigationTiming[_DYN_RESPONSE_START ]);
5161
- response = dateTimeUtilsDuration(navigationTiming[_DYN_RESPONSE_START ], navigationTiming[_DYN_RESPONSE_END ]);
5162
- dom = dateTimeUtilsDuration(navigationTiming.responseEnd, navigationTiming[_DYN_LOAD_EVENT_END ]);
5163
- }
5164
- else {
5165
- total = dateTimeUtilsDuration(timing[_DYN_NAVIGATION_START ], timing[_DYN_LOAD_EVENT_END ]);
5166
- network = dateTimeUtilsDuration(timing[_DYN_NAVIGATION_START ], timing[_DYN_CONNECT_END ]);
5167
- request = dateTimeUtilsDuration(timing.requestStart, timing[_DYN_RESPONSE_START ]);
5168
- response = dateTimeUtilsDuration(timing[_DYN_RESPONSE_START ], timing[_DYN_RESPONSE_END ]);
5169
- dom = dateTimeUtilsDuration(timing.responseEnd, timing[_DYN_LOAD_EVENT_END ]);
5170
- }
5171
- if (total === 0) {
5172
- _throwInternal(_logger, 2 , 10 , "error calculating page view performance.", { total: total, network: network, request: request, response: response, dom: dom });
5173
- }
5174
- else if (!_self[_DYN_SHOULD_COLLECT_DURAT17 ](total, network, request, response, dom)) {
5175
- _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 });
5176
- }
5177
- else if (total < mathFloor(network) + mathFloor(request) + mathFloor(response) + mathFloor(dom)) {
5178
- _throwInternal(_logger, 2 , 8 , "client performance math error.", { total: total, network: network, request: request, response: response, dom: dom });
5179
- }
5180
- else {
5181
- pageViewPerformance.durationMs = total;
5182
- pageViewPerformance.perfTotal = pageViewPerformance[_DYN_DURATION ] = msToTimeSpan(total);
5183
- pageViewPerformance.networkConnect = msToTimeSpan(network);
5184
- pageViewPerformance.sentRequest = msToTimeSpan(request);
5185
- pageViewPerformance.receivedResponse = msToTimeSpan(response);
5186
- pageViewPerformance.domProcessing = msToTimeSpan(dom);
5187
- pageViewPerformance.isValid = true;
5188
- }
5203
+ function createPageViewPerformanceManager(core) {
5204
+ var _a;
5205
+ var _logger = safeGetLogger(core);
5206
+ return _a = {},
5207
+ _a[_DYN_POPULATE_PAGE_VIEW_P4 ] = function (pageViewPerformance) {
5208
+ pageViewPerformance.isValid = false;
5209
+ var navigationTiming = _getPerformanceNavigationTiming();
5210
+ var timing = _getPerformanceTiming();
5211
+ var total = 0;
5212
+ var network = 0;
5213
+ var request = 0;
5214
+ var response = 0;
5215
+ var dom = 0;
5216
+ if (navigationTiming || timing) {
5217
+ if (navigationTiming) {
5218
+ total = navigationTiming[_DYN_DURATION ];
5219
+ network = navigationTiming[_DYN_START_TIME ] === 0 ? navigationTiming[_DYN_CONNECT_END ] : dateTimeUtilsDuration(navigationTiming[_DYN_START_TIME ], navigationTiming[_DYN_CONNECT_END ]);
5220
+ request = dateTimeUtilsDuration(navigationTiming.requestStart, navigationTiming[_DYN_RESPONSE_START ]);
5221
+ response = dateTimeUtilsDuration(navigationTiming[_DYN_RESPONSE_START ], navigationTiming[_DYN_RESPONSE_END ]);
5222
+ dom = dateTimeUtilsDuration(navigationTiming.responseEnd, navigationTiming[_DYN_LOAD_EVENT_END ]);
5189
5223
  }
5190
- };
5191
- _self[_DYN_GET_PERFORMANCE_TIMI16 ] = _getPerformanceTiming;
5192
- _self[_DYN_IS_PERFORMANCE_TIMIN15 ] = _isPerformanceTimingSupported;
5193
- _self[_DYN_IS_PERFORMANCE_TIMIN18 ] = _isPerformanceTimingDataReady;
5194
- _self[_DYN_SHOULD_COLLECT_DURAT17 ] = _shouldCollectDuration;
5195
- });
5196
- }
5197
- PageViewPerformanceManager.__ieDyn=1;
5198
- return PageViewPerformanceManager;
5199
- }());
5200
-
5201
- var PageVisitTimeManager = /** @class */ (function () {
5202
- function PageVisitTimeManager(logger, pageVisitTimeTrackingHandler) {
5203
- var prevPageVisitDataKeyName = "prevPageVisitData";
5204
- dynamicProto(PageVisitTimeManager, this, function (_self) {
5205
- _self[_DYN_TRACK_PREVIOUS_PAGE_1 ] = function (currentPageName, currentPageUrl) {
5206
- try {
5207
- var prevPageVisitTimeData = restartPageVisitTimer(currentPageName, currentPageUrl);
5208
- if (prevPageVisitTimeData) {
5209
- pageVisitTimeTrackingHandler(prevPageVisitTimeData.pageName, prevPageVisitTimeData.pageUrl, prevPageVisitTimeData.pageVisitTime);
5210
- }
5224
+ else {
5225
+ total = dateTimeUtilsDuration(timing[_DYN_NAVIGATION_START ], timing[_DYN_LOAD_EVENT_END ]);
5226
+ network = dateTimeUtilsDuration(timing[_DYN_NAVIGATION_START ], timing[_DYN_CONNECT_END ]);
5227
+ request = dateTimeUtilsDuration(timing.requestStart, timing[_DYN_RESPONSE_START ]);
5228
+ response = dateTimeUtilsDuration(timing[_DYN_RESPONSE_START ], timing[_DYN_RESPONSE_END ]);
5229
+ dom = dateTimeUtilsDuration(timing.responseEnd, timing[_DYN_LOAD_EVENT_END ]);
5211
5230
  }
5212
- catch (e) {
5213
- _warnToConsole(logger, "Auto track page visit time failed, metric will not be collected: " + dumpObj(e));
5231
+ if (total === 0) {
5232
+ _throwInternal(_logger, 2 , 10 , "error calculating page view performance.", { total: total, network: network, request: request, response: response, dom: dom });
5214
5233
  }
5215
- };
5216
- function restartPageVisitTimer(pageName, pageUrl) {
5217
- var prevPageVisitData = null;
5218
- try {
5219
- prevPageVisitData = stopPageVisitTimer();
5220
- if (utlCanUseSessionStorage()) {
5221
- if (utlGetSessionStorage(logger, prevPageVisitDataKeyName) != null) {
5222
- throwError("Cannot call startPageVisit consecutively without first calling stopPageVisit");
5223
- }
5224
- var currPageVisitDataStr = getJSON().stringify(new PageVisitData(pageName, pageUrl));
5225
- utlSetSessionStorage(logger, prevPageVisitDataKeyName, currPageVisitDataStr);
5226
- }
5234
+ else if (!_shouldCollectDuration(total, network, request, response, dom)) {
5235
+ _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 });
5227
5236
  }
5228
- catch (e) {
5229
- _warnToConsole(logger, "Call to restart failed: " + dumpObj(e));
5230
- prevPageVisitData = null;
5237
+ else if (total < mathFloor(network) + mathFloor(request) + mathFloor(response) + mathFloor(dom)) {
5238
+ _throwInternal(_logger, 2 , 8 , "client performance math error.", { total: total, network: network, request: request, response: response, dom: dom });
5231
5239
  }
5232
- return prevPageVisitData;
5233
- }
5234
- function stopPageVisitTimer() {
5235
- var prevPageVisitData = null;
5236
- try {
5237
- if (utlCanUseSessionStorage()) {
5238
- var pageVisitEndTime = utcNow();
5239
- var pageVisitDataJsonStr = utlGetSessionStorage(logger, prevPageVisitDataKeyName);
5240
- if (pageVisitDataJsonStr && hasJSON()) {
5241
- prevPageVisitData = getJSON().parse(pageVisitDataJsonStr);
5242
- prevPageVisitData.pageVisitTime = pageVisitEndTime - prevPageVisitData.pageVisitStartTime;
5243
- utlRemoveSessionStorage(logger, prevPageVisitDataKeyName);
5244
- }
5245
- }
5240
+ else {
5241
+ pageViewPerformance.durationMs = total;
5242
+ pageViewPerformance.perfTotal = pageViewPerformance[_DYN_DURATION ] = msToTimeSpan(total);
5243
+ pageViewPerformance.networkConnect = msToTimeSpan(network);
5244
+ pageViewPerformance.sentRequest = msToTimeSpan(request);
5245
+ pageViewPerformance.receivedResponse = msToTimeSpan(response);
5246
+ pageViewPerformance.domProcessing = msToTimeSpan(dom);
5247
+ pageViewPerformance.isValid = true;
5246
5248
  }
5247
- catch (e) {
5248
- _warnToConsole(logger, "Stop page visit timer failed: " + dumpObj(e));
5249
- prevPageVisitData = null;
5249
+ }
5250
+ },
5251
+ _a[_DYN_GET_PERFORMANCE_TIMI16 ] = _getPerformanceTiming,
5252
+ _a[_DYN_IS_PERFORMANCE_TIMIN15 ] = _isPerformanceTimingSupported,
5253
+ _a[_DYN_IS_PERFORMANCE_TIMIN18 ] = _isPerformanceTimingDataReady,
5254
+ _a[_DYN_SHOULD_COLLECT_DURAT17 ] = _shouldCollectDuration,
5255
+ _a;
5256
+ }
5257
+
5258
+ function createPageVisitData(pageName, pageUrl) {
5259
+ return {
5260
+ pageVisitStartTime: utcNow(),
5261
+ pageName: pageName,
5262
+ pageUrl: pageUrl,
5263
+ pageVisitTime: 0
5264
+ };
5265
+ }
5266
+ function createPageVisitTimeManager(logger, pageVisitTimeTrackingHandler) {
5267
+ var prevPageVisitDataKeyName = "prevPageVisitData";
5268
+ function restartPageVisitTimer(pageName, pageUrl) {
5269
+ var prevPageVisitData = null;
5270
+ try {
5271
+ prevPageVisitData = stopPageVisitTimer();
5272
+ if (utlCanUseSessionStorage()) {
5273
+ if (utlGetSessionStorage(logger, prevPageVisitDataKeyName) != null) {
5274
+ throwError("Cannot call startPageVisit consecutively without first calling stopPageVisit");
5250
5275
  }
5251
- return prevPageVisitData;
5276
+ var currPageVisitDataStr = getJSON().stringify(createPageVisitData(pageName, pageUrl));
5277
+ utlSetSessionStorage(logger, prevPageVisitDataKeyName, currPageVisitDataStr);
5252
5278
  }
5253
- objDefine(_self, "_logger", { g: function () { return logger; } });
5254
- objDefine(_self, "pageVisitTimeTrackingHandler", { g: function () { return pageVisitTimeTrackingHandler; } });
5255
- });
5279
+ }
5280
+ catch (e) {
5281
+ _warnToConsole(logger, "Call to restart failed: " + dumpObj(e));
5282
+ prevPageVisitData = null;
5283
+ }
5284
+ return prevPageVisitData;
5256
5285
  }
5257
- PageVisitTimeManager.__ieDyn=1;
5258
- return PageVisitTimeManager;
5259
- }());
5260
- var PageVisitData = /** @class */ (function () {
5261
- function PageVisitData(pageName, pageUrl) {
5262
- this.pageVisitStartTime = utcNow();
5263
- this.pageName = pageName;
5264
- this.pageUrl = pageUrl;
5286
+ function stopPageVisitTimer() {
5287
+ var prevPageVisitData = null;
5288
+ try {
5289
+ if (utlCanUseSessionStorage()) {
5290
+ var pageVisitEndTime = utcNow();
5291
+ var pageVisitDataJsonStr = utlGetSessionStorage(logger, prevPageVisitDataKeyName);
5292
+ if (pageVisitDataJsonStr && hasJSON()) {
5293
+ prevPageVisitData = getJSON().parse(pageVisitDataJsonStr);
5294
+ prevPageVisitData[_DYN_PAGE_VISIT_TIME ] = pageVisitEndTime - prevPageVisitData.pageVisitStartTime;
5295
+ utlRemoveSessionStorage(logger, prevPageVisitDataKeyName);
5296
+ }
5297
+ }
5298
+ }
5299
+ catch (e) {
5300
+ _warnToConsole(logger, "Stop page visit timer failed: " + dumpObj(e));
5301
+ prevPageVisitData = null;
5302
+ }
5303
+ return prevPageVisitData;
5265
5304
  }
5266
- return PageVisitData;
5267
- }());
5305
+ return {
5306
+ trackPreviousPageVisit: function (currentPageName, currentPageUrl) {
5307
+ try {
5308
+ var prevPageVisitTimeData = restartPageVisitTimer(currentPageName, currentPageUrl);
5309
+ if (prevPageVisitTimeData) {
5310
+ pageVisitTimeTrackingHandler(prevPageVisitTimeData.pageName, prevPageVisitTimeData.pageUrl, prevPageVisitTimeData[_DYN_PAGE_VISIT_TIME ]);
5311
+ }
5312
+ }
5313
+ catch (e) {
5314
+ _warnToConsole(logger, "Auto track page visit time failed, metric will not be collected: " + dumpObj(e));
5315
+ }
5316
+ },
5317
+ _logger: logger,
5318
+ pageVisitTimeTrackingHandler: pageVisitTimeTrackingHandler
5319
+ };
5320
+ }
5268
5321
 
5269
- var Timing = /** @class */ (function () {
5270
- function Timing(logger, name) {
5271
- var _self = this;
5272
- var _events = {};
5273
- _self.start = function (name) {
5322
+ function createTiming(logger, name) {
5323
+ var _events = {};
5324
+ var timing = {
5325
+ action: null,
5326
+ start: function (name) {
5274
5327
  if (typeof _events[name] !== "undefined") {
5275
5328
  _throwInternal(logger, 2 , 62 , "start was called more than once for this event without calling stop.", { name: name, key: name }, true);
5276
5329
  }
5277
5330
  _events[name] = +new Date;
5278
- };
5279
- _self.stop = function (name, url, properties, measurements) {
5331
+ },
5332
+ stop: function (name, url, properties, measurements) {
5280
5333
  var start = _events[name];
5281
5334
  if (isNaN(start)) {
5282
5335
  _throwInternal(logger, 2 , 63 , "stop was called without a corresponding start.", { name: name, key: name }, true);
@@ -5284,14 +5337,14 @@ var Timing = /** @class */ (function () {
5284
5337
  else {
5285
5338
  var end = +new Date;
5286
5339
  var duration = dateTimeUtilsDuration(start, end);
5287
- _self.action(name, url, duration, properties, measurements);
5340
+ timing.action(name, url, duration, properties, measurements);
5288
5341
  }
5289
5342
  delete _events[name];
5290
5343
  _events[name] = undefined;
5291
- };
5292
- }
5293
- return Timing;
5294
- }());
5344
+ }
5345
+ };
5346
+ return timing;
5347
+ }
5295
5348
 
5296
5349
  var _a;
5297
5350
  var strEvent = "event";
@@ -5433,6 +5486,9 @@ var AnalyticsPlugin = /** @class */ (function (_super) {
5433
5486
  _self[_DYN_TRACK_PAGE_VIEW ] = function (pageView, customProperties) {
5434
5487
  try {
5435
5488
  var inPv = pageView || {};
5489
+ if (_self[_DYN_CORE ] && _self[_DYN_CORE ][_DYN_CONFIG ]) {
5490
+ inPv.uri = fieldRedaction(inPv.uri, _self[_DYN_CORE ][_DYN_CONFIG ]);
5491
+ }
5436
5492
  _pageViewManager[_DYN_TRACK_PAGE_VIEW ](inPv, __assignFn(__assignFn(__assignFn({}, inPv.properties), inPv.measurements), customProperties));
5437
5493
  if (_autoTrackPageVisitTime) {
5438
5494
  _pageVisitTimeManager[_DYN_TRACK_PREVIOUS_PAGE_1 ](inPv.name, inPv.uri);
@@ -5445,7 +5501,10 @@ var AnalyticsPlugin = /** @class */ (function (_super) {
5445
5501
  _self[_DYN_SEND_PAGE_VIEW_INTER2 ] = function (pageView, properties, systemProperties) {
5446
5502
  var doc = getDocument();
5447
5503
  if (doc) {
5448
- pageView.refUri = pageView.refUri === undefined ? doc.referrer : pageView.refUri;
5504
+ pageView[_DYN_REF_URI ] = pageView[_DYN_REF_URI ] === undefined ? doc.referrer : pageView[_DYN_REF_URI ];
5505
+ }
5506
+ if (_self[_DYN_CORE ] && _self[_DYN_CORE ][_DYN_CONFIG ]) {
5507
+ pageView.refUri = fieldRedaction(pageView.refUri, _self[_DYN_CORE ][_DYN_CONFIG ]);
5449
5508
  }
5450
5509
  if (isNullOrUndefined(pageView[_DYN_START_TIME ])) {
5451
5510
  var duration = ((properties || pageView[_DYN_PROPERTIES ] || {})[_DYN_DURATION ] || 0);
@@ -5490,6 +5549,9 @@ var AnalyticsPlugin = /** @class */ (function (_super) {
5490
5549
  var loc = getLocation();
5491
5550
  url = loc && loc[_DYN_HREF ] || "";
5492
5551
  }
5552
+ if (_self[_DYN_CORE ] && _self[_DYN_CORE ][_DYN_CONFIG ]) {
5553
+ url = fieldRedaction(url, _self[_DYN_CORE ][_DYN_CONFIG ]);
5554
+ }
5493
5555
  _pageTracking.stop(name, url, properties, measurement);
5494
5556
  if (_autoTrackPageVisitTime) {
5495
5557
  _pageVisitTimeManager[_DYN_TRACK_PREVIOUS_PAGE_1 ](name, url);
@@ -5591,10 +5653,10 @@ var AnalyticsPlugin = /** @class */ (function (_super) {
5591
5653
  _preInitTelemetryInitializers = null;
5592
5654
  }
5593
5655
  _populateDefaults(config);
5594
- _pageViewPerformanceManager = new PageViewPerformanceManager(_self[_DYN_CORE ]);
5595
- _pageViewManager = new PageViewManager(_self, _extConfig.overridePageViewDuration, _self[_DYN_CORE ], _pageViewPerformanceManager);
5596
- _pageVisitTimeManager = new PageVisitTimeManager(_self[_DYN_DIAG_LOG ](), function (pageName, pageUrl, pageVisitTime) { return trackPageVisitTime(pageName, pageUrl, pageVisitTime); });
5597
- _eventTracking = new Timing(_self[_DYN_DIAG_LOG ](), "trackEvent");
5656
+ _pageViewPerformanceManager = createPageViewPerformanceManager(_self[_DYN_CORE ]);
5657
+ _pageViewManager = createPageViewManager(_self, _extConfig.overridePageViewDuration, _self[_DYN_CORE ], _pageViewPerformanceManager);
5658
+ _pageVisitTimeManager = createPageVisitTimeManager(_self[_DYN_DIAG_LOG ](), function (pageName, pageUrl, pageVisitTime) { return trackPageVisitTime(pageName, pageUrl, pageVisitTime); });
5659
+ _eventTracking = createTiming(_self[_DYN_DIAG_LOG ]());
5598
5660
  _eventTracking.action =
5599
5661
  function (name, url, duration, properties, measurements) {
5600
5662
  if (!properties) {
@@ -5606,7 +5668,7 @@ var AnalyticsPlugin = /** @class */ (function (_super) {
5606
5668
  properties.duration = duration[_DYN_TO_STRING ]();
5607
5669
  _self.trackEvent({ name: name, properties: properties, measurements: measurements });
5608
5670
  };
5609
- _pageTracking = new Timing(_self[_DYN_DIAG_LOG ](), "trackPageView");
5671
+ _pageTracking = createTiming(_self[_DYN_DIAG_LOG ]());
5610
5672
  _pageTracking.action = function (name, url, duration, properties, measurements) {
5611
5673
  if (isNullOrUndefined(properties)) {
5612
5674
  properties = {};
@@ -5722,22 +5784,6 @@ var AnalyticsPlugin = /** @class */ (function (_super) {
5722
5784
  }
5723
5785
  }));
5724
5786
  }
5725
- function _getDistributedTraceCtx() {
5726
- var distributedTraceCtx = null;
5727
- if (_self[_DYN_CORE ] && _self[_DYN_CORE ].getTraceCtx) {
5728
- distributedTraceCtx = _self[_DYN_CORE ].getTraceCtx(false);
5729
- }
5730
- if (!distributedTraceCtx) {
5731
- var properties = _self[_DYN_CORE ].getPlugin(PropertiesPluginIdentifier);
5732
- if (properties) {
5733
- var context = properties.plugin.context;
5734
- if (context) {
5735
- distributedTraceCtx = createDistributedTraceContextFromTrace(context.telemetryTrace);
5736
- }
5737
- }
5738
- }
5739
- return distributedTraceCtx;
5740
- }
5741
5787
  function _addHistoryListener(win, history, locn) {
5742
5788
  if (_historyListenerAdded) {
5743
5789
  return;
@@ -5756,15 +5802,15 @@ var AnalyticsPlugin = /** @class */ (function (_super) {
5756
5802
  else {
5757
5803
  _currUri = locn && locn[_DYN_HREF ] || "";
5758
5804
  }
5805
+ if (_self[_DYN_CORE ] && _self[_DYN_CORE ][_DYN_CONFIG ]) {
5806
+ _currUri = fieldRedaction(_currUri, _self[_DYN_CORE ][_DYN_CONFIG ]);
5807
+ }
5759
5808
  if (_enableAutoRouteTracking) {
5760
- var distributedTraceCtx = _getDistributedTraceCtx();
5761
- if (distributedTraceCtx) {
5762
- distributedTraceCtx.setTraceId(generateW3CId());
5763
- var traceLocationName = "_unknown_";
5764
- if (locn && locn.pathname) {
5765
- traceLocationName = locn.pathname + (locn.hash || "");
5766
- }
5767
- distributedTraceCtx.setName(dataSanitizeString(_self[_DYN_DIAG_LOG ](), traceLocationName));
5809
+ var newContext = _self[_DYN_CORE ].getTraceCtx(true);
5810
+ newContext.setTraceId(generateW3CId());
5811
+ newContext.pageName = dataSanitizeString(_self[_DYN_DIAG_LOG ](), newContext.pageName || "_unknown_");
5812
+ if (_self[_DYN_CORE ] && _self[_DYN_CORE ].getTraceCtx) {
5813
+ _self[_DYN_CORE ].setTraceCtx(newContext);
5768
5814
  }
5769
5815
  scheduleTimeout((function (uri) {
5770
5816
  _self[_DYN_TRACK_PAGE_VIEW ]({ refUri: uri, properties: { duration: 0 } });
@@ -5832,6 +5878,9 @@ var AnalyticsPlugin = /** @class */ (function (_super) {
5832
5878
  _autoTrackPageVisitTime = false;
5833
5879
  var location = getLocation(true);
5834
5880
  _prevUri = location && location[_DYN_HREF ] || "";
5881
+ if (_self[_DYN_CORE ] && _self[_DYN_CORE ][_DYN_CONFIG ]) {
5882
+ _prevUri = fieldRedaction(_prevUri, _self[_DYN_CORE ][_DYN_CONFIG ]);
5883
+ }
5835
5884
  _currUri = null;
5836
5885
  _evtNamespace = null;
5837
5886
  _extConfig = null;
@@ -5847,7 +5896,7 @@ var AnalyticsPlugin = /** @class */ (function (_super) {
5847
5896
  });
5848
5897
  return _this;
5849
5898
  }
5850
- AnalyticsPlugin.Version = '3.4.0-nightlybeta3.2505-36';
5899
+ AnalyticsPlugin.Version = '3.4.0-nightlybeta3.2507-23';
5851
5900
  return AnalyticsPlugin;
5852
5901
  }(BaseTelemetryPlugin));
5853
5902