@microsoft/applicationinsights-dependencies-js 2.8.0-beta.2203-10 → 2.8.0-beta.2203-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.
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Microsoft Application Insights XHR dependencies plugin, 2.8.0-beta.2203-10
2
+ * Microsoft Application Insights XHR dependencies plugin, 2.8.0-beta.2203-11
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  *
5
5
  * Microsoft Application Insights Team
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Dependencies Plugin, 2.8.0-beta.2203-10
2
+ * Application Insights JavaScript SDK - Dependencies Plugin, 2.8.0-beta.2203-11
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
  import { generateW3CId } from "@microsoft/applicationinsights-core-js";
package/dist-esm/ajax.js CHANGED
@@ -1,12 +1,12 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Dependencies Plugin, 2.8.0-beta.2203-10
2
+ * Application Insights JavaScript SDK - Dependencies Plugin, 2.8.0-beta.2203-11
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
8
  import { RequestHeaders, CorrelationIdHelper, TelemetryItemCreator, RemoteDependencyData, dateTimeUtilsNow, DisabledPropertyName, PropertiesPluginIdentifier, isInternalApplicationInsightsEndpoint } from "@microsoft/applicationinsights-common";
9
- import { isNullOrUndefined, arrForEach, isString, strTrim, isFunction, LoggingSeverity, _InternalMessageId, BaseTelemetryPlugin, getLocation, getGlobal, strPrototype, InstrumentFunc, InstrumentProto, getPerformance, objForEachKey, generateW3CId, getIEVersion, dumpObj, isXhrSupported, eventOn, mergeEvtNamespace, createUniqueNamespace } from "@microsoft/applicationinsights-core-js";
9
+ import { isNullOrUndefined, arrForEach, isString, strTrim, isFunction, LoggingSeverity, _InternalMessageId, BaseTelemetryPlugin, getLocation, getGlobal, strPrototype, InstrumentFunc, InstrumentProto, getPerformance, objForEachKey, generateW3CId, getIEVersion, dumpObj, isXhrSupported, eventOn, mergeEvtNamespace, createUniqueNamespace, createProcessTelemetryContext } from "@microsoft/applicationinsights-core-js";
10
10
  import { ajaxRecord } from "./ajaxRecord";
11
11
  import { Traceparent } from "./TraceParent";
12
12
  import dynamicProto from "@microsoft/dynamicproto-js";
@@ -15,6 +15,7 @@ var strDiagLog = "diagLog";
15
15
  var strAjaxData = "ajaxData";
16
16
  var strThrowInternal = "throwInternal";
17
17
  var strFetch = "fetch";
18
+ var strTrackDependencyDataInternal = "trackDependencyDataInternal"; // Using string to help with minification
18
19
  // Using a global value so that to handle same iKey with multiple app insights instances (mostly for testing)
19
20
  var _markCount = 0;
20
21
  /** @Ignore */
