@microsoft/applicationinsights-dependencies-js 3.0.3-nightly3.2308-10 → 3.0.3-nightly3.2308-16

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 (29) hide show
  1. package/browser/es5/applicationinsights-dependencies-js.cjs.js +127 -58
  2. package/browser/es5/applicationinsights-dependencies-js.cjs.js.map +1 -1
  3. package/browser/es5/applicationinsights-dependencies-js.cjs.min.js +2 -2
  4. package/browser/es5/applicationinsights-dependencies-js.cjs.min.js.map +1 -1
  5. package/browser/es5/applicationinsights-dependencies-js.gbl.js +129 -60
  6. package/browser/es5/applicationinsights-dependencies-js.gbl.js.map +1 -1
  7. package/browser/es5/applicationinsights-dependencies-js.gbl.min.js +2 -2
  8. package/browser/es5/applicationinsights-dependencies-js.gbl.min.js.map +1 -1
  9. package/browser/es5/applicationinsights-dependencies-js.integrity.json +25 -25
  10. package/browser/es5/applicationinsights-dependencies-js.js +129 -60
  11. package/browser/es5/applicationinsights-dependencies-js.js.map +1 -1
  12. package/browser/es5/applicationinsights-dependencies-js.min.js +2 -2
  13. package/browser/es5/applicationinsights-dependencies-js.min.js.map +1 -1
  14. package/dist/es5/applicationinsights-dependencies-js.js +127 -58
  15. package/dist/es5/applicationinsights-dependencies-js.js.map +1 -1
  16. package/dist/es5/applicationinsights-dependencies-js.min.js +2 -2
  17. package/dist/es5/applicationinsights-dependencies-js.min.js.map +1 -1
  18. package/dist-es5/DependencyInitializer.js +1 -1
  19. package/dist-es5/DependencyListener.js +1 -1
  20. package/dist-es5/InternalConstants.js +1 -1
  21. package/dist-es5/__DynamicConstants.js +1 -1
  22. package/dist-es5/ajax.js +139 -58
  23. package/dist-es5/ajax.js.map +1 -1
  24. package/dist-es5/ajaxRecord.js +1 -1
  25. package/dist-es5/ajaxUtils.js +1 -1
  26. package/dist-es5/applicationinsights-dependencies-js.js +1 -1
  27. package/package.json +3 -3
  28. package/types/applicationinsights-dependencies-js.d.ts +18 -2
  29. package/types/applicationinsights-dependencies-js.namespaced.d.ts +18 -2
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Dependencies Plugin, 3.0.3-nightly3.2308-10
2
+ * Application Insights JavaScript SDK - Dependencies Plugin, 3.0.3-nightly3.2308-16
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
  export {};
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Dependencies Plugin, 3.0.3-nightly3.2308-10
2
+ * Application Insights JavaScript SDK - Dependencies Plugin, 3.0.3-nightly3.2308-16
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Dependencies Plugin, 3.0.3-nightly3.2308-10
2
+ * Application Insights JavaScript SDK - Dependencies Plugin, 3.0.3-nightly3.2308-16
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Dependencies Plugin, 3.0.3-nightly3.2308-10
2
+ * Application Insights JavaScript SDK - Dependencies Plugin, 3.0.3-nightly3.2308-16
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
 
package/dist-es5/ajax.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Dependencies Plugin, 3.0.3-nightly3.2308-10
2
+ * Application Insights JavaScript SDK - Dependencies Plugin, 3.0.3-nightly3.2308-16
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
 
