@microsoft/applicationinsights-dependencies-js 3.0.0-beta.2208-19 → 3.0.0-beta.2209-03

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 (38) hide show
  1. package/browser/applicationinsights-dependencies-js.integrity.json +9 -9
  2. package/browser/applicationinsights-dependencies-js.js +157 -103
  3. package/browser/applicationinsights-dependencies-js.js.map +1 -1
  4. package/browser/applicationinsights-dependencies-js.min.js +2 -2
  5. package/browser/applicationinsights-dependencies-js.min.js.map +1 -1
  6. package/dist/applicationinsights-dependencies-js.api.json +671 -34
  7. package/dist/applicationinsights-dependencies-js.api.md +63 -9
  8. package/dist/applicationinsights-dependencies-js.d.ts +73 -8
  9. package/dist/applicationinsights-dependencies-js.js +157 -103
  10. package/dist/applicationinsights-dependencies-js.js.map +1 -1
  11. package/dist/applicationinsights-dependencies-js.min.js +2 -2
  12. package/dist/applicationinsights-dependencies-js.min.js.map +1 -1
  13. package/dist/applicationinsights-dependencies-js.rollup.d.ts +75 -10
  14. package/dist-esm/DependencyInitializer.js +6 -0
  15. package/dist-esm/DependencyInitializer.js.map +1 -0
  16. package/dist-esm/DependencyListener.js +1 -1
  17. package/dist-esm/InternalConstants.js +1 -1
  18. package/dist-esm/__DynamicConstants.js +6 -6
  19. package/dist-esm/__DynamicConstants.js.map +1 -1
  20. package/dist-esm/ajax.js +153 -98
  21. package/dist-esm/ajax.js.map +1 -1
  22. package/dist-esm/ajaxRecord.js +1 -1
  23. package/dist-esm/ajaxUtils.js +1 -1
  24. package/dist-esm/applicationinsights-dependencies-js.js +1 -1
  25. package/package.json +3 -3
  26. package/src/DependencyInitializer.ts +44 -0
  27. package/src/DependencyListener.ts +13 -3
  28. package/src/__DynamicConstants.ts +5 -5
  29. package/src/ajax.ts +183 -106
  30. package/src/ajaxRecord.ts +5 -0
  31. package/src/applicationinsights-dependencies-js.ts +5 -1
  32. package/types/DependencyInitializer.d.ts +41 -0
  33. package/types/DependencyListener.d.ts +14 -3
  34. package/types/__DynamicConstants.d.ts +4 -4
  35. package/types/ajax.d.ts +18 -5
  36. package/types/ajaxRecord.d.ts +6 -0
  37. package/types/applicationinsights-dependencies-js.d.ts +2 -0
  38. package/types/tsdoc-metadata.json +1 -1
package/dist-esm/ajax.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Dependencies Plugin, 3.0.0-beta.2208-19
2
+ * Application Insights JavaScript SDK - Dependencies Plugin, 3.0.0-beta.2209-03
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
 
@@ -9,12 +9,19 @@ import dynamicProto from "@microsoft/dynamicproto-js";
9
9
  import { DisabledPropertyName, PropertiesPluginIdentifier, RemoteDependencyData, RequestHeaders, correlationIdCanIncludeCorrelationHeader, correlationIdGetCorrelationContext, createDistributedTraceContextFromTrace, createTelemetryItem, createTraceParent, dateTimeUtilsNow, formatTraceParent, isInternalApplicationInsightsEndpoint } from "@microsoft/applicationinsights-common";
10
10
  import { BaseTelemetryPlugin, InstrumentFunc, InstrumentProto, _throwInternal, arrForEach, createProcessTelemetryContext, createUniqueNamespace, deepFreeze, dumpObj, eventOn, generateW3CId, getExceptionName, getGlobal, getIEVersion, getLocation, getPerformance, isFunction, isNullOrUndefined, isString, isXhrSupported, mergeEvtNamespace, objForEachKey, strPrototype, strTrim } from "@microsoft/applicationinsights-core-js";
11
11
  import { STR_PROPERTIES } from "./InternalConstants";
