@microsoft/applicationinsights-web 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.
Files changed (50) hide show
  1. package/browser/{ai.2.8.0-beta.2203-02.cjs.js → ai.2.8.0-beta.2203-05.cjs.js} +828 -359
  2. package/browser/ai.2.8.0-beta.2203-05.cjs.js.map +1 -0
  3. package/browser/ai.2.8.0-beta.2203-05.cjs.min.js +6 -0
  4. package/browser/ai.2.8.0-beta.2203-05.cjs.min.js.map +1 -0
  5. package/browser/{ai.2.8.0-beta.2203-02.gbl.js → ai.2.8.0-beta.2203-05.gbl.js} +828 -359
  6. package/browser/ai.2.8.0-beta.2203-05.gbl.js.map +1 -0
  7. package/browser/ai.2.8.0-beta.2203-05.gbl.min.js +6 -0
  8. package/browser/ai.2.8.0-beta.2203-05.gbl.min.js.map +1 -0
  9. package/browser/ai.2.8.0-beta.2203-05.integrity.json +66 -0
  10. package/browser/{ai.2.8.0-beta.2203-02.js → ai.2.8.0-beta.2203-05.js} +828 -359
  11. package/browser/ai.2.8.0-beta.2203-05.js.map +1 -0
  12. package/browser/ai.2.8.0-beta.2203-05.min.js +6 -0
  13. package/browser/ai.2.8.0-beta.2203-05.min.js.map +1 -0
  14. package/browser/ai.2.cjs.js +827 -358
  15. package/browser/ai.2.cjs.js.map +1 -1
  16. package/browser/ai.2.cjs.min.js +2 -2
  17. package/browser/ai.2.cjs.min.js.map +1 -1
  18. package/browser/ai.2.gbl.js +827 -358
  19. package/browser/ai.2.gbl.js.map +1 -1
  20. package/browser/ai.2.gbl.min.js +2 -2
  21. package/browser/ai.2.gbl.min.js.map +1 -1
  22. package/browser/ai.2.js +827 -358
  23. package/browser/ai.2.js.map +1 -1
  24. package/browser/ai.2.min.js +2 -2
  25. package/browser/ai.2.min.js.map +1 -1
  26. package/dist/applicationinsights-web.api.json +735 -167
  27. package/dist/applicationinsights-web.api.md +22 -19
  28. package/dist/applicationinsights-web.d.ts +168 -106
  29. package/dist/applicationinsights-web.js +828 -359
  30. package/dist/applicationinsights-web.js.map +1 -1
  31. package/dist/applicationinsights-web.min.js +2 -2
  32. package/dist/applicationinsights-web.min.js.map +1 -1
  33. package/dist/applicationinsights-web.rollup.d.ts +168 -106
  34. package/dist-esm/ApplicationInsightsContainer.js +1 -1
  35. package/dist-esm/ApplicationInsightsDeprecated.js +1 -1
  36. package/dist-esm/Init.js +1 -1
  37. package/dist-esm/Initialization.js +1 -1
  38. package/dist-esm/applicationinsights-web.js +1 -1
  39. package/package.json +7 -7
  40. package/types/Initialization.d.ts +1 -1
  41. package/browser/ai.2.8.0-beta.2203-02.cjs.js.map +0 -1
  42. package/browser/ai.2.8.0-beta.2203-02.cjs.min.js +0 -6
  43. package/browser/ai.2.8.0-beta.2203-02.cjs.min.js.map +0 -1
  44. package/browser/ai.2.8.0-beta.2203-02.gbl.js.map +0 -1
  45. package/browser/ai.2.8.0-beta.2203-02.gbl.min.js +0 -6
  46. package/browser/ai.2.8.0-beta.2203-02.gbl.min.js.map +0 -1
  47. package/browser/ai.2.8.0-beta.2203-02.integrity.json +0 -66
  48. package/browser/ai.2.8.0-beta.2203-02.js.map +0 -1
  49. package/browser/ai.2.8.0-beta.2203-02.min.js +0 -6
  50. package/browser/ai.2.8.0-beta.2203-02.min.js.map +0 -1
package/browser/ai.2.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Application Insights JavaScript SDK - Web, 2.8.0-beta.2203-02
2
+ * Application Insights JavaScript SDK - Web, 2.8.0-beta.2203-05
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
  (function (global, factory) {
@@ -357,6 +357,7 @@
357
357
  var strIsInitialized = "isInitialized";
358
358
  var strTeardown = "teardown";
359
359
  var strCore = "core";
360
+ var strUpdate = "update";
360
361
  var strDisabled = "disabled";
361
362
  var strDoTeardown = "_doTeardown";
362
363
  var strProcessNext = "processNext";
@@ -813,7 +814,7 @@
813
814
  objForEachKey(values, function (field, value) {
814
815
  enumClass[field] = value;
815
816
  if (!isUndefined(enumClass[value])) {
816
- throwError("Value: [" + value + "] already exists for " + field);
817
+ throwError("[" + value + "] exists for " + field);
817
818
  }
818
819
  enumClass[value] = field;
819
820
  });
@@ -825,7 +826,7 @@
825
826
  }
826
827
  return theObject;
827
828
  }
828
- function objExtend(obj, obj2, obj3, obj4, obj5, obj6) {
829
+ function objExtend(obj1, obj2, obj3, obj4, obj5, obj6) {
829
830
  var theArgs = arguments;
830
831
  var extended = theArgs[0] || {};
831
832
  var argLen = theArgs.length;
@@ -1272,6 +1273,10 @@
1272
1273
  }
1273
1274
  return DiagnosticLogger;
1274
1275
  }());
1276
+ function _throwInternal(logger, severity, msgId, msg, properties, isUserAct) {
1277
+ if (isUserAct === void 0) { isUserAct = false; }
1278
+ (logger || new DiagnosticLogger()).throwInternal(severity, msgId, msg, properties, isUserAct);
1279
+ }
1275
1280
 
1276
1281
  var strExecutionContextKey = "ctx";
1277
1282
  var _defaultPerfManager = null;
@@ -1642,8 +1647,11 @@
1642
1647
  return createTelemetryProxyChain([startAt], config, core);
1643
1648
  }
1644
1649
  function _createInternalContext(telemetryChain, config, core, startAt) {
1645
- var _nextProxy = startAt ? _getNextProxyStart(telemetryChain, config, core, startAt) : telemetryChain;
1650
+ var _nextProxy = null;
1646
1651
  var _onComplete = [];
1652
+ if (startAt !== null) {
1653
+ _nextProxy = startAt ? _getNextProxyStart(telemetryChain, config, core, startAt) : telemetryChain;
1654
+ }
1647
1655
  var context = {
1648
1656
  _next: _moveNext,
1649
1657
  ctx: {
@@ -1693,7 +1701,7 @@
1693
1701
  completeDetails.func.call(completeDetails.self, completeDetails.args);
1694
1702
  }
1695
1703
  catch (e) {
1696
- core.logger.throwInternal(2 , 73 , "Unexpected Exception during onComplete - " + dumpObj(e));
1704
+ _throwInternal(core.logger, 2 , 73 , "Unexpected Exception during onComplete - " + dumpObj(e));
1697
1705
  }
1698
1706
  });
1699
1707
  _onComplete = [];
@@ -1792,6 +1800,27 @@
1792
1800
  context.createNew = _createNew;
1793
1801
  return context;
1794
1802
  }
1803
+ function createProcessTelemetryUpdateContext(telemetryChain, config, core, startAt) {
1804
+ var internalContext = _createInternalContext(telemetryChain, config, core, startAt);
1805
+ var context = internalContext.ctx;
1806
+ function _processNext(updateState) {
1807
+ return context.iterate(function (plugin) {
1808
+ if (isFunction(plugin[strUpdate])) {
1809
+ plugin[strUpdate](context, updateState);
1810
+ }
1811
+ });
1812
+ }
1813
+ function _createNew(plugins, startAt) {
1814
+ if (plugins === void 0) { plugins = null; }
1815
+ if (isArray(plugins)) {
1816
+ plugins = createTelemetryProxyChain(plugins, config, core, startAt);
1817
+ }
1818
+ return createProcessTelemetryUpdateContext(plugins || context.getNext(), config, core, startAt);
1819
+ }
1820
+ context.processNext = _processNext;
1821
+ context.createNew = _createNew;
1822
+ return context;
1823
+ }
1795
1824
  function createTelemetryProxyChain(plugins, config, core, startAt) {
1796
1825
  var firstProxy = null;
1797
1826
  var add = startAt ? false : true;
@@ -1838,6 +1867,7 @@
1838
1867
  },
1839
1868
  processTelemetry: _processTelemetry,
1840
1869
  unload: _unloadPlugin,
1870
+ update: _updatePlugin,
1841
1871
  _id: chainId,
1842
1872
  _setNext: function (nextPlugin) {
1843
1873
  nextProxy = nextPlugin;
@@ -1877,7 +1907,7 @@
1877
1907
  hasRun = true;
1878
1908
  }
1879
1909
  if (!nextProxy || !hasNextRun) {
1880
- itemCtx.diagLog().throwInternal(1 , 73 , "Plugin [" + plugin.identifier + "] failed during " + name + " - " + dumpObj(error) + ", run flags: " + dumpObj(hasRunContext));
1910
+ _throwInternal(itemCtx.diagLog(), 1 , 73 , "Plugin [" + plugin.identifier + "] failed during " + name + " - " + dumpObj(error) + ", run flags: " + dumpObj(hasRunContext));
1881
1911
  }
1882
1912
  }
1883
1913
  }, details, isAsync);
@@ -1925,6 +1955,24 @@
1925
1955
  unloadCtx.processNext(unloadState);
1926
1956
  }
1927
1957
  }
1958
+ function _updatePlugin(updateCtx, updateState) {
1959
+ function _callUpdate() {
1960
+ var hasRun = false;
1961
+ if (plugin) {
1962
+ var pluginState = _getPluginState(plugin);
1963
+ var pluginCore = plugin[strCore] || pluginState.core;
1964
+ if (plugin && (!pluginCore || pluginCore === updateCtx[strCore]()) && !pluginState[strTeardown]) {
1965
+ if (plugin[strUpdate] && plugin[strUpdate](updateCtx, updateState) === true) {
1966
+ hasRun = true;
1967
+ }
1968
+ }
1969
+ }
1970
+ return hasRun;
1971
+ }
1972
+ if (!_processChain(updateCtx, _callUpdate, "update", function () { }, false)) {
1973
+ updateCtx.processNext(updateState);
1974
+ }
1975
+ }
1928
1976
  return objFreeze(proxyChain);
1929
1977
  }
1930
1978
 
@@ -2094,7 +2142,7 @@
2094
2142
  _supportsCookies = doc[strCookie] !== undefined;
2095
2143
  }
2096
2144
  catch (e) {
2097
- logger && logger.throwInternal(2 , 68 , "Cannot access document.cookie - " + getExceptionName(e), { exception: dumpObj(e) });
2145
+ _throwInternal(logger, 2 , 68 , "Cannot access document.cookie - " + getExceptionName(e), { exception: dumpObj(e) });
2098
2146
  }
2099
2147
  }
2100
2148
  return _supportsCookies;
@@ -2223,6 +2271,17 @@
2223
2271
  }
2224
2272
  _runChainOnComplete();
2225
2273
  }
2274
+ function _doUpdate(updateCtx, updateState) {
2275
+ var theUpdateState = updateState || {
2276
+ reason: 0
2277
+ };
2278
+ _processChannelQueue(channelQueue, updateCtx, function (chainCtx) {
2279
+ chainCtx[strProcessNext](theUpdateState);
2280
+ }, function () {
2281
+ updateCtx[strProcessNext](theUpdateState);
2282
+ });
2283
+ return true;
2284
+ }
2226
2285
  function _doTeardown(unloadCtx, unloadState) {
2227
2286
  var theUnloadState = unloadState || {
2228
2287
  reason: 0 ,
@@ -2274,7 +2333,8 @@
2274
2333
  }, function () {
2275
2334
  itemCtx[strProcessNext](item);
2276
2335
  });
2277
- }
2336
+ },
2337
+ update: _doUpdate
2278
2338
  },
