@microsoft/applicationinsights-dependencies-js 2.8.4-nightly.2205-08 → 2.8.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Microsoft Application Insights XHR dependencies plugin, 2.8.4-nightly.2205-08
2
+ * Microsoft Application Insights XHR dependencies plugin, 2.8.4
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  *
5
5
  * Microsoft Application Insights Team
@@ -42,6 +42,13 @@ export declare class AjaxPlugin extends BaseTelemetryPlugin implements IDependen
42
42
  [key: string]: any;
43
43
  }): void;
44
44
  includeCorrelationHeaders(ajaxData: ajaxRecord, input?: Request | string, init?: RequestInit, xhr?: XMLHttpRequestInstrumented): any;
45
+ /**
46
+ * Add an ajax listener which is called just prior to the request being sent and before the correlation headers are added, to allow you
47
+ * to access the headers and modify the values used to generate the distributed tracing correlation headers.
48
+ * @param dependencyListener - The Telemetry Initializer function
49
+ * @returns - A IDependencyListenerHandler to enable the initializer to be removed
50
+ */
51
+ addDependencyListener(dependencyListener: DependencyListenerFunction): IDependencyListenerHandler;
45
52
  /**
46
53
  * Protected function to allow sub classes the chance to add additional properties to the dependency event
47
54
  * before it's sent. This function calls track, so sub-classes must call this function after they have
@@ -82,12 +89,15 @@ export declare class ajaxRecord {
82
89
  clientFailure: number;
83
90
  traceID: string;
84
91
  spanID: string;
92
+ traceFlags?: number;
85
93
  constructor(traceID: string, spanID: string, logger: IDiagnosticLogger);
86
94
  getAbsoluteUrl(): string;
87
95
  getPathName(): string;
88
96
  CreateTrackItem(ajaxType: string, enableRequestHeaderTracking: boolean, getResponse: () => IAjaxRecordResponse): IDependencyTelemetry;
89
97
  }
90
98
 
99
+ declare type DependencyListenerFunction = (dependencyDetails: IDependencyListenerDetails) => void;
100
+
91
101
  declare interface IAjaxRecordResponse {
92
102
  statusText: string;
93
103
  headerMap: Object;
@@ -97,7 +107,7 @@ declare interface IAjaxRecordResponse {
97
107
  response?: Object;
98
108
  }
99
109
 
100
- export declare interface IDependenciesPlugin {
110
+ export declare interface IDependenciesPlugin extends IDependencyListenerContainer {
101
111
  /**
102
112
  * Logs dependency call
103
113
  * @param dependencyData dependency data object
@@ -105,6 +115,59 @@ export declare interface IDependenciesPlugin {
105
115
  trackDependencyData(dependency: IDependencyTelemetry): void;
106
116
  }
107
117
 
118
+ declare interface IDependencyListenerContainer {
119
+ /**
120
+ * Add an ajax listener which is called just prior to the request being sent and before the correlation headers are added, to allow you
121
+ * to access the headers and modify the values used to generate the distributed tracing correlation headers. (added in v2.8.4)
122
+ * @param dependencyListener - The Telemetry Initializer function
123
+ * @returns - A IDependencyListenerHandler to enable the initializer to be removed
124
+ */
125
+ addDependencyListener(dependencyListener: DependencyListenerFunction): IDependencyListenerHandler;
126
+ }
127
+
128
+ declare interface IDependencyListenerDetails {
129
+ /**
130
+ * The current core instance
131
+ */
132
+ core: IAppInsightsCore;
133
+ /**
134
+ * Provided only if the dependency request is an XHR call
135
+ */
136
+ xhr?: XMLHttpRequest;
137
+ /**
138
+ * Provided only if the dependency request is a fetch call, this is the input argument being used,
139
+ * re-assigning this value has not affect on the value used for the request, however, when this is a Request
140
+ * object changing the value of the Request will be used for the outbound request.
141
+ */
142
+ input?: Request | string;
143
+ /**
144
+ * Provided only if the dependency request is a fetch call, this is the init argument being used,
145
+ * re-assigning this value does not change the value used for the request, however, changing properties
146
+ * of this object will be used.
147
+ */
148
+ init?: RequestInit;
149
+ /**
150
+ * Returns the unique identifier for a trace. All requests / spans from the same trace share the same traceId.
151
+ * Must be read from incoming headers or generated according to the W3C TraceContext specification,
152
+ * in a hex representation of 16-byte array. A.k.a. trace-id, TraceID or Distributed TraceID
153
+ */
154
+ traceId?: string;
155
+ /**
156
+ * Self-generated 8-bytes identifier of the incoming request. Must be a hex representation of 8-byte array.
157
+ * Also know as the parentId, used to link requests together
158
+ */
159
+ spanId?: string;
160
+ /**
161
+ * An integer representation of the W3C TraceContext trace-flags.
162
+ * https://www.w3.org/TR/trace-context/#trace-flags
163
+ */
164
+ traceFlags?: number;
165
+ }
166
+
167
+ declare interface IDependencyListenerHandler {
168
+ remove(): void;
169
+ }
170
+
108
171
  export declare interface IInstrumentationRequirements extends IDependenciesPlugin {
109
172
  includeCorrelationHeaders: (ajaxData: ajaxRecord, input?: Request | string, init?: RequestInit, xhr?: XMLHttpRequestInstrumented) => any;
110
173
  }