12
- import { _DYN_ABORT_DONE, _DYN_ADD_REQUEST_CONTEXT, _DYN_AJAX_DIAGNOSTICS_MES17, _DYN_AJAX_PERF_LOOKUP_DEL16, _DYN_APP_ID, _DYN_CORE, _DYN_CORRELATION_CONTEXT, _DYN_DISABLE_AJAX_TRACKIN11, _DYN_DISABLE_FETCH_TRACKI12, _DYN_DISTRIBUTED_TRACING_4, _DYN_ENABLE_AJAX_ERROR_ST6, _DYN_ENABLE_AJAX_PERF_TRA7, _DYN_ENABLE_REQUEST_HEADE5, _DYN_ENABLE_RESPONSE_HEAD9, _DYN_ERROR_STATUS_TEXT, _DYN_EXCLUDE_REQUEST_FROM10, _DYN_GET_ABSOLUTE_URL, _DYN_GET_ALL_RESPONSE_HEA15, _DYN_GET_DEFAULT_CONFIG, _DYN_GET_PART_APROPS, _DYN_GET_TRACE_FLAGS, _DYN_GET_TRACE_ID, _DYN_HEADERS, _DYN_HEADER_MAP, _DYN_INCLUDE_CORRELATION_3, _DYN_INST, _DYN_LENGTH, _DYN_MAX_AJAX_CALLS_PER_V8, _DYN_METHOD, _DYN_NAME, _DYN_OPEN_DONE, _DYN_PERF_MARK, _DYN_PERF_TIMING, _DYN_REQUEST_HEADERS, _DYN_REQUEST_SENT_TIME, _DYN_REQUEST_URL, _DYN_RESPONSE, _DYN_RESPONSE_FINISHED_TI14, _DYN_RESPONSE_TEXT, _DYN_SEND_DONE, _DYN_SET_REQUEST_HEADER, _DYN_SPAN_ID, _DYN_SPAN_ID1, _DYN_START_TIME, _DYN_STATE_CHANGE_ATTACHE13, _DYN_STATUS, _DYN_STATUS_TEXT, _DYN_TO_LOWER_CASE, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN_TRACE_ID0, _DYN_TRACK_DEPENDENCY_DAT2, _DYN__CREATE_TRACK_ITEM } from "./__DynamicConstants";
12
+ import { _DYN_ABORT_DONE, _DYN_ADD_REQUEST_CONTEXT, _DYN_AJAX_DIAGNOSTICS_MES17, _DYN_AJAX_PERF_LOOKUP_DEL16, _DYN_APP_ID, _DYN_CONTEXT, _DYN_CORE, _DYN_CORRELATION_CONTEXT, _DYN_DISABLE_AJAX_TRACKIN11, _DYN_DISABLE_FETCH_TRACKI12, _DYN_DISTRIBUTED_TRACING_4, _DYN_ENABLE_AJAX_ERROR_ST6, _DYN_ENABLE_AJAX_PERF_TRA7, _DYN_ENABLE_REQUEST_HEADE5, _DYN_ENABLE_RESPONSE_HEAD9, _DYN_ERROR_STATUS_TEXT, _DYN_EXCLUDE_REQUEST_FROM10, _DYN_GET_ABSOLUTE_URL, _DYN_GET_ALL_RESPONSE_HEA15, _DYN_GET_PART_APROPS, _DYN_GET_TRACE_FLAGS, _DYN_GET_TRACE_ID, _DYN_HEADERS, _DYN_HEADER_MAP, _DYN_INCLUDE_CORRELATION_2, _DYN_INST, _DYN_LENGTH, _DYN_MAX_AJAX_CALLS_PER_V8, _DYN_METHOD, _DYN_NAME, _DYN_OPEN_DONE, _DYN_PERF_MARK, _DYN_PERF_TIMING, _DYN_REQUEST_HEADERS, _DYN_REQUEST_SENT_TIME, _DYN_REQUEST_URL, _DYN_RESPONSE, _DYN_RESPONSE_FINISHED_TI14, _DYN_RESPONSE_TEXT, _DYN_SEND_DONE, _DYN_SET_REQUEST_HEADER, _DYN_SPAN_ID, _DYN_SPAN_ID1, _DYN_START_TIME, _DYN_STATE_CHANGE_ATTACHE13, _DYN_STATUS, _DYN_STATUS_TEXT, _DYN_TO_LOWER_CASE, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN_TRACE_ID0, _DYN_TRACK_DEPENDENCY_DAT3, _DYN__CREATE_TRACK_ITEM } from "./__DynamicConstants";
13
13
  import { ajaxRecord } from "./ajaxRecord";
14
14
  var AJAX_MONITOR_PREFIX = "ai.ajxmn.";
15
15
  var strDiagLog = "diagLog";
16
16
  var strAjaxData = "ajaxData";
17
17
  var strFetch = "fetch";
18
+ var ERROR_HEADER = "Failed to monitor XMLHttpRequest";
19
+ var ERROR_PREFIX = ", monitoring data for this ajax call ";
20
+ var ERROR_POSTFIX = ERROR_PREFIX + "may be incorrect.";
21
+ var ERROR_NOT_SENT = ERROR_PREFIX + "won't be sent.";
22
+ var CORRELATION_HEADER_ERROR = "Failed to get Request-Context correlation header as it may be not included in the response or not accessible.";
23
+ var CUSTOM_REQUEST_CONTEXT_ERROR = "Failed to add custom defined request context as configured call back may missing a null check.";
24
+ var FAILED_TO_CALCULATE_DURATION_ERROR = "Failed to calculate the duration of the ";
18
25
  // Using a global value so that to handle same iKey with multiple app insights instances (mostly for testing)
19
26
  var _markCount = 0;
20
27
  /** @Ignore */