2279
2339
  _a[strPause] = function () {
2280
2340
  _processChannelQueue(channelQueue, _getTelCtx(), function (chainCtx) {
@@ -2359,6 +2419,30 @@
2359
2419
  return channelQueue;
2360
2420
  }
2361
2421
 
2422
+ function createUnloadHandlerContainer() {
2423
+ var handlers = [];
2424
+ function _addHandler(handler) {
2425
+ if (handler) {
2426
+ handlers.push(handler);
2427
+ }
2428
+ }
2429
+ function _runHandlers(unloadCtx, unloadState) {
2430
+ arrForEach(handlers, function (handler) {
2431
+ try {
2432
+ handler(unloadCtx, unloadState);
2433
+ }
2434
+ catch (e) {
2435
+ _throwInternal(unloadCtx.diagLog(), 2 , 73 , "Unexpected error calling unload handler - " + dumpObj(e));
2436
+ }
2437
+ });
2438
+ handlers = [];
2439
+ }
2440
+ return {
2441
+ add: _addHandler,
2442
+ run: _runHandlers
2443
+ };
2444
+ }
2445
+
2362
2446
  var strGetPlugin = "getPlugin";
2363
2447
  var BaseTelemetryPlugin = /** @class */ (function () {
2364
2448
  function BaseTelemetryPlugin() {
@@ -2366,6 +2450,7 @@
2366
2450
  var _isinitialized;
2367
2451
  var _rootCtx;
2368
2452
  var _nextPlugin;
2453
+ var _unloadHandlerContainer;
2369
2454
  var _hooks;
2370
2455
  _initDefaults();
2371
2456
  dynamicProto(BaseTelemetryPlugin, _self, function (_self) {
@@ -2387,6 +2472,7 @@
2387
2472
  function _unloadCallback() {
2388
2473
  if (!unloadDone) {
2389
2474
  unloadDone = true;
2475
+ _unloadHandlerContainer.run(theUnloadCtx, unloadState);
2390
2476
  arrForEach(_hooks, function (fn) {
2391
2477
  fn.rm();
2392
2478
  });
@@ -2405,6 +2491,30 @@
2405
2491
  }
2406
2492
  return result;
2407
2493
  };
2494
+ _self.update = function (updateCtx, updateState) {
2495
+ if (!_self.core || (updateCtx && _self.core !== updateCtx.core())) {
2496
+ return;
2497
+ }
2498
+ var result;
2499
+ var updateDone = false;
2500
+ var theUpdateCtx = updateCtx || createProcessTelemetryUpdateContext(null, {}, _self.core, _nextPlugin && _nextPlugin[strGetPlugin] ? _nextPlugin[strGetPlugin]() : _nextPlugin);
2501
+ var theUpdateState = updateState || {
2502
+ reason: 0
2503
+ };
2504
+ function _updateCallback() {
2505
+ if (!updateDone) {
2506
+ updateDone = true;
2507
+ _setDefaults(theUpdateCtx.getCfg(), theUpdateCtx.core(), theUpdateCtx.getNext());
2508
+ }
2509
+ }
2510
+ if (!_self._doUpdate || _self._doUpdate(theUpdateCtx, theUpdateState, _updateCallback) !== true) {
2511
+ _updateCallback();
2512
+ }
2513
+ else {
2514
+ result = true;
2515
+ }
2516
+ return result;
2517
+ };
2408
2518
  _self._addHook = function (hooks) {
2409
2519
  if (hooks) {
2410
2520
  if (isArray(hooks)) {
@@ -2415,6 +2525,7 @@
2415
2525
  }
2416
2526
  }
2417
2527
  };
2528
+ proxyFunctionAs(_self, "_addUnloadCb", function () { return _unloadHandlerContainer; }, "add");
2418
2529
  });
2419
2530
  _self.diagLog = function (itemCtx) {
2420
2531
  return _getTelCtx(itemCtx).diagLog();
@@ -2471,6 +2582,7 @@
2471
2582
  _rootCtx = null;
2472
2583
  _nextPlugin = null;
2473
2584
  _hooks = [];
2585
+ _unloadHandlerContainer = createUnloadHandlerContainer();
2474
2586
  }
2475
2587
  }
2476
2588
  return BaseTelemetryPlugin;
@@ -2517,7 +2629,7 @@
2517
2629
  }
2518
2630
  }
2519
2631
  catch (e) {
2520
- itemCtx.diagLog().throwInternal(1 , 64 , "One of telemetry initializers failed, telemetry item will not be sent: " + getExceptionName(e), { exception: dumpObj(e) }, true);
2632
+ _throwInternal(itemCtx.diagLog(), 1 , 64 , "One of telemetry initializers failed, telemetry item will not be sent: " + getExceptionName(e), { exception: dumpObj(e) }, true);
2521
2633
  }
2522
2634
  }
2523
2635
  }
@@ -2540,6 +2652,8 @@
2540
2652
 
2541
2653
  var strValidationError = "Plugins must provide initialize method";
2542
2654
  var strNotificationManager = "_notificationManager";
2655
+ var strSdkUnloadingError = "SDK is still unloading...";
2656
+ var strSdkNotInitialized = "SDK is not initialized";
2543
2657
  function _createPerfManager(core, notificationMgr) {
2544
2658
  return new PerfManager(notificationMgr);
2545
2659
  }
@@ -2569,6 +2683,16 @@
2569
2683
  core: coreExtensions
2570
2684
  };
2571
2685
  }
2686
+ function _isPluginPresent(thePlugin, plugins) {
2687
+ var exists = false;
2688
+ arrForEach(plugins, function (plugin) {
2689
+ if (plugin === thePlugin) {
2690
+ exists = true;
2691
+ return -1;
2692
+ }
2693
+ });
2694
+ return exists;
2695
+ }
2572
2696
  function _createDummyNotificationManager() {
2573
2697
  var _a;
2574
2698
  return objCreateFn((_a = {},
@@ -2593,15 +2717,20 @@
2593
2717
  var _channelControl;
2594
2718
  var _channelConfig;
2595
2719
  var _channelQueue;
2720
+ var _isUnloading;
2596
2721
  var _telemetryInitializerPlugin;
2597
2722
  var _internalLogsEventName;
2598
2723
  var _evtNamespace;
2724
+ var _unloadHandlers;
2599
2725
  var _debugListener;
2600
2726
  var _internalLogPoller = 0;
2601
2727
  dynamicProto(BaseCore, this, function (_self) {
2602
2728
  _initDefaults();
2603
2729
  _self.isInitialized = function () { return _isInitialized; };
2604
2730
  _self.initialize = function (config, extensions, logger, notificationManager) {
2731
+ if (_isUnloading) {
2732
+ throwError(strSdkUnloadingError);
2733
+ }
2605
2734
  if (_self.isInitialized()) {
2606
2735
  throwError("Core should not be initialized more than once");
2607
2736
  }
@@ -2614,15 +2743,14 @@
2614
2743
  _initDebugListener(config);
2615
2744
  _initPerfManager(config);
2616
2745
  config.extensions = isNullOrUndefined(config.extensions) ? [] : config.extensions;
2617
- var extConfig = getSetValue(config, strExtensionConfig);
2618
- extConfig.NotificationManager = notificationManager;
2746
+ _initExtConfig(config);
2619
2747
  if (logger) {
2620
2748
  _self.logger = logger;
2621
2749
  }
2622
2750
  _configExtensions = [];
2623
2751
  _configExtensions.push.apply(_configExtensions, __spreadArrayFn(__spreadArrayFn([], extensions, false), config.extensions));
2624
2752
  _channelConfig = (config || {}).channels;
2625
- _initPluginChain(config);
2753
+ _initPluginChain(config, null);
2626
2754
  if (_self.getTransmissionControls().length === 0) {
2627
2755
  throwError("No channels available");
2628
2756
  }
@@ -2640,7 +2768,7 @@
2640
2768
  setValue(telemetryItem, strIKey, _self.config.instrumentationKey, null, isNotTruthy);
2641
2769
  setValue(telemetryItem, "time", toISOString(new Date()), null, isNotTruthy);
2642
2770
  setValue(telemetryItem, "ver", "4.0", null, isNullOrUndefined);
2643
- if (_self.isInitialized()) {
2771
+ if (!_isUnloading && _self.isInitialized()) {
2644
2772
  _createTelCtx().processNext(telemetryItem);
2645
2773
  }
2646
2774
  else {
@@ -2655,14 +2783,14 @@
2655
2783
  }
2656
2784
  return _notificationManager;
2657
2785
  };
2658
- _self.addNotificationListener = function (listener) {
2786
+ _self[strAddNotificationListener] = function (listener) {
2659
2787
  if (_notificationManager) {
2660
- _notificationManager.addNotificationListener(listener);
2788
+ _notificationManager[strAddNotificationListener](listener);
2661
2789
  }
2662
2790
  };
2663
- _self.removeNotificationListener = function (listener) {
2791
+ _self[strRemoveNotificationListener] = function (listener) {
2664
2792
  if (_notificationManager) {
2665
- _notificationManager.removeNotificationListener(listener);
2793
+ _notificationManager[strRemoveNotificationListener](listener);
2666
2794
  }
2667
2795
  };
2668
2796
  _self.getCookieMgr = function () {
@@ -2719,10 +2847,86 @@
2719
2847
  }
2720
2848
  };
2721
2849
  proxyFunctions(_self, function () { return _telemetryInitializerPlugin; }, ["addTelemetryInitializer"]);
2850
+ _self.unload = function (isAsync, unloadComplete, cbTimeout) {
2851
+ if (isAsync === void 0) { isAsync = true; }
2852
+ if (!_isInitialized) {
2853
+ throwError(strSdkNotInitialized);
2854
+ }
2855
+ if (_isUnloading) {
2856
+ throwError(strSdkUnloadingError);
2857
+ }
2858
+ var unloadState = {
2859
+ reason: 50 ,
2860
+ isAsync: isAsync,
2861
+ flushComplete: false
2862
+ };
2863
+ var processUnloadCtx = createProcessTelemetryUnloadContext(_getPluginChain(), _self.config, _self);
2864
+ processUnloadCtx.onComplete(function () {
2865
+ _initDefaults();
2866
+ unloadComplete && unloadComplete(unloadState);
2867
+ }, _self);
2868
+ function _doUnload(flushComplete) {
2869
+ unloadState.flushComplete = flushComplete;
2870
+ _isUnloading = true;
2871
+ _unloadHandlers.run(processUnloadCtx, unloadState);
2872
+ _self.stopPollingInternalLogs();
2873
+ processUnloadCtx.processNext(unloadState);
2874
+ }
2875
+ if (_channelControl) {
2876
+ _channelControl.flush(isAsync, _doUnload, 6 , cbTimeout);
2877
+ }
2878
+ else {
2879
+ _doUnload(true);
2880
+ }
2881
+ };
2722
2882
  _self.getPlugin = _getPlugin;
2883
+ _self.addPlugin = function (plugin, replaceExisting, isAsync, addCb) {
2884
+ if (isAsync === void 0) { isAsync = true; }
2885
+ if (!plugin) {
2886
+ addCb && addCb(false);
2887
+ _logOrThrowError(strValidationError);
2888
+ return;
2889
+ }
2890
+ var existingPlugin = _getPlugin(plugin.identifier);
2891
+ if (existingPlugin && !replaceExisting) {
2892
+ addCb && addCb(false);
2893
+ _logOrThrowError("Plugin [" + plugin.identifier + "] is already loaded!");
2894
+ return;
2895
+ }
2896
+ var updateState = {
2897
+ reason: 16
2898
+ };
2899
+ function _addPlugin(removed) {
2900
+ _configExtensions.push(plugin);
2901
+ updateState.added = [plugin];
2902
+ _initPluginChain(_self.config, updateState);
2903
+ addCb && addCb(true);
2904
+ }
2905
+ if (existingPlugin) {
2906
+ var removedPlugins_1 = [existingPlugin.plugin];
2907
+ var unloadState = {
2908
+ reason: 2 ,
2909
+ isAsync: isAsync
2910
+ };
2911
+ _removePlugins(removedPlugins_1, unloadState, function (removed) {
2912
+ if (!removed) {
2913
+ addCb && addCb(false);
2914
+ }
2915
+ else {
2916
+ updateState.removed = removedPlugins_1;
2917
+ updateState.reason |= 32 ;
2918
+ _addPlugin();
2919
+ }
2920
+ });
2921
+ }
2922
+ else {
2923
+ _addPlugin();
2924
+ }
2925
+ };
2723
2926
  _self.evtNamespace = function () {
2724
2927
  return _evtNamespace;
2725
2928
  };
2929
+ proxyFunctionAs(_self, "addUnloadCb", function () { return _unloadHandlers; }, "add");
2726
2930
  function _initDefaults() {
2727
2931
  _isInitialized = false;
2728
2932
  _self.logger = new DiagnosticLogger({ loggingLevelConsole: 1 });
@@ -2740,13 +2944,15 @@
2740
2944
  _channelControl = null;
2741
2945
  _channelConfig = null;
2742
2946
  _channelQueue = null;
2947
+ _isUnloading = false;
2743
2948
  _internalLogsEventName = null;
2744
2949
  _evtNamespace = createUniqueNamespace("AIBaseCore", true);
2950
+ _unloadHandlers = createUnloadHandlerContainer();
2745
2951
  }
2746
2952
  function _createTelCtx() {
2747
2953
  return createProcessTelemetryContext(_getPluginChain(), _self.config, _self);
2748
2954
  }
2749
- function _initPluginChain(config) {
2955
+ function _initPluginChain(config, updateState) {
2750
2956
  var theExtensions = _validateExtensions(_self.logger, ChannelControllerPriority, _configExtensions);
2751
2957
  _coreExtensions = theExtensions.core;
2752
2958
  _pluginChain = null;
@@ -2772,6 +2978,9 @@
2772
2978
  _channelControl.initialize(config, _self, allExtensions);
2773
2979
  initializePlugins(_createTelCtx(), allExtensions);
2774
2980
  _self._extensions = objFreeze(sortPlugins(_coreExtensions || [])).slice();
2981
+ if (updateState) {
2982
+ _doUpdate(updateState);
2983
+ }
2775
2984
  }
2776
2985
  function _getPlugin(pluginIdentifier) {
2777
2986
  var theExt = null;
@@ -2794,6 +3003,23 @@
2794
3003
  isEnabled: function () {
2795
3004
  var pluginState = _getPluginState(thePlugin);
2796
3005
  return !pluginState[strTeardown] && !pluginState[strDisabled];
3006
+ },
3007
+ remove: function (isAsync, removeCb) {
3008
+ if (isAsync === void 0) { isAsync = true; }
3009
+ var pluginsToRemove = [thePlugin];
3010
+ var unloadState = {
3011
+ reason: 1 ,
3012
+ isAsync: isAsync
3013
+ };
3014
+ _removePlugins(pluginsToRemove, unloadState, function (removed) {
3015
+ if (removed) {
3016
+ _initPluginChain(_self.config, {
3017
+ reason: 32 ,
3018
+ removed: pluginsToRemove
3019
+ });
3020
+ }
3021
+ removeCb && removeCb(removed);
3022
+ });
2797
3023
  }
2798
3024
  };
2799
3025
  }
@@ -2809,6 +3035,46 @@
2809
3035
  }
2810
3036
  return _pluginChain;
2811
3037
  }
3038
+ function _removePlugins(thePlugins, unloadState, removeComplete) {
3039
+ if (thePlugins && thePlugins.length > 0) {
3040
+ var unloadChain = createTelemetryProxyChain(thePlugins, _self.config, _self);
3041
+ var unloadCtx = createProcessTelemetryUnloadContext(unloadChain, _self.config, _self);
3042
+ unloadCtx.onComplete(function () {
3043
+ var removed = false;
3044
+ var newConfigExtensions = [];
3045
+ arrForEach(_configExtensions, function (plugin, idx) {
3046
+ if (!_isPluginPresent(plugin, thePlugins)) {
3047
+ newConfigExtensions.push(plugin);
3048
+ }
3049
+ else {
3050
+ removed = true;
3051
+ }
3052
+ });
3053
+ _configExtensions = newConfigExtensions;
3054
+ var newChannelConfig = [];
3055
+ if (_channelConfig) {
3056
+ arrForEach(_channelConfig, function (queue, idx) {
3057
+ var newQueue = [];
3058
+ arrForEach(queue, function (channel) {
3059
+ if (!_isPluginPresent(channel, thePlugins)) {
3060
+ newQueue.push(channel);
3061
+ }
3062
+ else {
3063
+ removed = true;
3064
+ }
3065
+ });
3066
+ newChannelConfig.push(newQueue);
3067
+ });
3068
+ _channelConfig = newChannelConfig;
3069
+ }
3070
+ removeComplete && removeComplete(removed);
3071
+ });
3072
+ unloadCtx.processNext(unloadState);
3073
+ }
3074
+ else {
3075
+ removeComplete(false);
3076
+ }
3077
+ }
2812
3078
  function _flushInternalLogs() {
2813
3079
  var queue = _self.logger ? _self.logger.queue : [];
2814
3080
  if (queue) {
@@ -2843,6 +3109,25 @@
2843
3109
  setValue(_self.config, "createPerfMgr", _createPerfManager);
2844
3110
  }
2845
3111
  }
3112
+ function _initExtConfig(config) {
3113
+ var extConfig = getSetValue(config, strExtensionConfig);
3114
+ extConfig.NotificationManager = _notificationManager;
3115
+ }
3116
+ function _doUpdate(updateState) {
3117
+ var updateCtx = createProcessTelemetryUpdateContext(_getPluginChain(), _self.config, _self);
3118
+ if (!_self._updateHook || _self._updateHook(updateCtx, updateState) !== true) {
3119
+ updateCtx.processNext(updateState);
3120
+ }
3121
+ }
3122
+ function _logOrThrowError(message) {
3123
+ var logger = _self.logger;
3124
+ if (logger) {
3125
+ _throwInternal(logger, 2 , 73 , message);
3126
+ }
3127
+ else {
3128
+ throwError(message);
3129
+ }
3130
+ }
2846
3131
  });
2847
3132
  }
2848
3133
  return BaseCore;
@@ -2952,6 +3237,8 @@
2952
3237
  var strOnPrefix = "on";
2953
3238
  var strAttachEvent = "attachEvent";
2954
3239
  var strAddEventHelper = "addEventListener";
3240
+ var strDetachEvent = "detachEvent";
3241
+ var strRemoveEventListener = "removeEventListener";
2955
3242
  var strEvents = "events";
2956
3243
  var strVisibilityChangeEvt = "visibilitychange";
2957
3244
  var strPageHide = "pagehide";
@@ -2968,12 +3255,12 @@
2968
3255
  }
2969
3256
  return name;
2970
3257
  }
