@microsoft/applicationinsights-core-js 2.8.0-nightly.2202-06 → 2.8.0-nightly.2204-04
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.
- package/browser/applicationinsights-core-js.integrity.json +9 -9
- package/browser/applicationinsights-core-js.js +1999 -793
- package/browser/applicationinsights-core-js.js.map +1 -1
- package/browser/applicationinsights-core-js.min.js +2 -2
- package/browser/applicationinsights-core-js.min.js.map +1 -1
- package/dist/applicationinsights-core-js.api.json +16363 -9167
- package/dist/applicationinsights-core-js.api.md +425 -48
- package/dist/applicationinsights-core-js.d.ts +784 -123
- package/dist/applicationinsights-core-js.js +1999 -793
- package/dist/applicationinsights-core-js.js.map +1 -1
- package/dist/applicationinsights-core-js.min.js +2 -2
- package/dist/applicationinsights-core-js.min.js.map +1 -1
- package/dist/applicationinsights-core-js.rollup.d.ts +784 -123
- package/dist-esm/JavaScriptSDK/AppInsightsCore.js +3 -69
- package/dist-esm/JavaScriptSDK/AppInsightsCore.js.map +1 -1
- package/dist-esm/JavaScriptSDK/BaseCore.js +496 -99
- package/dist-esm/JavaScriptSDK/BaseCore.js.map +1 -1
- package/dist-esm/JavaScriptSDK/BaseTelemetryPlugin.js +120 -21
- package/dist-esm/JavaScriptSDK/BaseTelemetryPlugin.js.map +1 -1
- package/dist-esm/JavaScriptSDK/ChannelController.js +202 -87
- package/dist-esm/JavaScriptSDK/ChannelController.js.map +1 -1
- package/dist-esm/JavaScriptSDK/Constants.js +1 -1
- package/dist-esm/JavaScriptSDK/CookieMgr.js +4 -4
- package/dist-esm/JavaScriptSDK/CookieMgr.js.map +1 -1
- package/dist-esm/JavaScriptSDK/CoreUtils.js +7 -148
- package/dist-esm/JavaScriptSDK/CoreUtils.js.map +1 -1
- package/dist-esm/JavaScriptSDK/DataCacheHelper.js +93 -0
- package/dist-esm/JavaScriptSDK/DataCacheHelper.js.map +1 -0
- package/dist-esm/JavaScriptSDK/DbgExtensionUtils.js +1 -1
- package/dist-esm/JavaScriptSDK/DiagnosticLogger.js +25 -12
- package/dist-esm/JavaScriptSDK/DiagnosticLogger.js.map +1 -1
- package/dist-esm/JavaScriptSDK/EnvUtils.js +13 -12
- package/dist-esm/JavaScriptSDK/EnvUtils.js.map +1 -1
- package/dist-esm/JavaScriptSDK/EventHelpers.js +477 -0
- package/dist-esm/JavaScriptSDK/EventHelpers.js.map +1 -0
- package/dist-esm/JavaScriptSDK/HelperFuncs.js +89 -86
- package/dist-esm/JavaScriptSDK/HelperFuncs.js.map +1 -1
- package/dist-esm/JavaScriptSDK/InstrumentHooks.js +3 -1
- package/dist-esm/JavaScriptSDK/InstrumentHooks.js.map +1 -1
- package/dist-esm/JavaScriptSDK/InternalConstants.js +28 -0
- package/dist-esm/JavaScriptSDK/InternalConstants.js.map +1 -0
- package/dist-esm/JavaScriptSDK/NotificationManager.js +37 -42
- package/dist-esm/JavaScriptSDK/NotificationManager.js.map +1 -1
- package/dist-esm/JavaScriptSDK/PerfManager.js +1 -1
- package/dist-esm/JavaScriptSDK/ProcessTelemetryContext.js +430 -119
- package/dist-esm/JavaScriptSDK/ProcessTelemetryContext.js.map +1 -1
- package/dist-esm/JavaScriptSDK/RandomHelper.js +30 -4
- package/dist-esm/JavaScriptSDK/RandomHelper.js.map +1 -1
- package/dist-esm/JavaScriptSDK/TelemetryHelpers.js +60 -14
- package/dist-esm/JavaScriptSDK/TelemetryHelpers.js.map +1 -1
- package/dist-esm/JavaScriptSDK/TelemetryInitializerPlugin.js +81 -0
- package/dist-esm/JavaScriptSDK/TelemetryInitializerPlugin.js.map +1 -0
- package/dist-esm/JavaScriptSDK/UnloadHandlerContainer.js +33 -0
- package/dist-esm/JavaScriptSDK/UnloadHandlerContainer.js.map +1 -0
- package/dist-esm/JavaScriptSDK.Enums/EventsDiscardedReason.js +1 -1
- package/dist-esm/JavaScriptSDK.Enums/LoggingEnums.js +90 -96
- package/dist-esm/JavaScriptSDK.Enums/LoggingEnums.js.map +1 -1
- package/dist-esm/JavaScriptSDK.Enums/SendRequestReason.js +1 -1
- package/dist-esm/JavaScriptSDK.Enums/TelemetryUnloadReason.js +8 -0
- package/dist-esm/JavaScriptSDK.Enums/TelemetryUnloadReason.js.map +1 -0
- package/dist-esm/JavaScriptSDK.Enums/TelemetryUpdateReason.js +8 -0
- package/dist-esm/JavaScriptSDK.Enums/TelemetryUpdateReason.js.map +1 -0
- package/dist-esm/JavaScriptSDK.Interfaces/IAppInsightsCore.js +1 -2
- package/dist-esm/JavaScriptSDK.Interfaces/IAppInsightsCore.js.map +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/IChannelControls.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/IConfiguration.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/ICookieMgr.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/IDbgExtension.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/IDiagnosticLogger.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/IInstrumentHooks.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/INotificationListener.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/INotificationManager.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/IPerfEvent.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/IPerfManager.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/IProcessTelemetryContext.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryInitializers.js +6 -0
- package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryInitializers.js.map +1 -0
- package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryItem.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryPlugin.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryPluginChain.js +1 -2
- package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryPluginChain.js.map +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryUnloadState.js +8 -0
- package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryUnloadState.js.map +1 -0
- package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryUpdateState.js +8 -0
- package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryUpdateState.js.map +1 -0
- package/dist-esm/JavaScriptSDK.Interfaces/IUnloadableComponent.js +6 -0
- package/dist-esm/JavaScriptSDK.Interfaces/IUnloadableComponent.js.map +1 -0
- package/dist-esm/applicationinsights-core-js.js +12 -7
- package/dist-esm/applicationinsights-core-js.js.map +1 -1
- package/package.json +2 -2
- package/src/JavaScriptSDK/AppInsightsCore.ts +2 -101
- package/src/JavaScriptSDK/BaseCore.ts +696 -120
- package/src/JavaScriptSDK/BaseTelemetryPlugin.ts +205 -31
- package/src/JavaScriptSDK/ChannelController.ts +242 -103
- package/src/JavaScriptSDK/CookieMgr.ts +7 -5
- package/src/JavaScriptSDK/CoreUtils.ts +8 -172
- package/src/JavaScriptSDK/DataCacheHelper.ts +106 -0
- package/src/JavaScriptSDK/DiagnosticLogger.ts +27 -12
- package/src/JavaScriptSDK/EnvUtils.ts +13 -12
- package/src/JavaScriptSDK/EventHelpers.ts +550 -0
- package/src/JavaScriptSDK/HelperFuncs.ts +123 -97
- package/src/JavaScriptSDK/InstrumentHooks.ts +4 -2
- package/src/JavaScriptSDK/InternalConstants.ts +26 -0
- package/src/JavaScriptSDK/NotificationManager.ts +34 -37
- package/src/JavaScriptSDK/PerfManager.ts +4 -7
- package/src/JavaScriptSDK/ProcessTelemetryContext.ts +543 -134
- package/src/JavaScriptSDK/RandomHelper.ts +35 -3
- package/src/JavaScriptSDK/TelemetryHelpers.ts +83 -21
- package/src/JavaScriptSDK/TelemetryInitializerPlugin.ts +111 -0
- package/src/JavaScriptSDK/UnloadHandlerContainer.ts +46 -0
- package/src/JavaScriptSDK.Enums/LoggingEnums.ts +184 -87
- package/src/JavaScriptSDK.Enums/SendRequestReason.ts +5 -0
- package/src/JavaScriptSDK.Enums/TelemetryUnloadReason.ts +27 -0
- package/src/JavaScriptSDK.Enums/TelemetryUpdateReason.ts +27 -0
- package/src/JavaScriptSDK.Interfaces/IAppInsightsCore.ts +82 -2
- package/src/JavaScriptSDK.Interfaces/IChannelControls.ts +16 -5
- package/src/JavaScriptSDK.Interfaces/IInstrumentHooks.ts +16 -6
- package/src/JavaScriptSDK.Interfaces/IProcessTelemetryContext.ts +94 -14
- package/src/JavaScriptSDK.Interfaces/ITelemetryInitializers.ts +16 -0
- package/src/JavaScriptSDK.Interfaces/ITelemetryPlugin.ts +28 -10
- package/src/JavaScriptSDK.Interfaces/ITelemetryPluginChain.ts +9 -11
- package/src/JavaScriptSDK.Interfaces/ITelemetryUnloadState.ts +10 -0
- package/src/JavaScriptSDK.Interfaces/ITelemetryUpdateState.ts +34 -0
- package/src/JavaScriptSDK.Interfaces/IUnloadableComponent.ts +17 -0
- package/types/JavaScriptSDK/AppInsightsCore.d.ts +0 -21
- package/types/JavaScriptSDK/BaseCore.d.ts +81 -3
- package/types/JavaScriptSDK/BaseTelemetryPlugin.d.ts +53 -10
- package/types/JavaScriptSDK/ChannelController.d.ts +16 -17
- package/types/JavaScriptSDK/CoreUtils.d.ts +1 -48
- package/types/JavaScriptSDK/DataCacheHelper.d.ts +13 -0
- package/types/JavaScriptSDK/DiagnosticLogger.d.ts +10 -0
- package/types/JavaScriptSDK/EventHelpers.d.ts +154 -0
- package/types/JavaScriptSDK/HelperFuncs.d.ts +33 -32
- package/types/JavaScriptSDK/InternalConstants.d.ts +20 -0
- package/types/JavaScriptSDK/PerfManager.d.ts +1 -1
- package/types/JavaScriptSDK/ProcessTelemetryContext.d.ts +69 -6
- package/types/JavaScriptSDK/RandomHelper.d.ts +6 -0
- package/types/JavaScriptSDK/TelemetryHelpers.d.ts +23 -3
- package/types/JavaScriptSDK/TelemetryInitializerPlugin.d.ts +16 -0
- package/types/JavaScriptSDK/UnloadHandlerContainer.d.ts +11 -0
- package/types/JavaScriptSDK.Enums/LoggingEnums.d.ts +91 -2
- package/types/JavaScriptSDK.Enums/SendRequestReason.d.ts +4 -0
- package/types/JavaScriptSDK.Enums/TelemetryUnloadReason.d.ts +21 -0
- package/types/JavaScriptSDK.Enums/TelemetryUpdateReason.d.ts +20 -0
- package/types/JavaScriptSDK.Interfaces/IAppInsightsCore.d.ts +72 -1
- package/types/JavaScriptSDK.Interfaces/IChannelControls.d.ts +16 -5
- package/types/JavaScriptSDK.Interfaces/IInstrumentHooks.d.ts +9 -0
- package/types/JavaScriptSDK.Interfaces/IProcessTelemetryContext.d.ts +82 -11
- package/types/JavaScriptSDK.Interfaces/ITelemetryInitializers.d.ts +13 -0
- package/types/JavaScriptSDK.Interfaces/ITelemetryPlugin.d.ts +25 -8
- package/types/JavaScriptSDK.Interfaces/ITelemetryPluginChain.d.ts +9 -10
- package/types/JavaScriptSDK.Interfaces/ITelemetryUnloadState.d.ts +6 -0
- package/types/JavaScriptSDK.Interfaces/ITelemetryUpdateState.d.ts +22 -0
- package/types/JavaScriptSDK.Interfaces/IUnloadableComponent.d.ts +13 -0
- package/types/applicationinsights-core-js.d.ts +18 -9
- package/types/tsdoc-metadata.json +1 -1
- package/dist-esm/JavaScriptSDK/TelemetryPluginChain.js +0 -76
- package/dist-esm/JavaScriptSDK/TelemetryPluginChain.js.map +0 -1
- package/src/JavaScriptSDK/TelemetryPluginChain.ts +0 -120
- 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.8.0-nightly.2204-04";
|
|
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 ===
|
|
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 ===
|
|
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
|
-
|
|
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 ===
|
|
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(
|
|
213
|
+
const throttleMessage = new _InternalLogMessage(_eInternalMessageId.MessageLimitPerPVExceeded, throttleLimitMessage, false);
|
|
213
214
|
_self.queue.push(throttleMessage);
|
|
214
|
-
if (severity ===
|
|
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 ||
|
|
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 ||
|
|
313
|
+
userAgentStr = navigator ? (navigator.userAgent || strEmpty).toLowerCase() : strEmpty;
|
|
312
314
|
}
|
|
313
315
|
|
|
314
|
-
var ua = (userAgentStr ||
|
|
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 ||
|
|
349
|
+
userAgentStr = navigator ? (navigator.userAgent || strEmpty).toLowerCase() : strEmpty;
|
|
348
350
|
}
|
|
349
351
|
|
|
350
|
-
var ua = (userAgentStr ||
|
|
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
|
-
|
|
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
|
-
|
|
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 !==
|
|
390
|
+
_useXDomainRequest = (typeof XDomainRequest !== strShimUndefined);
|
|
390
391
|
if (_useXDomainRequest && isXhrSupported()) {
|
|
391
|
-
_useXDomainRequest = _useXDomainRequest && !_hasProperty(getGlobalInst(
|
|
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(
|
|
406
|
+
const xmlHttpRequest = getGlobalInst(strXMLHttpRequest);
|
|
406
407
|
isSupported = !!xmlHttpRequest;
|
|
407
408
|
} catch (e) {
|
|
408
409
|
// Just Swallow any failure during availability checks
|