@microsoft/applicationinsights-core-js 2.7.5-nightly.2202-11 → 2.7.5-nightly.2203-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 (160) hide show
  1. package/browser/applicationinsights-core-js.integrity.json +9 -9
  2. package/browser/applicationinsights-core-js.js +1999 -793
  3. package/browser/applicationinsights-core-js.js.map +1 -1
  4. package/browser/applicationinsights-core-js.min.js +2 -2
  5. package/browser/applicationinsights-core-js.min.js.map +1 -1
  6. package/dist/applicationinsights-core-js.api.json +15679 -8835
  7. package/dist/applicationinsights-core-js.api.md +425 -48
  8. package/dist/applicationinsights-core-js.d.ts +784 -123
  9. package/dist/applicationinsights-core-js.js +1999 -793
  10. package/dist/applicationinsights-core-js.js.map +1 -1
  11. package/dist/applicationinsights-core-js.min.js +2 -2
  12. package/dist/applicationinsights-core-js.min.js.map +1 -1
  13. package/dist/applicationinsights-core-js.rollup.d.ts +784 -123
  14. package/dist-esm/JavaScriptSDK/AppInsightsCore.js +3 -69
  15. package/dist-esm/JavaScriptSDK/AppInsightsCore.js.map +1 -1
  16. package/dist-esm/JavaScriptSDK/BaseCore.js +496 -99
  17. package/dist-esm/JavaScriptSDK/BaseCore.js.map +1 -1
  18. package/dist-esm/JavaScriptSDK/BaseTelemetryPlugin.js +120 -21
  19. package/dist-esm/JavaScriptSDK/BaseTelemetryPlugin.js.map +1 -1
  20. package/dist-esm/JavaScriptSDK/ChannelController.js +202 -87
  21. package/dist-esm/JavaScriptSDK/ChannelController.js.map +1 -1
  22. package/dist-esm/JavaScriptSDK/Constants.js +1 -1
  23. package/dist-esm/JavaScriptSDK/CookieMgr.js +4 -4
  24. package/dist-esm/JavaScriptSDK/CookieMgr.js.map +1 -1
  25. package/dist-esm/JavaScriptSDK/CoreUtils.js +7 -148
  26. package/dist-esm/JavaScriptSDK/CoreUtils.js.map +1 -1
  27. package/dist-esm/JavaScriptSDK/DataCacheHelper.js +93 -0
  28. package/dist-esm/JavaScriptSDK/DataCacheHelper.js.map +1 -0
  29. package/dist-esm/JavaScriptSDK/DbgExtensionUtils.js +1 -1
  30. package/dist-esm/JavaScriptSDK/DiagnosticLogger.js +25 -12
  31. package/dist-esm/JavaScriptSDK/DiagnosticLogger.js.map +1 -1
  32. package/dist-esm/JavaScriptSDK/EnvUtils.js +13 -12
  33. package/dist-esm/JavaScriptSDK/EnvUtils.js.map +1 -1
  34. package/dist-esm/JavaScriptSDK/EventHelpers.js +477 -0
  35. package/dist-esm/JavaScriptSDK/EventHelpers.js.map +1 -0
  36. package/dist-esm/JavaScriptSDK/HelperFuncs.js +89 -86
  37. package/dist-esm/JavaScriptSDK/HelperFuncs.js.map +1 -1
  38. package/dist-esm/JavaScriptSDK/InstrumentHooks.js +3 -1
  39. package/dist-esm/JavaScriptSDK/InstrumentHooks.js.map +1 -1
  40. package/dist-esm/JavaScriptSDK/InternalConstants.js +28 -0
  41. package/dist-esm/JavaScriptSDK/InternalConstants.js.map +1 -0
  42. package/dist-esm/JavaScriptSDK/NotificationManager.js +37 -42
  43. package/dist-esm/JavaScriptSDK/NotificationManager.js.map +1 -1
  44. package/dist-esm/JavaScriptSDK/PerfManager.js +1 -1
  45. package/dist-esm/JavaScriptSDK/ProcessTelemetryContext.js +430 -119
  46. package/dist-esm/JavaScriptSDK/ProcessTelemetryContext.js.map +1 -1
  47. package/dist-esm/JavaScriptSDK/RandomHelper.js +30 -4
  48. package/dist-esm/JavaScriptSDK/RandomHelper.js.map +1 -1
  49. package/dist-esm/JavaScriptSDK/TelemetryHelpers.js +60 -14
  50. package/dist-esm/JavaScriptSDK/TelemetryHelpers.js.map +1 -1
  51. package/dist-esm/JavaScriptSDK/TelemetryInitializerPlugin.js +81 -0
  52. package/dist-esm/JavaScriptSDK/TelemetryInitializerPlugin.js.map +1 -0
  53. package/dist-esm/JavaScriptSDK/UnloadHandlerContainer.js +33 -0
  54. package/dist-esm/JavaScriptSDK/UnloadHandlerContainer.js.map +1 -0
  55. package/dist-esm/JavaScriptSDK.Enums/EventsDiscardedReason.js +1 -1
  56. package/dist-esm/JavaScriptSDK.Enums/LoggingEnums.js +90 -96
  57. package/dist-esm/JavaScriptSDK.Enums/LoggingEnums.js.map +1 -1
  58. package/dist-esm/JavaScriptSDK.Enums/SendRequestReason.js +1 -1
  59. package/dist-esm/JavaScriptSDK.Enums/TelemetryUnloadReason.js +8 -0
  60. package/dist-esm/JavaScriptSDK.Enums/TelemetryUnloadReason.js.map +1 -0
  61. package/dist-esm/JavaScriptSDK.Enums/TelemetryUpdateReason.js +8 -0
  62. package/dist-esm/JavaScriptSDK.Enums/TelemetryUpdateReason.js.map +1 -0
  63. package/dist-esm/JavaScriptSDK.Interfaces/IAppInsightsCore.js +1 -2
  64. package/dist-esm/JavaScriptSDK.Interfaces/IAppInsightsCore.js.map +1 -1
  65. package/dist-esm/JavaScriptSDK.Interfaces/IChannelControls.js +1 -1
  66. package/dist-esm/JavaScriptSDK.Interfaces/IConfiguration.js +1 -1
  67. package/dist-esm/JavaScriptSDK.Interfaces/ICookieMgr.js +1 -1
  68. package/dist-esm/JavaScriptSDK.Interfaces/IDbgExtension.js +1 -1
  69. package/dist-esm/JavaScriptSDK.Interfaces/IDiagnosticLogger.js +1 -1
  70. package/dist-esm/JavaScriptSDK.Interfaces/IInstrumentHooks.js +1 -1
  71. package/dist-esm/JavaScriptSDK.Interfaces/INotificationListener.js +1 -1
  72. package/dist-esm/JavaScriptSDK.Interfaces/INotificationManager.js +1 -1
  73. package/dist-esm/JavaScriptSDK.Interfaces/IPerfEvent.js +1 -1
  74. package/dist-esm/JavaScriptSDK.Interfaces/IPerfManager.js +1 -1
  75. package/dist-esm/JavaScriptSDK.Interfaces/IProcessTelemetryContext.js +1 -1
  76. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryInitializers.js +6 -0
  77. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryInitializers.js.map +1 -0
  78. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryItem.js +1 -1
  79. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryPlugin.js +1 -1
  80. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryPluginChain.js +1 -2
  81. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryPluginChain.js.map +1 -1
  82. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryUnloadState.js +8 -0
  83. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryUnloadState.js.map +1 -0
  84. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryUpdateState.js +8 -0
  85. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryUpdateState.js.map +1 -0
  86. package/dist-esm/JavaScriptSDK.Interfaces/IUnloadableComponent.js +6 -0
  87. package/dist-esm/JavaScriptSDK.Interfaces/IUnloadableComponent.js.map +1 -0
  88. package/dist-esm/applicationinsights-core-js.js +12 -7
  89. package/dist-esm/applicationinsights-core-js.js.map +1 -1
  90. package/package.json +2 -2
  91. package/src/JavaScriptSDK/AppInsightsCore.ts +2 -101
  92. package/src/JavaScriptSDK/BaseCore.ts +696 -120
  93. package/src/JavaScriptSDK/BaseTelemetryPlugin.ts +205 -31
  94. package/src/JavaScriptSDK/ChannelController.ts +242 -103
  95. package/src/JavaScriptSDK/CookieMgr.ts +7 -5
  96. package/src/JavaScriptSDK/CoreUtils.ts +8 -172
  97. package/src/JavaScriptSDK/DataCacheHelper.ts +106 -0
  98. package/src/JavaScriptSDK/DiagnosticLogger.ts +27 -12
  99. package/src/JavaScriptSDK/EnvUtils.ts +13 -12
  100. package/src/JavaScriptSDK/EventHelpers.ts +550 -0
  101. package/src/JavaScriptSDK/HelperFuncs.ts +123 -97
  102. package/src/JavaScriptSDK/InstrumentHooks.ts +4 -2
  103. package/src/JavaScriptSDK/InternalConstants.ts +26 -0
  104. package/src/JavaScriptSDK/NotificationManager.ts +34 -37
  105. package/src/JavaScriptSDK/PerfManager.ts +4 -7
  106. package/src/JavaScriptSDK/ProcessTelemetryContext.ts +543 -134
  107. package/src/JavaScriptSDK/RandomHelper.ts +35 -3
  108. package/src/JavaScriptSDK/TelemetryHelpers.ts +83 -21
  109. package/src/JavaScriptSDK/TelemetryInitializerPlugin.ts +111 -0
  110. package/src/JavaScriptSDK/UnloadHandlerContainer.ts +46 -0
  111. package/src/JavaScriptSDK.Enums/LoggingEnums.ts +184 -87
  112. package/src/JavaScriptSDK.Enums/SendRequestReason.ts +5 -0
  113. package/src/JavaScriptSDK.Enums/TelemetryUnloadReason.ts +27 -0
  114. package/src/JavaScriptSDK.Enums/TelemetryUpdateReason.ts +27 -0
  115. package/src/JavaScriptSDK.Interfaces/IAppInsightsCore.ts +82 -2
  116. package/src/JavaScriptSDK.Interfaces/IChannelControls.ts +16 -5
  117. package/src/JavaScriptSDK.Interfaces/IInstrumentHooks.ts +16 -6
  118. package/src/JavaScriptSDK.Interfaces/IProcessTelemetryContext.ts +94 -14
  119. package/src/JavaScriptSDK.Interfaces/ITelemetryInitializers.ts +16 -0
  120. package/src/JavaScriptSDK.Interfaces/ITelemetryPlugin.ts +28 -10
  121. package/src/JavaScriptSDK.Interfaces/ITelemetryPluginChain.ts +9 -11
  122. package/src/JavaScriptSDK.Interfaces/ITelemetryUnloadState.ts +10 -0
  123. package/src/JavaScriptSDK.Interfaces/ITelemetryUpdateState.ts +34 -0
  124. package/src/JavaScriptSDK.Interfaces/IUnloadableComponent.ts +17 -0
  125. package/types/JavaScriptSDK/AppInsightsCore.d.ts +0 -21
  126. package/types/JavaScriptSDK/BaseCore.d.ts +81 -3
  127. package/types/JavaScriptSDK/BaseTelemetryPlugin.d.ts +53 -10
  128. package/types/JavaScriptSDK/ChannelController.d.ts +16 -17
  129. package/types/JavaScriptSDK/CoreUtils.d.ts +1 -48
  130. package/types/JavaScriptSDK/DataCacheHelper.d.ts +13 -0
  131. package/types/JavaScriptSDK/DiagnosticLogger.d.ts +10 -0
  132. package/types/JavaScriptSDK/EventHelpers.d.ts +154 -0
  133. package/types/JavaScriptSDK/HelperFuncs.d.ts +33 -32
  134. package/types/JavaScriptSDK/InternalConstants.d.ts +20 -0
  135. package/types/JavaScriptSDK/PerfManager.d.ts +1 -1
  136. package/types/JavaScriptSDK/ProcessTelemetryContext.d.ts +69 -6
  137. package/types/JavaScriptSDK/RandomHelper.d.ts +6 -0
  138. package/types/JavaScriptSDK/TelemetryHelpers.d.ts +23 -3
  139. package/types/JavaScriptSDK/TelemetryInitializerPlugin.d.ts +16 -0
  140. package/types/JavaScriptSDK/UnloadHandlerContainer.d.ts +11 -0
  141. package/types/JavaScriptSDK.Enums/LoggingEnums.d.ts +91 -2
  142. package/types/JavaScriptSDK.Enums/SendRequestReason.d.ts +4 -0
  143. package/types/JavaScriptSDK.Enums/TelemetryUnloadReason.d.ts +21 -0
  144. package/types/JavaScriptSDK.Enums/TelemetryUpdateReason.d.ts +20 -0
  145. package/types/JavaScriptSDK.Interfaces/IAppInsightsCore.d.ts +72 -1
  146. package/types/JavaScriptSDK.Interfaces/IChannelControls.d.ts +16 -5
  147. package/types/JavaScriptSDK.Interfaces/IInstrumentHooks.d.ts +9 -0
  148. package/types/JavaScriptSDK.Interfaces/IProcessTelemetryContext.d.ts +82 -11
  149. package/types/JavaScriptSDK.Interfaces/ITelemetryInitializers.d.ts +13 -0
  150. package/types/JavaScriptSDK.Interfaces/ITelemetryPlugin.d.ts +25 -8
  151. package/types/JavaScriptSDK.Interfaces/ITelemetryPluginChain.d.ts +9 -10
  152. package/types/JavaScriptSDK.Interfaces/ITelemetryUnloadState.d.ts +6 -0
  153. package/types/JavaScriptSDK.Interfaces/ITelemetryUpdateState.d.ts +22 -0
  154. package/types/JavaScriptSDK.Interfaces/IUnloadableComponent.d.ts +13 -0
  155. package/types/applicationinsights-core-js.d.ts +18 -9
  156. package/types/tsdoc-metadata.json +1 -1
  157. package/dist-esm/JavaScriptSDK/TelemetryPluginChain.js +0 -76
  158. package/dist-esm/JavaScriptSDK/TelemetryPluginChain.js.map +0 -1
  159. package/src/JavaScriptSDK/TelemetryPluginChain.ts +0 -120
  160. package/types/JavaScriptSDK/TelemetryPluginChain.d.ts +0 -32