2971
- function _getEvtNamespace(eventName, namespaces) {
2972
- if (namespaces) {
3258
+ function _getEvtNamespace(eventName, evtNamespace) {
3259
+ if (evtNamespace) {
2973
3260
  var theNamespace_1 = "";
2974
- if (isArray(namespaces)) {
3261
+ if (isArray(evtNamespace)) {
2975
3262
  theNamespace_1 = "";
2976
- arrForEach(namespaces, function (name) {
3263
+ arrForEach(evtNamespace, function (name) {
2977
3264
  name = _normalizeNamespace(name);
2978
3265
  if (name) {
2979
3266
  if (name[0] !== ".") {
@@ -2984,7 +3271,7 @@
2984
3271
  });
2985
3272
  }
2986
3273
  else {
2987
- theNamespace_1 = _normalizeNamespace(namespaces);
3274
+ theNamespace_1 = _normalizeNamespace(evtNamespace);
2988
3275
  }
2989
3276
  if (theNamespace_1) {
2990
3277
  if (theNamespace_1[0] !== ".") {
@@ -3008,6 +3295,16 @@
3008
3295
  }
3009
3296
  return registeredEvents;
3010
3297
  }
3298
+ function _doDetach(obj, evtName, handlerRef, useCapture) {
3299
+ if (obj && evtName && evtName.type) {
3300
+ if (obj[strRemoveEventListener]) {
3301
+ obj[strRemoveEventListener](evtName.type, handlerRef, useCapture);
3302
+ }
3303
+ else if (obj[strDetachEvent]) {
3304
+ obj[strDetachEvent](strOnPrefix + evtName.type, handlerRef);
3305
+ }
3306
+ }
3307
+ }
3011
3308
  function _doAttach(obj, evtName, handlerRef, useCapture) {
3012
3309
  var result = false;
3013
3310
  if (obj && evtName && evtName.type && handlerRef) {
@@ -3022,6 +3319,34 @@
3022
3319
  }
3023
3320
  return result;
3024
3321
  }
3322
+ function _doUnregister(target, events, evtName, unRegFn) {
3323
+ var idx = events.length;
3324
+ while (idx--) {
3325
+ var theEvent = events[idx];
3326
+ if (theEvent) {
3327
+ if (!evtName.ns || evtName.ns === theEvent.evtName.ns) {
3328
+ if (!unRegFn || unRegFn(theEvent)) {
3329
+ _doDetach(target, theEvent.evtName, theEvent.handler, theEvent.capture);
3330
+ events.splice(idx, 1);
3331
+ }
3332
+ }
3333
+ }
3334
+ }
3335
+ }
3336
+ function _unregisterEvents(target, evtName, unRegFn) {
3337
+ if (evtName.type) {
3338
+ _doUnregister(target, _getRegisteredEvents(target, evtName.type), evtName, unRegFn);
3339
+ }
3340
+ else {
3341
+ var eventCache = elmNodeData.get(target, strEvents, {});
3342
+ objForEachKey(eventCache, function (evtType, events) {
3343
+ _doUnregister(target, events, evtName, unRegFn);
3344
+ });
3345
+ if (objKeys(eventCache).length === 0) {
3346
+ elmNodeData.kill(target, strEvents);
3347
+ }
3348
+ }
3349
+ }
3025
3350
  function mergeEvtNamespace(theNamespace, namespaces) {
3026
3351
  var newNamespaces;
3027
3352
  if (namespaces) {
@@ -3059,6 +3384,27 @@
3059
3384
  }
3060
3385
  return result;
3061
3386
  }
3387
+ function eventOff(target, eventName, handlerRef, evtNamespace, useCapture) {
3388
+ if (useCapture === void 0) { useCapture = false; }
3389
+ if (target) {
3390
+ try {
3391
+ var evtName_1 = _getEvtNamespace(eventName, evtNamespace);
3392
+ var found_1 = false;
3393
+ _unregisterEvents(target, evtName_1, function (regEvent) {
3394
+ if ((evtName_1.ns && !handlerRef) || regEvent.handler === handlerRef) {
3395
+ found_1 = true;
3396
+ return true;
3397
+ }
3398
+ return false;
3399
+ });
3400
+ if (!found_1) {
3401
+ _doDetach(target, evtName_1, handlerRef, useCapture);
3402
+ }
3403
+ }
3404
+ catch (e) {
3405
+ }
3406
+ }
3407
+ }
3062
3408
  function attachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {
3063
3409
  if (useCapture === void 0) { useCapture = false; }
3064
3410
  return eventOn(obj, eventNameWithoutOn, handlerRef, null, useCapture);
@@ -3499,7 +3845,7 @@
3499
3845
  name = strTrim(name.toString());
3500
3846
  if (name.length > 150 ) {
3501
3847
  nameTrunc = name.substring(0, 150 );
3502
- logger && logger.throwInternal(2 , _InternalMessageId.NameTooLong, "name is too long. It has been truncated to " + 150 + " characters.", { name: name }, true);
3848
+ _throwInternal(logger, 2 , _InternalMessageId.NameTooLong, "name is too long. It has been truncated to " + 150 + " characters.", { name: name }, true);
3503
3849
  }
3504
3850
  }
3505
3851
  return nameTrunc || name;
@@ -3512,7 +3858,7 @@
3512
3858
  value = strTrim(value);
3513
3859
  if (value.toString().length > maxLength) {
3514
3860
  valueTrunc = value.toString().substring(0, maxLength);
3515
- logger && logger.throwInternal(2 , _InternalMessageId.StringValueTooLong, "string value is too long. It has been truncated to " + maxLength + " characters.", { value: value }, true);
3861
+ _throwInternal(logger, 2 , _InternalMessageId.StringValueTooLong, "string value is too long. It has been truncated to " + maxLength + " characters.", { value: value }, true);
3516
3862
  }
3517
3863
  }
3518
3864
  return valueTrunc || value;
@@ -3525,7 +3871,7 @@
3525
3871
  if (message) {
3526
3872
  if (message.length > 32768 ) {
3527
3873
  messageTrunc = message.substring(0, 32768 );
3528
- logger && logger.throwInternal(2 , _InternalMessageId.MessageTruncated, "message is too long, it has been truncated to " + 32768 + " characters.", { message: message }, true);
3874
+ _throwInternal(logger, 2 , _InternalMessageId.MessageTruncated, "message is too long, it has been truncated to " + 32768 + " characters.", { message: message }, true);
3529
3875
  }
3530
3876
  }
3531
3877
  return messageTrunc || message;
@@ -3536,7 +3882,7 @@
3536
3882
  var value = "" + exception;
3537
3883
  if (value.length > 32768 ) {
3538
3884
  exceptionTrunc = value.substring(0, 32768 );
3539
- logger && logger.throwInternal(2 , _InternalMessageId.ExceptionTruncated, "exception is too long, it has been truncated to " + 32768 + " characters.", { exception: exception }, true);
3885
+ _throwInternal(logger, 2 , _InternalMessageId.ExceptionTruncated, "exception is too long, it has been truncated to " + 32768 + " characters.", { exception: exception }, true);
3540
3886
  }
3541
3887
  }
3542
3888
  return exceptionTrunc || exception;
@@ -3550,7 +3896,7 @@
3550
3896
  value = getJSON().stringify(value);
3551
3897
  }
3552
3898
  catch (e) {
3553
- logger && logger.throwInternal(2 , _InternalMessageId.CannotSerializeObjectNonSerializable, "custom property is not valid", { exception: e }, true);
3899
+ _throwInternal(logger, 2 , _InternalMessageId.CannotSerializeObjectNonSerializable, "custom property is not valid", { exception: e }, true);
3554
3900
  }
3555
3901
  }
3556
3902
  value = dataSanitizeString(logger, value, 8192 );
@@ -3581,7 +3927,7 @@
3581
3927
  input = strTrim(input);
3582
3928
  if (input.length > maxLength) {
3583
3929
  inputTrunc = input.substring(0, maxLength);
3584
- logger && logger.throwInternal(2 , _msgId, "input is too long, it has been truncated to " + maxLength + " characters.", { data: input }, true);
3930
+ _throwInternal(logger, 2 , _msgId, "input is too long, it has been truncated to " + maxLength + " characters.", { data: input }, true);
3585
3931
  }
3586
3932
  }
3587
3933
  return inputTrunc || input;
@@ -3719,8 +4065,12 @@
3719
4065
  _canUseLocalStorage = false;
3720
4066
  _canUseSessionStorage = false;
3721
4067
  }
3722
- function utlCanUseLocalStorage() {
3723
- if (_canUseLocalStorage === undefined) {
4068
+ function utlEnableStorage() {
4069
+ _canUseLocalStorage = utlCanUseLocalStorage(true);
4070
+ _canUseSessionStorage = utlCanUseSessionStorage(true);
4071
+ }
4072
+ function utlCanUseLocalStorage(reset) {
4073
+ if (reset || _canUseLocalStorage === undefined) {
3724
4074
  _canUseLocalStorage = !!_getVerifiedStorageObject(StorageType.LocalStorage);
3725
4075
  }
3726
4076
  return _canUseLocalStorage;
@@ -3733,7 +4083,7 @@
3733
4083
  }
3734
4084
  catch (e) {
3735
4085
  _canUseLocalStorage = false;
3736
- logger.throwInternal(2 , _InternalMessageId.BrowserCannotReadLocalStorage, "Browser failed read of local storage. " + getExceptionName(e), { exception: dumpObj(e) });
4086
+ _throwInternal(logger, 2 , _InternalMessageId.BrowserCannotReadLocalStorage, "Browser failed read of local storage. " + getExceptionName(e), { exception: dumpObj(e) });
3737
4087
  }
3738
4088
  }
3739
4089
  return null;
@@ -3747,7 +4097,7 @@
3747
4097
  }
3748
4098
  catch (e) {
3749
4099
  _canUseLocalStorage = false;
3750
- logger.throwInternal(2 , _InternalMessageId.BrowserCannotWriteLocalStorage, "Browser failed write to local storage. " + getExceptionName(e), { exception: dumpObj(e) });
4100
+ _throwInternal(logger, 2 , _InternalMessageId.BrowserCannotWriteLocalStorage, "Browser failed write to local storage. " + getExceptionName(e), { exception: dumpObj(e) });
3751
4101
  }
3752
4102
  }
3753
4103
  return false;
@@ -3761,13 +4111,13 @@
3761
4111
  }
3762
4112
  catch (e) {
3763
4113
  _canUseLocalStorage = false;
3764
- logger.throwInternal(2 , _InternalMessageId.BrowserFailedRemovalFromLocalStorage, "Browser failed removal of local storage item. " + getExceptionName(e), { exception: dumpObj(e) });
4114
+ _throwInternal(logger, 2 , _InternalMessageId.BrowserFailedRemovalFromLocalStorage, "Browser failed removal of local storage item. " + getExceptionName(e), { exception: dumpObj(e) });
3765
4115
  }
3766
4116
  }