@@ -69,9 +76,7 @@ function _supportsAjaxMonitoring(ajaxMonitorInstance) {
69
76
  function _getFailedAjaxDiagnosticsMessage(xhr) {
70
77
  var result = "";
71
78
  try {
72
- if (!isNullOrUndefined(xhr) &&
73
- !isNullOrUndefined(xhr[strAjaxData]) &&
74
- !isNullOrUndefined(xhr[strAjaxData][_DYN_REQUEST_URL /* @min:%2erequestUrl */])) {
79
+ if (xhr && xhr[strAjaxData] && xhr[strAjaxData][_DYN_REQUEST_URL /* @min:%2erequestUrl */]) {
75
80
  result += "(url: '" + xhr[strAjaxData][_DYN_REQUEST_URL /* @min:%2erequestUrl */] + "')";
76
81
  }
77
82
  }
@@ -104,6 +109,37 @@ function _indexOf(value, match) {
104
109
  }
105
110
  return -1;
106
111
  }
112
+ function _addHandler(container, id, theFunc) {
113
+ var theHandler = {
114
+ id: id,
115
+ fn: theFunc
116
+ };
117
+ container.push(theHandler);
118
+ return {
119
+ remove: function () {
120
+ arrForEach(container, function (initializer, idx) {
121
+ if (initializer.id === theHandler.id) {
122
+ container.splice(idx, 1);
123
+ return -1;
124
+ }
125
+ });
126
+ }
127
+ };
128
+ }
129
+ function _processDependencyContainer(core, container, details, message) {
130
+ var result = true;
131
+ arrForEach(container, function (theFunc, idx) {
132
+ try {
133
+ if (theFunc.fn.call(null, details) === false) {
134
+ result = false;
135
+ }
136
+ }
137
+ catch (e) {
138
+ _throwInternal(core && core.logger, 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, "Dependency " + message + " [#" + idx + "] failed: " + getExceptionName(e), { exception: dumpObj(e) }, true);
139
+ }
140
+ });
141
+ return result;
142
+ }
107
143
  function _processDependencyListeners(listeners, core, ajaxData, xhr, input, init) {
108
144
  var _a;
109
145
  var initializersCount = listeners[_DYN_LENGTH /* @min:%2elength */];
@@ -116,30 +152,62 @@ function _processDependencyListeners(listeners, core, ajaxData, xhr, input, init
116
152
  _a.traceId = ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */],
117
153
  _a.spanId = ajaxData[_DYN_SPAN_ID /* @min:%2espanID */],
118
154
  _a.traceFlags = ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */],
155
+ _a.context = ajaxData[_DYN_CONTEXT /* @min:%2econtext */] || {},
119
156
  _a);
120
- for (var i = 0; i < initializersCount; ++i) {
121
- var dependencyListener = listeners[i];
122
- if (dependencyListener && dependencyListener.fn) {
123
- try {
124
- dependencyListener.fn.call(null, details);
125
- }
126
- catch (e) {
127
- var core_1 = details[_DYN_CORE /* @min:%2ecore */];
128
- _throwInternal(core_1 && core_1.logger, 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, "Dependency listener [#" + i + "] failed: " + getExceptionName(e), { exception: dumpObj(e) }, true);
129
- }
130
- }
131
- }
157
+ _processDependencyContainer(core, listeners, details, "listener");
132
158
  ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */] = details[_DYN_TRACE_ID0 /* @min:%2etraceId */];
133
159
  ajaxData[_DYN_SPAN_ID /* @min:%2espanID */] = details[_DYN_SPAN_ID1 /* @min:%2espanId */];
134
160
  ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = details[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];
161
+ ajaxData[_DYN_CONTEXT /* @min:%2econtext */] = details[_DYN_CONTEXT /* @min:%2econtext */];
135
162
  }
136
163
  }
164
+ var BLOB_CORE = "*.blob.core.";
137
165
  export var DfltAjaxCorrelationHeaderExDomains = deepFreeze([
138
- "*.blob.core.windows.net",
139
- "*.blob.core.chinacloudapi.cn",
140
- "*.blob.core.cloudapi.de",
141
- "*.blob.core.usgovcloudapi.net"
166
+ BLOB_CORE + "windows.net",
167
+ BLOB_CORE + "chinacloudapi.cn",
168
+ BLOB_CORE + "cloudapi.de",
169
+ BLOB_CORE + "usgovcloudapi.net"
142
170
  ]);