@@ -0,0 +1,106 @@
1
+ // Copyright (c) Microsoft Corporation. All rights reserved.
2
+ // Licensed under the MIT License.
3
+
4
+ import { ObjDefineProperty } from "@microsoft/applicationinsights-shims";
5
+ import { normalizeJsName } from "./HelperFuncs";
6
+ import { newId } from "./RandomHelper";
7
+
8
+ const _objDefineProperty = ObjDefineProperty;
9
+
10
+ const version = "2.7.5-nightly.2203-03";
11
+ let instanceName = "." + newId(6);
12
+ let _dataUid = 0;
13
+
14
+ export interface IDataCache {
15
+ id: string;
16
+ accept: (target: any) => boolean,
17
+ get: <T>(target: any, name: string, defValue?: T, addDefault?: boolean) => T;
18
+ kill: (target: any, name: string) => void;
19
+ }
20
+
21
+ function _createAccessor<T>(target: any, prop: string, value: T): boolean {
22
+ if (_objDefineProperty) {
23
+ try {
24
+ _objDefineProperty(target, prop, {
25
+ value: value,
26
+ enumerable: false,
27
+ configurable: true
28
+ });
29
+ return true;
30
+ } catch (e) {
31
+ // IE8 Defines a defineProperty on Object but it's only supported for DOM elements so it will throw
32
+ // We will just ignore this here.
33
+ }
34
+ }
35
+
36
+ return false;
37
+ }
38
+
39
+ // Accepts only:
40
+ // - Node
41
+ // - Node.ELEMENT_NODE
42
+ // - Node.DOCUMENT_NODE
43
+ // - Object
44
+ // - Any
45
+ function _canAcceptData(target: any) {
46
+ return target.nodeType === 1 || target.nodeType === 9 || !( +target.nodeType );
47
+ }
48
+
49
+ function _getCache(data: IDataCache, target: Node) {
50
+ let theCache = target[data.id];
51
+ if (!theCache) {
52
+ theCache = {};
53
+
54
+ try {
55
+ if (_canAcceptData(target)) {
56
+ if (!_createAccessor(target, data.id, theCache)) {
57
+ // Environment doesn't support accessor, so just use direct assignment
58
+ target[data.id] = theCache;
59
+ }
60
+ }
61
+ } catch (e) {
62
+ // Not all environments allow extending all objects, so just ignore the cache in those cases
63
+ }
64
+ }
65
+
66
+ return theCache;
67
+ }
68
+
69
+ export function createUniqueNamespace(name: string, includeVersion: boolean = false): string {
70
+ return normalizeJsName(name + (_dataUid++) + (includeVersion ? "." + version : "") + instanceName);
71
+ }
72
+
73
+ export function createElmNodeData(name?: string) {
74
+
75
+ let data = {
76
+ id: createUniqueNamespace("_aiData-" + (name || "") + "." + version),
77
+ accept: function (target: any) {
78
+ return _canAcceptData(target);
79
+ },
80
+ get: function <T>(target: any, name: string, defValue?: T, addDefault?: boolean): T {
81
+ let theCache = target[data.id];
82
+ if (!theCache) {
83
+ if (addDefault) {
84
+ // Side effect is adds the cache
85
+ theCache = _getCache(data, target);
86
+ theCache[normalizeJsName(name)] = defValue;
87
+ }
88
+
89
+ return defValue;
90
+ }
91
+
92
+ return theCache[normalizeJsName(name)];
93
+ },
94
+ kill: function(target: any, name: string) {
95
+ if (target && target[name]) {
96
+ try {
97
+ delete target[name];
98
+ } catch (e) {
99
+ // Just cleaning up, so if this fails -- ignore
100
+ }
101
+ }
102
+ }
103
+ };
104
+
105
+ return data;
106
+ }
@@ -2,13 +2,14 @@
2
2
  // Licensed under the MIT License.