3767
4117
  return false;
3768
4118
  }
3769
- function utlCanUseSessionStorage() {
3770
- if (_canUseSessionStorage === undefined) {
4119
+ function utlCanUseSessionStorage(reset) {
4120
+ if (reset || _canUseSessionStorage === undefined) {
3771
4121
  _canUseSessionStorage = !!_getVerifiedStorageObject(StorageType.SessionStorage);
3772
4122
  }
3773
4123
  return _canUseSessionStorage;
@@ -3789,7 +4139,7 @@
3789
4139
  }
3790
4140
  catch (e) {
3791
4141
  _canUseSessionStorage = false;
3792
- logger.throwInternal(2 , _InternalMessageId.BrowserCannotReadSessionStorage, "Browser failed read of session storage. " + getExceptionName(e), { exception: dumpObj(e) });
4142
+ _throwInternal(logger, 2 , _InternalMessageId.BrowserCannotReadSessionStorage, "Browser failed read of session storage. " + getExceptionName(e), { exception: dumpObj(e) });
3793
4143
  }
3794
4144
  }
3795
4145
  return null;
@@ -3803,7 +4153,7 @@
3803
4153
  }
3804
4154
  catch (e) {
3805
4155
  _canUseSessionStorage = false;
3806
- logger.throwInternal(2 , _InternalMessageId.BrowserCannotWriteSessionStorage, "Browser failed write to session storage. " + getExceptionName(e), { exception: dumpObj(e) });
4156
+ _throwInternal(logger, 2 , _InternalMessageId.BrowserCannotWriteSessionStorage, "Browser failed write to session storage. " + getExceptionName(e), { exception: dumpObj(e) });
3807
4157
  }
3808
4158
  }
3809
4159
  return false;
@@ -3817,7 +4167,7 @@
3817
4167
  }
3818
4168
  catch (e) {
3819
4169
  _canUseSessionStorage = false;
3820
- logger.throwInternal(2 , _InternalMessageId.BrowserFailedRemovalFromSessionStorage, "Browser failed removal of session storage item. " + getExceptionName(e), { exception: dumpObj(e) });
4170
+ _throwInternal(logger, 2 , _InternalMessageId.BrowserFailedRemovalFromSessionStorage, "Browser failed removal of session storage item. " + getExceptionName(e), { exception: dumpObj(e) });
3821
4171
  }
3822
4172
  }
3823
4173
  return false;
@@ -5552,6 +5902,33 @@
5552
5902
  return PageViewPerformanceManager;
5553
5903
  }());
5554
5904
 
5905
+ var Timing = /** @class */ (function () {
5906
+ function Timing(logger, name) {
5907
+ var _self = this;
5908
+ var _events = {};
5909
+ _self.start = function (name) {
5910
+ if (typeof _events[name] !== "undefined") {
5911
+ _throwInternal(logger, LoggingSeverity.WARNING, _InternalMessageId.StartCalledMoreThanOnce, "start was called more than once for this event without calling stop.", { name: name, key: name }, true);
5912
+ }
5913
+ _events[name] = +new Date;
5914
+ };
5915
+ _self.stop = function (name, url, properties, measurements) {
5916
+ var start = _events[name];
5917
+ if (isNaN(start)) {
5918
+ _throwInternal(logger, LoggingSeverity.WARNING, _InternalMessageId.StopCalledWithoutStart, "stop was called without a corresponding start.", { name: name, key: name }, true);
5919
+ }
5920
+ else {
5921
+ var end = +new Date;
5922
+ var duration = dateTimeUtilsDuration(start, end);
5923
+ _self.action(name, url, duration, properties, measurements);
5924
+ }
5925
+ delete _events[name];
5926
+ _events[name] = undefined;
5927
+ };
5928
+ }
5929
+ return Timing;
5930
+ }());
5931
+
5555
5932
  var durationProperty = "duration";
5556
5933
  var strEvent = "event";
5557
5934
  function _dispatchEvent(target, evnt) {
@@ -5569,47 +5946,78 @@
5569
5946
  }
5570
5947
  return error || "";
5571
5948
  }
