@microsoft/applicationinsights-dependencies-js 2.8.7-nightly.2208-08 → 2.8.7-nightly.2208-11

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 +152 -105
  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 +673 -40
  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 +152 -105
  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 +7 -7
  19. package/dist-esm/__DynamicConstants.js.map +1 -1
  20. package/dist-esm/ajax.js +155 -100
  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 +6 -6
  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 +5 -5
  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, 2.8.7-nightly.2208-08
2
+ * Application Insights JavaScript SDK - Dependencies Plugin, 2.8.7-nightly.2208-11
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 { CorrelationIdHelper, DisabledPropertyName, PropertiesPluginIdentifier, RemoteDependencyData, RequestHeaders, 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_MES19, _DYN_AJAX_PERF_LOOKUP_DEL18, _DYN_APP_ID, _DYN_CAN_INCLUDE_CORRELAT4, _DYN_CORE, _DYN_CORRELATION_CONTEXT, _DYN_DISABLE_AJAX_TRACKIN12, _DYN_DISABLE_FETCH_TRACKI13, _DYN_DISTRIBUTED_TRACING_5, _DYN_ENABLE_AJAX_ERROR_ST7, _DYN_ENABLE_AJAX_PERF_TRA8, _DYN_ENABLE_REQUEST_HEADE6, _DYN_ENABLE_RESPONSE_HEAD10, _DYN_ERROR_STATUS_TEXT, _DYN_EXCLUDE_REQUEST_FROM11, _DYN_GET_ABSOLUTE_URL, _DYN_GET_ALL_RESPONSE_HEA16, _DYN_GET_CORRELATION_CONT17, _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_V9, _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_TI15, _DYN_RESPONSE_TEXT, _DYN_SEND_DONE, _DYN_SET_REQUEST_HEADER, _DYN_SPAN_ID, _DYN_SPAN_ID1, _DYN_START_TIME, _DYN_STATE_CHANGE_ATTACHE14, _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_MES19, _DYN_AJAX_PERF_LOOKUP_DEL18, _DYN_APP_ID, _DYN_CAN_INCLUDE_CORRELAT3, _DYN_CONTEXT, _DYN_CORE, _DYN_CORRELATION_CONTEXT, _DYN_DISABLE_AJAX_TRACKIN12, _DYN_DISABLE_FETCH_TRACKI13, _DYN_DISTRIBUTED_TRACING_5, _DYN_ENABLE_AJAX_ERROR_ST7, _DYN_ENABLE_AJAX_PERF_TRA8, _DYN_ENABLE_REQUEST_HEADE6, _DYN_ENABLE_RESPONSE_HEAD10, _DYN_ERROR_STATUS_TEXT, _DYN_EXCLUDE_REQUEST_FROM11, _DYN_GET_ABSOLUTE_URL, _DYN_GET_ALL_RESPONSE_HEA16, _DYN_GET_CORRELATION_CONT17, _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_V9, _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_TI15, _DYN_RESPONSE_TEXT, _DYN_SEND_DONE, _DYN_SET_REQUEST_HEADER, _DYN_SPAN_ID, _DYN_SPAN_ID1, _DYN_START_TIME, _DYN_STATE_CHANGE_ATTACHE14, _DYN_STATUS, _DYN_STATUS_TEXT, _DYN_TO_LOWER_CASE, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN_TRACE_ID0, _DYN_TRACK_DEPENDENCY_DAT4, _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_V9 /* @min:maxAjaxCallsPerView */] = 500,
178
+ _a[_DYN_DISABLE_AJAX_TRACKIN12 /* @min:disableAjaxTracking */] = false,
179
+ _a[_DYN_DISABLE_FETCH_TRACKI13 /* @min:disableFetchTracking */] = false,
180
+ _a[_DYN_EXCLUDE_REQUEST_FROM11 /* @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_HEADE6 /* @min:enableRequestHeaderTracking */] = false,
189
+ _a[_DYN_ENABLE_RESPONSE_HEAD10 /* @min:enableResponseHeaderTracking */] = false,
190
+ _a[_DYN_ENABLE_AJAX_ERROR_ST7 /* @min:enableAjaxErrorStatusText */] = false,
191
+ _a[_DYN_ENABLE_AJAX_PERF_TRA8 /* @min:enableAjaxPerfTracking */] = false,
192
+ _a.maxAjaxPerfLookupAttempts = 3,
193
+ _a[_DYN_AJAX_PERF_LOOKUP_DEL18 /* @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,14 +254,14 @@ 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);
194
263
  if (input) { // Fetch
195
- if (CorrelationIdHelper[_DYN_CAN_INCLUDE_CORRELAT4 /* @min:%2ecanIncludeCorrelationHeader */](_config, ajaxData[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */](), currentWindowHost)) {
264
+ if (CorrelationIdHelper[_DYN_CAN_INCLUDE_CORRELAT3 /* @min:%2ecanIncludeCorrelationHeader */](_config, ajaxData[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */](), currentWindowHost)) {
196
265
  if (!init) {
197
266
  init = {};
198
267
  }
@@ -230,7 +299,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
230
299
  return init;
231
300
  }
232
301
  else if (xhr) { // XHR
233
- if (CorrelationIdHelper[_DYN_CAN_INCLUDE_CORRELAT4 /* @min:%2ecanIncludeCorrelationHeader */](_config, ajaxData[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */](), currentWindowHost)) {
302
+ if (CorrelationIdHelper[_DYN_CAN_INCLUDE_CORRELAT3 /* @min:%2ecanIncludeCorrelationHeader */](_config, ajaxData[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */](), currentWindowHost)) {
234
303
  if (_isUsingAIHeaders) {
235
304
  var id = "|" + ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */] + "." + ajaxData[_DYN_SPAN_ID /* @min:%2espanID */];
236
305
  xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[3 /* eRequestHeaders.requestIdHeader */], id);
@@ -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_DAT4 /* @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_TRA8 /* @min:%2eenableAjaxPerfTracking */];
340
398
  _maxAjaxCallsPerView = _config[_DYN_MAX_AJAX_CALLS_PER_V9 /* @min:%2emaxAjaxCallsPerView */];
341
399
  _enableResponseHeaderTracking = _config[_DYN_ENABLE_RESPONSE_HEAD10 /* @min:%2eenableResponseHeaderTracking */];
342
- _excludeRequestFromAutoTrackingPatterns = _config[_DYN_EXCLUDE_REQUEST_FROM11 /* @min:%2eexcludeRequestFromAutoTrackingPatterns */];
400
+ _excludeRequestFromAutoTrackingPatterns = [].concat(_config[_DYN_EXCLUDE_REQUEST_FROM11 /* @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
  }
@@ -435,7 +493,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
435
493
  }
436
494
  },
437
495
  // Create an error callback to report any hook errors
438
- hkErr: _createErrorCallbackFunc(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, "Failed to monitor Window.fetch, monitoring data for this fetch call may be incorrect.")
496
+ hkErr: _createErrorCallbackFunc(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, "Failed to monitor Window.fetch" + ERROR_POSTFIX)
439
497
  }));
440
498
  _fetchInitialized = true;
441
499
  }
@@ -482,7 +540,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
482
540
  }
483
541
  }
484
542
  },
485
- hkErr: _createErrorCallbackFunc(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, "Failed to monitor XMLHttpRequest.open, monitoring data for this ajax call may be incorrect.")
543
+ hkErr: _createErrorCallbackFunc(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, ERROR_HEADER + ".open" + ERROR_POSTFIX)
486
544
  });
487
545
  // Instrument send
488
546
  _hookProto(XMLHttpRequest, "send", {
@@ -494,12 +552,12 @@ var AjaxMonitor = /** @class */ (function (_super) {
494
552
  if (_isMonitoredXhrInstance(xhr) && !ajaxData.xhrMonitoringState[_DYN_SEND_DONE /* @min:%2esendDone */]) {
495
553
  _createMarkId("xhr", ajaxData);
496
554
  ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */] = dateTimeUtilsNow();
497
- _self[_DYN_INCLUDE_CORRELATION_3 /* @min:%2eincludeCorrelationHeaders */](ajaxData, undefined, undefined, xhr);
555
+ _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */](ajaxData, undefined, undefined, xhr);
498
556
  ajaxData.xhrMonitoringState[_DYN_SEND_DONE /* @min:%2esendDone */] = true;
499
557
  }
500
558
  }
501
559
  },
502
- hkErr: _createErrorCallbackFunc(_self, 17 /* _eInternalMessageId.FailedMonitorAjaxSend */, "Failed to monitor XMLHttpRequest, monitoring data for this ajax call may be incorrect.")
560
+ hkErr: _createErrorCallbackFunc(_self, 17 /* _eInternalMessageId.FailedMonitorAjaxSend */, ERROR_HEADER + ERROR_POSTFIX)
503
561
  });