@@ -15,7 +15,7 @@ import { _DYN_ABORTED, _DYN_ABORT_DONE, _DYN_ADD_REQUEST_CONTEXT, _DYN_AJAX_DIAG
15
15
  import { ajaxRecord } from "./ajaxRecord";
16
16
  var AJAX_MONITOR_PREFIX = "ai.ajxmn.";
17
17
  var strDiagLog = "diagLog";
18
- var strAjaxData = "ajaxData";
18
+ var AJAX_DATA_CONTAINER = "_ajaxData";
19
19
  var STR_FETCH = "fetch";
20
20
  var ERROR_HEADER = "Failed to monitor XMLHttpRequest";
21
21
  var ERROR_PREFIX = ", monitoring data for this ajax call ";
@@ -42,8 +42,8 @@ function _supportsFetch() {
42
42
  * @returns True if Ajax monitoring is supported on this page, otherwise false
43
43
  * @ignore
44
44
  */
45
- function _supportsAjaxMonitoring(ajaxMonitorInstance) {
46
- var _a;
45
+ function _supportsAjaxMonitoring(ajaxMonitorInstance, ajaxDataId) {
46
+ var _a, _b;
47
47
  var result = false;
48
48
  if (isXhrSupported()) {
49
49
  var proto = XMLHttpRequest[strPrototype];
@@ -60,7 +60,13 @@ function _supportsAjaxMonitoring(ajaxMonitorInstance) {
60
60
  // Disable if the XmlHttpRequest can't be extended or hooked
61
61
  try {
62
62
  var xhr = new XMLHttpRequest();
63
- xhr[strAjaxData] = {};
63
+ var xhrData = {
64
+ xh: [],
65
+ i: (_a = {},
66
+ _a[ajaxDataId] = {},
67
+ _a)
68
+ };
69
+ xhr[AJAX_DATA_CONTAINER] = xhrData;
64
70
  // Check that we can update the prototype
65
71
  var theOpen = XMLHttpRequest[strPrototype].open;
66
72
  XMLHttpRequest[strPrototype].open = theOpen;
@@ -68,19 +74,64 @@ function _supportsAjaxMonitoring(ajaxMonitorInstance) {
68
74
  catch (e) {
69
75
  // We can't decorate the xhr object so disable monitoring
70
76
  result = false;
71
- _throwInternalCritical(ajaxMonitorInstance, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, "Failed to enable XMLHttpRequest monitoring, extension is not supported", (_a = {},
72
- _a[_DYN_EXCEPTION /* @min:exception */] = dumpObj(e),
73
- _a));
77
+ _throwInternalCritical(ajaxMonitorInstance, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, "Failed to enable XMLHttpRequest monitoring, extension is not supported", (_b = {},
78
+ _b[_DYN_EXCEPTION /* @min:exception */] = dumpObj(e),
79
+ _b));
74
80
  }
75
81
  }
76
82
  return result;
77
83
  }
84
+ /**
85
+ * Internal helper to fetch the SDK instance tracking data for this XHR request
86
+ * @param xhr
87
+ * @param ajaxDataId
88
+ * @returns
89
+ */
90
+ var _getAjaxData = function (xhr, ajaxDataId) {
91
+ if (xhr && ajaxDataId && xhr[AJAX_DATA_CONTAINER]) {
92
+ return (xhr[AJAX_DATA_CONTAINER].i || {})[ajaxDataId];
93
+ }
94
+ return null;
95
+ };
96
+ /**
97
+ * @ignore
98
+ * Internal helper to track the singleton shared tracking headers, so we can attempt to not create headers
99
+ * that might cause an issue if multiple values are populated.
100
+ * @param xhr - The instrumented XHR instance
101
+ */
102
+ var _addSharedXhrHeaders = function (xhr, name, value) {
103
+ if (xhr) {
104
+ var headers = (xhr[AJAX_DATA_CONTAINER] || {}).xh;
105
+ if (headers) {
106
+ headers.push({
107
+ n: name,
108
+ v: value
109
+ });
110
+ }
111
+ }
112
+ };
113
+ var _isHeaderSet = function (xhr, name) {
114
+ var isPresent = false;
115
+ if (xhr) {
116
+ var headers = (xhr[AJAX_DATA_CONTAINER] || {}).xh;
117
+ if (headers) {
118
+ arrForEach(headers, function (header) {
119
+ if (header.n === name) {
120
+ isPresent = true;
121
+ return -1;
122
+ }
123
+ });
124
+ }
125
+ }
126
+ return isPresent;
127
+ };
78
128
  /** @Ignore */
79
- function _getFailedAjaxDiagnosticsMessage(xhr) {
129
+ function _getFailedAjaxDiagnosticsMessage(xhr, ajaxDataId) {
80
130
  var result = "";
81
131
  try {
82
- if (xhr && xhr[strAjaxData] && xhr[strAjaxData][_DYN_REQUEST_URL /* @min:%2erequestUrl */]) {
83
- result += "(url: '" + xhr[strAjaxData][_DYN_REQUEST_URL /* @min:%2erequestUrl */] + "')";
132
+ var ajaxData = _getAjaxData(xhr, ajaxDataId);
133
+ if (ajaxData && ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */]) {
134
+ result += "(url: '" + ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] + "')";
84
135
  }
85
136
  }
86
137
  catch (e) {
@@ -99,12 +150,12 @@ function _throwInternalWarning(ajaxMonitorInstance, msgId, message, properties,
99
150
  /** @Ignore */
100
151
  function _createErrorCallbackFunc(ajaxMonitorInstance, internalMessage, message) {
101
152
  // tslint:disable-next-line
102
- return function (args) {
153
+ return function (callDetails) {
103
154
  var _a;
104
155
  _throwInternalCritical(ajaxMonitorInstance, internalMessage, message, (_a = {
105
- ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(args[_DYN_INST /* @min:%2einst */])
156
+ ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(callDetails[_DYN_INST /* @min:%2einst */], ajaxMonitorInstance._ajaxDataId)
106
157
  },
107
- _a[_DYN_EXCEPTION /* @min:exception */] = dumpObj(args.err),
158
+ _a[_DYN_EXCEPTION /* @min:exception */] = dumpObj(callDetails.err),
108
159
  _a));
109
160
  };
110
161
  }
@@ -229,6 +280,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
229
280
  var _excludeRequestFromAutoTrackingPatterns;
230
281
  var _addRequestContext;
231
282
  var _evtNamespace;
283
+ var _ajaxDataId;
232
284
  var _dependencyHandlerId;
233
285
  var _dependencyListeners;
234
286
  var _dependencyInitializers;
@@ -302,17 +354,27 @@ var AjaxMonitor = /** @class */ (function (_super) {
302
354
  else if (xhr) { // XHR
303
355
  if (correlationIdCanIncludeCorrelationHeader(_extensionConfig, ajaxData[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */](), currentWindowHost)) {
304
356
  if (_isUsingAIHeaders) {
305
- var id = "|" + ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */] + "." + ajaxData[_DYN_SPAN_ID /* @min:%2espanID */];
306
- xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[3 /* eRequestHeaders.requestIdHeader */], id);
307
- if (_enableRequestHeaderTracking) {
308
- ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[3 /* eRequestHeaders.requestIdHeader */]] = id;
357
+ if (!_isHeaderSet(xhr, RequestHeaders[3 /* eRequestHeaders.requestIdHeader */])) {
358
+ var id = "|" + ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */] + "." + ajaxData[_DYN_SPAN_ID /* @min:%2espanID */];
359
+ xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[3 /* eRequestHeaders.requestIdHeader */], id);
360
+ if (_enableRequestHeaderTracking) {
361
+ ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[3 /* eRequestHeaders.requestIdHeader */]] = id;
362
+ }
363
+ }
364
+ else {
365
+ _throwInternalWarning(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, "Unable to set [" + RequestHeaders[3 /* eRequestHeaders.requestIdHeader */] + "] as it has already been set by another instance");
309
366
  }
310
367
  }
311
368
  var appId = _appId || (_context && _context.appId());
312
369
  if (appId) {
313
- xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[0 /* eRequestHeaders.requestContextHeader */], RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId);
314
- if (_enableRequestHeaderTracking) {
315
- ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]] = RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId;
370
+ if (!_isHeaderSet(xhr, RequestHeaders[0 /* eRequestHeaders.requestContextHeader */])) {
371
+ xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[0 /* eRequestHeaders.requestContextHeader */], RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId);
372
+ if (_enableRequestHeaderTracking) {
373
+ ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]] = RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId;
374
+ }
375
+ }
376
+ else {
377
+ _throwInternalWarning(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, "Unable to set [" + RequestHeaders[0 /* eRequestHeaders.requestContextHeader */] + "] as it has already been set by another instance");
316
378
  }
317
379
  }
318
380
  if (_isUsingW3CHeaders) {
@@ -320,10 +382,15 @@ var AjaxMonitor = /** @class */ (function (_super) {
320
382
  if (isNullOrUndefined(traceFlags)) {
321
383
  traceFlags = 0x01;
322
384
  }
323
- var traceParent = formatTraceParent(createTraceParent(ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */], ajaxData[_DYN_SPAN_ID /* @min:%2espanID */], traceFlags));
324
- xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[4 /* eRequestHeaders.traceParentHeader */], traceParent);
325
- if (_enableRequestHeaderTracking) {
326
- ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[4 /* eRequestHeaders.traceParentHeader */]] = traceParent;
385
+ if (!_isHeaderSet(xhr, RequestHeaders[4 /* eRequestHeaders.traceParentHeader */])) {
386
+ var traceParent = formatTraceParent(createTraceParent(ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */], ajaxData[_DYN_SPAN_ID /* @min:%2espanID */], traceFlags));
387
+ xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[4 /* eRequestHeaders.traceParentHeader */], traceParent);
388
+ if (_enableRequestHeaderTracking) {
389
+ ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[4 /* eRequestHeaders.traceParentHeader */]] = traceParent;
390
+ }
391
+ }
392
+ else {
393
+ _throwInternalWarning(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, "Unable to set [" + RequestHeaders[4 /* eRequestHeaders.traceParentHeader */] + "] as it has already been set by another instance");
327
394
  }
328
395
  }
329
396
  }