5572
- var ApplicationInsights = /** @class */ (function (_super) {
5573
- __extendsFn(ApplicationInsights, _super);
5574
- function ApplicationInsights() {
5949
+ var MinMilliSeconds = 60000;
5950
+ function _configMilliseconds(value, defValue) {
5951
+ value = value || defValue;
5952
+ if (value < MinMilliSeconds) {
5953
+ value = MinMilliSeconds;
5954
+ }
5955
+ return value;
5956
+ }
5957
+ function _getDefaultConfig(config) {
5958
+ if (!config) {
5959
+ config = {};
5960
+ }
5961
+ config.sessionRenewalMs = _configMilliseconds(config.sessionRenewalMs, 30 * 60 * 1000);
5962
+ config.sessionExpirationMs = _configMilliseconds(config.sessionExpirationMs, 24 * 60 * 60 * 1000);
5963
+ config.disableExceptionTracking = stringToBoolOrDefault(config.disableExceptionTracking);
5964
+ config.autoTrackPageVisitTime = stringToBoolOrDefault(config.autoTrackPageVisitTime);
5965
+ config.overridePageViewDuration = stringToBoolOrDefault(config.overridePageViewDuration);
5966
+ config.enableUnhandledPromiseRejectionTracking = stringToBoolOrDefault(config.enableUnhandledPromiseRejectionTracking);
5967
+ if (isNaN(config.samplingPercentage) || config.samplingPercentage <= 0 || config.samplingPercentage >= 100) {
5968
+ config.samplingPercentage = 100;
5969
+ }
5970
+ config.isStorageUseDisabled = stringToBoolOrDefault(config.isStorageUseDisabled);
5971
+ config.isBrowserLinkTrackingEnabled = stringToBoolOrDefault(config.isBrowserLinkTrackingEnabled);
5972
+ config.enableAutoRouteTracking = stringToBoolOrDefault(config.enableAutoRouteTracking);
5973
+ config.namePrefix = config.namePrefix || "";
5974
+ config.enableDebug = stringToBoolOrDefault(config.enableDebug);
5975
+ config.disableFlushOnBeforeUnload = stringToBoolOrDefault(config.disableFlushOnBeforeUnload);
5976
+ config.disableFlushOnUnload = stringToBoolOrDefault(config.disableFlushOnUnload, config.disableFlushOnBeforeUnload);
5977
+ return config;
5978
+ }
5979
+ function _updateStorageUsage(extConfig) {
5980
+ if (!isUndefined(extConfig.isStorageUseDisabled)) {
5981
+ if (extConfig.isStorageUseDisabled) {
5982
+ utlDisableStorage();
5983
+ }
5984
+ else {
5985
+ utlEnableStorage();
5986
+ }
5987
+ }
5988
+ }
5989
+ var AnalyticsPlugin = /** @class */ (function (_super) {
5990
+ __extendsFn(AnalyticsPlugin, _super);
5991
+ function AnalyticsPlugin() {
5575
5992
  var _this = _super.call(this) || this;
5576
5993
  _this.identifier = AnalyticsPluginIdentifier;
5577
5994
  _this.priority = 180;
5578
5995
  _this.autoRoutePVDelay = 500;
5579
5996
  var _eventTracking;
5580
5997
  var _pageTracking;
5581
- var _properties;
5998
+ var _pageViewManager;
5999
+ var _pageViewPerformanceManager;
6000
+ var _pageVisitTimeManager;
6001
+ var _preInitTelemetryInitializers;
6002
+ var _isBrowserLinkTrackingEnabled;
6003
+ var _browserLinkInitializerAdded;
6004
+ var _enableAutoRouteTracking;
6005
+ var _historyListenerAdded;
6006
+ var _disableExceptionTracking;
6007
+ var _autoExceptionInstrumented;
6008
+ var _enableUnhandledPromiseRejectionTracking;
6009
+ var _autoUnhandledPromiseInstrumented;
5582
6010
  var _prevUri;
5583
6011
  var _currUri;
5584
- dynamicProto(ApplicationInsights, _this, function (_self, _base) {
5585
- var location = getLocation(true);
5586
- _prevUri = location && location.href || "";
6012
+ var _evtNamespace;
6013
+ dynamicProto(AnalyticsPlugin, _this, function (_self, _base) {
6014
+ var _addHook = _base._addHook;
6015
+ _initDefaults();
5587
6016
  _self.getCookieMgr = function () {
5588
6017
  return safeGetCookieMgr(_self.core);
5589
6018
  };
5590
6019
  _self.processTelemetry = function (env, itemCtx) {
5591
- doPerf(_self.core, function () { return _self.identifier + ":processTelemetry"; }, function () {
5592
- var doNotSendItem = false;
5593
- var telemetryInitializersCount = _self._telemetryInitializers.length;
5594
- itemCtx = _self._getTelCtx(itemCtx);
5595
- for (var i = 0; i < telemetryInitializersCount; ++i) {
5596
- var telemetryInitializer = _self._telemetryInitializers[i];
5597
- if (telemetryInitializer) {
5598
- try {
5599
- if (telemetryInitializer.apply(null, [env]) === false) {
5600
- doNotSendItem = true;
5601
- break;
5602
- }
5603
- }
5604
- catch (e) {
5605
- itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TelemetryInitializerFailed, "One of telemetry initializers failed, telemetry item will not be sent: " + getExceptionName(e), { exception: dumpObj(e) }, true);
5606
- }
5607
- }
5608
- }
5609
- if (!doNotSendItem) {
5610
- _self.processNext(env, itemCtx);
5611
- }
5612
- }, function () { return ({ item: env }); }, !(env.sync));
6020
+ _self.processNext(env, itemCtx);
5613
6021
  };
5614
6022
  _self.trackEvent = function (event, customProperties) {
5615
6023
  try {
@@ -5617,7 +6025,7 @@
5617
6025
  _self.core.track(telemetryItem);
5618
6026
  }
5619
6027
  catch (e) {
5620
- _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TrackTraceFailed, "trackTrace failed, trace will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
6028
+ _throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TrackTraceFailed, "trackTrace failed, trace will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5621
6029
  }
5622
6030
  };
5623
6031
  _self.startTrackEvent = function (name) {
@@ -5625,7 +6033,7 @@
5625
6033
  _eventTracking.start(name);
5626
6034
  }
5627
6035
  catch (e) {
5628
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.StartTrackEventFailed, "startTrackEvent failed, event will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
6036
+ _throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.StartTrackEventFailed, "startTrackEvent failed, event will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5629
6037
  }
5630
6038
  };
5631
6039
  _self.stopTrackEvent = function (name, properties, measurements) {
@@ -5633,7 +6041,7 @@
5633
6041
  _eventTracking.stop(name, undefined, properties);
5634
6042
  }
5635
6043
  catch (e) {
5636
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.StopTrackEventFailed, "stopTrackEvent failed, event will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
6044
+ _throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.StopTrackEventFailed, "stopTrackEvent failed, event will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5637
6045
  }
5638
6046
  };
5639
6047
  _self.trackTrace = function (trace, customProperties) {
@@ -5642,7 +6050,7 @@
5642
6050
  _self.core.track(telemetryItem);
5643
6051
  }
5644
6052
  catch (e) {
5645
- _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TrackTraceFailed, "trackTrace failed, trace will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
6053
+ _throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TrackTraceFailed, "trackTrace failed, trace will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5646
6054
  }
5647
6055
  };
5648
6056
  _self.trackMetric = function (metric, customProperties) {
@@ -5651,19 +6059,19 @@
5651
6059
  _self.core.track(telemetryItem);
5652
6060
  }
5653
6061
  catch (e) {
5654
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackMetricFailed, "trackMetric failed, metric will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
6062
+ _throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackMetricFailed, "trackMetric failed, metric will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5655
6063
  }
5656
6064
  };
5657
6065
  _self.trackPageView = function (pageView, customProperties) {
5658
6066
  try {
5659
6067
  var inPv = pageView || {};
5660
- _self._pageViewManager.trackPageView(inPv, __assignFn(__assignFn(__assignFn({}, inPv.properties), inPv.measurements), customProperties));
6068
+ _pageViewManager.trackPageView(inPv, __assignFn(__assignFn(__assignFn({}, inPv.properties), inPv.measurements), customProperties));
5661
6069
  if (_self.config.autoTrackPageVisitTime) {
5662
- _self._pageVisitTimeManager.trackPreviousPageVisit(inPv.name, inPv.uri);
6070
+ _pageVisitTimeManager.trackPreviousPageVisit(inPv.name, inPv.uri);
5663
6071
  }
5664
6072
  }
5665
6073
  catch (e) {
5666
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackPVFailed, "trackPageView failed, page view will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
6074
+ _throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackPVFailed, "trackPageView failed, page view will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5667
6075
  }
5668
6076
  };
5669
6077
  _self.sendPageViewInternal = function (pageView, properties, systemProperties) {
@@ -5679,12 +6087,13 @@
5679
6087
  _self.core.track(telemetryItem);
5680
6088
  };
5681
6089
  _self.trackPageViewPerformance = function (pageViewPerformance, customProperties) {
6090
+ var inPvp = pageViewPerformance || {};
5682
6091
  try {
5683
- _self._pageViewPerformanceManager.populatePageViewPerformanceEvent(pageViewPerformance);
5684
- _self.sendPageViewPerformanceInternal(pageViewPerformance, customProperties);
6092
+ _pageViewPerformanceManager.populatePageViewPerformanceEvent(inPvp);
6093
+ _self.sendPageViewPerformanceInternal(inPvp, customProperties);
5685
6094
  }
5686
6095
  catch (e) {
5687
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackPVFailed, "trackPageViewPerformance failed, page view will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
6096
+ _throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackPVFailed, "trackPageViewPerformance failed, page view will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5688
6097
  }
5689
6098
  };
5690
6099
  _self.startTrackPage = function (name) {
@@ -5696,7 +6105,7 @@
5696
6105
  _pageTracking.start(name);
5697
6106
  }
5698
6107
  catch (e) {
5699
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.StartTrackFailed, "startTrackPage failed, page view may not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
6108
+ _throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.StartTrackFailed, "startTrackPage failed, page view may not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5700
6109
  }
5701
6110
  };
5702
6111
  _self.stopTrackPage = function (name, url, properties, measurement) {
@@ -5711,11 +6120,11 @@
5711
6120
  }
5712
6121
  _pageTracking.stop(name, url, properties, measurement);
5713
6122
  if (_self.config.autoTrackPageVisitTime) {
5714
- _self._pageVisitTimeManager.trackPreviousPageVisit(name, url);
6123
+ _pageVisitTimeManager.trackPreviousPageVisit(name, url);
5715
6124
  }
5716
6125
  }
5717
6126
  catch (e) {
5718
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.StopTrackFailed, "stopTrackPage failed, page view will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
6127
+ _throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.StopTrackFailed, "stopTrackPage failed, page view will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5719
6128
  }
5720
6129
  };
5721
6130
  _self.sendExceptionInternal = function (exception, customProperties, systemProperties) {
@@ -5725,11 +6134,14 @@
5725
6134
  _self.core.track(telemetryItem);
5726
6135
  };
5727
6136
  _self.trackException = function (exception, customProperties) {
6137
+ if (exception && !exception.exception && exception.error) {
6138
+ exception.exception = exception.error;
6139
+ }
5728
6140
  try {
5729
6141
  _self.sendExceptionInternal(exception, customProperties);
5730
6142
  }
5731
6143
  catch (e) {
5732
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackExceptionFailed, "trackException failed, exception will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
6144
+ _throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackExceptionFailed, "trackException failed, exception will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5733
6145
  }
5734
6146
  };
5735
6147
  _self._onerror = function (exception) {
@@ -5763,158 +6175,97 @@
5763
6175
  }
5764
6176
  catch (e) {
5765
6177
  var errorString = error ? (error.name + ", " + error.message) : "null";
5766
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.ExceptionWhileLoggingError, "_onError threw exception while logging error, error will not be collected: "
6178
+ _throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.ExceptionWhileLoggingError, "_onError threw exception while logging error, error will not be collected: "
5767
6179
  + getExceptionName(e), { exception: dumpObj(e), errorString: errorString });
5768
6180
  }
5769
6181
  };
5770
6182
  _self.addTelemetryInitializer = function (telemetryInitializer) {
5771
- _self._telemetryInitializers.push(telemetryInitializer);
6183
+ if (_self.core) {
6184
+ return _self.core.addTelemetryInitializer(telemetryInitializer);
6185
+ }
6186
+ if (!_preInitTelemetryInitializers) {
6187
+ _preInitTelemetryInitializers = [];
6188
+ }
6189
+ _preInitTelemetryInitializers.push(telemetryInitializer);
5772
6190
  };