504
562
  // Instrument abort
505
563
  _hookProto(XMLHttpRequest, "abort", {
@@ -514,7 +572,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
514
572
  }
515
573
  }
516
574
  },
517
- hkErr: _createErrorCallbackFunc(_self, 13 /* _eInternalMessageId.FailedMonitorAjaxAbort */, "Failed to monitor XMLHttpRequest.abort, monitoring data for this ajax call may be incorrect.")
575
+ hkErr: _createErrorCallbackFunc(_self, 13 /* _eInternalMessageId.FailedMonitorAjaxAbort */, ERROR_HEADER + ".abort" + ERROR_POSTFIX)
518
576
  });
519
577
  // Instrument setRequestHeader
520
578
  _hookProto(XMLHttpRequest, "setRequestHeader", {
@@ -527,7 +585,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
527
585
  }
528
586
  }
529
587
  },
530
- hkErr: _createErrorCallbackFunc(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, "Failed to monitor XMLHttpRequest.setRequestHeader, monitoring data for this ajax call may be incorrect.")
588
+ hkErr: _createErrorCallbackFunc(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, ERROR_HEADER + ".setRequestHeader" + ERROR_POSTFIX)
531
589
  });
532
590
  _xhrInitialized = true;
533
591
  }
@@ -638,7 +696,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
638
696
  var exceptionText = dumpObj(e);