@@ -0,0 +1,8 @@
1
+ /*
2
+ * Application Insights JavaScript SDK - Dependencies Plugin, 2.8.4
3
+ * Copyright (c) Microsoft and contributors. All rights reserved.
4
+ */
5
+
6
+
7
+ export {};
8
+ //# sourceMappingURL=DependencyListener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DependencyListener.js.map","sources":["DependencyListener.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nexport {};\r\n//# sourceMappingURL=DependencyListener.js.map"],"names":[],"mappings":";;;;AAA4D;AAC1B;AAClC;AACA"}
package/dist-esm/ajax.js CHANGED
@@ -1,12 +1,12 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Dependencies Plugin, 2.8.4-nightly.2205-08
2
+ * Application Insights JavaScript SDK - Dependencies Plugin, 2.8.4
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
 
6
6
 
7
7
  import { __assignFn as __assign, __extendsFn as __extends } from "@microsoft/applicationinsights-shims";
8
- import { RequestHeaders, CorrelationIdHelper, createTelemetryItem, RemoteDependencyData, dateTimeUtilsNow, DisabledPropertyName, PropertiesPluginIdentifier, isInternalApplicationInsightsEndpoint, formatTraceParent, createTraceParent } from "@microsoft/applicationinsights-common";
9
- import { isNullOrUndefined, arrForEach, isString, strTrim, isFunction, BaseTelemetryPlugin, getLocation, getGlobal, strPrototype, InstrumentFunc, InstrumentProto, getPerformance, objForEachKey, generateW3CId, getIEVersion, dumpObj, isXhrSupported, eventOn, mergeEvtNamespace, createUniqueNamespace, createProcessTelemetryContext, _throwInternal } from "@microsoft/applicationinsights-core-js";
8
+ import { RequestHeaders, CorrelationIdHelper, createTelemetryItem, RemoteDependencyData, dateTimeUtilsNow, DisabledPropertyName, PropertiesPluginIdentifier, isInternalApplicationInsightsEndpoint, formatTraceParent, createTraceParent, createDistributedTraceContextFromTrace } from "@microsoft/applicationinsights-common";
9
+ import { isNullOrUndefined, arrForEach, isString, strTrim, isFunction, BaseTelemetryPlugin, getLocation, getGlobal, strPrototype, InstrumentFunc, InstrumentProto, getPerformance, objForEachKey, generateW3CId, getIEVersion, dumpObj, isXhrSupported, eventOn, mergeEvtNamespace, createUniqueNamespace, createProcessTelemetryContext, _throwInternal, getExceptionName } from "@microsoft/applicationinsights-core-js";
10
10
  import { ajaxRecord } from "./ajaxRecord";
11
11
  import dynamicProto from "@microsoft/dynamicproto-js";
12
12
  var AJAX_MONITOR_PREFIX = "ai.ajxmn.";