5773
6191
  _self.initialize = function (config, core, extensions, pluginChain) {
5774
6192
  if (_self.isInitialized()) {
5775
6193
  return;
5776
6194
  }
5777
6195
  if (isNullOrUndefined(core)) {
5778
- throw Error("Error initializing");
6196
+ throwError("Error initializing");
5779
6197
  }
5780
6198
  _base.initialize(config, core, extensions, pluginChain);
5781
- _self.setInitialized(false);
5782
- var ctx = _self._getTelCtx();
5783
- var identifier = _self.identifier;
5784
- _self.config = ctx.getExtCfg(identifier);
5785
- var defaults = ApplicationInsights.getDefaultConfig(config);
5786
- if (defaults !== undefined) {
5787
- objForEachKey(defaults, function (field, value) {
5788
- _self.config[field] = ctx.getConfig(identifier, field, value);
5789
- if (_self.config[field] === undefined) {
5790
- _self.config[field] = value;
5791
- }
5792
- });
5793
- }
5794
- if (_self.config.isStorageUseDisabled) {
5795
- utlDisableStorage();
5796
- }
5797
- var configGetters = {
5798
- instrumentationKey: function () { return config.instrumentationKey; },
5799
- accountId: function () { return _self.config.accountId || config.accountId; },
5800
- sessionRenewalMs: function () { return _self.config.sessionRenewalMs || config.sessionRenewalMs; },
5801
- sessionExpirationMs: function () { return _self.config.sessionExpirationMs || config.sessionExpirationMs; },
5802
- sampleRate: function () { return _self.config.samplingPercentage || config.samplingPercentage; },
5803
- sdkExtension: function () { return _self.config.sdkExtension || config.sdkExtension; },
5804
- isBrowserLinkTrackingEnabled: function () { return _self.config.isBrowserLinkTrackingEnabled || config.isBrowserLinkTrackingEnabled; },
5805
- appId: function () { return _self.config.appId || config.appId; }
5806
- };
5807
- _self._pageViewPerformanceManager = new PageViewPerformanceManager(_self.core);
5808
- _self._pageViewManager = new PageViewManager(_this, _self.config.overridePageViewDuration, _self.core, _self._pageViewPerformanceManager);
5809
- _self._pageVisitTimeManager = new PageVisitTimeManager(_self.diagLog(), function (pageName, pageUrl, pageVisitTime) { return trackPageVisitTime(pageName, pageUrl, pageVisitTime); });
5810
- _self._telemetryInitializers = _self._telemetryInitializers || [];
5811
- _addDefaultTelemetryInitializers(configGetters);
5812
- _eventTracking = new Timing(_self.diagLog(), "trackEvent");
5813
- _eventTracking.action =
5814
- function (name, url, duration, properties) {
5815
- if (!properties) {
6199
+ try {
6200
+ _evtNamespace = mergeEvtNamespace(createUniqueNamespace("AnalyticsPlugin"), core.evtNamespace && core.evtNamespace());
6201
+ if (_preInitTelemetryInitializers) {
6202
+ arrForEach(_preInitTelemetryInitializers, function (initializer) {
6203
+ core.addTelemetryInitializer(initializer);
6204
+ });
6205
+ _preInitTelemetryInitializers = null;
6206
+ }
6207
+ var extConfig = _populateDefaults(config);
6208
+ _updateStorageUsage(extConfig);
6209
+ _pageViewPerformanceManager = new PageViewPerformanceManager(_self.core);
6210
+ _pageViewManager = new PageViewManager(_this, extConfig.overridePageViewDuration, _self.core, _pageViewPerformanceManager);
6211
+ _pageVisitTimeManager = new PageVisitTimeManager(_self.diagLog(), function (pageName, pageUrl, pageVisitTime) { return trackPageVisitTime(pageName, pageUrl, pageVisitTime); });
6212
+ _updateBrowserLinkTracking(extConfig, config);
6213
+ _eventTracking = new Timing(_self.diagLog(), "trackEvent");
6214
+ _eventTracking.action =
6215
+ function (name, url, duration, properties) {
6216
+ if (!properties) {
6217
+ properties = {};
6218
+ }
6219
+ properties[durationProperty] = duration.toString();
6220
+ _self.trackEvent({ name: name, properties: properties });
6221
+ };
6222
+ _pageTracking = new Timing(_self.diagLog(), "trackPageView");
6223
+ _pageTracking.action = function (name, url, duration, properties, measurements) {
6224
+ if (isNullOrUndefined(properties)) {
5816
6225
  properties = {};
5817
6226
  }
5818
6227
  properties[durationProperty] = duration.toString();
5819
- _self.trackEvent({ name: name, properties: properties });
5820
- };
5821
- _pageTracking = new Timing(_self.diagLog(), "trackPageView");
5822
- _pageTracking.action = function (name, url, duration, properties, measurements) {
5823
- if (isNullOrUndefined(properties)) {
5824
- properties = {};
5825
- }
5826
- properties[durationProperty] = duration.toString();
5827
- var pageViewItem = {
5828
- name: name,
5829
- uri: url,
5830
- properties: properties,
5831
- measurements: measurements
5832
- };
5833
- _self.sendPageViewInternal(pageViewItem, properties);
5834
- };
5835
- var _window = getWindow();
5836
- var _history = getHistory();
5837
- var _location = getLocation(true);
5838
- var instance = _this;
5839
- if (_self.config.disableExceptionTracking === false &&
5840
- !_self.config.autoExceptionInstrumented && _window) {
5841
- var onerror_1 = "onerror";
5842
- var originalOnError_1 = _window[onerror_1];
5843
- _window.onerror = function (message, url, lineNumber, columnNumber, error) {
5844
- var evt = _window[strEvent];
5845
- var handled = originalOnError_1 && originalOnError_1(message, url, lineNumber, columnNumber, error);
5846
- if (handled !== true) {
5847
- instance._onerror(Exception.CreateAutoException(message, url, lineNumber, columnNumber, error, evt));
5848
- }
5849
- return handled;
5850
- };
5851
- _self.config.autoExceptionInstrumented = true;
5852
- }
5853
- if (_self.config.disableExceptionTracking === false &&
5854
- _self.config.enableUnhandledPromiseRejectionTracking === true &&
5855
- !_self.config.autoUnhandledPromiseInstrumented && _window) {
5856
- var onunhandledrejection_1 = "onunhandledrejection";
5857
- var originalOnUnhandledRejection_1 = _window[onunhandledrejection_1];
5858
- _window[onunhandledrejection_1] = function (error) {
5859
- var evt = _window[strEvent];
5860
- var handled = originalOnUnhandledRejection_1 && originalOnUnhandledRejection_1.call(_window, error);
5861
- if (handled !== true) {
5862
- instance._onerror(Exception.CreateAutoException(_getReason(error), _location ? _location.href : "", 0, 0, error, evt));
5863
- }
5864
- return handled;
6228
+ var pageViewItem = {
6229
+ name: name,
6230
+ uri: url,
6231
+ properties: properties,
6232
+ measurements: measurements
6233
+ };
6234
+ _self.sendPageViewInternal(pageViewItem, properties);
5865
6235
  };
5866
- _self.config.autoUnhandledPromiseInstrumented = true;
5867
- }
5868
- if (_self.config.enableAutoRouteTracking === true
5869
- && _history && isFunction(_history.pushState) && isFunction(_history.replaceState)
5870
- && _window
5871
- && typeof Event !== "undefined") {
5872
- var _self_1 = _this;
5873
- arrForEach(extensions, function (extension) {
5874
- if (extension.identifier === PropertiesPluginIdentifier) {
5875
- _properties = extension;
5876
- }
5877
- });
5878
- _history.pushState = (function (f) { return function pushState() {
5879
- var ret = f.apply(this, arguments);
5880
- _dispatchEvent(_window, createDomEvent(_self_1.config.namePrefix + "pushState"));
5881
- _dispatchEvent(_window, createDomEvent(_self_1.config.namePrefix + "locationchange"));
5882
- return ret;
5883
- }; })(_history.pushState);
5884
- _history.replaceState = (function (f) { return function replaceState() {
5885
- var ret = f.apply(this, arguments);
5886
- _dispatchEvent(_window, createDomEvent(_self_1.config.namePrefix + "replaceState"));
5887
- _dispatchEvent(_window, createDomEvent(_self_1.config.namePrefix + "locationchange"));
5888
- return ret;
5889
- }; })(_history.replaceState);
5890
- if (_window.addEventListener) {
5891
- _window.addEventListener(_self_1.config.namePrefix + "popstate", function () {
5892
- _dispatchEvent(_window, createDomEvent(_self_1.config.namePrefix + "locationchange"));
5893
- });
5894
- _window.addEventListener(_self_1.config.namePrefix + "locationchange", function () {
5895
- if (_properties && _properties.context && _properties.context.telemetryTrace) {
5896
- _properties.context.telemetryTrace.traceID = generateW3CId();
5897
- var traceLocationName = "_unknown_";
5898
- if (_location && _location.pathname) {
5899
- traceLocationName = _location.pathname + (_location.hash || "");
5900
- }
5901
- _properties.context.telemetryTrace.name = dataSanitizeString(_self_1.diagLog(), traceLocationName);
5902
- }
5903
- if (_currUri) {
5904
- _prevUri = _currUri;
5905
- _currUri = _location && _location.href || "";
5906
- }
5907
- else {
5908
- _currUri = _location && _location.href || "";
5909
- }
5910
- setTimeout((function (uri) {
5911
- _self_1.trackPageView({ refUri: uri, properties: { duration: 0 } });
5912
- }).bind(_this, _prevUri), _self_1.autoRoutePVDelay);
5913
- });
6236
+ if (hasWindow()) {
6237
+ _updateExceptionTracking(extConfig);
6238
+ _updateLocationChange(extConfig);
5914
6239
  }
5915
6240
  }
5916
- _self.setInitialized(true);
6241
+ catch (e) {
6242
+ _self.setInitialized(false);
6243
+ throw e;
6244
+ }
5917
6245
  };
6246
+ _self._doTeardown = function (unloadCtx, unloadState) {
6247
+ eventOff(window, null, null, _evtNamespace);
6248
+ _initDefaults();
6249
+ };
6250
+ function _populateDefaults(config) {
6251
+ var ctx = createProcessTelemetryContext(null, config, _self.core);
6252
+ var identifier = _self.identifier;
6253
+ var defaults = _getDefaultConfig(config);
6254
+ var extConfig = _self.config = ctx.getExtCfg(identifier);
6255
+ if (defaults !== undefined) {
6256
+ objForEachKey(defaults, function (field, value) {
6257
+ extConfig[field] = ctx.getConfig(identifier, field, value);
6258
+ if (extConfig[field] === undefined) {
6259
+ extConfig = value;
6260
+ }
6261
+ });
6262
+ }
6263
+ return extConfig;
6264
+ }
6265
+ function _updateBrowserLinkTracking(extConfig, config) {
6266
+ _isBrowserLinkTrackingEnabled = extConfig.isBrowserLinkTrackingEnabled || config.isBrowserLinkTrackingEnabled;
6267
+ _addDefaultTelemetryInitializers();
6268
+ }
5918
6269
  function trackPageVisitTime(pageName, pageUrl, pageVisitTime) {
5919
6270
  var properties = { PageName: pageName, PageUrl: pageUrl };
5920
6271
  _self.trackMetric({
@@ -5925,11 +6276,11 @@
5925
6276
  sampleCount: 1
5926
6277
  }, properties);
5927
6278
  }
5928
- function _addDefaultTelemetryInitializers(configGetters) {
5929
- if (!configGetters.isBrowserLinkTrackingEnabled()) {
6279
+ function _addDefaultTelemetryInitializers() {
6280
+ if (!_browserLinkInitializerAdded && _isBrowserLinkTrackingEnabled) {
5930
6281
  var browserLinkPaths_1 = ["/browserLinkSignalR/", "/__browserLink/"];
5931
6282
  var dropBrowserLinkRequests = function (envelope) {
5932
- if (envelope.baseType === RemoteDependencyData.dataType) {
6283
+ if (_isBrowserLinkTrackingEnabled && envelope.baseType === RemoteDependencyData.dataType) {
5933
6284
  var remoteData = envelope.baseData;
5934
6285
  if (remoteData) {
5935
6286
  for (var i = 0; i < browserLinkPaths_1.length; i++) {
@@ -5941,70 +6292,147 @@
5941
6292
  }
5942
6293
  return true;
5943
6294
  };
5944
- _addTelemetryInitializer(dropBrowserLinkRequests);
6295
+ _self.addTelemetryInitializer(dropBrowserLinkRequests);
6296
+ _browserLinkInitializerAdded = true;
5945
6297
  }
5946
6298
  }
5947
- function _addTelemetryInitializer(telemetryInitializer) {
5948
- _self._telemetryInitializers.push(telemetryInitializer);
5949
- }
5950
6299
  function _sendCORSException(exception, properties) {
5951
6300
  var telemetryItem = TelemetryItemCreator.create(exception, Exception.dataType, Exception.envelopeType, _self.diagLog(), properties);
5952
6301
  _self.core.track(telemetryItem);
5953
6302
  }
5954
- });
5955
- return _this;
5956
- }
5957
- ApplicationInsights.getDefaultConfig = function (config) {
5958
- if (!config) {
5959
- config = {};
5960
- }
5961
- config.sessionRenewalMs = 30 * 60 * 1000;
5962
- config.sessionExpirationMs = 24 * 60 * 60 * 1000;
5963
- config.disableExceptionTracking = stringToBoolOrDefault(config.disableExceptionTracking);
5964
- config.autoTrackPageVisitTime = stringToBoolOrDefault(config.autoTrackPageVisitTime);
5965
- config.overridePageViewDuration = stringToBoolOrDefault(config.overridePageViewDuration);
5966
- config.enableUnhandledPromiseRejectionTracking = stringToBoolOrDefault(config.enableUnhandledPromiseRejectionTracking);
5967
- if (isNaN(config.samplingPercentage) || config.samplingPercentage <= 0 || config.samplingPercentage >= 100) {
5968
- config.samplingPercentage = 100;
5969
- }
5970
- config.isStorageUseDisabled = stringToBoolOrDefault(config.isStorageUseDisabled);
5971
- config.isBrowserLinkTrackingEnabled = stringToBoolOrDefault(config.isBrowserLinkTrackingEnabled);
5972
- config.enableAutoRouteTracking = stringToBoolOrDefault(config.enableAutoRouteTracking);
5973
- config.namePrefix = config.namePrefix || "";
5974
- config.enableDebug = stringToBoolOrDefault(config.enableDebug);
5975
- config.disableFlushOnBeforeUnload = stringToBoolOrDefault(config.disableFlushOnBeforeUnload);
5976
- config.disableFlushOnUnload = stringToBoolOrDefault(config.disableFlushOnUnload, config.disableFlushOnBeforeUnload);
5977
- return config;
5978
- };
5979
- ApplicationInsights.Version = "2.8.0-beta.2203-02";
5980
- return ApplicationInsights;
5981
- }(BaseTelemetryPlugin));
5982
- var Timing = /** @class */ (function () {
5983
- function Timing(logger, name) {
5984
- var _self = this;
5985
- var _events = {};
5986
- _self.start = function (name) {
5987
- if (typeof _events[name] !== "undefined") {
5988
- logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.StartCalledMoreThanOnce, "start was called more than once for this event without calling stop.", { name: name, key: name }, true);
6303
+ function _updateExceptionTracking(extConfig) {
6304
+ var _window = getWindow();
6305
+ var locn = getLocation(true);
6306
+ _disableExceptionTracking = extConfig.disableExceptionTracking;
6307
+ if (!_disableExceptionTracking && !_autoExceptionInstrumented && !extConfig.autoExceptionInstrumented) {
6308
+ _addHook(InstrumentFunc(_window, "onerror", {
6309
+ ns: _evtNamespace,
6310
+ rsp: function (callDetails, message, url, lineNumber, columnNumber, error) {
6311
+ if (!_disableExceptionTracking && callDetails.rslt !== true) {
6312
+ _self._onerror(Exception.CreateAutoException(message, url, lineNumber, columnNumber, error, callDetails.evt));
6313
+ }
6314
+ }
6315
+ }));
6316
+ _autoExceptionInstrumented = true;
6317
+ }
6318
+ _addUnhandledPromiseRejectionTracking(extConfig, _window, locn);
5989
6319
  }
5990
- _events[name] = +new Date;
5991
- };
5992
- _self.stop = function (name, url, properties, measurements) {
5993
- var start = _events[name];
5994
- if (isNaN(start)) {
5995
- logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.StopCalledWithoutStart, "stop was called without a corresponding start.", { name: name, key: name }, true);
6320
+ function _updateLocationChange(extConfig) {
6321
+ var win = getWindow();
6322
+ var locn = getLocation(true);
6323
+ _enableAutoRouteTracking = extConfig.enableAutoRouteTracking === true;
6324
+ if (win && _enableAutoRouteTracking && hasHistory()) {
6325
+ var _history = getHistory();
6326
+ if (isFunction(_history.pushState) && isFunction(_history.replaceState) && typeof Event !== strShimUndefined) {
6327
+ _addHistoryListener(extConfig, win, _history, locn);
6328
+ }
6329
+ }
5996
6330
  }
5997
- else {
5998
- var end = +new Date;
5999
- var duration = dateTimeUtilsDuration(start, end);
6000
- _self.action(name, url, duration, properties, measurements);
6331
+ function _addHistoryListener(extConfig, win, history, locn) {
6332
+ function _popstateHandler() {
6333
+ if (_enableAutoRouteTracking) {
6334
+ _dispatchEvent(win, createDomEvent(extConfig.namePrefix + "locationchange"));
6335
+ }
6336
+ }
6337
+ function _locationChangeHandler() {
6338
+ if (_currUri) {
6339
+ _prevUri = _currUri;
6340
+ _currUri = locn && locn.href || "";
6341
+ }
6342
+ else {
6343
+ _currUri = locn && locn.href || "";
6344
+ }
6345
+ if (_enableAutoRouteTracking) {
6346
+ var properties = _self.core.getPlugin(PropertiesPluginIdentifier);
6347
+ if (properties) {
6348
+ var context = properties.plugin.context;
6349
+ if (context && context.telemetryTrace) {
6350
+ context.telemetryTrace.traceID = generateW3CId();
6351
+ var traceLocationName = "_unknown_";
6352
+ if (locn && locn.pathname) {
6353
+ traceLocationName = locn.pathname + (locn.hash || "");
6354
+ }
6355
+ context.telemetryTrace.name = dataSanitizeString(_self.diagLog(), traceLocationName);
6356
+ }
6357
+ }
6358
+ setTimeout((function (uri) {
6359
+ _self.trackPageView({ refUri: uri, properties: { duration: 0 } });
6360
+ }).bind(this, _prevUri), _self.autoRoutePVDelay);
6361
+ }
6362
+ }
6363
+ if (!_historyListenerAdded) {
6364
+ _addHook(InstrumentFunc(history, "pushState", {
6365
+ ns: _evtNamespace,
6366
+ rsp: function () {
6367
+ if (_enableAutoRouteTracking) {
6368
+ _dispatchEvent(win, createDomEvent(extConfig.namePrefix + "pushState"));
6369
+ _dispatchEvent(win, createDomEvent(extConfig.namePrefix + "locationchange"));
6370
+ }
6371
+ }
6372
+ }));
6373
+ _addHook(InstrumentFunc(history, "replaceState", {
6374
+ ns: _evtNamespace,
6375
+ rsp: function () {
6376
+ if (_enableAutoRouteTracking) {
6377
+ _dispatchEvent(win, createDomEvent(extConfig.namePrefix + "replaceState"));
6378
+ _dispatchEvent(win, createDomEvent(extConfig.namePrefix + "locationchange"));
6379
+ }
6380
+ }
6381
+ }));
6382
+ eventOn(win, extConfig.namePrefix + "popstate", _popstateHandler, _evtNamespace);
6383
+ eventOn(win, extConfig.namePrefix + "locationchange", _locationChangeHandler, _evtNamespace);
6384
+ _historyListenerAdded = true;
6385
+ }
6386
+ }
6387
+ function _addUnhandledPromiseRejectionTracking(extConfig, _window, _location) {
6388
+ _enableUnhandledPromiseRejectionTracking = extConfig.enableUnhandledPromiseRejectionTracking === true;
6389
+ if (_enableUnhandledPromiseRejectionTracking && !_autoUnhandledPromiseInstrumented) {
6390
+ _addHook(InstrumentFunc(_window, "onunhandledrejection", {
6391
+ ns: _evtNamespace,
6392
+ rsp: function (callDetails, error) {
6393
+ if (_enableUnhandledPromiseRejectionTracking && callDetails.rslt !== true) {
6394
+ _self._onerror(Exception.CreateAutoException(_getReason(error), _location ? _location.href : "", 0, 0, error, callDetails.evt));
6395
+ }
6396
+ }
6397
+ }));
6398
+ _autoUnhandledPromiseInstrumented = true;
6399
+ extConfig.autoUnhandledPromiseInstrumented = _autoUnhandledPromiseInstrumented;
6400
+ }
6001
6401
  }
6002
- delete _events[name];
6003
- _events[name] = undefined;
6004
- };
6402
+ function _throwInternal(severity, msgId, msg, properties, isUserAct) {
6403
+ _self.diagLog().throwInternal(severity, msgId, msg, properties, isUserAct);
6404
+ }
6405
+ function _initDefaults() {
6406
+ _eventTracking = null;
6407
+ _pageTracking = null;
6408
+ _pageViewManager = null;
6409
+ _pageViewPerformanceManager = null;
6410
+ _pageVisitTimeManager = null;
6411
+ _preInitTelemetryInitializers = null;
6412
+ _isBrowserLinkTrackingEnabled = false;
6413
+ _browserLinkInitializerAdded = false;
6414
+ _enableAutoRouteTracking = false;
6415
+ _historyListenerAdded = false;
6416
+ _disableExceptionTracking = false;
6417
+ _autoExceptionInstrumented = false;
6418
+ _enableUnhandledPromiseRejectionTracking = false;
6419
+ _autoUnhandledPromiseInstrumented = false;
6420
+ var location = getLocation(true);
6421
+ _prevUri = location && location.href || "";
6422
+ _currUri = null;
6423
+ _evtNamespace = null;
6424
+ }
6425
+ objDefineAccessors(_self, "_pageViewManager", function () { return _pageViewManager; });
6426
+ objDefineAccessors(_self, "_pageViewPerformanceManager", function () { return _pageViewPerformanceManager; });
6427
+ objDefineAccessors(_self, "_pageVisitTimeManager", function () { return _pageVisitTimeManager; });
6428
+ objDefineAccessors(_self, "_evtNamespace", function () { return "." + _evtNamespace; });
6429
+ });
6430
+ return _this;
6005
6431
  }
6006
- return Timing;
6007
- }());
6432
+ AnalyticsPlugin.Version = "2.8.0-beta.2203-05";
6433
+ AnalyticsPlugin.getDefaultConfig = _getDefaultConfig;
6434
+ return AnalyticsPlugin;
6435
+ }(BaseTelemetryPlugin));
6008
6436
 
6009
6437
  var BaseSendBuffer = /** @class */ (function () {
6010
6438
  function BaseSendBuffer(logger, config) {
@@ -6283,7 +6711,7 @@
6283
6711
  }
6284
6712
  }
6285
6713
  var EnvelopeCreator = {
6286
- Version: "2.8.0-beta.2203-02"
6714
+ Version: "2.8.0-beta.2203-05"
6287
6715
  };
6288
6716
  function DependencyEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {
6289
6717
  EnvelopeCreatorInit(logger, telemetryItem);
@@ -6578,65 +7006,81 @@
6578
7006
  return Serializer;
6579
7007
  }());
6580
7008
 
6581
- var OfflineListener = /** @class */ (function () {
6582
- function OfflineListener() {
6583
- var _window = getWindow();
6584
- var _document = getDocument();
6585
- var isListening = false;
6586
- var _onlineStatus = true;
6587
- dynamicProto(OfflineListener, this, function (_self) {
6588
- try {
6589
- if (_window) {
6590
- if (attachEvent(_window, "online", _setOnline)) {
6591
- attachEvent(_window, "offline", _setOffline);
6592
- isListening = true;
6593
- }
6594
- }
6595
- if (_document) {
6596
- var target = _document.body || _document;
6597
- if (!isUndefined(target.ononline)) {
6598
- target.ononline = _setOnline;
6599
- target.onoffline = _setOffline;
6600
- isListening = true;
6601
- }
6602
- }
6603
- if (isListening) {
6604
- var _navigator = getNavigator();
6605
- if (_navigator && !isNullOrUndefined(_navigator.onLine)) {
6606
- _onlineStatus = _navigator.onLine;
6607
- }
7009
+ function _disableEvents(target, evtNamespace) {
7010
+ eventOff(target, null, null, evtNamespace);
7011
+ }
7012
+ function createOfflineListener(parentEvtNamespace) {
7013
+ var _document = getDocument();
7014
+ var _navigator = getNavigator();
7015
+ var _isListening = false;
7016
+ var _onlineStatus = true;
7017
+ var _evtNamespace = mergeEvtNamespace(createUniqueNamespace("OfflineListener"), parentEvtNamespace);
7018
+ try {
7019
+ if (_enableEvents(getWindow())) {
7020
+ _isListening = true;
7021
+ }
7022
+ if (_document) {
7023
+ var target = _document.body || _document;
7024
+ if (target.ononline) {
7025
+ if (_enableEvents(target)) {
7026
+ _isListening = true;
6608
7027
  }
6609
7028
  }
6610
- catch (e) {
6611
- isListening = false;
7029
+ }
7030
+ if (_isListening) {
7031
+ if (_navigator && !isNullOrUndefined(_navigator.onLine)) {
7032
+ _onlineStatus = _navigator.onLine;
6612
7033
  }
6613
- _self.isListening = isListening;
6614
- _self.isOnline = function () {
6615
- var result = true;
6616
- var _navigator = getNavigator();
6617
- if (isListening) {
6618
- result = _onlineStatus;
6619
- }
6620
- else if (_navigator && !isNullOrUndefined(_navigator.onLine)) {
6621
- result = _navigator.onLine;
6622
- }
6623
- return result;
6624
- };
6625
- _self.isOffline = function () {
6626
- return !_self.isOnline();
6627
- };
6628
- function _setOnline() {
6629
- _onlineStatus = true;
7034
+ }
7035
+ }
7036
+ catch (e) {
7037
+ _isListening = false;
7038
+ }
7039
+ function _enableEvents(target) {
7040
+ var enabled = false;
7041
+ if (target) {
7042
+ enabled = eventOn(target, "online", _setOnline, _evtNamespace);
7043
+ if (enabled) {
7044
+ eventOn(target, "offline", _setOffline, _evtNamespace);
6630
7045
  }
6631
- function _setOffline() {
6632
- _onlineStatus = false;
7046
+ }
7047
+ return enabled;
7048
+ }
7049
+ function _setOnline() {
7050
+ _onlineStatus = true;
7051
+ }
7052
+ function _setOffline() {
7053
+ _onlineStatus = false;
7054
+ }
7055
+ function _isOnline() {
7056
+ var result = true;
7057
+ if (_isListening) {
7058
+ result = _onlineStatus;
7059
+ }
7060
+ else if (_navigator && !isNullOrUndefined(_navigator.onLine)) {
7061
+ result = _navigator.onLine;
7062
+ }
7063
+ return result;
7064
+ }
7065
+ function _unload() {
7066
+ var win = getWindow();
7067
+ if (win && _isListening) {
7068
+ _disableEvents(win, _evtNamespace);
7069
+ if (_document) {
7070
+ var target = _document.body || _document;
7071
+ if (!isUndefined(target.ononline)) {
7072
+ _disableEvents(target, _evtNamespace);
7073
+ }
6633
7074
  }
6634
- });
7075
+ _isListening = false;
7076
+ }
6635
7077
  }
6636
- OfflineListener.Offline = new OfflineListener;
6637
- return OfflineListener;
6638
- }());
6639
- var Offline = OfflineListener.Offline;
7078
+ return {
7079
+ isOnline: _isOnline,
7080
+ isListening: function () { return _isListening; },
7081
+ unload: _unload
7082
+ };
7083
+ }
6640
7084
 
6641
7085
  var MIN_INPUT_LENGTH = 8;
6642
7086
  var HashCodeScoreGenerator = /** @class */ (function () {
@@ -6764,22 +7208,22 @@
6764
7208
  var _this = _super.call(this) || this;
6765
7209
  _this.priority = 1001;
6766
7210
  _this.identifier = BreezeChannelIdentifier;
7211
+ _this._senderConfig = _getDefaultAppInsightsChannelConfig();
6767
7212
  var _consecutiveErrors;
6768
7213
  var _retryAt;
6769
7214
  var _lastSend;
6770
- var _paused = false;
7215
+ var _paused;
6771
7216
  var _timeoutHandle;
6772
7217
  var _serializer;
6773
7218
  var _stamp_specific_redirects;
6774
- var _headers = {};
7219
+ var _headers;
6775
7220
  var _syncFetchPayload = 0;
6776
7221
  var _fallbackSender;
6777
7222
  var _syncUnloadSender;
6778
- _this._senderConfig = _getDefaultAppInsightsChannelConfig();
7223
+ var _offlineListener;
7224
+ var _evtNamespace;
6779
7225
  dynamicProto(Sender, _this, function (_self, _base) {
6780
- function _notImplemented() {
6781
- throwError("Method not implemented.");
6782
- }
7226
+ _initDefaults();
6783
7227
  _self.pause = function () {
6784
7228
  _clearScheduledTimer();
6785
7229
  _paused = true;
@@ -6802,7 +7246,7 @@
6802
7246
  _self.triggerSend(isAsync, null, sendReason || 1 );
6803
7247
  }
6804
7248
  catch (e) {
6805
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.FlushFailed, "flush failed, telemetry will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
7249
+ _throwInternal(_self.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.FlushFailed, "flush failed, telemetry will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
6806
7250
  }
6807
7251
  }
6808
7252
  };
@@ -6813,7 +7257,7 @@
6813
7257
  _self.triggerSend(true, _doUnloadSend, 2 );
6814
7258
  }
6815
7259
  catch (e) {
6816
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.FailedToSendQueuedTelemetry, "failed to flush with beacon sender on page unload, telemetry will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
7260
+ _throwInternal(_self.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.FailedToSendQueuedTelemetry, "failed to flush with beacon sender on page unload, telemetry will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
6817
7261
  }
6818
7262
  }
6819
7263
  else {
@@ -6821,7 +7265,6 @@
6821
7265
  }
6822
7266
  }
6823
7267
  };
6824
- _self.teardown = _notImplemented;
6825
7268
  _self.addHeader = function (name, value) {
6826
7269
  _headers[name] = value;
6827
7270
  };
@@ -6836,6 +7279,8 @@
6836
7279
  _self._sender = null;
6837
7280
  _stamp_specific_redirects = 0;
6838
7281
  var diagLog = _self.diagLog();
7282
+ _evtNamespace = mergeEvtNamespace(createUniqueNamespace("Sender"), core.evtNamespace && core.evtNamespace());
7283
+ _offlineListener = createOfflineListener(_evtNamespace);
6839
7284
  var defaultConfig = _getDefaultAppInsightsChannelConfig();
6840
7285
  objForEachKey(defaultConfig, function (field, value) {
6841
7286
  _self._senderConfig[field] = function () { return ctx.getConfig(identifier, field, value()); };
@@ -6844,7 +7289,7 @@
6844
7289
  ? new SessionStorageSendBuffer(diagLog, _self._senderConfig) : new ArraySendBuffer(diagLog, _self._senderConfig);
6845
7290
  _self._sample = new Sample(_self._senderConfig.samplingPercentage(), diagLog);
6846
7291
  if (!_validateInstrumentationKey(config)) {
6847
- diagLog.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.InvalidInstrumentationKey, "Invalid Instrumentation key " + config.instrumentationKey);
7292
+ _throwInternal(diagLog, LoggingSeverity.CRITICAL, _InternalMessageId.InvalidInstrumentationKey, "Invalid Instrumentation key " + config.instrumentationKey);
6848
7293
  }
6849
7294
  if (!isInternalApplicationInsightsEndpoint(_self._senderConfig.endpointUrl()) && _self._senderConfig.customHeaders() && _self._senderConfig.customHeaders().length > 0) {
6850
7295
  arrForEach(_self._senderConfig.customHeaders(), function (customHeader) {
@@ -6890,22 +7335,22 @@
6890
7335
  return;
6891
7336
  }
6892
7337
  if (!telemetryItem) {
6893
- itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.CannotSendEmptyTelemetry, "Cannot send empty telemetry");
7338
+ _throwInternal(itemCtx.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.CannotSendEmptyTelemetry, "Cannot send empty telemetry");
6894
7339
  return;
6895
7340
  }
6896
7341
  if (telemetryItem.baseData && !telemetryItem.baseType) {
6897
- itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.InvalidEvent, "Cannot send telemetry without baseData and baseType");
7342
+ _throwInternal(itemCtx.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.InvalidEvent, "Cannot send telemetry without baseData and baseType");
6898
7343
  return;
6899
7344
  }
6900
7345
  if (!telemetryItem.baseType) {
6901
7346
  telemetryItem.baseType = "EventData";
6902
7347
  }
6903
7348
  if (!_self._sender) {
6904
- itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.SenderNotInitialized, "Sender was not initialized");
7349
+ _throwInternal(itemCtx.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.SenderNotInitialized, "Sender was not initialized");
6905
7350
  return;
6906
7351
  }
6907
7352
  if (!_isSampledIn(telemetryItem)) {
6908
- itemCtx.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TelemetrySampledAndNotSent, "Telemetry item was sampled out and not sent", { SampleRate: _self._sample.sampleRate });
7353
+ _throwInternal(itemCtx.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TelemetrySampledAndNotSent, "Telemetry item was sampled out and not sent", { SampleRate: _self._sample.sampleRate });
6909
7354
  return;
6910
7355
  }
6911
7356
  else {
@@ -6915,7 +7360,7 @@
6915
7360
  var defaultEnvelopeIkey = telemetryItem.iKey || _self._senderConfig.instrumentationKey();
6916
7361
  var aiEnvelope_1 = Sender.constructEnvelope(telemetryItem, defaultEnvelopeIkey, itemCtx.diagLog(), convertUndefined);
6917
7362
  if (!aiEnvelope_1) {
6918
- itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.CreateEnvelopeError, "Unable to create an AppInsights envelope");
7363
+ _throwInternal(itemCtx.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.CreateEnvelopeError, "Unable to create an AppInsights envelope");
6919
7364
  return;
6920
7365
  }
6921
7366
  var doNotSendItem_1 = false;
@@ -6928,7 +7373,7 @@
6928
7373
  }
6929
7374
  }
6930
7375
  catch (e) {
6931
- itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TelemetryInitializerFailed, "One of telemetry initializers failed, telemetry item will not be sent: " + getExceptionName(e), { exception: dumpObj(e) }, true);
7376
+ _throwInternal(itemCtx.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.TelemetryInitializerFailed, "One of telemetry initializers failed, telemetry item will not be sent: " + getExceptionName(e), { exception: dumpObj(e) }, true);
6932
7377
  }
6933
7378
  });
6934
7379
  delete telemetryItem.tags[ProcessLegacy];
@@ -6946,7 +7391,7 @@
6946
7391
  _setupTimer();
6947
7392
  }