3
3
  "use strict"
4
4
  import { IConfiguration } from "../JavaScriptSDK.Interfaces/IConfiguration"
5
- import { _InternalMessageId, LoggingSeverity } from "../JavaScriptSDK.Enums/LoggingEnums";
5
+ import { _InternalMessageId, _eInternalMessageId, LoggingSeverity, eLoggingSeverity } from "../JavaScriptSDK.Enums/LoggingEnums";
6
6
  import { IDiagnosticLogger } from "../JavaScriptSDK.Interfaces/IDiagnosticLogger";
7
7
  import { hasJSON, getJSON, getConsole } from "./EnvUtils";
8
8
  import dynamicProto from "@microsoft/dynamicproto-js";
9
9
  import { isFunction, isNullOrUndefined, isUndefined } from "./HelperFuncs";
10
10
  import { IAppInsightsCore } from "../JavaScriptSDK.Interfaces/IAppInsightsCore";
11
11
  import { getDebugExt } from "./DbgExtensionUtils";
12
+ import { strEmpty } from "./InternalConstants";
12
13
 
13
14
  /**
14
15
  * For user non actionable traces use AI Internal prefix.
@@ -30,10 +31,10 @@ const strWarnToConsole = "warnToConsole";
30
31
 
31
32
  function _sanitizeDiagnosticText(text: string) {
32
33
  if (text) {
33
- return "\"" + text.replace(/\"/g, "") + "\"";
34
+ return "\"" + text.replace(/\"/g, strEmpty) + "\"";
34
35
  }
35
36
 
36
- return "";
37
+ return strEmpty;
37
38
  }
38
39
 
39
40
  function _logToConsole(func: string, message: string) {
@@ -64,14 +65,14 @@ export class _InternalLogMessage{
64
65
  (isUserAct ? AiUserActionablePrefix : AiNonUserActionablePrefix) +
65
66
  msgId;
66
67
 
67
- let strProps:string = "";
68
+ let strProps:string = strEmpty;
68
69
  if (hasJSON()) {
69
70
  strProps = getJSON().stringify(properties);
70
71
  }
71
72
 
72
73
  const diagnosticText =
73
- (msg ? " message:" + _sanitizeDiagnosticText(msg) : "") +
74
- (properties ? " props:" + _sanitizeDiagnosticText(strProps) : "");
74
+ (msg ? " message:" + _sanitizeDiagnosticText(msg) : strEmpty) +
75
+ (properties ? " props:" + _sanitizeDiagnosticText(strProps) : strEmpty);
75
76
 
76
77
  _self.message += diagnosticText;
77
78
  }
@@ -125,7 +126,7 @@ export class DiagnosticLogger implements IDiagnosticLogger {
125
126
  throw message;
126
127
  } else {
127
128
  // Get the logging function and fallback to warnToConsole of for some reason errorToConsole doesn't exist
128
- let logFunc = severity === LoggingSeverity.CRITICAL ? strErrorToConsole : strWarnToConsole;
129
+ let logFunc = severity === eLoggingSeverity.CRITICAL ? strErrorToConsole : strWarnToConsole;
129
130
 
130
131
  if (!isUndefined(message.message)) {
131
132
  const logLevel = _self.consoleLoggingLevel();
@@ -146,7 +147,7 @@ export class DiagnosticLogger implements IDiagnosticLogger {
146
147
 
147
148
  _self.logInternalMessage(severity, message);
148
149
  } else {
149
- _debugExtMsg("throw" + (severity === LoggingSeverity.CRITICAL ? "Critical" : "Warning"), message);
150
+ _debugExtMsg("throw" + (severity === eLoggingSeverity.CRITICAL ? "Critical" : "Warning"), message);
150
151
  }
151
152
  }
152
153
  }
@@ -164,7 +165,7 @@ export class DiagnosticLogger implements IDiagnosticLogger {
164
165
  * This will write an error to the console if possible
165
166
  * @param message {string} - The error message
166
167
  */