@@ -110,77 +111,41 @@ var AjaxMonitor = /** @class */ (function (_super) {
110
111
  var _this = _super.call(this) || this;
111
112
  _this.identifier = AjaxMonitor.identifier;
112
113
  _this.priority = 120;
113
- var strTrackDependencyDataInternal = "trackDependencyDataInternal"; // Using string to help with minification
114
- var location = getLocation();
115
- var _fetchInitialized = false; // fetch monitoring initialized
116
- var _xhrInitialized = false; // XHR monitoring initialized
117
- var _currentWindowHost = location && location.host && location.host.toLowerCase();
118
- var _config = AjaxMonitor.getEmptyConfig();
119
- var _enableRequestHeaderTracking = false;
120
- var _enableAjaxErrorStatusText = false;
121
- var _trackAjaxAttempts = 0;
114
+ var _fetchInitialized; // fetch monitoring initialized
115
+ var _xhrInitialized; // XHR monitoring initialized
116
+ var _currentWindowHost;
117
+ var _config;
118
+ var _enableRequestHeaderTracking;
119
+ var _enableAjaxErrorStatusText;
120
+ var _trackAjaxAttempts;
122
121
  var _context;
123
122
  var _isUsingW3CHeaders;
124
123
  var _isUsingAIHeaders;
125
124
  var _markPrefix;
126
- var _enableAjaxPerfTracking = false;
127
- var _maxAjaxCallsPerView = 0;
128
- var _enableResponseHeaderTracking = false;
129
- var _disabledUrls = {};
125
+ var _enableAjaxPerfTracking;
126
+ var _maxAjaxCallsPerView;
127
+ var _enableResponseHeaderTracking;
128
+ var _disabledUrls;
129
+ var _disableAjaxTracking;
130
+ var _disableFetchTracking;
130
131
  var _excludeRequestFromAutoTrackingPatterns;
131
132
  var _addRequestContext;
132
133
  var _evtNamespace;
133
134
  dynamicProto(AjaxMonitor, _this, function (_self, _base) {
134
135
  var _addHook = _base._addHook;
136
+ _initDefaults();
135
137
  _self.initialize = function (config, core, extensions, pluginChain) {
136
138
  if (!_self.isInitialized()) {
137
139
  _base.initialize(config, core, extensions, pluginChain);
138
- var ctx_1 = _self._getTelCtx();
139
- var defaultConfig = AjaxMonitor.getDefaultConfig();
140
- objForEachKey(defaultConfig, function (field, value) {
141
- _config[field] = ctx_1.getConfig(AjaxMonitor.identifier, field, value);
142
- });
143
140
  _evtNamespace = mergeEvtNamespace(createUniqueNamespace("ajax"), core && core.evtNamespace && core.evtNamespace());
144
- var distributedTracingMode = _config.distributedTracingMode;
145
- _enableRequestHeaderTracking = _config.enableRequestHeaderTracking;
146
- _enableAjaxErrorStatusText = _config.enableAjaxErrorStatusText;
147
- _enableAjaxPerfTracking = _config.enableAjaxPerfTracking;
148
- _maxAjaxCallsPerView = _config.maxAjaxCallsPerView;
149
- _enableResponseHeaderTracking = _config.enableResponseHeaderTracking;
150
- _excludeRequestFromAutoTrackingPatterns = _config.excludeRequestFromAutoTrackingPatterns;
151
- _addRequestContext = _config.addRequestContext;
152
- _isUsingAIHeaders = distributedTracingMode === 0 /* AI */ || distributedTracingMode === 1 /* AI_AND_W3C */;
153
- _isUsingW3CHeaders = distributedTracingMode === 1 /* AI_AND_W3C */ || distributedTracingMode === 2 /* W3C */;
154
- if (_enableAjaxPerfTracking) {
155
- var iKey = config.instrumentationKey || "unkwn";
156
- if (iKey.length > 5) {
157
- _markPrefix = AJAX_MONITOR_PREFIX + iKey.substring(iKey.length - 5) + ".";
158
- }
159
- else {
160
- _markPrefix = AJAX_MONITOR_PREFIX + iKey + ".";
161
- }
162
- }
163
- if (_config.disableAjaxTracking === false) {
164
- _instrumentXhr();
165
- }
141
+ _populateDefaults(config);
142
+ _instrumentXhr();
166
143
  _instrumentFetch();
167
- if (extensions.length > 0 && extensions) {
168
- var propExt = void 0, extIx = 0;
169
- while (!propExt && extIx < extensions.length) {
170
- if (extensions[extIx] && extensions[extIx].identifier === PropertiesPluginIdentifier) {
171
- propExt = extensions[extIx];
172
- }
173
- extIx++;
174
- }
175
- if (propExt) {
176
- _context = propExt.context; // we could move IPropertiesPlugin to common as well
177
- }
178
- }
144
+ _populateContext();
179
145
  }
180
146
  };
181
147
  _self._doTeardown = function () {
182
- _fetchInitialized = false;
183
- _xhrInitialized = false;
148
+ _initDefaults();
184
149
  };
185
150
  _self.trackDependencyData = function (dependency, properties) {
186
151
  _self[strTrackDependencyDataInternal](dependency, properties);
@@ -270,6 +235,65 @@ var AjaxMonitor = /** @class */ (function (_super) {
270
235
  }
271
236
  ++_trackAjaxAttempts;
272
237
  };
238
+ function _initDefaults() {
239
+ var location = getLocation();
240
+ _fetchInitialized = false; // fetch monitoring initialized
241
+ _xhrInitialized = false; // XHR monitoring initialized
242
+ _currentWindowHost = location && location.host && location.host.toLowerCase();
243
+ _config = AjaxMonitor.getEmptyConfig();
244
+ _enableRequestHeaderTracking = false;
245
+ _enableAjaxErrorStatusText = false;
246
+ _trackAjaxAttempts = 0;
247
+ _context = null;
248
+ _isUsingW3CHeaders = false;
249
+ _isUsingAIHeaders = false;
250
+ _markPrefix = null;
251
+ _enableAjaxPerfTracking = false;
252
+ _maxAjaxCallsPerView = 0;
253
+ _enableResponseHeaderTracking = false;
254
+ _disabledUrls = {};
255
+ _disableAjaxTracking = false;
256
+ _disableFetchTracking = true;
257
+ _excludeRequestFromAutoTrackingPatterns = null;
258
+ _addRequestContext = null;
259
+ _evtNamespace = null;
260
+ }
261
+ function _populateDefaults(config) {
262
+ var ctx = createProcessTelemetryContext(null, config, _self.core);
263
+ // Reset to the empty config
264
+ _config = AjaxMonitor.getEmptyConfig();
265
+ var defaultConfig = AjaxMonitor.getDefaultConfig();
266
+ objForEachKey(defaultConfig, function (field, value) {
267
+ _config[field] = ctx.getConfig(AjaxMonitor.identifier, field, value);
268
+ });
269
+ var distributedTracingMode = _config.distributedTracingMode;
270
+ _enableRequestHeaderTracking = _config.enableRequestHeaderTracking;
271
+ _enableAjaxErrorStatusText = _config.enableAjaxErrorStatusText;
272
+ _enableAjaxPerfTracking = _config.enableAjaxPerfTracking;
273
+ _maxAjaxCallsPerView = _config.maxAjaxCallsPerView;
274
+ _enableResponseHeaderTracking = _config.enableResponseHeaderTracking;
275
+ _excludeRequestFromAutoTrackingPatterns = _config.excludeRequestFromAutoTrackingPatterns;
276
+ _addRequestContext = _config.addRequestContext;
277
+ _isUsingAIHeaders = distributedTracingMode === 0 /* AI */ || distributedTracingMode === 1 /* AI_AND_W3C */;
278
+ _isUsingW3CHeaders = distributedTracingMode === 1 /* AI_AND_W3C */ || distributedTracingMode === 2 /* W3C */;
279
+ if (_enableAjaxPerfTracking) {
280
+ var iKey = config.instrumentationKey || "unkwn";
281
+ if (iKey.length > 5) {
282
+ _markPrefix = AJAX_MONITOR_PREFIX + iKey.substring(iKey.length - 5) + ".";
283
+ }
284
+ else {
285
+ _markPrefix = AJAX_MONITOR_PREFIX + iKey + ".";
286
+ }
287
+ }
288
+ _disableAjaxTracking = !!_config.disableAjaxTracking;
289
+ _disableFetchTracking = !!_config.disableFetchTracking;
290
+ }
291
+ function _populateContext() {
292
+ var propExt = _self.core.getPlugin(PropertiesPluginIdentifier);
293
+ if (propExt) {
294
+ _context = propExt.plugin.context; // we could move IPropertiesPlugin to common as well
295
+ }
296
+ }
273
297
  // discard the header if it's defined as ignoreHeaders in ICorrelationConfig
274
298
  function _canIncludeHeaders(header) {
275
299
  var rlt = true;
@@ -291,13 +315,13 @@ var AjaxMonitor = /** @class */ (function (_super) {
291
315
  }
292
316
  var global = getGlobal();
293
317
  var isPolyfill = fetch.polyfill;
294
- if (_config.disableFetchTracking === false) {
318
+ if (!_disableFetchTracking && !_fetchInitialized) {
295
319
  _addHook(InstrumentFunc(global, strFetch, {
296
320
  ns: _evtNamespace,
297
321
  // Add request hook
298
322
  req: function (callDetails, input, init) {
299
323
  var fetchData;
300
- if (_fetchInitialized &&
324
+ if (!_disableFetchTracking && _fetchInitialized &&
301
325
  !_isDisabledRequest(null, input, init) &&
302
326
  // If we have a polyfil and XHR instrumented then let XHR report otherwise we get duplicates
303
327
  !(isPolyfill && _xhrInitialized)) {
@@ -311,32 +335,34 @@ var AjaxMonitor = /** @class */ (function (_super) {
311
335
  }
312
336
  },
313
337
  rsp: function (callDetails, input) {
314
- var fetchData = callDetails.ctx().data;
315
- if (fetchData) {
316
- // Replace the result with the new promise from this code
317
- callDetails.rslt = callDetails.rslt.then(function (response) {
318
- _reportFetchMetrics(callDetails, (response || {}).status, input, response, fetchData, function () {
319
- var ajaxResponse = {
320
- statusText: response.statusText,
321
- headerMap: null,
322
- correlationContext: _getFetchCorrelationContext(response)
323
- };
324
- if (_enableResponseHeaderTracking) {
325
- var responseHeaderMap_1 = {};
326
- response.headers.forEach(function (value, name) {
327
- if (_canIncludeHeaders(name)) {
328
- responseHeaderMap_1[name] = value;
329
- }
330
- });
331
- ajaxResponse.headerMap = responseHeaderMap_1;
332
- }
333
- return ajaxResponse;
338
+ if (!_disableFetchTracking) {
339
+ var fetchData_1 = callDetails.ctx().data;
340
+ if (fetchData_1) {
341
+ // Replace the result with the new promise from this code
342
+ callDetails.rslt = callDetails.rslt.then(function (response) {
343
+ _reportFetchMetrics(callDetails, (response || {}).status, input, response, fetchData_1, function () {
344
+ var ajaxResponse = {
345
+ statusText: response.statusText,
346
+ headerMap: null,
347
+ correlationContext: _getFetchCorrelationContext(response)
348
+ };
349
+ if (_enableResponseHeaderTracking) {
350
+ var responseHeaderMap_1 = {};
351
+ response.headers.forEach(function (value, name) {
352
+ if (_canIncludeHeaders(name)) {
353
+ responseHeaderMap_1[name] = value;
354
+ }
355
+ });
356
+ ajaxResponse.headerMap = responseHeaderMap_1;
357
+ }
358
+ return ajaxResponse;
359
+ });
360
+ return response;
361
+ })["catch"](function (reason) {
362
+ _reportFetchMetrics(callDetails, 0, input, null, fetchData_1, null, { error: reason.message });
363
+ throw reason;
334
364
  });
335
- return response;
336
- })["catch"](function (reason) {
337
- _reportFetchMetrics(callDetails, 0, input, null, fetchData, null, { error: reason.message });
338
- throw reason;
339
- });
365
+ }
340
366
  }
341
367
  },
342
368
  // Create an error callback to report any hook errors
@@ -369,20 +395,22 @@ var AjaxMonitor = /** @class */ (function (_super) {
369
395
  _addHook(InstrumentProto(target, funcName, callbacks));
370
396
  }
371
397
  function _instrumentXhr() {
372
- if (_supportsAjaxMonitoring(_self) && !_xhrInitialized) {
398
+ if (_supportsAjaxMonitoring(_self) && !_disableAjaxTracking && !_xhrInitialized) {
373
399
  // Instrument open
374
400
  _hookProto(XMLHttpRequest, "open", {
375
401
  ns: _evtNamespace,
376
402
  req: function (args, method, url, async) {
377
- var xhr = args.inst;
378
- var ajaxData = xhr[strAjaxData];
379
- if (!_isDisabledRequest(xhr, url) && _isMonitoredXhrInstance(xhr, true)) {
380
- if (!ajaxData || !ajaxData.xhrMonitoringState.openDone) {
381
- // Only create a single ajaxData (even when multiple AI instances are running)
382
- _openHandler(xhr, method, url, async);
403
+ if (!_disableAjaxTracking) {
404
+ var xhr = args.inst;
405
+ var ajaxData = xhr[strAjaxData];
406
+ if (!_isDisabledRequest(xhr, url) && _isMonitoredXhrInstance(xhr, true)) {
407
+ if (!ajaxData || !ajaxData.xhrMonitoringState.openDone) {
408
+ // Only create a single ajaxData (even when multiple AI instances are running)
409
+ _openHandler(xhr, method, url, async);
410
+ }
411
+ // always attach to the on ready state change (required for handling multiple instances)
412
+ _attachToOnReadyStateChange(xhr);
383
413
  }
384
- // always attach to the on ready state change (required for handling multiple instances)
385
- _attachToOnReadyStateChange(xhr);
386
414
  }
387
415
  },
388
416
  hkErr: _createErrorCallbackFunc(_self, _InternalMessageId.FailedMonitorAjaxOpen, "Failed to monitor XMLHttpRequest.open, monitoring data for this ajax call may be incorrect.")
@@ -391,41 +419,47 @@ var AjaxMonitor = /** @class */ (function (_super) {
391
419
  _hookProto(XMLHttpRequest, "send", {
392
420
  ns: _evtNamespace,
393
421
  req: function (args, context) {
394
- var xhr = args.inst;
395
- var ajaxData = xhr[strAjaxData];
396
- if (_isMonitoredXhrInstance(xhr) && !ajaxData.xhrMonitoringState.sendDone) {
397
- _createMarkId("xhr", ajaxData);
398
- ajaxData.requestSentTime = dateTimeUtilsNow();
399
- _self.includeCorrelationHeaders(ajaxData, undefined, undefined, xhr);
400
- ajaxData.xhrMonitoringState.sendDone = true;
422
+ if (!_disableAjaxTracking) {
423
+ var xhr = args.inst;
424
+ var ajaxData = xhr[strAjaxData];
425
+ if (_isMonitoredXhrInstance(xhr) && !ajaxData.xhrMonitoringState.sendDone) {
426
+ _createMarkId("xhr", ajaxData);
427
+ ajaxData.requestSentTime = dateTimeUtilsNow();
428
+ _self.includeCorrelationHeaders(ajaxData, undefined, undefined, xhr);
429
+ ajaxData.xhrMonitoringState.sendDone = true;
430
+ }
401
431
  }
402
432
  },
403
433
  hkErr: _createErrorCallbackFunc(_self, _InternalMessageId.FailedMonitorAjaxSend, "Failed to monitor XMLHttpRequest, monitoring data for this ajax call may be incorrect.")
404
434
  });
405
435
  // Instrument abort
406
436
  _hookProto(XMLHttpRequest, "abort", {
437
+ ns: _evtNamespace,
407
438
  req: function (args) {
408
- var xhr = args.inst;
409
- var ajaxData = xhr[strAjaxData];
410
- if (_isMonitoredXhrInstance(xhr) && !ajaxData.xhrMonitoringState.abortDone) {
411
- ajaxData.aborted = 1;
412
- ajaxData.xhrMonitoringState.abortDone = true;
439
+ if (!_disableAjaxTracking) {
440
+ var xhr = args.inst;
441
+ var ajaxData = xhr[strAjaxData];
442
+ if (_isMonitoredXhrInstance(xhr) && !ajaxData.xhrMonitoringState.abortDone) {
443
+ ajaxData.aborted = 1;
444
+ ajaxData.xhrMonitoringState.abortDone = true;
445
+ }
413
446
  }
414
447
  },
415
448
  hkErr: _createErrorCallbackFunc(_self, _InternalMessageId.FailedMonitorAjaxAbort, "Failed to monitor XMLHttpRequest.abort, monitoring data for this ajax call may be incorrect.")
416
449
  });
417
450
  // Instrument setRequestHeader
418
- if (_enableRequestHeaderTracking) {
419
- _hookProto(XMLHttpRequest, "setRequestHeader", {
420
- req: function (args, header, value) {
451
+ _hookProto(XMLHttpRequest, "setRequestHeader", {
452
+ ns: _evtNamespace,
453
+ req: function (args, header, value) {
454
+ if (!_disableAjaxTracking && _enableRequestHeaderTracking) {
421
455
  var xhr = args.inst;
422
456
  if (_isMonitoredXhrInstance(xhr) && _canIncludeHeaders(header)) {
423
457
  xhr[strAjaxData].requestHeaders[header] = value;
424
458
  }
425
- },
426
- hkErr: _createErrorCallbackFunc(_self, _InternalMessageId.FailedMonitorAjaxSetRequestHeader, "Failed to monitor XMLHttpRequest.setRequestHeader, monitoring data for this ajax call may be incorrect.")
427
- });
428
- }
459
+ }
460
+ },
461
+ hkErr: _createErrorCallbackFunc(_self, _InternalMessageId.FailedMonitorAjaxSetRequestHeader, "Failed to monitor XMLHttpRequest.setRequestHeader, monitoring data for this ajax call may be incorrect.")
462
+ });
429
463
  _xhrInitialized = true;
430
464
  }
431
465
  }