639
697
  // ignore messages with c00c023f, as this a known IE9 XHR abort issue
640
698
  if (!exceptionText || _indexOf(exceptionText[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */](), "c00c023f") === -1) {
641
- _throwInternalCritical(_self, 16 /* _eInternalMessageId.FailedMonitorAjaxRSC */, "Failed to monitor XMLHttpRequest 'readystatechange' event handler, monitoring data for this ajax call may be incorrect.", (_a = {},
699
+ _throwInternalCritical(_self, 16 /* _eInternalMessageId.FailedMonitorAjaxRSC */, ERROR_HEADER + " 'readystatechange' event handler" + ERROR_POSTFIX, (_a = {},
642
700
  _a[_DYN_AJAX_DIAGNOSTICS_MES19 /* @min:ajaxDiagnosticsMessage */] = _getFailedAjaxDiagnosticsMessage(xhr),
643
701
  _a.exception = exceptionText,
644
702
  _a));
@@ -669,7 +727,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
669
727
  if (e) {
670
728
  errorProps["exception"] = dumpObj(e);
671
729
  }
672
- _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);
730
+ _throwInternalWarning(_self, 14 /* _eInternalMessageId.FailedMonitorAjaxDur */, FAILED_TO_CALCULATE_DURATION_ERROR + "ajax call" + ERROR_NOT_SENT, errorProps);
673
731
  }
674
732
  _findPerfResourceEntry("xmlhttprequest", ajaxData, function () {
675
733
  try {
@@ -711,13 +769,14 @@ var AjaxMonitor = /** @class */ (function (_super) {
711
769
  }
712
770
  }
713
771
  catch (e) {
714
- _throwInternalWarning(_self, 104 /* _eInternalMessageId.FailedAddingCustomDefinedRequestContext */, "Failed to add custom defined request context as configured call back may missing a null check.");
772
+ _throwInternalWarning(_self, 104 /* _eInternalMessageId.FailedAddingCustomDefinedRequestContext */, CUSTOM_REQUEST_CONTEXT_ERROR);
715
773
  }
716
774
  if (dependency) {
717
775
  if (properties !== undefined) {
718
776
  dependency[STR_PROPERTIES /* @min:%2eproperties */] = __assign(__assign({}, dependency.properties), properties);
719
777
  }
720
- _self[_DYN_TRACK_DEPENDENCY_DAT2 /* @min:%2etrackDependencyDataInternal */](dependency, null, ajaxData[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */]());
778
+ var sysProperties = ajaxData[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */]();
779
+ _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, dependency, null, sysProperties);
721
780
  }
722
781
  else {
723
782
  _reportXhrError(null, {
@@ -752,7 +811,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
752
811
  }
753
812
  }
754
813
  catch (e) {
755
- _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 = {},
814
+ _throwInternalWarning(_self, 18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, CORRELATION_HEADER_ERROR, (_a = {},
756
815
  _a[_DYN_AJAX_DIAGNOSTICS_MES19 /* @min:ajaxDiagnosticsMessage */] = _getFailedAjaxDiagnosticsMessage(xhr),
757
816
  _a.exception = dumpObj(e),
758
817
  _a));
@@ -893,7 +952,7 @@ var AjaxMonitor = /** @class */ (function (_super) {
893
952
  if (e) {
894
953
  errorProps["exception"] = dumpObj(e);
895
954
  }
896
- _throwInternalWarning(_self, msgId, "Failed to calculate the duration of the fetch call, monitoring data for this fetch call won't be sent.", errorProps);
955
+ _throwInternalWarning(_self, msgId, FAILED_TO_CALCULATE_DURATION_ERROR + "fetch call" + ERROR_NOT_SENT, errorProps);
897
956
  }
898
957
  ajaxData[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */] = dateTimeUtilsNow();
899
958
  ajaxData[_DYN_STATUS /* @min:%2estatus */] = status;
@@ -906,13 +965,14 @@ var AjaxMonitor = /** @class */ (function (_super) {
906
965
  }
907
966
  }
908
967
  catch (e) {
909
- _throwInternalWarning(_self, 104 /* _eInternalMessageId.FailedAddingCustomDefinedRequestContext */, "Failed to add custom defined request context as configured call back may missing a null check.");
968
+ _throwInternalWarning(_self, 104 /* _eInternalMessageId.FailedAddingCustomDefinedRequestContext */, CUSTOM_REQUEST_CONTEXT_ERROR);
910
969
  }
911
970
  if (dependency) {
912
971
  if (properties !== undefined) {
913
972
  dependency[STR_PROPERTIES /* @min:%2eproperties */] = __assign(__assign({}, dependency.properties), properties);
914
973
  }
915
- _self[_DYN_TRACK_DEPENDENCY_DAT2 /* @min:%2etrackDependencyDataInternal */](dependency, null, ajaxData[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */]());
974
+ var sysProperties = ajaxData[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */]();
975
+ _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, dependency, null, sysProperties);
916
976
  }
917
977
  else {
918
978
  _reportFetchError(14 /* _eInternalMessageId.FailedMonitorAjaxDur */, null, {
@@ -931,52 +991,34 @@ var AjaxMonitor = /** @class */ (function (_super) {
931
991
  return CorrelationIdHelper[_DYN_GET_CORRELATION_CONT17 /* @min:%2egetCorrelationContext */](responseHeader);
932
992
  }
933
993
  catch (e) {
934
- _throwInternalWarning(_self, 18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, "Failed to get Request-Context correlation header as it may be not included in the response or not accessible.", {
994
+ _throwInternalWarning(_self, 18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, CORRELATION_HEADER_ERROR, {
935
995
  fetchDiagnosticsMessage: _getFailedFetchDiagnosticsMessage(response),
936
996
  exception: dumpObj(e)
937
997
  });
938
998
  }
939
999
  }
940
1000
  }
1001
+ function _reportDependencyInternal(initializers, core, ajaxData, dependency, properties, systemProperties) {
1002
+ var _a;
1003
+ var result = true;
1004
+ var initializersCount = initializers[_DYN_LENGTH /* @min:%2elength */];
1005
+ if (initializersCount > 0) {
1006
+ var details = (_a = {
1007
+ item: dependency
1008
+ },
1009
+ _a[STR_PROPERTIES /* @min:properties */] = properties,
1010
+ _a.sysProperties = systemProperties,
1011
+ _a.context = ajaxData ? ajaxData[_DYN_CONTEXT /* @min:%2econtext */] : null,
1012
+ _a);
1013
+ result = _processDependencyContainer(core, initializers, details, "initializer");
1014
+ }
1015
+ if (result) {
1016
+ _self[_DYN_TRACK_DEPENDENCY_DAT4 /* @min:%2etrackDependencyDataInternal */](dependency, properties, systemProperties);
1017
+ }
1018
+ }
941
1019
  });
942
1020
  return _this;
943
1021
  }
944
- AjaxMonitor.getDefaultConfig = function () {
945
- var _a;
946
- var config = (_a = {},
947
- _a[_DYN_MAX_AJAX_CALLS_PER_V9 /* @min:maxAjaxCallsPerView */] = 500,
948
- _a[_DYN_DISABLE_AJAX_TRACKIN12 /* @min:disableAjaxTracking */] = false,
949
- _a[_DYN_DISABLE_FETCH_TRACKI13 /* @min:disableFetchTracking */] = false,
950
- _a[_DYN_EXCLUDE_REQUEST_FROM11 /* @min:excludeRequestFromAutoTrackingPatterns */] = undefined,
951
- _a.disableCorrelationHeaders = false,
952
- _a.distributedTracingMode = 1 /* eDistributedTracingModes.AI_AND_W3C */,
953
- _a.correlationHeaderExcludedDomains = DfltAjaxCorrelationHeaderExDomains,
954
- _a.correlationHeaderDomains = undefined,
955
- _a.correlationHeaderExcludePatterns = undefined,
956
- _a[_DYN_APP_ID /* @min:appId */] = undefined,
957
- _a.enableCorsCorrelation = false,
958
- _a[_DYN_ENABLE_REQUEST_HEADE6 /* @min:enableRequestHeaderTracking */] = false,
959
- _a[_DYN_ENABLE_RESPONSE_HEAD10 /* @min:enableResponseHeaderTracking */] = false,
960
- _a[_DYN_ENABLE_AJAX_ERROR_ST7 /* @min:enableAjaxErrorStatusText */] = false,
961
- _a[_DYN_ENABLE_AJAX_PERF_TRA8 /* @min:enableAjaxPerfTracking */] = false,
962
- _a.maxAjaxPerfLookupAttempts = 3,
963
- _a[_DYN_AJAX_PERF_LOOKUP_DEL18 /* @min:ajaxPerfLookupDelay */] = 25,
964
- _a.ignoreHeaders = [
965
- "Authorization",
966
- "X-API-Key",
967
- "WWW-Authenticate"
968
- ],
969
- _a[_DYN_ADD_REQUEST_CONTEXT /* @min:addRequestContext */] = undefined,
970
- _a);
971
- return config;
972
- };
973
- AjaxMonitor.getEmptyConfig = function () {
974
- var emptyConfig = this[_DYN_GET_DEFAULT_CONFIG /* @min:%2egetDefaultConfig */]();
975
- objForEachKey(emptyConfig, function (value) {
976
- emptyConfig[value] = undefined;
977
- });
978
- return emptyConfig;
979
- };
980
1022
  // Removed Stub for AjaxMonitor.prototype.initialize.
981
1023
  AjaxMonitor.prototype.processTelemetry = function (item, itemCtx) {
982
1024
  this.processNext(item, itemCtx);
@@ -984,8 +1026,21 @@ var AjaxMonitor = /** @class */ (function (_super) {
984
1026
  // Removed Stub for AjaxMonitor.prototype.trackDependencyData.
985
1027
  // Removed Stub for AjaxMonitor.prototype.includeCorrelationHeaders.
986
1028
  // Removed Stub for AjaxMonitor.prototype.addDependencyListener.
1029
+ /**
1030
+ * Add an dependency telemetry initializer callback function to allow populating additional properties or drop the request.
1031
+ * It is called after the dependency call has completed and any available performance details are available. A dependency
1032
+ * initializer is similar to the TelemetryInitializer function but it allows you to block the reporting of the dependency
1033
+ * request so that it doesn't count against the `maxAjaxCallsPerView`.
1034
+ * @param dependencyInitializer - The Dependency Telemetry Initializer function
1035
+ * @returns - A IDependencyInitializerHandler to enable the initializer to be removed
1036
+ */
1037
+ AjaxMonitor.prototype.addDependencyInitializer = function (dependencyInitializer) {
1038
+ return null;
1039
+ };
987
1040
  // Removed Stub for AjaxMonitor.prototype.trackDependencyDataInternal.
988
1041
  AjaxMonitor.identifier = "AjaxDependencyPlugin";
1042
+ AjaxMonitor.getDefaultConfig = _getDefaultConfig;
1043
+ AjaxMonitor.getEmptyConfig = _getEmptyConfig;
989
1044
  return AjaxMonitor;
990
1045
  }(BaseTelemetryPlugin));
991
1046
  export { AjaxMonitor };