171
+ var _internalExcludeEndpoints = [
172
+ /https:\/\/[^\/]*(\.pipe\.aria|aria\.pipe|events\.data|collector\.azure)\.[^\/]+\/(OneCollector\/1|Collector\/3)\.0/i
173
+ ];
174
+ function _getDefaultConfig() {
175
+ var _a;
176
+ var config = (_a = {},
177
+ _a[_DYN_MAX_AJAX_CALLS_PER_V8 /* @min:maxAjaxCallsPerView */] = 500,
178
+ _a[_DYN_DISABLE_AJAX_TRACKIN11 /* @min:disableAjaxTracking */] = false,
179
+ _a[_DYN_DISABLE_FETCH_TRACKI12 /* @min:disableFetchTracking */] = false,
180
+ _a[_DYN_EXCLUDE_REQUEST_FROM10 /* @min:excludeRequestFromAutoTrackingPatterns */] = undefined,
181
+ _a.disableCorrelationHeaders = false,
182
+ _a.distributedTracingMode = 1 /* eDistributedTracingModes.AI_AND_W3C */,
183
+ _a.correlationHeaderExcludedDomains = DfltAjaxCorrelationHeaderExDomains,
184
+ _a.correlationHeaderDomains = undefined,
185
+ _a.correlationHeaderExcludePatterns = undefined,
186
+ _a[_DYN_APP_ID /* @min:appId */] = undefined,
187
+ _a.enableCorsCorrelation = false,
188
+ _a[_DYN_ENABLE_REQUEST_HEADE5 /* @min:enableRequestHeaderTracking */] = false,
189
+ _a[_DYN_ENABLE_RESPONSE_HEAD9 /* @min:enableResponseHeaderTracking */] = false,
190
+ _a[_DYN_ENABLE_AJAX_ERROR_ST6 /* @min:enableAjaxErrorStatusText */] = false,
191
+ _a[_DYN_ENABLE_AJAX_PERF_TRA7 /* @min:enableAjaxPerfTracking */] = false,
192
+ _a.maxAjaxPerfLookupAttempts = 3,
193
+ _a[_DYN_AJAX_PERF_LOOKUP_DEL16 /* @min:ajaxPerfLookupDelay */] = 25,
194
+ _a.ignoreHeaders = [
195
+ "Authorization",
196
+ "X-API-Key",
197
+ "WWW-Authenticate"
198
+ ],
199
+ _a[_DYN_ADD_REQUEST_CONTEXT /* @min:addRequestContext */] = undefined,
200
+ _a.addIntEndpoints = true,
201
+ _a);
202
+ return config;
203
+ }
204
+ function _getEmptyConfig() {
205
+ var emptyConfig = _getDefaultConfig();
206
+ objForEachKey(emptyConfig, function (value) {
207
+ emptyConfig[value] = undefined;
208
+ });
209
+ return emptyConfig;
210
+ }
143
211
  var AjaxMonitor = /** @class */ (function (_super) {
144
212
  __extends(AjaxMonitor, _super);
145
213
  function AjaxMonitor() {
@@ -166,8 +234,9 @@ var AjaxMonitor = /** @class */ (function (_super) {
166
234
  var _excludeRequestFromAutoTrackingPatterns;
167
235
  var _addRequestContext;
168
236
  var _evtNamespace;
169
- var _dependencyListenerId;
237
+ var _dependencyHandlerId;
170
238
  var _dependencyListeners;
239
+ var _dependencyInitializers;
171
240
  dynamicProto(AjaxMonitor, _this, function (_self, _base) {
172
241
  var _addHook = _base._addHook;
173
242
  _initDefaults();
@@ -185,9 +254,9 @@ var AjaxMonitor = /** @class */ (function (_super) {
185
254
  _initDefaults();
186
255
  };
187
256
  _self.trackDependencyData = function (dependency, properties) {
188
- _self[_DYN_TRACK_DEPENDENCY_DAT2 /* @min:%2etrackDependencyDataInternal */](dependency, properties);
257
+ _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], null, dependency, properties);
189
258
  };
190
- _self[_DYN_INCLUDE_CORRELATION_3 /* @min:%2eincludeCorrelationHeaders */] = function (ajaxData, input, init, xhr) {
259
+ _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */] = function (ajaxData, input, init, xhr) {
191
260
  // Test Hook to allow the overriding of the location host
192
261
  var currentWindowHost = _self["_currentWindowHost"] || _currentWindowHost;
193
262
  _processDependencyListeners(_dependencyListeners, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, xhr, input, init);
@@ -261,7 +330,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
261
330
  }
262
331
  return undefined;
263
332
  };
264
- _self[_DYN_TRACK_DEPENDENCY_DAT2 /* @min:%2etrackDependencyDataInternal */] = function (dependency, properties, systemProperties) {
333
+ _self[_DYN_TRACK_DEPENDENCY_DAT3 /* @min:%2etrackDependencyDataInternal */] = function (dependency, properties, systemProperties) {
265
334
  if (_maxAjaxCallsPerView === -1 || _trackAjaxAttempts < _maxAjaxCallsPerView) {
266
335
  // Hack since expected format in w3c mode is |abc.def.
267
336
  // Non-w3c format is |abc.def
@@ -283,22 +352,10 @@ var AjaxMonitor = /** @class */ (function (_super) {
283
352
  ++_trackAjaxAttempts;
284
353
  };
285
354
  _self.addDependencyListener = function (dependencyListener) {
286
- var theInitializer = {
287
- id: _dependencyListenerId++,
288
- fn: dependencyListener
289
- };
290
- _dependencyListeners.push(theInitializer);
291
- var handler = {
292
- remove: function () {
293
- arrForEach(_dependencyListeners, function (initializer, idx) {
294
- if (initializer.id === theInitializer.id) {
295
- _dependencyListeners.splice(idx, 1);
296
- return -1;
297
- }
298
- });
299
- }
300
- };
301
- return handler;
355
+ return _addHandler(_dependencyListeners, _dependencyHandlerId++, dependencyListener);
356
+ };
357
+ _self.addDependencyInitializer = function (dependencyInitializer) {
358
+ return _addHandler(_dependencyInitializers, _dependencyHandlerId++, dependencyInitializer);
302
359
  };
303
360
  function _initDefaults() {
304
361
  var location = getLocation();
@@ -322,14 +379,15 @@ var AjaxMonitor = /** @class */ (function (_super) {
322
379
  _excludeRequestFromAutoTrackingPatterns = null;
323
380
  _addRequestContext = null;
324
381
  _evtNamespace = null;
325
- _dependencyListenerId = 0;
382
+ _dependencyHandlerId = 0;
326
383
  _dependencyListeners = [];
384
+ _dependencyInitializers = [];
327
385
  }
328
386
  function _populateDefaults(config) {
329
387
  var ctx = createProcessTelemetryContext(null, config, _self[_DYN_CORE /* @min:%2ecore */]);
330
388
  // Reset to the empty config
331
- _config = AjaxMonitor.getEmptyConfig();
332
- var defaultConfig = AjaxMonitor[_DYN_GET_DEFAULT_CONFIG /* @min:%2egetDefaultConfig */]();
389
+ _config = _getEmptyConfig();
390
+ var defaultConfig = _getDefaultConfig();
333
391
  objForEachKey(defaultConfig, function (field, value) {
334
392
  _config[field] = ctx.getConfig(AjaxMonitor.identifier, field, value);
335
393
  });
@@ -339,7 +397,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
339
397
  _enableAjaxPerfTracking = _config[_DYN_ENABLE_AJAX_PERF_TRA7 /* @min:%2eenableAjaxPerfTracking */];
340
398
  _maxAjaxCallsPerView = _config[_DYN_MAX_AJAX_CALLS_PER_V8 /* @min:%2emaxAjaxCallsPerView */];
341
399
  _enableResponseHeaderTracking = _config[_DYN_ENABLE_RESPONSE_HEAD9 /* @min:%2eenableResponseHeaderTracking */];
342
- _excludeRequestFromAutoTrackingPatterns = _config[_DYN_EXCLUDE_REQUEST_FROM10 /* @min:%2eexcludeRequestFromAutoTrackingPatterns */];
400
+ _excludeRequestFromAutoTrackingPatterns = [].concat(_config[_DYN_EXCLUDE_REQUEST_FROM10 /* @min:%2eexcludeRequestFromAutoTrackingPatterns */] || [], _config.addIntEndpoints !== false ? _internalExcludeEndpoints : []);
343
401
  _addRequestContext = _config[_DYN_ADD_REQUEST_CONTEXT /* @min:%2eaddRequestContext */];
344
402
  _isUsingAIHeaders = distributedTracingMode === 0 /* eDistributedTracingModes.AI */ || distributedTracingMode === 1 /* eDistributedTracingModes.AI_AND_W3C */;
345
403
  _isUsingW3CHeaders = distributedTracingMode === 1 /* eDistributedTracingModes.AI_AND_W3C */ || distributedTracingMode === 2 /* eDistributedTracingModes.W3C */;
@@ -358,7 +416,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
358
416
  function _populateContext() {
359
417
  var propExt = _self[_DYN_CORE /* @min:%2ecore */].getPlugin(PropertiesPluginIdentifier);
360
418
  if (propExt) {
361
- _context = propExt.plugin.context; // we could move IPropertiesPlugin to common as well
419
+ _context = propExt.plugin[_DYN_CONTEXT /* @min:%2econtext */]; // we could move IPropertiesPlugin to common as well
362
420
  }
363
421
  }
364
422
  // discard the header if it's defined as ignoreHeaders in ICorrelationConfig
@@ -394,7 +452,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
394
452
  !(isPolyfill && _xhrInitialized)) {
395
453
  var ctx = callDetails.ctx();
396
454
  fetchData = _createFetchRecord(input, init);
397
- var newInit = _self[_DYN_INCLUDE_CORRELATION_3 /* @min:%2eincludeCorrelationHeaders */](fetchData, input, init);
455
+ var newInit = _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */](fetchData, input, init);
398
456
  if (newInit !== init) {
399
457
  callDetails.set(1, newInit);
400
458
  }
@@ -436,7 +494,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
436
494
  }
437
495
  },
438
496
  // Create an error callback to report any hook errors
439
- hkErr: _createErrorCallbackFunc(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, "Failed to monitor Window.fetch, monitoring data for this fetch call may be incorrect.")
497
+ hkErr: _createErrorCallbackFunc(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, "Failed to monitor Window.fetch" + ERROR_POSTFIX)
440
498
  }));
441
499
  _fetchInitialized = true;
442
500
  }
@@ -483,7 +541,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
483
541
  }
484
542
  }
485
543
  },
486
- hkErr: _createErrorCallbackFunc(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, "Failed to monitor XMLHttpRequest.open, monitoring data for this ajax call may be incorrect.")
544
+ hkErr: _createErrorCallbackFunc(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, ERROR_HEADER + ".open" + ERROR_POSTFIX)
487
545
  });
