@microsoft/applicationinsights-core-js 2.8.0-beta.2203-02 → 2.8.0-beta.2203-05
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 +319 -29
- 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 +2458 -250
- package/dist/applicationinsights-core-js.api.md +87 -7
- package/dist/applicationinsights-core-js.d.ts +192 -7
- package/dist/applicationinsights-core-js.js +319 -29
- 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 +195 -10
- package/dist-esm/JavaScriptSDK/AppInsightsCore.js +1 -1
- package/dist-esm/JavaScriptSDK/BaseCore.js +205 -13
- package/dist-esm/JavaScriptSDK/BaseCore.js.map +1 -1
- package/dist-esm/JavaScriptSDK/BaseTelemetryPlugin.js +37 -3
- package/dist-esm/JavaScriptSDK/BaseTelemetryPlugin.js.map +1 -1
- package/dist-esm/JavaScriptSDK/ChannelController.js +14 -2
- package/dist-esm/JavaScriptSDK/ChannelController.js.map +1 -1
- package/dist-esm/JavaScriptSDK/Constants.js +1 -1
- package/dist-esm/JavaScriptSDK/CookieMgr.js +3 -2
- package/dist-esm/JavaScriptSDK/CookieMgr.js.map +1 -1
- package/dist-esm/JavaScriptSDK/CoreUtils.js +1 -1
- package/dist-esm/JavaScriptSDK/DataCacheHelper.js +1 -1
- package/dist-esm/JavaScriptSDK/DbgExtensionUtils.js +1 -1
- package/dist-esm/JavaScriptSDK/DiagnosticLogger.js +14 -1
- package/dist-esm/JavaScriptSDK/DiagnosticLogger.js.map +1 -1
- package/dist-esm/JavaScriptSDK/EnvUtils.js +1 -1
- package/dist-esm/JavaScriptSDK/EventHelpers.js +18 -13
- package/dist-esm/JavaScriptSDK/EventHelpers.js.map +1 -1
- package/dist-esm/JavaScriptSDK/HelperFuncs.js +3 -13
- package/dist-esm/JavaScriptSDK/HelperFuncs.js.map +1 -1
- package/dist-esm/JavaScriptSDK/InstrumentHooks.js +1 -1
- package/dist-esm/JavaScriptSDK/InternalConstants.js +1 -1
- package/dist-esm/JavaScriptSDK/NotificationManager.js +1 -1
- package/dist-esm/JavaScriptSDK/PerfManager.js +1 -1
- package/dist-esm/JavaScriptSDK/ProcessTelemetryContext.js +71 -6
- package/dist-esm/JavaScriptSDK/ProcessTelemetryContext.js.map +1 -1
- package/dist-esm/JavaScriptSDK/RandomHelper.js +1 -1
- package/dist-esm/JavaScriptSDK/TelemetryHelpers.js +1 -1
- package/dist-esm/JavaScriptSDK/TelemetryInitializerPlugin.js +3 -2
- package/dist-esm/JavaScriptSDK/TelemetryInitializerPlugin.js.map +1 -1
- 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 +1 -1
- package/dist-esm/JavaScriptSDK.Enums/SendRequestReason.js +1 -1
- package/dist-esm/JavaScriptSDK.Enums/TelemetryUnloadReason.js +1 -1
- 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 -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 +1 -1
- 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 -1
- package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryUnloadState.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryUpdateState.js +8 -0
- package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryUpdateState.js.map +1 -0
- package/dist-esm/applicationinsights-core-js.js +3 -2
- package/dist-esm/applicationinsights-core-js.js.map +1 -1
- package/package.json +1 -1
- package/src/JavaScriptSDK/BaseCore.ts +272 -14
- package/src/JavaScriptSDK/BaseTelemetryPlugin.ts +70 -4
- package/src/JavaScriptSDK/ChannelController.ts +18 -1
- package/src/JavaScriptSDK/CookieMgr.ts +3 -1
- package/src/JavaScriptSDK/DiagnosticLogger.ts +14 -0
- package/src/JavaScriptSDK/EventHelpers.ts +18 -12
- package/src/JavaScriptSDK/HelperFuncs.ts +4 -2
- package/src/JavaScriptSDK/ProcessTelemetryContext.ts +87 -10
- package/src/JavaScriptSDK/TelemetryInitializerPlugin.ts +3 -1
- package/src/JavaScriptSDK/UnloadHandlerContainer.ts +46 -0
- package/src/JavaScriptSDK.Enums/SendRequestReason.ts +5 -0
- package/src/JavaScriptSDK.Enums/TelemetryUnloadReason.ts +3 -3
- package/src/JavaScriptSDK.Enums/TelemetryUpdateReason.ts +27 -0
- package/src/JavaScriptSDK.Interfaces/IAppInsightsCore.ts +29 -2
- package/src/JavaScriptSDK.Interfaces/IInstrumentHooks.ts +11 -6
- package/src/JavaScriptSDK.Interfaces/IProcessTelemetryContext.ts +25 -2
- package/src/JavaScriptSDK.Interfaces/ITelemetryPlugin.ts +12 -1
- package/src/JavaScriptSDK.Interfaces/ITelemetryUpdateState.ts +34 -0
- package/types/JavaScriptSDK/BaseCore.d.ts +27 -2
- package/types/JavaScriptSDK/BaseTelemetryPlugin.d.ts +23 -1
- package/types/JavaScriptSDK/DiagnosticLogger.d.ts +10 -0
- package/types/JavaScriptSDK/EventHelpers.d.ts +4 -2
- package/types/JavaScriptSDK/HelperFuncs.d.ts +2 -1
- package/types/JavaScriptSDK/ProcessTelemetryContext.d.ts +11 -1
- package/types/JavaScriptSDK/UnloadHandlerContainer.d.ts +11 -0
- package/types/JavaScriptSDK.Enums/SendRequestReason.d.ts +4 -0
- package/types/JavaScriptSDK.Enums/TelemetryUnloadReason.d.ts +13 -1
- package/types/JavaScriptSDK.Enums/TelemetryUpdateReason.d.ts +20 -0
- package/types/JavaScriptSDK.Interfaces/IAppInsightsCore.d.ts +24 -1
- package/types/JavaScriptSDK.Interfaces/IInstrumentHooks.d.ts +5 -0
- package/types/JavaScriptSDK.Interfaces/IProcessTelemetryContext.d.ts +23 -2
- package/types/JavaScriptSDK.Interfaces/ITelemetryPlugin.d.ts +11 -1
- package/types/JavaScriptSDK.Interfaces/ITelemetryUpdateState.d.ts +22 -0
- package/types/applicationinsights-core-js.d.ts +6 -2
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "applicationinsights-core-js",
|
|
3
|
-
"version": "2.8.0-beta.2203-
|
|
3
|
+
"version": "2.8.0-beta.2203-05",
|
|
4
4
|
"ext": {
|
|
5
5
|
"@js": {
|
|
6
6
|
"file": "applicationinsights-core-js.js",
|
|
7
7
|
"type": "text/javascript; charset=utf-8",
|
|
8
|
-
"integrity": "sha256-
|
|
8
|
+
"integrity": "sha256-wwsOnWPlKDX1L/bQvuWMbGDNTi6jD7K2bfGR1UTeADw= sha384-9TcrrKxrXrXW1ruKfWdwQV2lImidGwuSmqYYQjYHx0CQaLbYEPlrYPyfzV0pPiZY sha512-e3RoSUZrrl6B91w5DQ+J1C8Ob14L/ASU4Lel3Nt48UN4K60GrWERXysKoC/iON4/yxWYmhE+ZMBhhjc6llaznA==",
|
|
9
9
|
"hashes": {
|
|
10
|
-
"sha256": "
|
|
11
|
-
"sha384": "
|
|
12
|
-
"sha512": "
|
|
10
|
+
"sha256": "wwsOnWPlKDX1L/bQvuWMbGDNTi6jD7K2bfGR1UTeADw=",
|
|
11
|
+
"sha384": "9TcrrKxrXrXW1ruKfWdwQV2lImidGwuSmqYYQjYHx0CQaLbYEPlrYPyfzV0pPiZY",
|
|
12
|
+
"sha512": "e3RoSUZrrl6B91w5DQ+J1C8Ob14L/ASU4Lel3Nt48UN4K60GrWERXysKoC/iON4/yxWYmhE+ZMBhhjc6llaznA=="
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
15
|
"@min.js": {
|
|
16
16
|
"file": "applicationinsights-core-js.min.js",
|
|
17
17
|
"type": "text/javascript; charset=utf-8",
|
|
18
|
-
"integrity": "sha256-
|
|
18
|
+
"integrity": "sha256-IEZgizqf96TblrFGuOMOXrHyltVZVjObZSRAZ8DsZ0o= sha384-/zno7jGSmwh7zEA8odm485wwBq9BELOSA0gHbuApMB03xp6UU5Uqb6FeCBPtmTE9 sha512-7PnFbJi0AqDFa4usb7hMQvApEx87434uFZPiFA4nPRulUgQK938jL8K7sKFkrx6WLv2vneQ+KrjgMXpi4xBmTQ==",
|
|
19
19
|
"hashes": {
|
|
20
|
-
"sha256": "
|
|
21
|
-
"sha384": "
|
|
22
|
-
"sha512": "
|
|
20
|
+
"sha256": "IEZgizqf96TblrFGuOMOXrHyltVZVjObZSRAZ8DsZ0o=",
|
|
21
|
+
"sha384": "/zno7jGSmwh7zEA8odm485wwBq9BELOSA0gHbuApMB03xp6UU5Uqb6FeCBPtmTE9",
|
|
22
|
+
"sha512": "7PnFbJi0AqDFa4usb7hMQvApEx87434uFZPiFA4nPRulUgQK938jL8K7sKFkrx6WLv2vneQ+KrjgMXpi4xBmTQ=="
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Application Insights JavaScript SDK - Core, 2.8.0-beta.2203-
|
|
2
|
+
* Application Insights JavaScript SDK - Core, 2.8.0-beta.2203-05
|
|
3
3
|
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
4
|
*/
|
|
5
5
|
(function (global, factory) {
|
|
@@ -347,6 +347,7 @@
|
|
|
347
347
|
var strIsInitialized = "isInitialized";
|
|
348
348
|
var strTeardown = "teardown";
|
|
349
349
|
var strCore = "core";
|
|
350
|
+
var strUpdate = "update";
|
|
350
351
|
var strDisabled = "disabled";
|
|
351
352
|
var strDoTeardown = "_doTeardown";
|
|
352
353
|
var strProcessNext = "processNext";
|
|
@@ -833,7 +834,7 @@
|
|
|
833
834
|
objForEachKey(values, function (field, value) {
|
|
834
835
|
enumClass[field] = value;
|
|
835
836
|
if (!isUndefined(enumClass[value])) {
|
|
836
|
-
throwError("
|
|
837
|
+
throwError("[" + value + "] exists for " + field);
|
|
837
838
|
}
|
|
838
839
|
enumClass[value] = field;
|
|
839
840
|
});
|
|
@@ -845,7 +846,7 @@
|
|
|
845
846
|
}
|
|
846
847
|
return theObject;
|
|
847
848
|
}
|
|
848
|
-
function objExtend(
|
|
849
|
+
function objExtend(obj1, obj2, obj3, obj4, obj5, obj6) {
|
|
849
850
|
var theArgs = arguments;
|
|
850
851
|
var extended = theArgs[0] || {};
|
|
851
852
|
var argLen = theArgs.length;
|
|
@@ -1303,6 +1304,10 @@
|
|
|
1303
1304
|
}
|
|
1304
1305
|
return DiagnosticLogger;
|
|
1305
1306
|
}());
|
|
1307
|
+
function _throwInternal(logger, severity, msgId, msg, properties, isUserAct) {
|
|
1308
|
+
if (isUserAct === void 0) { isUserAct = false; }
|
|
1309
|
+
(logger || new DiagnosticLogger()).throwInternal(severity, msgId, msg, properties, isUserAct);
|
|
1310
|
+
}
|
|
1306
1311
|
|
|
1307
1312
|
var strExecutionContextKey = "ctx";
|
|
1308
1313
|
var _defaultPerfManager = null;
|
|
@@ -1676,8 +1681,11 @@
|
|
|
1676
1681
|
return createTelemetryProxyChain([startAt], config, core);
|
|
1677
1682
|
}
|
|
1678
1683
|
function _createInternalContext(telemetryChain, config, core, startAt) {
|
|
1679
|
-
var _nextProxy =
|
|
1684
|
+
var _nextProxy = null;
|
|
1680
1685
|
var _onComplete = [];
|
|
1686
|
+
if (startAt !== null) {
|
|
1687
|
+
_nextProxy = startAt ? _getNextProxyStart(telemetryChain, config, core, startAt) : telemetryChain;
|
|
1688
|
+
}
|
|
1681
1689
|
var context = {
|
|
1682
1690
|
_next: _moveNext,
|
|
1683
1691
|
ctx: {
|
|
@@ -1727,7 +1735,7 @@
|
|
|
1727
1735
|
completeDetails.func.call(completeDetails.self, completeDetails.args);
|
|
1728
1736
|
}
|
|
1729
1737
|
catch (e) {
|
|
1730
|
-
core.logger
|
|
1738
|
+
_throwInternal(core.logger, 2 , 73 , "Unexpected Exception during onComplete - " + dumpObj(e));
|
|
1731
1739
|
}
|
|
1732
1740
|
});
|
|
1733
1741
|
_onComplete = [];
|
|
@@ -1826,6 +1834,27 @@
|
|
|
1826
1834
|
context.createNew = _createNew;
|
|
1827
1835
|
return context;
|
|
1828
1836
|
}
|
|
1837
|
+
function createProcessTelemetryUpdateContext(telemetryChain, config, core, startAt) {
|
|
1838
|
+
var internalContext = _createInternalContext(telemetryChain, config, core, startAt);
|
|
1839
|
+
var context = internalContext.ctx;
|
|
1840
|
+
function _processNext(updateState) {
|
|
1841
|
+
return context.iterate(function (plugin) {
|
|
1842
|
+
if (isFunction(plugin[strUpdate])) {
|
|
1843
|
+
plugin[strUpdate](context, updateState);
|
|
1844
|
+
}
|
|
1845
|
+
});
|
|
1846
|
+
}
|
|
1847
|
+
function _createNew(plugins, startAt) {
|
|
1848
|
+
if (plugins === void 0) { plugins = null; }
|
|
1849
|
+
if (isArray(plugins)) {
|
|
1850
|
+
plugins = createTelemetryProxyChain(plugins, config, core, startAt);
|
|
1851
|
+
}
|
|
1852
|
+
return createProcessTelemetryUpdateContext(plugins || context.getNext(), config, core, startAt);
|
|
1853
|
+
}
|
|
1854
|
+
context.processNext = _processNext;
|
|
1855
|
+
context.createNew = _createNew;
|
|
1856
|
+
return context;
|
|
1857
|
+
}
|
|
1829
1858
|
function createTelemetryProxyChain(plugins, config, core, startAt) {
|
|
1830
1859
|
var firstProxy = null;
|
|
1831
1860
|
var add = startAt ? false : true;
|
|
@@ -1872,6 +1901,7 @@
|
|
|
1872
1901
|
},
|
|
1873
1902
|
processTelemetry: _processTelemetry,
|
|
1874
1903
|
unload: _unloadPlugin,
|
|
1904
|
+
update: _updatePlugin,
|
|
1875
1905
|
_id: chainId,
|
|
1876
1906
|
_setNext: function (nextPlugin) {
|
|
1877
1907
|
nextProxy = nextPlugin;
|
|
@@ -1911,7 +1941,7 @@
|
|
|
1911
1941
|
hasRun = true;
|
|
1912
1942
|
}
|
|
1913
1943
|
if (!nextProxy || !hasNextRun) {
|
|
1914
|
-
itemCtx.diagLog()
|
|
1944
|
+
_throwInternal(itemCtx.diagLog(), 1 , 73 , "Plugin [" + plugin.identifier + "] failed during " + name + " - " + dumpObj(error) + ", run flags: " + dumpObj(hasRunContext));
|
|
1915
1945
|
}
|
|
1916
1946
|
}
|
|
1917
1947
|
}, details, isAsync);
|
|
@@ -1959,6 +1989,24 @@
|
|
|
1959
1989
|
unloadCtx.processNext(unloadState);
|
|
1960
1990
|
}
|
|
1961
1991
|
}
|
|
1992
|
+
function _updatePlugin(updateCtx, updateState) {
|
|
1993
|
+
function _callUpdate() {
|
|
1994
|
+
var hasRun = false;
|
|
1995
|
+
if (plugin) {
|
|
1996
|
+
var pluginState = _getPluginState(plugin);
|
|
1997
|
+
var pluginCore = plugin[strCore] || pluginState.core;
|
|
1998
|
+
if (plugin && (!pluginCore || pluginCore === updateCtx[strCore]()) && !pluginState[strTeardown]) {
|
|
1999
|
+
if (plugin[strUpdate] && plugin[strUpdate](updateCtx, updateState) === true) {
|
|
2000
|
+
hasRun = true;
|
|
2001
|
+
}
|
|
2002
|
+
}
|
|
2003
|
+
}
|
|
2004
|
+
return hasRun;
|
|
2005
|
+
}
|
|
2006
|
+
if (!_processChain(updateCtx, _callUpdate, "update", function () { }, false)) {
|
|
2007
|
+
updateCtx.processNext(updateState);
|
|
2008
|
+
}
|
|
2009
|
+
}
|
|
1962
2010
|
return objFreeze(proxyChain);
|
|
1963
2011
|
}
|
|
1964
2012
|
var ProcessTelemetryContext = /** @class */ (function () {
|
|
@@ -2136,7 +2184,7 @@
|
|
|
2136
2184
|
_supportsCookies = doc[strCookie] !== undefined;
|
|
2137
2185
|
}
|
|
2138
2186
|
catch (e) {
|
|
2139
|
-
logger
|
|
2187
|
+
_throwInternal(logger, 2 , 68 , "Cannot access document.cookie - " + getExceptionName(e), { exception: dumpObj(e) });
|
|
2140
2188
|
}
|
|
2141
2189
|
}
|
|
2142
2190
|
return _supportsCookies;
|
|
@@ -2265,6 +2313,17 @@
|
|
|
2265
2313
|
}
|
|
2266
2314
|
_runChainOnComplete();
|
|
2267
2315
|
}
|
|
2316
|
+
function _doUpdate(updateCtx, updateState) {
|
|
2317
|
+
var theUpdateState = updateState || {
|
|
2318
|
+
reason: 0
|
|
2319
|
+
};
|
|
2320
|
+
_processChannelQueue(channelQueue, updateCtx, function (chainCtx) {
|
|
2321
|
+
chainCtx[strProcessNext](theUpdateState);
|
|
2322
|
+
}, function () {
|
|
2323
|
+
updateCtx[strProcessNext](theUpdateState);
|
|
2324
|
+
});
|
|
2325
|
+
return true;
|
|
2326
|
+
}
|
|
2268
2327
|
function _doTeardown(unloadCtx, unloadState) {
|
|
2269
2328
|
var theUnloadState = unloadState || {
|
|
2270
2329
|
reason: 0 ,
|
|
@@ -2316,7 +2375,8 @@
|
|
|
2316
2375
|
}, function () {
|
|
2317
2376
|
itemCtx[strProcessNext](item);
|
|
2318
2377
|
});
|
|
2319
|
-
}
|
|
2378
|
+
},
|
|
2379
|
+
update: _doUpdate
|
|
2320
2380
|
},
|
|
2321
2381
|
_a[strPause] = function () {
|
|
2322
2382
|
_processChannelQueue(channelQueue, _getTelCtx(), function (chainCtx) {
|
|
@@ -2401,6 +2461,30 @@
|
|
|
2401
2461
|
return channelQueue;
|
|
2402
2462
|
}
|
|
2403
2463
|
|
|
2464
|
+
function createUnloadHandlerContainer() {
|
|
2465
|
+
var handlers = [];
|
|
2466
|
+
function _addHandler(handler) {
|
|
2467
|
+
if (handler) {
|
|
2468
|
+
handlers.push(handler);
|
|
2469
|
+
}
|
|
2470
|
+
}
|
|
2471
|
+
function _runHandlers(unloadCtx, unloadState) {
|
|
2472
|
+
arrForEach(handlers, function (handler) {
|
|
2473
|
+
try {
|
|
2474
|
+
handler(unloadCtx, unloadState);
|
|
2475
|
+
}
|
|
2476
|
+
catch (e) {
|
|
2477
|
+
_throwInternal(unloadCtx.diagLog(), 2 , 73 , "Unexpected error calling unload handler - " + dumpObj(e));
|
|
2478
|
+
}
|
|
2479
|
+
});
|
|
2480
|
+
handlers = [];
|
|
2481
|
+
}
|
|
2482
|
+
return {
|
|
2483
|
+
add: _addHandler,
|
|
2484
|
+
run: _runHandlers
|
|
2485
|
+
};
|
|
2486
|
+
}
|
|
2487
|
+
|
|
2404
2488
|
var strGetPlugin = "getPlugin";
|
|
2405
2489
|
var BaseTelemetryPlugin = /** @class */ (function () {
|
|
2406
2490
|
function BaseTelemetryPlugin() {
|
|
@@ -2408,6 +2492,7 @@
|
|
|
2408
2492
|
var _isinitialized;
|
|
2409
2493
|
var _rootCtx;
|
|
2410
2494
|
var _nextPlugin;
|
|
2495
|
+
var _unloadHandlerContainer;
|
|
2411
2496
|
var _hooks;
|
|
2412
2497
|
_initDefaults();
|
|
2413
2498
|
dynamicProto(BaseTelemetryPlugin, _self, function (_self) {
|
|
@@ -2429,6 +2514,7 @@
|
|
|
2429
2514
|
function _unloadCallback() {
|
|
2430
2515
|
if (!unloadDone) {
|
|
2431
2516
|
unloadDone = true;
|
|
2517
|
+
_unloadHandlerContainer.run(theUnloadCtx, unloadState);
|
|
2432
2518
|
arrForEach(_hooks, function (fn) {
|
|
2433
2519
|
fn.rm();
|
|
2434
2520
|
});
|
|
@@ -2447,6 +2533,30 @@
|
|
|
2447
2533
|
}
|
|
2448
2534
|
return result;
|
|
2449
2535
|
};
|
|
2536
|
+
_self.update = function (updateCtx, updateState) {
|
|
2537
|
+
if (!_self.core || (updateCtx && _self.core !== updateCtx.core())) {
|
|
2538
|
+
return;
|
|
2539
|
+
}
|
|
2540
|
+
var result;
|
|
2541
|
+
var updateDone = false;
|
|
2542
|
+
var theUpdateCtx = updateCtx || createProcessTelemetryUpdateContext(null, {}, _self.core, _nextPlugin && _nextPlugin[strGetPlugin] ? _nextPlugin[strGetPlugin]() : _nextPlugin);
|
|
2543
|
+
var theUpdateState = updateState || {
|
|
2544
|
+
reason: 0
|
|
2545
|
+
};
|
|
2546
|
+
function _updateCallback() {
|
|
2547
|
+
if (!updateDone) {
|
|
2548
|
+
updateDone = true;
|
|
2549
|
+
_setDefaults(theUpdateCtx.getCfg(), theUpdateCtx.core(), theUpdateCtx.getNext());
|
|
2550
|
+
}
|
|
2551
|
+
}
|
|
2552
|
+
if (!_self._doUpdate || _self._doUpdate(theUpdateCtx, theUpdateState, _updateCallback) !== true) {
|
|
2553
|
+
_updateCallback();
|
|
2554
|
+
}
|
|
2555
|
+
else {
|
|
2556
|
+
result = true;
|
|
2557
|
+
}
|
|
2558
|
+
return result;
|
|
2559
|
+
};
|
|
2450
2560
|
_self._addHook = function (hooks) {
|
|
2451
2561
|
if (hooks) {
|
|
2452
2562
|
if (isArray(hooks)) {
|
|
@@ -2457,6 +2567,7 @@
|
|
|
2457
2567
|
}
|
|
2458
2568
|
}
|
|
2459
2569
|
};
|
|
2570
|
+
proxyFunctionAs(_self, "_addUnloadCb", function () { return _unloadHandlerContainer; }, "add");
|
|
2460
2571
|
});
|
|
2461
2572
|
_self.diagLog = function (itemCtx) {
|
|
2462
2573
|
return _getTelCtx(itemCtx).diagLog();
|
|
@@ -2513,6 +2624,7 @@
|
|
|
2513
2624
|
_rootCtx = null;
|
|
2514
2625
|
_nextPlugin = null;
|
|
2515
2626
|
_hooks = [];
|
|
2627
|
+
_unloadHandlerContainer = createUnloadHandlerContainer();
|
|
2516
2628
|
}
|
|
2517
2629
|
}
|
|
2518
2630
|
return BaseTelemetryPlugin;
|
|
@@ -2559,7 +2671,7 @@
|
|
|
2559
2671
|
}
|
|
2560
2672
|
}
|
|
2561
2673
|
catch (e) {
|
|
2562
|
-
itemCtx.diagLog()
|
|
2674
|
+
_throwInternal(itemCtx.diagLog(), 1 , 64 , "One of telemetry initializers failed, telemetry item will not be sent: " + getExceptionName(e), { exception: dumpObj(e) }, true);
|
|
2563
2675
|
}
|
|
2564
2676
|
}
|
|
2565
2677
|
}
|
|
@@ -2582,6 +2694,8 @@
|
|
|
2582
2694
|
|
|
2583
2695
|
var strValidationError = "Plugins must provide initialize method";
|
|
2584
2696
|
var strNotificationManager = "_notificationManager";
|
|
2697
|
+
var strSdkUnloadingError = "SDK is still unloading...";
|
|
2698
|
+
var strSdkNotInitialized = "SDK is not initialized";
|
|
2585
2699
|
function _createPerfManager(core, notificationMgr) {
|
|
2586
2700
|
return new PerfManager(notificationMgr);
|
|
2587
2701
|
}
|
|
@@ -2611,6 +2725,16 @@
|
|
|
2611
2725
|
core: coreExtensions
|
|
2612
2726
|
};
|
|
2613
2727
|
}
|
|
2728
|
+
function _isPluginPresent(thePlugin, plugins) {
|
|
2729
|
+
var exists = false;
|
|
2730
|
+
arrForEach(plugins, function (plugin) {
|
|
2731
|
+
if (plugin === thePlugin) {
|
|
2732
|
+
exists = true;
|
|
2733
|
+
return -1;
|
|
2734
|
+
}
|
|
2735
|
+
});
|
|
2736
|
+
return exists;
|
|
2737
|
+
}
|
|
2614
2738
|
function _createDummyNotificationManager() {
|
|
2615
2739
|
var _a;
|
|
2616
2740
|
return objCreateFn((_a = {},
|
|
@@ -2635,15 +2759,20 @@
|
|
|
2635
2759
|
var _channelControl;
|
|
2636
2760
|
var _channelConfig;
|
|
2637
2761
|
var _channelQueue;
|
|
2762
|
+
var _isUnloading;
|
|
2638
2763
|
var _telemetryInitializerPlugin;
|
|
2639
2764
|
var _internalLogsEventName;
|
|
2640
2765
|
var _evtNamespace;
|
|
2766
|
+
var _unloadHandlers;
|
|
2641
2767
|
var _debugListener;
|
|
2642
2768
|
var _internalLogPoller = 0;
|
|
2643
2769
|
dynamicProto(BaseCore, this, function (_self) {
|
|
2644
2770
|
_initDefaults();
|
|
2645
2771
|
_self.isInitialized = function () { return _isInitialized; };
|
|
2646
2772
|
_self.initialize = function (config, extensions, logger, notificationManager) {
|
|
2773
|
+
if (_isUnloading) {
|
|
2774
|
+
throwError(strSdkUnloadingError);
|
|
2775
|
+
}
|
|
2647
2776
|
if (_self.isInitialized()) {
|
|
2648
2777
|
throwError("Core should not be initialized more than once");
|
|
2649
2778
|
}
|
|
@@ -2656,15 +2785,14 @@
|
|
|
2656
2785
|
_initDebugListener(config);
|
|
2657
2786
|
_initPerfManager(config);
|
|
2658
2787
|
config.extensions = isNullOrUndefined(config.extensions) ? [] : config.extensions;
|
|
2659
|
-
|
|
2660
|
-
extConfig.NotificationManager = notificationManager;
|
|
2788
|
+
_initExtConfig(config);
|
|
2661
2789
|
if (logger) {
|
|
2662
2790
|
_self.logger = logger;
|
|
2663
2791
|
}
|
|
2664
2792
|
_configExtensions = [];
|
|
2665
2793
|
_configExtensions.push.apply(_configExtensions, __spreadArrayFn(__spreadArrayFn([], extensions, false), config.extensions));
|
|
2666
2794
|
_channelConfig = (config || {}).channels;
|
|
2667
|
-
_initPluginChain(config);
|
|
2795
|
+
_initPluginChain(config, null);
|
|
2668
2796
|
if (_self.getTransmissionControls().length === 0) {
|
|
2669
2797
|
throwError("No channels available");
|
|
2670
2798
|
}
|
|
@@ -2682,7 +2810,7 @@
|
|
|
2682
2810
|
setValue(telemetryItem, strIKey, _self.config.instrumentationKey, null, isNotTruthy);
|
|
2683
2811
|
setValue(telemetryItem, "time", toISOString(new Date()), null, isNotTruthy);
|
|
2684
2812
|
setValue(telemetryItem, "ver", "4.0", null, isNullOrUndefined);
|
|
2685
|
-
if (_self.isInitialized()) {
|
|
2813
|
+
if (!_isUnloading && _self.isInitialized()) {
|
|
2686
2814
|
_createTelCtx().processNext(telemetryItem);
|
|
2687
2815
|
}
|
|
2688
2816
|
else {
|
|
@@ -2697,14 +2825,14 @@
|
|
|
2697
2825
|
}
|
|
2698
2826
|
return _notificationManager;
|
|
2699
2827
|
};
|
|
2700
|
-
_self
|
|
2828
|
+
_self[strAddNotificationListener] = function (listener) {
|
|
2701
2829
|
if (_notificationManager) {
|
|
2702
|
-
_notificationManager
|
|
2830
|
+
_notificationManager[strAddNotificationListener](listener);
|
|
2703
2831
|
}
|
|
2704
2832
|
};
|
|
2705
|
-
_self
|
|
2833
|
+
_self[strRemoveNotificationListener] = function (listener) {
|
|
2706
2834
|
if (_notificationManager) {
|
|
2707
|
-
_notificationManager
|
|
2835
|
+
_notificationManager[strRemoveNotificationListener](listener);
|
|
2708
2836
|
}
|
|
2709
2837
|
};
|
|
2710
2838
|
_self.getCookieMgr = function () {
|
|
@@ -2761,10 +2889,86 @@
|
|
|
2761
2889
|
}
|
|
2762
2890
|
};
|
|
2763
2891
|
proxyFunctions(_self, function () { return _telemetryInitializerPlugin; }, ["addTelemetryInitializer"]);
|
|
2892
|
+
_self.unload = function (isAsync, unloadComplete, cbTimeout) {
|
|
2893
|
+
if (isAsync === void 0) { isAsync = true; }
|
|
2894
|
+
if (!_isInitialized) {
|
|
2895
|
+
throwError(strSdkNotInitialized);
|
|
2896
|
+
}
|
|
2897
|
+
if (_isUnloading) {
|
|
2898
|
+
throwError(strSdkUnloadingError);
|
|
2899
|
+
}
|
|
2900
|
+
var unloadState = {
|
|
2901
|
+
reason: 50 ,
|
|
2902
|
+
isAsync: isAsync,
|
|
2903
|
+
flushComplete: false
|
|
2904
|
+
};
|
|
2905
|
+
var processUnloadCtx = createProcessTelemetryUnloadContext(_getPluginChain(), _self.config, _self);
|
|
2906
|
+
processUnloadCtx.onComplete(function () {
|
|
2907
|
+
_initDefaults();
|
|
2908
|
+
unloadComplete && unloadComplete(unloadState);
|
|
2909
|
+
}, _self);
|
|
2910
|
+
function _doUnload(flushComplete) {
|
|
2911
|
+
unloadState.flushComplete = flushComplete;
|
|
2912
|
+
_isUnloading = true;
|
|
2913
|
+
_unloadHandlers.run(processUnloadCtx, unloadState);
|
|
2914
|
+
_self.stopPollingInternalLogs();
|
|
2915
|
+
processUnloadCtx.processNext(unloadState);
|
|
2916
|
+
}
|
|
2917
|
+
if (_channelControl) {
|
|
2918
|
+
_channelControl.flush(isAsync, _doUnload, 6 , cbTimeout);
|
|
2919
|
+
}
|
|
2920
|
+
else {
|
|
2921
|
+
_doUnload(true);
|
|
2922
|
+
}
|
|
2923
|
+
};
|
|
2764
2924
|
_self.getPlugin = _getPlugin;
|
|
2925
|
+
_self.addPlugin = function (plugin, replaceExisting, isAsync, addCb) {
|
|
2926
|
+
if (isAsync === void 0) { isAsync = true; }
|
|
2927
|
+
if (!plugin) {
|
|
2928
|
+
addCb && addCb(false);
|
|
2929
|
+
_logOrThrowError(strValidationError);
|
|
2930
|
+
return;
|
|
2931
|
+
}
|
|
2932
|
+
var existingPlugin = _getPlugin(plugin.identifier);
|
|
2933
|
+
if (existingPlugin && !replaceExisting) {
|
|
2934
|
+
addCb && addCb(false);
|
|
2935
|
+
_logOrThrowError("Plugin [" + plugin.identifier + "] is already loaded!");
|
|
2936
|
+
return;
|
|
2937
|
+
}
|
|
2938
|
+
var updateState = {
|
|
2939
|
+
reason: 16
|
|
2940
|
+
};
|
|
2941
|
+
function _addPlugin(removed) {
|
|
2942
|
+
_configExtensions.push(plugin);
|
|
2943
|
+
updateState.added = [plugin];
|
|
2944
|
+
_initPluginChain(_self.config, updateState);
|
|
2945
|
+
addCb && addCb(true);
|
|
2946
|
+
}
|
|
2947
|
+
if (existingPlugin) {
|
|
2948
|
+
var removedPlugins_1 = [existingPlugin.plugin];
|
|
2949
|
+
var unloadState = {
|
|
2950
|
+
reason: 2 ,
|
|
2951
|
+
isAsync: isAsync
|
|
2952
|
+
};
|
|
2953
|
+
_removePlugins(removedPlugins_1, unloadState, function (removed) {
|
|
2954
|
+
if (!removed) {
|
|
2955
|
+
addCb && addCb(false);
|
|
2956
|
+
}
|
|
2957
|
+
else {
|
|
2958
|
+
updateState.removed = removedPlugins_1;
|
|
2959
|
+
updateState.reason |= 32 ;
|
|
2960
|
+
_addPlugin();
|
|
2961
|
+
}
|
|
2962
|
+
});
|
|
2963
|
+
}
|
|
2964
|
+
else {
|
|
2965
|
+
_addPlugin();
|
|
2966
|
+
}
|
|
2967
|
+
};
|
|
2765
2968
|
_self.evtNamespace = function () {
|
|
2766
2969
|
return _evtNamespace;
|
|
2767
2970
|
};
|
|
2971
|
+
proxyFunctionAs(_self, "addUnloadCb", function () { return _unloadHandlers; }, "add");
|
|
2768
2972
|
function _initDefaults() {
|
|
2769
2973
|
_isInitialized = false;
|
|
2770
2974
|
_self.logger = new DiagnosticLogger({ loggingLevelConsole: 1 });
|
|
@@ -2782,13 +2986,15 @@
|
|
|
2782
2986
|
_channelControl = null;
|
|
2783
2987
|
_channelConfig = null;
|
|
2784
2988
|
_channelQueue = null;
|
|
2989
|
+
_isUnloading = false;
|
|
2785
2990
|
_internalLogsEventName = null;
|
|
2786
2991
|
_evtNamespace = createUniqueNamespace("AIBaseCore", true);
|
|
2992
|
+
_unloadHandlers = createUnloadHandlerContainer();
|
|
2787
2993
|
}
|
|
2788
2994
|
function _createTelCtx() {
|
|
2789
2995
|
return createProcessTelemetryContext(_getPluginChain(), _self.config, _self);
|
|
2790
2996
|
}
|
|
2791
|
-
function _initPluginChain(config) {
|
|
2997
|
+
function _initPluginChain(config, updateState) {
|
|
2792
2998
|
var theExtensions = _validateExtensions(_self.logger, ChannelControllerPriority, _configExtensions);
|
|
2793
2999
|
_coreExtensions = theExtensions.core;
|
|
2794
3000
|
_pluginChain = null;
|
|
@@ -2814,6 +3020,9 @@
|
|
|
2814
3020
|
_channelControl.initialize(config, _self, allExtensions);
|
|
2815
3021
|
initializePlugins(_createTelCtx(), allExtensions);
|
|
2816
3022
|
_self._extensions = objFreeze(sortPlugins(_coreExtensions || [])).slice();
|
|
3023
|
+
if (updateState) {
|
|
3024
|
+
_doUpdate(updateState);
|
|
3025
|
+
}
|
|
2817
3026
|
}
|
|
2818
3027
|
function _getPlugin(pluginIdentifier) {
|
|
2819
3028
|
var theExt = null;
|
|
@@ -2836,6 +3045,23 @@
|
|
|
2836
3045
|
isEnabled: function () {
|
|
2837
3046
|
var pluginState = _getPluginState(thePlugin);
|
|
2838
3047
|
return !pluginState[strTeardown] && !pluginState[strDisabled];
|
|
3048
|
+
},
|
|
3049
|
+
remove: function (isAsync, removeCb) {
|
|
3050
|
+
if (isAsync === void 0) { isAsync = true; }
|
|
3051
|
+
var pluginsToRemove = [thePlugin];
|
|
3052
|
+
var unloadState = {
|
|
3053
|
+
reason: 1 ,
|
|
3054
|
+
isAsync: isAsync
|
|
3055
|
+
};
|
|
3056
|
+
_removePlugins(pluginsToRemove, unloadState, function (removed) {
|
|
3057
|
+
if (removed) {
|
|
3058
|
+
_initPluginChain(_self.config, {
|
|
3059
|
+
reason: 32 ,
|
|
3060
|
+
removed: pluginsToRemove
|
|
3061
|
+
});
|
|
3062
|
+
}
|
|
3063
|
+
removeCb && removeCb(removed);
|
|
3064
|
+
});
|
|
2839
3065
|
}
|
|
2840
3066
|
};
|
|
2841
3067
|
}
|
|
@@ -2851,6 +3077,46 @@
|
|
|
2851
3077
|
}
|
|
2852
3078
|
return _pluginChain;
|
|
2853
3079
|
}
|
|
3080
|
+
function _removePlugins(thePlugins, unloadState, removeComplete) {
|
|
3081
|
+
if (thePlugins && thePlugins.length > 0) {
|
|
3082
|
+
var unloadChain = createTelemetryProxyChain(thePlugins, _self.config, _self);
|
|
3083
|
+
var unloadCtx = createProcessTelemetryUnloadContext(unloadChain, _self.config, _self);
|
|
3084
|
+
unloadCtx.onComplete(function () {
|
|
3085
|
+
var removed = false;
|
|
3086
|
+
var newConfigExtensions = [];
|
|
3087
|
+
arrForEach(_configExtensions, function (plugin, idx) {
|
|
3088
|
+
if (!_isPluginPresent(plugin, thePlugins)) {
|
|
3089
|
+
newConfigExtensions.push(plugin);
|
|
3090
|
+
}
|
|
3091
|
+
else {
|
|
3092
|
+
removed = true;
|
|
3093
|
+
}
|
|
3094
|
+
});
|
|
3095
|
+
_configExtensions = newConfigExtensions;
|
|
3096
|
+
var newChannelConfig = [];
|
|
3097
|
+
if (_channelConfig) {
|
|
3098
|
+
arrForEach(_channelConfig, function (queue, idx) {
|
|
3099
|
+
var newQueue = [];
|
|
3100
|
+
arrForEach(queue, function (channel) {
|
|
3101
|
+
if (!_isPluginPresent(channel, thePlugins)) {
|
|
3102
|
+
newQueue.push(channel);
|
|
3103
|
+
}
|
|
3104
|
+
else {
|
|
3105
|
+
removed = true;
|
|
3106
|
+
}
|
|
3107
|
+
});
|
|
3108
|
+
newChannelConfig.push(newQueue);
|
|
3109
|
+
});
|
|
3110
|
+
_channelConfig = newChannelConfig;
|
|
3111
|
+
}
|
|
3112
|
+
removeComplete && removeComplete(removed);
|
|
3113
|
+
});
|
|
3114
|
+
unloadCtx.processNext(unloadState);
|
|
3115
|
+
}
|
|
3116
|
+
else {
|
|
3117
|
+
removeComplete(false);
|
|
3118
|
+
}
|
|
3119
|
+
}
|
|
2854
3120
|
function _flushInternalLogs() {
|
|
2855
3121
|
var queue = _self.logger ? _self.logger.queue : [];
|
|
2856
3122
|
if (queue) {
|
|
@@ -2885,6 +3151,25 @@
|
|
|
2885
3151
|
setValue(_self.config, "createPerfMgr", _createPerfManager);
|
|
2886
3152
|
}
|
|
2887
3153
|
}
|
|
3154
|
+
function _initExtConfig(config) {
|
|
3155
|
+
var extConfig = getSetValue(config, strExtensionConfig);
|
|
3156
|
+
extConfig.NotificationManager = _notificationManager;
|
|
3157
|
+
}
|
|
3158
|
+
function _doUpdate(updateState) {
|
|
3159
|
+
var updateCtx = createProcessTelemetryUpdateContext(_getPluginChain(), _self.config, _self);
|
|
3160
|
+
if (!_self._updateHook || _self._updateHook(updateCtx, updateState) !== true) {
|
|
3161
|
+
updateCtx.processNext(updateState);
|
|
3162
|
+
}
|
|
3163
|
+
}
|
|
3164
|
+
function _logOrThrowError(message) {
|
|
3165
|
+
var logger = _self.logger;
|
|
3166
|
+
if (logger) {
|
|
3167
|
+
_throwInternal(logger, 2 , 73 , message);
|
|
3168
|
+
}
|
|
3169
|
+
else {
|
|
3170
|
+
throwError(message);
|
|
3171
|
+
}
|
|
3172
|
+
}
|
|
2888
3173
|
});
|
|
2889
3174
|
}
|
|
2890
3175
|
return BaseCore;
|
|
@@ -3013,12 +3298,12 @@
|
|
|
3013
3298
|
}
|
|
3014
3299
|
return name;
|
|
3015
3300
|
}
|
|
3016
|
-
function _getEvtNamespace(eventName,
|
|
3017
|
-
if (
|
|
3301
|
+
function _getEvtNamespace(eventName, evtNamespace) {
|
|
3302
|
+
if (evtNamespace) {
|
|
3018
3303
|
var theNamespace_1 = "";
|
|
3019
|
-
if (isArray(
|
|
3304
|
+
if (isArray(evtNamespace)) {
|
|
3020
3305
|
theNamespace_1 = "";
|
|
3021
|
-
arrForEach(
|
|
3306
|
+
arrForEach(evtNamespace, function (name) {
|
|
3022
3307
|
name = _normalizeNamespace(name);
|
|
3023
3308
|
if (name) {
|
|
3024
3309
|
if (name[0] !== ".") {
|
|
@@ -3029,7 +3314,7 @@
|
|
|
3029
3314
|
});
|
|
3030
3315
|
}
|
|
3031
3316
|
else {
|
|
3032
|
-
theNamespace_1 = _normalizeNamespace(
|
|
3317
|
+
theNamespace_1 = _normalizeNamespace(evtNamespace);
|
|
3033
3318
|
}
|
|
3034
3319
|
if (theNamespace_1) {
|
|
3035
3320
|
if (theNamespace_1[0] !== ".") {
|
|
@@ -3044,16 +3329,19 @@
|
|
|
3044
3329
|
ns: ((parsedEvent[2] || "").split(".").sort()).join(".")
|
|
3045
3330
|
};
|
|
3046
3331
|
}
|
|
3047
|
-
function __getRegisteredEvents(target,
|
|
3332
|
+
function __getRegisteredEvents(target, eventName, evtNamespace) {
|
|
3048
3333
|
var theEvents = [];
|
|
3049
3334
|
var eventCache = elmNodeData.get(target, strEvents, {}, false);
|
|
3335
|
+
var evtName = _getEvtNamespace(eventName, evtNamespace);
|
|
3050
3336
|
objForEachKey(eventCache, function (evtType, registeredEvents) {
|
|
3051
3337
|
arrForEach(registeredEvents, function (value) {
|
|
3052
|
-
if (!evtName || evtName === value.evtName.type) {
|
|
3053
|
-
|
|
3054
|
-
|
|
3055
|
-
|
|
3056
|
-
|
|
3338
|
+
if (!evtName.type || evtName.type === value.evtName.type) {
|
|
3339
|
+
if (!evtName.ns || evtName.ns === evtName.ns) {
|
|
3340
|
+
theEvents.push({
|
|
3341
|
+
name: value.evtName.type + (value.evtName.ns ? "." + value.evtName.ns : ""),
|
|
3342
|
+
handler: value.handler
|
|
3343
|
+
});
|
|
3344
|
+
}
|
|
3057
3345
|
}
|
|
3058
3346
|
});
|
|
3059
3347
|
});
|
|
@@ -3682,6 +3970,7 @@
|
|
|
3682
3970
|
exports._InternalMessageId = _InternalMessageId;
|
|
3683
3971
|
exports.__getRegisteredEvents = __getRegisteredEvents;
|
|
3684
3972
|
exports._legacyCookieMgr = _legacyCookieMgr;
|
|
3973
|
+
exports._throwInternal = _throwInternal;
|
|
3685
3974
|
exports.addEventHandler = addEventHandler;
|
|
3686
3975
|
exports.addEventListeners = addEventListeners;
|
|
3687
3976
|
exports.addPageHideEventListener = addPageHideEventListener;
|
|
@@ -3699,6 +3988,7 @@
|
|
|
3699
3988
|
exports.createEnumStyle = createEnumStyle;
|
|
3700
3989
|
exports.createProcessTelemetryContext = createProcessTelemetryContext;
|
|
3701
3990
|
exports.createUniqueNamespace = createUniqueNamespace;
|
|
3991
|
+
exports.createUnloadHandlerContainer = createUnloadHandlerContainer;
|
|
3702
3992
|
exports.dateNow = dateNow;
|
|
3703
3993
|
exports.deleteCookie = deleteCookie;
|
|
3704
3994
|
exports.detachEvent = detachEvent;
|