6948
7393
  catch (e) {
6949
- itemCtx.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.FailedAddingTelemetryToBuffer, "Failed adding telemetry to the sender's buffer, some telemetry will be lost: " + getExceptionName(e), { exception: dumpObj(e) });
7394
+ _throwInternal(itemCtx.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.FailedAddingTelemetryToBuffer, "Failed adding telemetry to the sender's buffer, some telemetry will be lost: " + getExceptionName(e), { exception: dumpObj(e) });
6950
7395
  }
6951
7396
  _self.processNext(telemetryItem, itemCtx);
6952
7397
  };
@@ -6981,13 +7426,18 @@
6981
7426
  catch (e) {
6982
7427
  var ieVer = getIEVersion();
6983
7428
  if (!ieVer || ieVer > 9) {
6984
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TransmissionFailed, "Telemetry transmission failed, some telemetry will be lost: " + getExceptionName(e), { exception: dumpObj(e) });
7429
+ _throwInternal(_self.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.TransmissionFailed, "Telemetry transmission failed, some telemetry will be lost: " + getExceptionName(e), { exception: dumpObj(e) });
6985
7430
  }
6986
7431
  }
6987
7432
  }
6988
7433
  };
7434
+ _self._doTeardown = function (unloadCtx, unloadState) {
7435
+ _self.onunloadFlush();
7436
+ _offlineListener.unload();
7437
+ _initDefaults();
7438
+ };
6989
7439
  _self._onError = function (payload, message, event) {
6990
- _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.OnError, "Failed to send telemetry.", { message: message });
7440
+ _throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.OnError, "Failed to send telemetry.", { message: message });
6991
7441
  _self._buffer.clearSent(payload);