@@ -384,6 +451,8 @@ var AjaxMonitor = /** @class */ (function (_super) {
384
451
  _dependencyHandlerId = 0;
385
452
  _dependencyListeners = [];
386
453
  _dependencyInitializers = [];
454
+ _ajaxDataId = createUniqueNamespace("ajaxData");
455
+ _self._ajaxDataId = _ajaxDataId;
387
456
  _ignoreHeaders = null;
388
457
  _maxAjaxPerfLookupAttempts = 1;
389
458
  _ajaxPerfLookupDelay = 1;
@@ -535,7 +604,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
535
604
  _addHook(InstrumentProto(target, funcName, callbacks));
536
605
  }
537
606
  function _instrumentXhr() {
538
- if (!_supportsAjaxMonitoring(_self)) {
607
+ if (!_supportsAjaxMonitoring(_self, _ajaxDataId)) {
539
608
  return;
540
609
  }
541
610
  _self[_DYN__ADD_HOOK /* @min:%2e_addHook */](onConfigChange(_extensionConfig, function () {
@@ -545,17 +614,17 @@ var AjaxMonitor = /** @class */ (function (_super) {
545
614
  // Instrument open
546
615
  _hookProto(XMLHttpRequest, "open", {
547
616
  ns: _evtNamespace,
548
- req: function (args, method, url, async) {
617
+ req: function (callDetails, method, url, async) {
549
618
  if (!_disableAjaxTracking) {
550
- var xhr = args[_DYN_INST /* @min:%2einst */];
551
- var ajaxData = xhr[strAjaxData];
552
- if (!_isDisabledRequest(xhr, url) && _isMonitoredXhrInstance(xhr, true)) {
619
+ var xhr = callDetails[_DYN_INST /* @min:%2einst */];
620
+ var ajaxData = _getAjaxData(xhr, _ajaxDataId);
621
+ if (!_isDisabledRequest(xhr, url) && _isMonitoredXhrInstance(xhr, ajaxData, true)) {
553
622
  if (!ajaxData || !ajaxData.xhrMonitoringState[_DYN_OPEN_DONE /* @min:%2eopenDone */]) {
554
623
  // Only create a single ajaxData (even when multiple AI instances are running)
555
- _openHandler(xhr, method, url, async);
624
+ ajaxData = _openHandler(xhr, method, url, async);
556
625
  }
557
626
  // always attach to the on ready state change (required for handling multiple instances)
558
- _attachToOnReadyStateChange(xhr);
627
+ _attachToOnReadyStateChange(xhr, ajaxData);
559
628
  }
560
629
  }
561
630
  },
@@ -564,11 +633,11 @@ var AjaxMonitor = /** @class */ (function (_super) {
564
633
  // Instrument send
565
634
  _hookProto(XMLHttpRequest, "send", {
566
635
  ns: _evtNamespace,
567
- req: function (args, context) {
636
+ req: function (callDetails, context) {
568
637
  if (!_disableAjaxTracking) {
569
- var xhr = args[_DYN_INST /* @min:%2einst */];
570
- var ajaxData = xhr[strAjaxData];
571
- if (_isMonitoredXhrInstance(xhr) && !ajaxData.xhrMonitoringState[_DYN_SEND_DONE /* @min:%2esendDone */]) {
638
+ var xhr = callDetails[_DYN_INST /* @min:%2einst */];
639
+ var ajaxData = _getAjaxData(xhr, _ajaxDataId);
640
+ if (_isMonitoredXhrInstance(xhr, ajaxData) && !ajaxData.xhrMonitoringState[_DYN_SEND_DONE /* @min:%2esendDone */]) {
572
641
  _createMarkId("xhr", ajaxData);
573
642
  ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */] = dateTimeUtilsNow();
574
643
  _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */](ajaxData, undefined, undefined, xhr);
@@ -581,11 +650,11 @@ var AjaxMonitor = /** @class */ (function (_super) {
581
650
  // Instrument abort
582
651
  _hookProto(XMLHttpRequest, "abort", {
583
652
  ns: _evtNamespace,
584
- req: function (args) {
653
+ req: function (callDetails) {
585
654
  if (!_disableAjaxTracking) {
586
- var xhr = args[_DYN_INST /* @min:%2einst */];
587
- var ajaxData = xhr[strAjaxData];
588
- if (_isMonitoredXhrInstance(xhr) && !ajaxData.xhrMonitoringState[_DYN_ABORT_DONE /* @min:%2eabortDone */]) {
655
+ var xhr = callDetails[_DYN_INST /* @min:%2einst */];
656
+ var ajaxData = _getAjaxData(xhr, _ajaxDataId);
657
+ if (_isMonitoredXhrInstance(xhr, ajaxData) && !ajaxData.xhrMonitoringState[_DYN_ABORT_DONE /* @min:%2eabortDone */]) {
589
658
  ajaxData[_DYN_ABORTED /* @min:%2eaborted */] = 1;
590
659
  ajaxData.xhrMonitoringState[_DYN_ABORT_DONE /* @min:%2eabortDone */] = true;
591
660
  }
@@ -596,11 +665,17 @@ var AjaxMonitor = /** @class */ (function (_super) {
596
665
  // Instrument setRequestHeader
597
666
  _hookProto(XMLHttpRequest, "setRequestHeader", {
598
667
  ns: _evtNamespace,
599
- req: function (args, header, value) {
600
- if (!_disableAjaxTracking && _enableRequestHeaderTracking) {
601
- var xhr = args[_DYN_INST /* @min:%2einst */];
602
- if (_isMonitoredXhrInstance(xhr) && _canIncludeHeaders(header)) {
603
- xhr[strAjaxData][_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][header] = value;
668
+ req: function (callDetails, header, value) {
669
+ if (!_disableAjaxTracking) {
670
+ var xhr = callDetails[_DYN_INST /* @min:%2einst */];
671
+ var ajaxData = _getAjaxData(xhr, _ajaxDataId);
672
+ if (ajaxData && _isMonitoredXhrInstance(xhr, ajaxData)) {
673
+ _addSharedXhrHeaders(xhr, header, value);
674
+ if (_enableRequestHeaderTracking && _canIncludeHeaders(header)) {
675
+ if (ajaxData) {
676
+ ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][header] = value;
677
+ }
678
+ }
604
679
  }
605
680
  }
606
681
  },
@@ -664,14 +739,14 @@ var AjaxMonitor = /** @class */ (function (_super) {
664
739
  }
665
740
  return isDisabled;
666
741
  }
667
- /// <summary>Verifies that particalar instance of XMLHttpRequest needs to be monitored</summary>
742
+ /// <summary>Verifies that particular instance of XMLHttpRequest needs to be monitored</summary>
668
743
  /// <param name="excludeAjaxDataValidation">Optional parameter. True if ajaxData must be excluded from verification</param>
669
744
  /// <returns type="bool">True if instance needs to be monitored, otherwise false</returns>
670
- function _isMonitoredXhrInstance(xhr, excludeAjaxDataValidation) {
745
+ function _isMonitoredXhrInstance(xhr, ajaxData, excludeAjaxDataValidation) {
671
746
  var ajaxValidation = true;
672
747
  var initialized = _xhrInitialized;
673
748
  if (!isNullOrUndefined(xhr)) {
674
- ajaxValidation = excludeAjaxDataValidation === true || !isNullOrUndefined(xhr[strAjaxData]);
749
+ ajaxValidation = excludeAjaxDataValidation === true || !isNullOrUndefined(ajaxData);
675
750
  }
676
751
  // checking to see that all interested functions on xhr were instrumented
677
752
  return initialized
@@ -694,7 +769,9 @@ var AjaxMonitor = /** @class */ (function (_super) {
694
769
  var distributedTraceCtx = _getDistributedTraceCtx();
695
770
  var traceID = (distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_ID /* @min:%2egetTraceId */]()) || generateW3CId();
696
771
  var spanID = strSubstr(generateW3CId(), 0, 16);
697
- var ajaxData = new ajaxRecord(traceID, spanID, _self[strDiagLog](), (_a = _self.core) === null || _a === void 0 ? void 0 : _a.getTraceCtx());
772
+ var xhrRequestData = xhr[AJAX_DATA_CONTAINER] = (xhr[AJAX_DATA_CONTAINER] || { xh: [], i: {} });
773
+ var ajaxDataCntr = xhrRequestData.i = (xhrRequestData.i || {});
774
+ var ajaxData = ajaxDataCntr[_ajaxDataId] = (ajaxDataCntr[_ajaxDataId] || new ajaxRecord(traceID, spanID, _self[strDiagLog](), (_a = _self.core) === null || _a === void 0 ? void 0 : _a.getTraceCtx()));
698
775
  ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_FLAGS /* @min:%2egetTraceFlags */]();
699
776
  ajaxData[_DYN_METHOD /* @min:%2emethod */] = method;
700
777
  ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = url;
@@ -702,13 +779,13 @@ var AjaxMonitor = /** @class */ (function (_super) {
702
779
  ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = {};
703
780
  ajaxData.async = async;
704
781
  ajaxData[_DYN_ERROR_STATUS_TEXT /* @min:%2eerrorStatusText */] = _enableAjaxErrorStatusText;
705
- xhr[strAjaxData] = ajaxData;
782
+ return ajaxData;
706
783
  }
707
- function _attachToOnReadyStateChange(xhr) {
708
- xhr[strAjaxData].xhrMonitoringState[_DYN_STATE_CHANGE_ATTACHE13 /* @min:%2estateChangeAttached */] = eventOn(xhr, "readystatechange", function () {
784
+ function _attachToOnReadyStateChange(xhr, ajaxData) {
785
+ ajaxData.xhrMonitoringState[_DYN_STATE_CHANGE_ATTACHE13 /* @min:%2estateChangeAttached */] = eventOn(xhr, "readystatechange", function () {
709
786
  var _a;
710
787
  try {
711
- if (xhr && xhr.readyState === 4 && _isMonitoredXhrInstance(xhr)) {
788
+ if (xhr && xhr.readyState === 4 && _isMonitoredXhrInstance(xhr, ajaxData)) {
712
789
  _onAjaxComplete(xhr);
713
790
  }
714
791
  }
@@ -717,7 +794,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
717
794
  // ignore messages with c00c023f, as this a known IE9 XHR abort issue
718
795
  if (!exceptionText || _indexOf(exceptionText[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */](), "c00c023f") === -1) {
719
796
  _throwInternalCritical(_self, 16 /* _eInternalMessageId.FailedMonitorAjaxRSC */, ERROR_HEADER + " 'readystatechange' event handler" + ERROR_POSTFIX, (_a = {},
720
- _a[_DYN_AJAX_DIAGNOSTICS_MES16 /* @min:ajaxDiagnosticsMessage */] = _getFailedAjaxDiagnosticsMessage(xhr),
797
+ _a[_DYN_AJAX_DIAGNOSTICS_MES16 /* @min:ajaxDiagnosticsMessage */] = _getFailedAjaxDiagnosticsMessage(xhr, _ajaxDataId),
721
798
  _a[_DYN_EXCEPTION /* @min:exception */] = exceptionText,
722
799
  _a));
723
800
  }
@@ -738,12 +815,12 @@ var AjaxMonitor = /** @class */ (function (_super) {
738
815
  return null;
739
816
  }
740
817
  function _onAjaxComplete(xhr) {
741
- var ajaxData = xhr[strAjaxData];
818
+ var ajaxData = _getAjaxData(xhr, _ajaxDataId);
742
819
  ajaxData[_DYN_RESPONSE_FINISHED_TI14 /* @min:%2eresponseFinishedTime */] = dateTimeUtilsNow();
743
820
  ajaxData[_DYN_STATUS /* @min:%2estatus */] = xhr[_DYN_STATUS /* @min:%2estatus */];
744
821
  function _reportXhrError(e, failedProps) {
745
822
  var errorProps = failedProps || {};
746
- errorProps["ajaxDiagnosticsMessage"] = _getFailedAjaxDiagnosticsMessage(xhr);
823
+ errorProps["ajaxDiagnosticsMessage"] = _getFailedAjaxDiagnosticsMessage(xhr, _ajaxDataId);
747
824
  if (e) {
748
825
  errorProps["exception"] = dumpObj(e);
749
826
  }
@@ -808,7 +885,11 @@ var AjaxMonitor = /** @class */ (function (_super) {
808
885
  finally {
809
886
  // cleanup telemetry data
810
887
  try {
811
- xhr[strAjaxData] = null;
888
+ var xhrRequestData = (xhr[AJAX_DATA_CONTAINER] || { i: {} });
889
+ var ajaxDataCntr = (xhrRequestData.i || {});
890
+ if (ajaxDataCntr[_ajaxDataId]) {
891
+ ajaxDataCntr[_ajaxDataId] = null;
892
+ }
812
893
  }
813
894
  catch (e) {
814
895
  // May throw in environments that prevent extension or freeze xhr
@@ -832,7 +913,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
832
913
  }
833
914
  catch (e) {
834
915
  _throwInternalWarning(_self, 18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, CORRELATION_HEADER_ERROR, (_a = {},
835
- _a[_DYN_AJAX_DIAGNOSTICS_MES16 /* @min:ajaxDiagnosticsMessage */] = _getFailedAjaxDiagnosticsMessage(xhr),
916
+ _a[_DYN_AJAX_DIAGNOSTICS_MES16 /* @min:ajaxDiagnosticsMessage */] = _getFailedAjaxDiagnosticsMessage(xhr, _ajaxDataId),
836
917
  _a[_DYN_EXCEPTION /* @min:exception */] = dumpObj(e),
837
918
  _a));
838
919
  }