488
546
  // Instrument send
489
547
  _hookProto(XMLHttpRequest, "send", {
@@ -495,12 +553,12 @@ var AjaxMonitor = /** @class */ (function (_super) {
495
553
  if (_isMonitoredXhrInstance(xhr) && !ajaxData.xhrMonitoringState[_DYN_SEND_DONE /* @min:%2esendDone */]) {
496
554
  _createMarkId("xhr", ajaxData);
497
555
  ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */] = dateTimeUtilsNow();
498
- _self[_DYN_INCLUDE_CORRELATION_3 /* @min:%2eincludeCorrelationHeaders */](ajaxData, undefined, undefined, xhr);
556
+ _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */](ajaxData, undefined, undefined, xhr);
499
557
  ajaxData.xhrMonitoringState[_DYN_SEND_DONE /* @min:%2esendDone */] = true;
500
558
  }
501
559
  }
502
560
  },
503
- hkErr: _createErrorCallbackFunc(_self, 17 /* _eInternalMessageId.FailedMonitorAjaxSend */, "Failed to monitor XMLHttpRequest, monitoring data for this ajax call may be incorrect.")
561
+ hkErr: _createErrorCallbackFunc(_self, 17 /* _eInternalMessageId.FailedMonitorAjaxSend */, ERROR_HEADER + ERROR_POSTFIX)
504
562
  });