6992
7442
  };
6993
7443
  _self._onPartialSuccess = function (payload, results) {
@@ -7012,7 +7462,7 @@
7012
7462
  }
7013
7463
  if (retry.length > 0) {
7014
7464
  _resendPayload(retry);
7015
- _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, "Partial success. " +
7465
+ _throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, "Partial success. " +
7016
7466
  "Delivered: " + payload.length + ", Failed: " + failed.length +
7017
7467
  ". Will retry to send " + retry.length + " our of " + results.itemsReceived + " items");
7018
7468
  }
@@ -7057,18 +7507,18 @@
7057
7507
  }
7058
7508
  if (!_self._senderConfig.isRetryDisabled() && _isRetriable(status)) {
7059
7509
  _resendPayload(payload);
7060
- _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " +
7510
+ _throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " +
7061
7511
  "Response code " + status + ". Will retry to send " + payload.length + " items.");
7062
7512
  }
7063
7513
  else {
7064
7514
  _self._onError(payload, errorMessage);
7065
7515
  }
7066
7516
  }
7067
- else if (Offline.isOffline()) {
7517
+ else if (_offlineListener && !_offlineListener.isOnline()) {
7068
7518
  if (!_self._senderConfig.isRetryDisabled()) {
7069
7519
  var offlineBackOffMultiplier = 10;
7070
7520
  _resendPayload(payload, offlineBackOffMultiplier);
7071
- _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". Offline - Response Code: ".concat(status, ". Offline status: ").concat(Offline.isOffline(), ". Will retry to send ").concat(payload.length, " items."));
7521
+ _throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". Offline - Response Code: ".concat(status, ". Offline status: ").concat(!_offlineListener.isOnline(), ". Will retry to send ").concat(payload.length, " items."));
7072
7522
  }
7073
7523
  }
7074
7524
  else {
@@ -7135,8 +7585,8 @@
7135
7585
  }
7136
7586
  }
7137
7587
  if (droppedPayload.length > 0) {
7138
- _fallbackSender(droppedPayload, true);
7139
- _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " + "Failed to send telemetry with Beacon API, retried with normal sender.");
7588
+ _fallbackSender && _fallbackSender(droppedPayload, true);
7589
+ _throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " + "Failed to send telemetry with Beacon API, retried with normal sender.");
7140
7590
  }
7141
7591
  }
7142
7592
  }
@@ -7177,7 +7627,7 @@
7177
7627
  }
7178
7628
  else {
7179
7629
  _fallbackSender && _fallbackSender(payload, true);
7180
- _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " + "Failed to send telemetry with Beacon API, retried with xhrSender.");
7630
+ _throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " + "Failed to send telemetry with Beacon API, retried with xhrSender.");
7181
7631
  }
7182
7632
  }
7183
7633
  }
@@ -7268,7 +7718,7 @@
7268
7718
  }
7269
7719
  }
7270
7720
  catch (e) {
7271
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.InvalidBackendResponse, "Cannot parse the response. " + getExceptionName(e), {
7721
+ _throwInternal(_self.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.InvalidBackendResponse, "Cannot parse the response. " + getExceptionName(e), {
7272
7722
  response: response
7273
7723
  });
7274
7724
  }
@@ -7339,7 +7789,7 @@
7339
7789
  xdr.onerror = function (event) { return _self._onError(payload, _formatErrorMessageXdr(xdr), event); };
7340
7790
  var hostingProtocol = _window && _window.location && _window.location.protocol || "";
7341
7791
  if (_self._senderConfig.endpointUrl().lastIndexOf(hostingProtocol, 0) !== 0) {
7342
- _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " +
7792
+ _throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " +
7343
7793
  "Cannot send XDomain request. The endpoint URL protocol doesn't match the hosting page protocol.");
7344
7794
  buffer.clear();
7345
7795
  return;
@@ -7370,7 +7820,7 @@
7370
7820
  manager.eventsSendRequest(sendRequest, isAsync);
7371
7821
  }
7372
7822
  catch (e) {
7373
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.NotificationException, "send request notification failed: " + getExceptionName(e), { exception: dumpObj(e) });
7823
+ _throwInternal(_self.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.NotificationException, "send request notification failed: " + getExceptionName(e), { exception: dumpObj(e) });
7374
7824
  }
7375
7825
  }
7376
7826
  }
@@ -7383,6 +7833,25 @@
7383
7833
  var regexp = new RegExp(UUID_Regex);
7384
7834
  return regexp.test(config.instrumentationKey);
7385
7835
  }
7836
+ function _initDefaults() {
7837
+ _self._sender = null;
7838
+ _self._buffer = null;
7839
+ _self._appId = null;
7840
+ _self._sample = null;
7841
+ _headers = {};
7842
+ _offlineListener = null;
7843
+ _consecutiveErrors = 0;
7844
+ _retryAt = null;
7845
+ _lastSend = null;
7846
+ _paused = false;
7847
+ _timeoutHandle = null;
7848
+ _serializer = null;
7849
+ _stamp_specific_redirects = 0;
7850
+ _syncFetchPayload = 0;
7851
+ _fallbackSender = null;
7852
+ _syncUnloadSender = null;
7853
+ _evtNamespace = null;
7854
+ }
7386
7855
  });
7387
7856
  return _this;
7388
7857
  }
@@ -7552,7 +8021,7 @@
7552
8021
  return Device;
7553
8022
  }());
7554
8023
 
7555
- var Version = "2.8.0-beta.2203-02";
8024
+ var Version = "2.8.0-beta.2203-05";
7556
8025
  var Internal = /** @class */ (function () {
7557
8026
  function Internal(config) {
7558
8027
  this.sdkVersion = (config.sdkExtension && config.sdkExtension() ? config.sdkExtension() + "_" : "") + "javascript:" + Version;
@@ -8975,7 +9444,7 @@
8975
9444
  config.endpointUrl = ingest ? "".concat(ingest, "/v2/track") : config.endpointUrl;
8976
9445
  config.instrumentationKey = cs.instrumentationkey || config.instrumentationKey;
8977
9446
  }
8978
- _self.appInsights = new ApplicationInsights();
9447
+ _self.appInsights = new AnalyticsPlugin();
8979
9448
  _self.properties = new PropertiesPlugin$1();
8980
9449
  _self.dependencies = new AjaxMonitor();
8981
9450
  _self.core = new AppInsightsCore();