@@ -57,7 +57,7 @@ function _supportsAjaxMonitoring(ajaxMonitorInstance) {
57
57
  catch (e) {
58
58
  // We can't decorate the xhr object so disable monitoring
59
59
  result = false;
60
- _throwInternalCritical(ajaxMonitorInstance, 15 /* FailedMonitorAjaxOpen */, "Failed to enable XMLHttpRequest monitoring, extension is not supported", {
60
+ _throwInternalCritical(ajaxMonitorInstance, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, "Failed to enable XMLHttpRequest monitoring, extension is not supported", {
61
61
  exception: dumpObj(e)
62
62
  });
63
63
  }
@@ -81,11 +81,11 @@ function _getFailedAjaxDiagnosticsMessage(xhr) {
81
81
  }
82
82
  /** @ignore */
83
83
  function _throwInternalCritical(ajaxMonitorInstance, msgId, message, properties, isUserAct) {
84
- _throwInternal(ajaxMonitorInstance[strDiagLog](), 1 /* CRITICAL */, msgId, message, properties, isUserAct);
84
+ _throwInternal(ajaxMonitorInstance[strDiagLog](), 1 /* eLoggingSeverity.CRITICAL */, msgId, message, properties, isUserAct);
85
85
  }
86
86
  /** @ignore */
87
87
  function _throwInternalWarning(ajaxMonitorInstance, msgId, message, properties, isUserAct) {
88
- _throwInternal(ajaxMonitorInstance[strDiagLog](), 2 /* WARNING */, msgId, message, properties, isUserAct);
88
+ _throwInternal(ajaxMonitorInstance[strDiagLog](), 2 /* eLoggingSeverity.WARNING */, msgId, message, properties, isUserAct);
89
89
  }
90
90
  /** @Ignore */
91
91
  function _createErrorCallbackFunc(ajaxMonitorInstance, internalMessage, message) {
@@ -103,6 +103,35 @@ function _indexOf(value, match) {
103
103
  }
104
104
  return -1;
105
105
  }
106
+ function _processDependencyListeners(listeners, core, ajaxData, xhr, input, init) {
107
+ var initializersCount = listeners.length;
108
+ if (initializersCount > 0) {
109
+ var details = {
110
+ core: core,
111
+ xhr: xhr,
112
+ input: input,
113
+ init: init,
114
+ traceId: ajaxData.traceID,
115
+ spanId: ajaxData.spanID,
116
+ traceFlags: ajaxData.traceFlags
117
+ };
118
+ for (var i = 0; i < initializersCount; ++i) {
119
+ var dependencyListener = listeners[i];
120
+ if (dependencyListener && dependencyListener.fn) {
121
+ try {
122
+ dependencyListener.fn.call(null, details);
123
+ }
124
+ catch (e) {
125
+ var core_1 = details.core;
126
+ _throwInternal(core_1 && core_1.logger, 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, "Dependency listener [#" + i + "] failed: " + getExceptionName(e), { exception: dumpObj(e) }, true);
127
+ }
128
+ }
129
+ }
130
+ ajaxData.traceID = details.traceId;
131
+ ajaxData.spanID = details.spanId;
132
+ ajaxData.traceFlags = details.traceFlags;
133
+ }
134
+ }
106
135
  var AjaxMonitor = /** @class */ (function (_super) {
107
136
  __extends(AjaxMonitor, _super);
108
137
  function AjaxMonitor() {
@@ -129,6 +158,8 @@ var AjaxMonitor = /** @class */ (function (_super) {
129
158
  var _excludeRequestFromAutoTrackingPatterns;
130
159
  var _addRequestContext;
131
160
  var _evtNamespace;
161
+ var _dependencyListenerId;
162
+ var _dependencyListeners;
132
163
  dynamicProto(AjaxMonitor, _this, function (_self, _base) {
133
164
  var _addHook = _base._addHook;
134
165
  _initDefaults();
@@ -151,6 +182,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
151
182
  _self.includeCorrelationHeaders = function (ajaxData, input, init, xhr) {
152
183
  // Test Hook to allow the overriding of the location host
153
184
  var currentWindowHost = _self["_currentWindowHost"] || _currentWindowHost;
185
+ _processDependencyListeners(_dependencyListeners, _self.core, ajaxData, xhr, input, init);
154
186
  if (input) { // Fetch
155
187
  if (CorrelationIdHelper.canIncludeCorrelationHeader(_config, ajaxData.getAbsoluteUrl(), currentWindowHost)) {
156
188
  if (!init) {
@@ -162,23 +194,27 @@ var AjaxMonitor = /** @class */ (function (_super) {
162
194
  init.headers = new Headers(init.headers || (input instanceof Request ? (input.headers || {}) : {}));
163
195
  if (_isUsingAIHeaders) {
164
196
  var id = "|" + ajaxData.traceID + "." + ajaxData.spanID;
165
- init.headers.set(RequestHeaders[3 /* requestIdHeader */], id);
197
+ init.headers.set(RequestHeaders[3 /* eRequestHeaders.requestIdHeader */], id);
166
198
  if (_enableRequestHeaderTracking) {
167
- ajaxData.requestHeaders[RequestHeaders[3 /* requestIdHeader */]] = id;
199
+ ajaxData.requestHeaders[RequestHeaders[3 /* eRequestHeaders.requestIdHeader */]] = id;
168
200
  }
169
201
  }
170
202
  var appId = _config.appId || (_context && _context.appId());
171
203
  if (appId) {
172
- init.headers.set(RequestHeaders[0 /* requestContextHeader */], RequestHeaders[2 /* requestContextAppIdFormat */] + appId);
204
+ init.headers.set(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */], RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId);
173
205
  if (_enableRequestHeaderTracking) {
174
- ajaxData.requestHeaders[RequestHeaders[0 /* requestContextHeader */]] = RequestHeaders[2 /* requestContextAppIdFormat */] + appId;
206
+ ajaxData.requestHeaders[RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]] = RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId;
175
207
  }
176
208
  }
177
209
  if (_isUsingW3CHeaders) {
178
- var traceParent = formatTraceParent(createTraceParent(ajaxData.traceID, ajaxData.spanID, 0x01));
179
- init.headers.set(RequestHeaders[4 /* traceParentHeader */], traceParent);
210
+ var traceFlags = ajaxData.traceFlags;
211
+ if (isNullOrUndefined(traceFlags)) {
212
+ traceFlags = 0x01;
213
+ }
214
+ var traceParent = formatTraceParent(createTraceParent(ajaxData.traceID, ajaxData.spanID, traceFlags));
215
+ init.headers.set(RequestHeaders[4 /* eRequestHeaders.traceParentHeader */], traceParent);
180
216
  if (_enableRequestHeaderTracking) {
181
- ajaxData.requestHeaders[RequestHeaders[4 /* traceParentHeader */]] = traceParent;
217
+ ajaxData.requestHeaders[RequestHeaders[4 /* eRequestHeaders.traceParentHeader */]] = traceParent;
182
218
  }
183
219
  }
184
220
  }
@@ -188,23 +224,27 @@ var AjaxMonitor = /** @class */ (function (_super) {
188
224
  if (CorrelationIdHelper.canIncludeCorrelationHeader(_config, ajaxData.getAbsoluteUrl(), currentWindowHost)) {
189
225
  if (_isUsingAIHeaders) {
190
226
  var id = "|" + ajaxData.traceID + "." + ajaxData.spanID;
191
- xhr.setRequestHeader(RequestHeaders[3 /* requestIdHeader */], id);
227
+ xhr.setRequestHeader(RequestHeaders[3 /* eRequestHeaders.requestIdHeader */], id);
192
228
  if (_enableRequestHeaderTracking) {
193
- ajaxData.requestHeaders[RequestHeaders[3 /* requestIdHeader */]] = id;
229
+ ajaxData.requestHeaders[RequestHeaders[3 /* eRequestHeaders.requestIdHeader */]] = id;
194
230
  }
195
231
  }
196
232
  var appId = _config.appId || (_context && _context.appId());
197
233
  if (appId) {
198
- xhr.setRequestHeader(RequestHeaders[0 /* requestContextHeader */], RequestHeaders[2 /* requestContextAppIdFormat */] + appId);
234
+ xhr.setRequestHeader(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */], RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId);
199
235
  if (_enableRequestHeaderTracking) {
200
- ajaxData.requestHeaders[RequestHeaders[0 /* requestContextHeader */]] = RequestHeaders[2 /* requestContextAppIdFormat */] + appId;
236
+ ajaxData.requestHeaders[RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]] = RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId;
201
237
  }
202
238
  }
203
239
  if (_isUsingW3CHeaders) {
204
- var traceParent = formatTraceParent(createTraceParent(ajaxData.traceID, ajaxData.spanID, 0x01));
205
- xhr.setRequestHeader(RequestHeaders[4 /* traceParentHeader */], traceParent);
240
+ var traceFlags = ajaxData.traceFlags;
241
+ if (isNullOrUndefined(traceFlags)) {
242
+ traceFlags = 0x01;
243
+ }
244
+ var traceParent = formatTraceParent(createTraceParent(ajaxData.traceID, ajaxData.spanID, traceFlags));
245
+ xhr.setRequestHeader(RequestHeaders[4 /* eRequestHeaders.traceParentHeader */], traceParent);
206
246
  if (_enableRequestHeaderTracking) {
207
- ajaxData.requestHeaders[RequestHeaders[4 /* traceParentHeader */]] = traceParent;
247
+ ajaxData.requestHeaders[RequestHeaders[4 /* eRequestHeaders.traceParentHeader */]] = traceParent;
208
248
  }
209
249
  }
210
250
  }
@@ -217,8 +257,8 @@ var AjaxMonitor = /** @class */ (function (_super) {
217
257
  // Hack since expected format in w3c mode is |abc.def.
218
258
  // Non-w3c format is |abc.def
219
259
  // @todo Remove if better solution is available, e.g. handle in portal
220
- if ((_config.distributedTracingMode === 2 /* W3C */
221
- || _config.distributedTracingMode === 1 /* AI_AND_W3C */)
260
+ if ((_config.distributedTracingMode === 2 /* eDistributedTracingModes.W3C */
261
+ || _config.distributedTracingMode === 1 /* eDistributedTracingModes.AI_AND_W3C */)
222
262
  && typeof dependency.id === "string" && dependency.id[dependency.id.length - 1] !== ".") {
223
263
  dependency.id += ".";
224
264
  }
@@ -229,10 +269,28 @@ var AjaxMonitor = /** @class */ (function (_super) {
229
269
  _self.core.track(item);
230
270
  }
231
271
  else if (_trackAjaxAttempts === _maxAjaxCallsPerView) {
232
- _throwInternalCritical(_self, 55 /* MaxAjaxPerPVExceeded */, "Maximum ajax per page view limit reached, ajax monitoring is paused until the next trackPageView(). In order to increase the limit set the maxAjaxCallsPerView configuration parameter.", true);
272
+ _throwInternalCritical(_self, 55 /* _eInternalMessageId.MaxAjaxPerPVExceeded */, "Maximum ajax per page view limit reached, ajax monitoring is paused until the next trackPageView(). In order to increase the limit set the maxAjaxCallsPerView configuration parameter.", true);
233
273
  }
234
274
  ++_trackAjaxAttempts;
235
275
  };
276
+ _self.addDependencyListener = function (dependencyListener) {
277
+ var theInitializer = {
278
+ id: _dependencyListenerId++,
279
+ fn: dependencyListener
280
+ };
281
+ _dependencyListeners.push(theInitializer);
282
+ var handler = {
283
+ remove: function () {
284
+ arrForEach(_dependencyListeners, function (initializer, idx) {
285
+ if (initializer.id === theInitializer.id) {
286
+ _dependencyListeners.splice(idx, 1);
287
+ return -1;
288
+ }
289
+ });
290
+ }
291
+ };
292
+ return handler;
293
+ };
236
294
  function _initDefaults() {
237
295
  var location = getLocation();
238
296
  _fetchInitialized = false; // fetch monitoring initialized
@@ -255,6 +313,8 @@ var AjaxMonitor = /** @class */ (function (_super) {
255
313
  _excludeRequestFromAutoTrackingPatterns = null;
256
314
  _addRequestContext = null;
257
315
  _evtNamespace = null;
316
+ _dependencyListenerId = 0;
317
+ _dependencyListeners = [];
258
318
  }
259
319
  function _populateDefaults(config) {
260
320
  var ctx = createProcessTelemetryContext(null, config, _self.core);
@@ -272,8 +332,8 @@ var AjaxMonitor = /** @class */ (function (_super) {
272
332
  _enableResponseHeaderTracking = _config.enableResponseHeaderTracking;
273
333
  _excludeRequestFromAutoTrackingPatterns = _config.excludeRequestFromAutoTrackingPatterns;
274
334
  _addRequestContext = _config.addRequestContext;
275
- _isUsingAIHeaders = distributedTracingMode === 0 /* AI */ || distributedTracingMode === 1 /* AI_AND_W3C */;
276
- _isUsingW3CHeaders = distributedTracingMode === 1 /* AI_AND_W3C */ || distributedTracingMode === 2 /* W3C */;
335
+ _isUsingAIHeaders = distributedTracingMode === 0 /* eDistributedTracingModes.AI */ || distributedTracingMode === 1 /* eDistributedTracingModes.AI_AND_W3C */;
336
+ _isUsingW3CHeaders = distributedTracingMode === 1 /* eDistributedTracingModes.AI_AND_W3C */ || distributedTracingMode === 2 /* eDistributedTracingModes.W3C */;
277
337
  if (_enableAjaxPerfTracking) {
278
338
  var iKey = config.instrumentationKey || "unkwn";
279
339
  if (iKey.length > 5) {
@@ -364,7 +424,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
364
424
  }
365
425
  },
366
426
  // Create an error callback to report any hook errors
367
- hkErr: _createErrorCallbackFunc(_self, 15 /* FailedMonitorAjaxOpen */, "Failed to monitor Window.fetch, monitoring data for this fetch call may be incorrect.")
427
+ hkErr: _createErrorCallbackFunc(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, "Failed to monitor Window.fetch, monitoring data for this fetch call may be incorrect.")
368
428
  }));
369
429
  _fetchInitialized = true;
370
430
  }
@@ -411,7 +471,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
411
471
  }
412
472
  }
413
473
  },
414
- hkErr: _createErrorCallbackFunc(_self, 15 /* FailedMonitorAjaxOpen */, "Failed to monitor XMLHttpRequest.open, monitoring data for this ajax call may be incorrect.")
474
+ hkErr: _createErrorCallbackFunc(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, "Failed to monitor XMLHttpRequest.open, monitoring data for this ajax call may be incorrect.")
415
475
  });
416
476
  // Instrument send
417
477
  _hookProto(XMLHttpRequest, "send", {
@@ -428,7 +488,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
428
488
  }
429
489
  }
430
490
  },
431
- hkErr: _createErrorCallbackFunc(_self, 17 /* FailedMonitorAjaxSend */, "Failed to monitor XMLHttpRequest, monitoring data for this ajax call may be incorrect.")
491
+ hkErr: _createErrorCallbackFunc(_self, 17 /* _eInternalMessageId.FailedMonitorAjaxSend */, "Failed to monitor XMLHttpRequest, monitoring data for this ajax call may be incorrect.")
432
492
  });
433
493
  // Instrument abort
434
494
  _hookProto(XMLHttpRequest, "abort", {
@@ -443,7 +503,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
443
503
  }
444
504
  }
445
505
  },
446
- hkErr: _createErrorCallbackFunc(_self, 13 /* FailedMonitorAjaxAbort */, "Failed to monitor XMLHttpRequest.abort, monitoring data for this ajax call may be incorrect.")
506
+ hkErr: _createErrorCallbackFunc(_self, 13 /* _eInternalMessageId.FailedMonitorAjaxAbort */, "Failed to monitor XMLHttpRequest.abort, monitoring data for this ajax call may be incorrect.")
447
507
  });
448
508
  // Instrument setRequestHeader
449
509
  _hookProto(XMLHttpRequest, "setRequestHeader", {
@@ -456,7 +516,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
456
516
  }
457
517
  }
458
518
  },
459
- hkErr: _createErrorCallbackFunc(_self, 71 /* FailedMonitorAjaxSetRequestHeader */, "Failed to monitor XMLHttpRequest.setRequestHeader, monitoring data for this ajax call may be incorrect.")
519
+ hkErr: _createErrorCallbackFunc(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, "Failed to monitor XMLHttpRequest.setRequestHeader, monitoring data for this ajax call may be incorrect.")
460
520
  });
461
521
  _xhrInitialized = true;
462
522
  }
@@ -529,10 +589,23 @@ var AjaxMonitor = /** @class */ (function (_super) {
529
589
  // checking on ajaxData to see that it was not removed in user code
530
590
  && ajaxValidation;
531
591
  }
592
+ function _getDistributedTraceCtx() {
593
+ var distributedTraceCtx = null;
594
+ if (_self.core && _self.core.getTraceCtx) {
595
+ distributedTraceCtx = _self.core.getTraceCtx(false);
596
+ }
597
+ // Fall back
598
+ if (!distributedTraceCtx && _context && _context.telemetryTrace) {
599
+ distributedTraceCtx = createDistributedTraceContextFromTrace(_context.telemetryTrace);
600
+ }
601
+ return distributedTraceCtx;
602
+ }
532
603
  function _openHandler(xhr, method, url, async) {
533
- var traceID = (_context && _context.telemetryTrace && _context.telemetryTrace.traceID) || generateW3CId();
604
+ var distributedTraceCtx = _getDistributedTraceCtx();
605
+ var traceID = (distributedTraceCtx && distributedTraceCtx.getTraceId()) || generateW3CId();
534
606
  var spanID = generateW3CId().substr(0, 16);
535
607
  var ajaxData = new ajaxRecord(traceID, spanID, _self[strDiagLog]());
608
+ ajaxData.traceFlags = distributedTraceCtx && distributedTraceCtx.getTraceFlags();
536
609
  ajaxData.method = method;
537
610
  ajaxData.requestUrl = url;
538
611
  ajaxData.xhrMonitoringState.openDone = true;
@@ -552,7 +625,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
552
625
  var exceptionText = dumpObj(e);
553
626
  // ignore messages with c00c023f, as this a known IE9 XHR abort issue
554
627
  if (!exceptionText || _indexOf(exceptionText.toLowerCase(), "c00c023f") === -1) {
555
- _throwInternalCritical(_self, 16 /* FailedMonitorAjaxRSC */, "Failed to monitor XMLHttpRequest 'readystatechange' event handler, monitoring data for this ajax call may be incorrect.", {
628
+ _throwInternalCritical(_self, 16 /* _eInternalMessageId.FailedMonitorAjaxRSC */, "Failed to monitor XMLHttpRequest 'readystatechange' event handler, monitoring data for this ajax call may be incorrect.", {
556
629
  ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(xhr),
557
630
  exception: exceptionText
558
631
  });
@@ -583,7 +656,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
583
656
  if (e) {
584
657
  errorProps["exception"] = dumpObj(e);
585
658
  }
586
- _throwInternalWarning(_self, 14 /* FailedMonitorAjaxDur */, "Failed to calculate the duration of the ajax call, monitoring data for this ajax call won't be sent.", errorProps);
659
+ _throwInternalWarning(_self, 14 /* _eInternalMessageId.FailedMonitorAjaxDur */, "Failed to calculate the duration of the ajax call, monitoring data for this ajax call won't be sent.", errorProps);
587
660
  }
588
661
  _findPerfResourceEntry("xmlhttprequest", ajaxData, function () {
589
662
  try {
@@ -623,7 +696,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
623
696
  }
624
697
  }
625
698
  catch (e) {
626
- _throwInternalWarning(_self, 104 /* FailedAddingCustomDefinedRequestContext */, "Failed to add custom defined request context as configured call back may missing a null check.");
699
+ _throwInternalWarning(_self, 104 /* _eInternalMessageId.FailedAddingCustomDefinedRequestContext */, "Failed to add custom defined request context as configured call back may missing a null check.");
627
700
  }
628
701
  if (dependency) {
629
702
  if (properties !== undefined) {
@@ -655,15 +728,15 @@ var AjaxMonitor = /** @class */ (function (_super) {
655
728
  try {
656
729
  var responseHeadersString = xhr.getAllResponseHeaders();
657
730
  if (responseHeadersString !== null) {
658
- var index = _indexOf(responseHeadersString.toLowerCase(), RequestHeaders[8 /* requestContextHeaderLowerCase */]);
731
+ var index = _indexOf(responseHeadersString.toLowerCase(), RequestHeaders[8 /* eRequestHeaders.requestContextHeaderLowerCase */]);
659
732
  if (index !== -1) {
660
- var responseHeader = xhr.getResponseHeader(RequestHeaders[0 /* requestContextHeader */]);
733
+ var responseHeader = xhr.getResponseHeader(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]);
661
734
  return CorrelationIdHelper.getCorrelationContext(responseHeader);
662
735
  }
663
736
  }
664
737
  }
665
738
  catch (e) {
666
- _throwInternalWarning(_self, 18 /* FailedMonitorAjaxGetCorrelationHeader */, "Failed to get Request-Context correlation header as it may be not included in the response or not accessible.", {
739
+ _throwInternalWarning(_self, 18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, "Failed to get Request-Context correlation header as it may be not included in the response or not accessible.", {
667
740
  ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(xhr),
668
741
  exception: dumpObj(e)
669
742
  });
@@ -742,9 +815,11 @@ var AjaxMonitor = /** @class */ (function (_super) {
742
815
  })();
743
816
  }
744
817
  function _createFetchRecord(input, init) {
745
- var traceID = (_context && _context.telemetryTrace && _context.telemetryTrace.traceID) || generateW3CId();
818
+ var distributedTraceCtx = _getDistributedTraceCtx();
819
+ var traceID = (distributedTraceCtx && distributedTraceCtx.getTraceId()) || generateW3CId();
746
820
  var spanID = generateW3CId().substr(0, 16);
747
821
  var ajaxData = new ajaxRecord(traceID, spanID, _self[strDiagLog]());
822
+ ajaxData.traceFlags = distributedTraceCtx && distributedTraceCtx.getTraceFlags();
748
823
  ajaxData.requestSentTime = dateTimeUtilsNow();
749
824
  ajaxData.errorStatusText = _enableAjaxErrorStatusText;
750
825
  if (input instanceof Request) {
@@ -787,7 +862,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
787
862
  }
788
863
  }
789
864
  catch (e) {
790
- _throwInternalCritical(_self, 15 /* FailedMonitorAjaxOpen */, "Failed to grab failed fetch diagnostics message", { exception: dumpObj(e) });
865
+ _throwInternalCritical(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, "Failed to grab failed fetch diagnostics message", { exception: dumpObj(e) });
791
866
  }
792
867
  return result;
793
868
  }
@@ -814,7 +889,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
814
889
  }
815
890
  }
816
891
  catch (e) {
817
- _throwInternalWarning(_self, 104 /* FailedAddingCustomDefinedRequestContext */, "Failed to add custom defined request context as configured call back may missing a null check.");
892
+ _throwInternalWarning(_self, 104 /* _eInternalMessageId.FailedAddingCustomDefinedRequestContext */, "Failed to add custom defined request context as configured call back may missing a null check.");
818
893
  }
819
894
  if (dependency) {
820
895
  if (properties !== undefined) {
@@ -823,23 +898,23 @@ var AjaxMonitor = /** @class */ (function (_super) {
823
898
  _self[strTrackDependencyDataInternal](dependency);
824
899
  }
825
900
  else {
826
- _reportFetchError(14 /* FailedMonitorAjaxDur */, null, {
901
+ _reportFetchError(14 /* _eInternalMessageId.FailedMonitorAjaxDur */, null, {
827
902
  requestSentTime: ajaxData.requestSentTime,
828
903
  responseFinishedTime: ajaxData.responseFinishedTime
829
904
  });
830
905
  }
831
906
  }, function (e) {
832
- _reportFetchError(18 /* FailedMonitorAjaxGetCorrelationHeader */, e, null);
907
+ _reportFetchError(18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, e, null);
833
908
  });
834
909
  }
835
910
  function _getFetchCorrelationContext(response) {
836
911
  if (response && response.headers) {
837
912
  try {
838
- var responseHeader = response.headers.get(RequestHeaders[0 /* requestContextHeader */]);
913
+ var responseHeader = response.headers.get(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]);
839
914
  return CorrelationIdHelper.getCorrelationContext(responseHeader);
840
915
  }
841
916
  catch (e) {
842
- _throwInternalWarning(_self, 18 /* FailedMonitorAjaxGetCorrelationHeader */, "Failed to get Request-Context correlation header as it may be not included in the response or not accessible.", {
917
+ _throwInternalWarning(_self, 18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, "Failed to get Request-Context correlation header as it may be not included in the response or not accessible.", {
843
918
  fetchDiagnosticsMessage: _getFailedFetchDiagnosticsMessage(response),
844
919
  exception: dumpObj(e)
845
920
  });
@@ -856,7 +931,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
856
931
  disableFetchTracking: false,
857
932
  excludeRequestFromAutoTrackingPatterns: undefined,
858
933
  disableCorrelationHeaders: false,
859
- distributedTracingMode: 1 /* AI_AND_W3C */,
934
+ distributedTracingMode: 1 /* eDistributedTracingModes.AI_AND_W3C */,
860
935
  correlationHeaderExcludedDomains: [
861
936
  "*.blob.core.windows.net",
862
937
  "*.blob.core.chinacloudapi.cn",
@@ -895,6 +970,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
895
970
  };
896
971
  // Removed Stub for AjaxMonitor.prototype.trackDependencyData.
897
972
  // Removed Stub for AjaxMonitor.prototype.includeCorrelationHeaders.
973
+ // Removed Stub for AjaxMonitor.prototype.addDependencyListener.
898
974
  // Removed Stub for AjaxMonitor.prototype.trackDependencyDataInternal.
899
975
  AjaxMonitor.identifier = "AjaxDependencyPlugin";
900
976
  return AjaxMonitor;