505
563
  // Instrument abort
506
564
  _hookProto(XMLHttpRequest, "abort", {
@@ -515,7 +573,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
515
573
  }
516
574
  }
517
575
  },
518
- hkErr: _createErrorCallbackFunc(_self, 13 /* _eInternalMessageId.FailedMonitorAjaxAbort */, "Failed to monitor XMLHttpRequest.abort, monitoring data for this ajax call may be incorrect.")
576
+ hkErr: _createErrorCallbackFunc(_self, 13 /* _eInternalMessageId.FailedMonitorAjaxAbort */, ERROR_HEADER + ".abort" + ERROR_POSTFIX)
519
577
  });
520
578
  // Instrument setRequestHeader
521
579
  _hookProto(XMLHttpRequest, "setRequestHeader", {
@@ -528,7 +586,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
528
586
  }
529
587
  }
530
588
  },
531
- hkErr: _createErrorCallbackFunc(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, "Failed to monitor XMLHttpRequest.setRequestHeader, monitoring data for this ajax call may be incorrect.")
589
+ hkErr: _createErrorCallbackFunc(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, ERROR_HEADER + ".setRequestHeader" + ERROR_POSTFIX)
532
590
  });
533
591
  _xhrInitialized = true;
534
592
  }
@@ -639,7 +697,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
639
697
  var exceptionText = dumpObj(e);
640
698
  // ignore messages with c00c023f, as this a known IE9 XHR abort issue