167
- _self.errorToConsole = (message: string) => {
168
+ _self.errorToConsole = (message: string) => {
168
169
  _logToConsole("error", message);
169
170
  _debugExtMsg("error", message);
170
171
  }
@@ -203,15 +204,15 @@ export class DiagnosticLogger implements IDiagnosticLogger {
203
204
  if (severity <= _self.telemetryLoggingLevel()) {
204
205
  _self.queue.push(message);
205
206
  _messageCount++;
206
- _debugExtMsg((severity === LoggingSeverity.CRITICAL ? "error" : "warn"), message);
207
+ _debugExtMsg((severity === eLoggingSeverity.CRITICAL ? "error" : "warn"), message);
207
208
  }
208
209
 
209
210
  // When throttle limit reached, send a special event
210
211
  if (_messageCount === _self.maxInternalMessageLimit()) {
211
212
  const throttleLimitMessage = "Internal events throttle limit per PageView reached for this app.";
212
- const throttleMessage = new _InternalLogMessage(_InternalMessageId.MessageLimitPerPVExceeded, throttleLimitMessage, false);
213
+ const throttleMessage = new _InternalLogMessage(_eInternalMessageId.MessageLimitPerPVExceeded, throttleLimitMessage, false);
213
214
  _self.queue.push(throttleMessage);
214
- if (severity === LoggingSeverity.CRITICAL) {
215
+ if (severity === eLoggingSeverity.CRITICAL) {
215
216
  _self.errorToConsole(throttleLimitMessage);
216
217
  } else {
217
218
  _self.warnToConsole(throttleLimitMessage);
@@ -319,3 +320,17 @@ export class DiagnosticLogger implements IDiagnosticLogger {
319
320
  // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging
320
321
  }
321
322
  }
323
+
324
+ /**
325
+ * This is a helper method which will call throwInternal on the passed logger, will throw exceptions in
326
+ * debug mode or attempt to log the error as a console warning. This helper is provided mostly to better
327
+ * support minification as logger.throwInternal() will not compress the publish "throwInternal" used throughout
328
+ * the code.
329
+ * @param logger - The Diagnostic Logger instance to use.
330
+ * @param severity {LoggingSeverity} - The severity of the log message
331
+ * @param message {_InternalLogMessage} - The log message.
332
+ */
333
+ export function _throwInternal(logger: IDiagnosticLogger, severity: LoggingSeverity, msgId: _InternalMessageId, msg: string, properties?: Object, isUserAct = false) {
334
+ (logger || new DiagnosticLogger()).throwInternal(severity, msgId, msg, properties, isUserAct);
335
+ }
336
+
@@ -5,6 +5,7 @@
5
5
  import {
6
6
  getGlobal, strShimUndefined, strShimObject, strShimPrototype
7
7
  } from "@microsoft/applicationinsights-shims";
8
+ import { strEmpty } from "./InternalConstants";
8
9
  import { isString, isUndefined, strContains } from "./HelperFuncs";
9
10
 
10
11
  // TypeScript removed this interface so we need to declare the global so we can check for it's existence.
@@ -31,6 +32,7 @@ const strMsCrypto = "msCrypto";
31
32
  const strReactNative = "ReactNative";
32
33
  const strMsie = "msie";
33
34
  const strTrident = "trident/";
35
+ const strXMLHttpRequest = "XMLHttpRequest";
34
36
 
35
37
  let _isTrident: boolean = null;
36
38
  let _navUserAgentCheck: string = null;
@@ -295,7 +297,7 @@ export function isIE() {
295
297
  if (nav && (nav.userAgent !== _navUserAgentCheck || _isTrident === null)) {
296
298
  // Added to support test mocking of the user agent
297
299
  _navUserAgentCheck = nav.userAgent;
298
- let userAgent = (_navUserAgentCheck || "").toLowerCase();
300
+ let userAgent = (_navUserAgentCheck || strEmpty).toLowerCase();
299
301
  _isTrident = (strContains(userAgent, strMsie) || strContains(userAgent, strTrident));
300
302
  }
301
303
 
@@ -308,10 +310,10 @@ export function isIE() {
308
310
  export function getIEVersion(userAgentStr: string = null): number {
309
311
  if (!userAgentStr) {
310
312
  let navigator = getNavigator() || ({} as Navigator);
311
- userAgentStr = navigator ? (navigator.userAgent || "").toLowerCase() : "";
313
+ userAgentStr = navigator ? (navigator.userAgent || strEmpty).toLowerCase() : strEmpty;
312
314
  }
313
315
 
314
- var ua = (userAgentStr || "").toLowerCase();
316
+ var ua = (userAgentStr || strEmpty).toLowerCase();
315
317
  // Also check for documentMode in case X-UA-Compatible meta tag was included in HTML.
316
318
  if (strContains(ua, strMsie)) {
317
319
  let doc = getDocument() || {} as Document;
@@ -331,7 +333,7 @@ export function getIEVersion(userAgentStr: string = null): number {
331
333
  */
332
334
  export function dumpObj(object: any): string {
333
335
  const objectTypeDump: string = Object[strShimPrototype].toString.call(object);
334
- let propertyValueDump: string = "";
336
+ let propertyValueDump: string = strEmpty;
335
337
  if (objectTypeDump === "[object Error]") {
336
338
  propertyValueDump = "{ stack: '" + object.stack + "', message: '" + object.message + "', name: '" + object.name + "'";
337
339
  } else if (hasJSON()) {
@@ -344,10 +346,10 @@ export function dumpObj(object: any): string {
344
346
  export function isSafari(userAgentStr ?: string) {
345
347
  if (!userAgentStr || !isString(userAgentStr)) {
346
348
  let navigator = getNavigator() || ({} as Navigator);
347
- userAgentStr = navigator ? (navigator.userAgent || "").toLowerCase() : "";
349
+ userAgentStr = navigator ? (navigator.userAgent || strEmpty).toLowerCase() : strEmpty;
348
350
  }
349
351
 
350
- var ua = (userAgentStr || "").toLowerCase();
352
+ var ua = (userAgentStr || strEmpty).toLowerCase();
351
353
  return (ua.indexOf("safari") >= 0);
352
354
  }
353
355
 
@@ -355,7 +357,7 @@ export function isSafari(userAgentStr ?: string) {
355
357
  * Checks if HTML5 Beacons are supported in the current environment.
356
358
  * @returns True if supported, false otherwise.
357
359
  */
358
- export function isBeaconsSupported(): boolean {
360
+ export function isBeaconsSupported(): boolean {
359
361
  if (_beaconsSupported === null) {
360
362
  _beaconsSupported = hasNavigator() && Boolean(getNavigator().sendBeacon);
361
363
  }
@@ -371,8 +373,7 @@ export function isSafari(userAgentStr ?: string) {
371
373
  export function isFetchSupported(withKeepAlive?: boolean): boolean {
372
374
  let isSupported = false;
373
375
  try {
374
- const fetchApi = getGlobalInst("fetch");
375
- isSupported = !!fetchApi;
376
+ isSupported = !!getGlobalInst("fetch");
376
377
  const request = getGlobalInst("Request");
377
378
  if (isSupported && withKeepAlive && request) {
378
379
  isSupported = _hasProperty(request, "keepalive");
@@ -386,9 +387,9 @@ export function isFetchSupported(withKeepAlive?: boolean): boolean {
386
387
 
387
388
  export function useXDomainRequest(): boolean | undefined {
388
389
  if (_useXDomainRequest === null) {
389
- _useXDomainRequest = (typeof XDomainRequest !== "undefined");
390
+ _useXDomainRequest = (typeof XDomainRequest !== strShimUndefined);
390
391
  if (_useXDomainRequest && isXhrSupported()) {
391
- _useXDomainRequest = _useXDomainRequest && !_hasProperty(getGlobalInst("XMLHttpRequest"), "withCredentials");
392
+ _useXDomainRequest = _useXDomainRequest && !_hasProperty(getGlobalInst(strXMLHttpRequest), "withCredentials");
392
393
  }
393
394
  }
394
395
 
@@ -402,7 +403,7 @@ export function useXDomainRequest(): boolean | undefined {
402
403
  export function isXhrSupported(): boolean {
403
404
  let isSupported = false;
404
405
  try {
405
- const xmlHttpRequest = getGlobalInst("XMLHttpRequest");
406
+ const xmlHttpRequest = getGlobalInst(strXMLHttpRequest);
406
407
  isSupported = !!xmlHttpRequest;
407
408
  } catch (e) {
408
409
  // Just Swallow any failure during availability checks