641
699
  if (!exceptionText || _indexOf(exceptionText[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */](), "c00c023f") === -1) {
642
- _throwInternalCritical(_self, 16 /* _eInternalMessageId.FailedMonitorAjaxRSC */, "Failed to monitor XMLHttpRequest 'readystatechange' event handler, monitoring data for this ajax call may be incorrect.", (_a = {},
700
+ _throwInternalCritical(_self, 16 /* _eInternalMessageId.FailedMonitorAjaxRSC */, ERROR_HEADER + " 'readystatechange' event handler" + ERROR_POSTFIX, (_a = {},
643
701
  _a[_DYN_AJAX_DIAGNOSTICS_MES17 /* @min:ajaxDiagnosticsMessage */] = _getFailedAjaxDiagnosticsMessage(xhr),
644
702
  _a.exception = exceptionText,
645
703
  _a));
@@ -670,7 +728,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
670
728
  if (e) {
671
729
  errorProps["exception"] = dumpObj(e);
672
730
  }
673
- _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);
731
+ _throwInternalWarning(_self, 14 /* _eInternalMessageId.FailedMonitorAjaxDur */, FAILED_TO_CALCULATE_DURATION_ERROR + "ajax call" + ERROR_NOT_SENT, errorProps);
674
732
  }
675
733
  _findPerfResourceEntry("xmlhttprequest", ajaxData, function () {
676
734
  try {
@@ -712,13 +770,14 @@ var AjaxMonitor = /** @class */ (function (_super) {
712
770
  }
713
771
  }
714
772
  catch (e) {
715
- _throwInternalWarning(_self, 104 /* _eInternalMessageId.FailedAddingCustomDefinedRequestContext */, "Failed to add custom defined request context as configured call back may missing a null check.");
773
+ _throwInternalWarning(_self, 104 /* _eInternalMessageId.FailedAddingCustomDefinedRequestContext */, CUSTOM_REQUEST_CONTEXT_ERROR);
716
774
  }
717
775
  if (dependency) {
718
776
  if (properties !== undefined) {
719
777
  dependency[STR_PROPERTIES /* @min:%2eproperties */] = __assign(__assign({}, dependency.properties), properties);
720
778
  }
721
- _self[_DYN_TRACK_DEPENDENCY_DAT2 /* @min:%2etrackDependencyDataInternal */](dependency, null, ajaxData[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */]());
779
+ var sysProperties = ajaxData[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */]();
780
+ _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, dependency, null, sysProperties);
722
781
  }
723
782
  else {
724
783
  _reportXhrError(null, {
@@ -753,7 +812,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
753
812
  }
754
813
  }
755
814
  catch (e) {
756
- _throwInternalWarning(_self, 18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, "Failed to get Request-Context correlation header as it may be not included in the response or not accessible.", (_a = {},
815
+ _throwInternalWarning(_self, 18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, CORRELATION_HEADER_ERROR, (_a = {},
757
816
  _a[_DYN_AJAX_DIAGNOSTICS_MES17 /* @min:ajaxDiagnosticsMessage */] = _getFailedAjaxDiagnosticsMessage(xhr),
758
817
  _a.exception = dumpObj(e),
759
818
  _a));
@@ -894,7 +953,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
894
953
  if (e) {
895
954
  errorProps["exception"] = dumpObj(e);
896
955
  }
897
- _throwInternalWarning(_self, msgId, "Failed to calculate the duration of the fetch call, monitoring data for this fetch call won't be sent.", errorProps);
956
+ _throwInternalWarning(_self, msgId, FAILED_TO_CALCULATE_DURATION_ERROR + "fetch call" + ERROR_NOT_SENT, errorProps);
898
957
  }
899
958
  ajaxData[_DYN_RESPONSE_FINISHED_TI14 /* @min:%2eresponseFinishedTime */] = dateTimeUtilsNow();
900
959
  ajaxData[_DYN_STATUS /* @min:%2estatus */] = status;
@@ -907,13 +966,14 @@ var AjaxMonitor = /** @class */ (function (_super) {
907
966
  }
908
967
  }
909
968
  catch (e) {
910
- _throwInternalWarning(_self, 104 /* _eInternalMessageId.FailedAddingCustomDefinedRequestContext */, "Failed to add custom defined request context as configured call back may missing a null check.");
969
+ _throwInternalWarning(_self, 104 /* _eInternalMessageId.FailedAddingCustomDefinedRequestContext */, CUSTOM_REQUEST_CONTEXT_ERROR);
911
970
  }
912
971
  if (dependency) {
913
972
  if (properties !== undefined) {
914
973
  dependency[STR_PROPERTIES /* @min:%2eproperties */] = __assign(__assign({}, dependency.properties), properties);
915
974
  }
916
- _self[_DYN_TRACK_DEPENDENCY_DAT2 /* @min:%2etrackDependencyDataInternal */](dependency, null, ajaxData[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */]());
975
+ var sysProperties = ajaxData[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */]();
976
+ _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, dependency, null, sysProperties);
917
977
  }
918
978
  else {
919
979
  _reportFetchError(14 /* _eInternalMessageId.FailedMonitorAjaxDur */, null, {
@@ -932,52 +992,34 @@ var AjaxMonitor = /** @class */ (function (_super) {
932
992
  return correlationIdGetCorrelationContext(responseHeader);
933
993
  }
934
994
  catch (e) {
935
- _throwInternalWarning(_self, 18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, "Failed to get Request-Context correlation header as it may be not included in the response or not accessible.", {
995
+ _throwInternalWarning(_self, 18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, CORRELATION_HEADER_ERROR, {
936
996
  fetchDiagnosticsMessage: _getFailedFetchDiagnosticsMessage(response),
937
997
  exception: dumpObj(e)
938
998
  });
939
999
  }
940
1000
  }
941
1001
  }
1002
+ function _reportDependencyInternal(initializers, core, ajaxData, dependency, properties, systemProperties) {
1003
+ var _a;
1004
+ var result = true;
1005
+ var initializersCount = initializers[_DYN_LENGTH /* @min:%2elength */];
1006
+ if (initializersCount > 0) {
1007
+ var details = (_a = {
1008
+ item: dependency
1009
+ },
1010
+ _a[STR_PROPERTIES /* @min:properties */] = properties,
1011
+ _a.sysProperties = systemProperties,
1012
+ _a.context = ajaxData ? ajaxData[_DYN_CONTEXT /* @min:%2econtext */] : null,
1013
+ _a);
1014
+ result = _processDependencyContainer(core, initializers, details, "initializer");
1015
+ }
1016
+ if (result) {
1017
+ _self[_DYN_TRACK_DEPENDENCY_DAT3 /* @min:%2etrackDependencyDataInternal */](dependency, properties, systemProperties);
1018
+ }
1019
+ }
942
1020
  });
943
1021
  return _this;
944
1022
  }
945
- AjaxMonitor.getDefaultConfig = function () {
946
- var _a;
947
- var config = (_a = {},
948
- _a[_DYN_MAX_AJAX_CALLS_PER_V8 /* @min:maxAjaxCallsPerView */] = 500,
949
- _a[_DYN_DISABLE_AJAX_TRACKIN11 /* @min:disableAjaxTracking */] = false,
950
- _a[_DYN_DISABLE_FETCH_TRACKI12 /* @min:disableFetchTracking */] = false,
951
- _a[_DYN_EXCLUDE_REQUEST_FROM10 /* @min:excludeRequestFromAutoTrackingPatterns */] = undefined,
952
- _a.disableCorrelationHeaders = false,
953
- _a.distributedTracingMode = 1 /* eDistributedTracingModes.AI_AND_W3C */,
954
- _a.correlationHeaderExcludedDomains = DfltAjaxCorrelationHeaderExDomains,
955
- _a.correlationHeaderDomains = undefined,
956
- _a.correlationHeaderExcludePatterns = undefined,
957
- _a[_DYN_APP_ID /* @min:appId */] = undefined,
958
- _a.enableCorsCorrelation = false,
959
- _a[_DYN_ENABLE_REQUEST_HEADE5 /* @min:enableRequestHeaderTracking */] = false,
960
- _a[_DYN_ENABLE_RESPONSE_HEAD9 /* @min:enableResponseHeaderTracking */] = false,
961
- _a[_DYN_ENABLE_AJAX_ERROR_ST6 /* @min:enableAjaxErrorStatusText */] = false,
962
- _a[_DYN_ENABLE_AJAX_PERF_TRA7 /* @min:enableAjaxPerfTracking */] = false,
963
- _a.maxAjaxPerfLookupAttempts = 3,
964
- _a[_DYN_AJAX_PERF_LOOKUP_DEL16 /* @min:ajaxPerfLookupDelay */] = 25,
965
- _a.ignoreHeaders = [
966
- "Authorization",
967
- "X-API-Key",
968
- "WWW-Authenticate"
969
- ],
970
- _a[_DYN_ADD_REQUEST_CONTEXT /* @min:addRequestContext */] = undefined,
971
- _a);
972
- return config;
973
- };
974
- AjaxMonitor.getEmptyConfig = function () {
975
- var emptyConfig = this[_DYN_GET_DEFAULT_CONFIG /* @min:%2egetDefaultConfig */]();
976
- objForEachKey(emptyConfig, function (value) {
977
- emptyConfig[value] = undefined;
978
- });
979
- return emptyConfig;
980
- };
981
1023
  // Removed Stub for AjaxMonitor.prototype.initialize.
982
1024
  AjaxMonitor.prototype.processTelemetry = function (item, itemCtx) {
983
1025
  this.processNext(item, itemCtx);
@@ -985,8 +1027,21 @@ var AjaxMonitor = /** @class */ (function (_super) {
985
1027
  // Removed Stub for AjaxMonitor.prototype.trackDependencyData.
986
1028
  // Removed Stub for AjaxMonitor.prototype.includeCorrelationHeaders.
987
1029
  // Removed Stub for AjaxMonitor.prototype.addDependencyListener.
1030
+ /**
1031
+ * Add an dependency telemetry initializer callback function to allow populating additional properties or drop the request.
1032
+ * It is called after the dependency call has completed and any available performance details are available. A dependency
1033
+ * initializer is similar to the TelemetryInitializer function but it allows you to block the reporting of the dependency
1034
+ * request so that it doesn't count against the `maxAjaxCallsPerView`.
1035
+ * @param dependencyInitializer - The Dependency Telemetry Initializer function
1036
+ * @returns - A IDependencyInitializerHandler to enable the initializer to be removed
1037
+ */
1038
+ AjaxMonitor.prototype.addDependencyInitializer = function (dependencyInitializer) {
1039
+ return null;
1040
+ };
988
1041
  // Removed Stub for AjaxMonitor.prototype.trackDependencyDataInternal.
989
1042
  AjaxMonitor.identifier = "AjaxDependencyPlugin";
1043
+ AjaxMonitor.getDefaultConfig = _getDefaultConfig;
1044
+ AjaxMonitor.getEmptyConfig = _getEmptyConfig;
990
1045
  return AjaxMonitor;
991
1046
  }(BaseTelemetryPlugin));
992
1047
  export { AjaxMonitor };