@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
@@ -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;
@@ -5394,6 +5744,33 @@
5394
5744
  return PageViewPerformanceManager;
5395
5745
  }());
5396
5746
 
5747
+ var Timing = /** @class */ (function () {
5748
+ function Timing(logger, name) {
5749
+ var _self = this;
5750
+ var _events = {};
5751
+ _self.start = function (name) {
5752
+ if (typeof _events[name] !== "undefined") {
5753
+ _throwInternal(logger, LoggingSeverity.WARNING, _InternalMessageId.StartCalledMoreThanOnce, "start was called more than once for this event without calling stop.", { name: name, key: name }, true);
5754
+ }
5755
+ _events[name] = +new Date;
5756
+ };
5757
+ _self.stop = function (name, url, properties, measurements) {
5758
+ var start = _events[name];
5759
+ if (isNaN(start)) {
5760
+ _throwInternal(logger, LoggingSeverity.WARNING, _InternalMessageId.StopCalledWithoutStart, "stop was called without a corresponding start.", { name: name, key: name }, true);
5761
+ }
5762
+ else {
5763
+ var end = +new Date;
5764
+ var duration = dateTimeUtilsDuration(start, end);
5765
+ _self.action(name, url, duration, properties, measurements);
5766
+ }
5767
+ delete _events[name];
5768
+ _events[name] = undefined;
5769
+ };
5770
+ }
5771
+ return Timing;
5772
+ }());
5773
+
5397
5774
  var durationProperty = "duration";
5398
5775
  var strEvent = "event";
5399
5776
  function _dispatchEvent(target, evnt) {
@@ -5411,47 +5788,78 @@
5411
5788
  }
5412
5789
  return error || "";
5413
5790
  }
5414
- var ApplicationInsights = /** @class */ (function (_super) {
5415
- __extendsFn(ApplicationInsights, _super);
5416
- function ApplicationInsights() {
5791
+ var MinMilliSeconds = 60000;
5792
+ function _configMilliseconds(value, defValue) {
5793
+ value = value || defValue;
5794
+ if (value < MinMilliSeconds) {
5795
+ value = MinMilliSeconds;
5796
+ }
5797
+ return value;
5798
+ }
5799
+ function _getDefaultConfig(config) {
5800
+ if (!config) {
5801
+ config = {};
5802
+ }
5803
+ config.sessionRenewalMs = _configMilliseconds(config.sessionRenewalMs, 30 * 60 * 1000);
5804
+ config.sessionExpirationMs = _configMilliseconds(config.sessionExpirationMs, 24 * 60 * 60 * 1000);
5805
+ config.disableExceptionTracking = stringToBoolOrDefault(config.disableExceptionTracking);
5806
+ config.autoTrackPageVisitTime = stringToBoolOrDefault(config.autoTrackPageVisitTime);
5807
+ config.overridePageViewDuration = stringToBoolOrDefault(config.overridePageViewDuration);
5808
+ config.enableUnhandledPromiseRejectionTracking = stringToBoolOrDefault(config.enableUnhandledPromiseRejectionTracking);
5809
+ if (isNaN(config.samplingPercentage) || config.samplingPercentage <= 0 || config.samplingPercentage >= 100) {
5810
+ config.samplingPercentage = 100;
5811
+ }
5812
+ config.isStorageUseDisabled = stringToBoolOrDefault(config.isStorageUseDisabled);
5813
+ config.isBrowserLinkTrackingEnabled = stringToBoolOrDefault(config.isBrowserLinkTrackingEnabled);
5814
+ config.enableAutoRouteTracking = stringToBoolOrDefault(config.enableAutoRouteTracking);
5815
+ config.namePrefix = config.namePrefix || "";
5816
+ config.enableDebug = stringToBoolOrDefault(config.enableDebug);
5817
+ config.disableFlushOnBeforeUnload = stringToBoolOrDefault(config.disableFlushOnBeforeUnload);
5818
+ config.disableFlushOnUnload = stringToBoolOrDefault(config.disableFlushOnUnload, config.disableFlushOnBeforeUnload);
5819
+ return config;
5820
+ }
5821
+ function _updateStorageUsage(extConfig) {
5822
+ if (!isUndefined(extConfig.isStorageUseDisabled)) {
5823
+ if (extConfig.isStorageUseDisabled) {
5824
+ utlDisableStorage();
5825
+ }
5826
+ else {
5827
+ utlEnableStorage();
5828
+ }
5829
+ }
5830
+ }
5831
+ var AnalyticsPlugin = /** @class */ (function (_super) {
5832
+ __extendsFn(AnalyticsPlugin, _super);
5833
+ function AnalyticsPlugin() {
5417
5834
  var _this = _super.call(this) || this;
5418
5835
  _this.identifier = AnalyticsPluginIdentifier;
5419
5836
  _this.priority = 180;
5420
5837
  _this.autoRoutePVDelay = 500;
5421
5838
  var _eventTracking;
5422
5839
  var _pageTracking;
5423
- var _properties;
5840
+ var _pageViewManager;
5841
+ var _pageViewPerformanceManager;
5842
+ var _pageVisitTimeManager;
5843
+ var _preInitTelemetryInitializers;
5844
+ var _isBrowserLinkTrackingEnabled;
5845
+ var _browserLinkInitializerAdded;
5846
+ var _enableAutoRouteTracking;
5847
+ var _historyListenerAdded;
5848
+ var _disableExceptionTracking;
5849
+ var _autoExceptionInstrumented;
5850
+ var _enableUnhandledPromiseRejectionTracking;
5851
+ var _autoUnhandledPromiseInstrumented;
5424
5852
  var _prevUri;
5425
5853
  var _currUri;
5426
- dynamicProto(ApplicationInsights, _this, function (_self, _base) {
5427
- var location = getLocation(true);
5428
- _prevUri = location && location.href || "";
5854
+ var _evtNamespace;
5855
+ dynamicProto(AnalyticsPlugin, _this, function (_self, _base) {
5856
+ var _addHook = _base._addHook;
5857
+ _initDefaults();
5429
5858
  _self.getCookieMgr = function () {
5430
5859
  return safeGetCookieMgr(_self.core);
5431
5860
  };
5432
5861
  _self.processTelemetry = function (env, itemCtx) {
5433
- doPerf(_self.core, function () { return _self.identifier + ":processTelemetry"; }, function () {
5434
- var doNotSendItem = false;
5435
- var telemetryInitializersCount = _self._telemetryInitializers.length;
5436
- itemCtx = _self._getTelCtx(itemCtx);
5437
- for (var i = 0; i < telemetryInitializersCount; ++i) {
5438
- var telemetryInitializer = _self._telemetryInitializers[i];
5439
- if (telemetryInitializer) {
5440
- try {
5441
- if (telemetryInitializer.apply(null, [env]) === false) {
5442
- doNotSendItem = true;
5443
- break;
5444
- }
5445
- }
5446
- catch (e) {
5447
- itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TelemetryInitializerFailed, "One of telemetry initializers failed, telemetry item will not be sent: " + getExceptionName(e), { exception: dumpObj(e) }, true);
5448
- }
5449
- }
5450
- }
5451
- if (!doNotSendItem) {
5452
- _self.processNext(env, itemCtx);
5453
- }
5454
- }, function () { return ({ item: env }); }, !(env.sync));
5862
+ _self.processNext(env, itemCtx);
5455
5863
  };
5456
5864
  _self.trackEvent = function (event, customProperties) {
5457
5865
  try {
@@ -5459,7 +5867,7 @@
5459
5867
  _self.core.track(telemetryItem);
5460
5868
  }
5461
5869
  catch (e) {
5462
- _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TrackTraceFailed, "trackTrace failed, trace will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5870
+ _throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TrackTraceFailed, "trackTrace failed, trace will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5463
5871
  }
5464
5872
  };
5465
5873
  _self.startTrackEvent = function (name) {
@@ -5467,7 +5875,7 @@
5467
5875
  _eventTracking.start(name);
5468
5876
  }
5469
5877
  catch (e) {
5470
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.StartTrackEventFailed, "startTrackEvent failed, event will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5878
+ _throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.StartTrackEventFailed, "startTrackEvent failed, event will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5471
5879
  }
5472
5880
  };
5473
5881
  _self.stopTrackEvent = function (name, properties, measurements) {
@@ -5475,7 +5883,7 @@
5475
5883
  _eventTracking.stop(name, undefined, properties);
5476
5884
  }
5477
5885
  catch (e) {
5478
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.StopTrackEventFailed, "stopTrackEvent failed, event will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5886
+ _throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.StopTrackEventFailed, "stopTrackEvent failed, event will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5479
5887
  }
5480
5888
  };
5481
5889
  _self.trackTrace = function (trace, customProperties) {
@@ -5484,7 +5892,7 @@
5484
5892
  _self.core.track(telemetryItem);
5485
5893
  }
5486
5894
  catch (e) {
5487
- _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TrackTraceFailed, "trackTrace failed, trace will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5895
+ _throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TrackTraceFailed, "trackTrace failed, trace will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5488
5896
  }
5489
5897
  };
5490
5898
  _self.trackMetric = function (metric, customProperties) {
@@ -5493,19 +5901,19 @@
5493
5901
  _self.core.track(telemetryItem);
5494
5902
  }
5495
5903
  catch (e) {
5496
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackMetricFailed, "trackMetric failed, metric will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5904
+ _throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackMetricFailed, "trackMetric failed, metric will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5497
5905
  }
5498
5906
  };
5499
5907
  _self.trackPageView = function (pageView, customProperties) {
5500
5908
  try {
5501
5909
  var inPv = pageView || {};
5502
- _self._pageViewManager.trackPageView(inPv, __assignFn(__assignFn(__assignFn({}, inPv.properties), inPv.measurements), customProperties));
5910
+ _pageViewManager.trackPageView(inPv, __assignFn(__assignFn(__assignFn({}, inPv.properties), inPv.measurements), customProperties));
5503
5911
  if (_self.config.autoTrackPageVisitTime) {
5504
- _self._pageVisitTimeManager.trackPreviousPageVisit(inPv.name, inPv.uri);
5912
+ _pageVisitTimeManager.trackPreviousPageVisit(inPv.name, inPv.uri);
5505
5913
  }
5506
5914
  }
5507
5915
  catch (e) {
5508
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackPVFailed, "trackPageView failed, page view will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5916
+ _throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackPVFailed, "trackPageView failed, page view will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5509
5917
  }
5510
5918
  };
5511
5919
  _self.sendPageViewInternal = function (pageView, properties, systemProperties) {
@@ -5521,12 +5929,13 @@
5521
5929
  _self.core.track(telemetryItem);
5522
5930
  };
5523
5931
  _self.trackPageViewPerformance = function (pageViewPerformance, customProperties) {
5932
+ var inPvp = pageViewPerformance || {};
5524
5933
  try {
5525
- _self._pageViewPerformanceManager.populatePageViewPerformanceEvent(pageViewPerformance);
5526
- _self.sendPageViewPerformanceInternal(pageViewPerformance, customProperties);
5934
+ _pageViewPerformanceManager.populatePageViewPerformanceEvent(inPvp);
5935
+ _self.sendPageViewPerformanceInternal(inPvp, customProperties);
5527
5936
  }
5528
5937
  catch (e) {
5529
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackPVFailed, "trackPageViewPerformance failed, page view will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5938
+ _throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackPVFailed, "trackPageViewPerformance failed, page view will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5530
5939
  }
5531
5940
  };
5532
5941
  _self.startTrackPage = function (name) {
@@ -5538,7 +5947,7 @@
5538
5947
  _pageTracking.start(name);
5539
5948
  }
5540
5949
  catch (e) {
5541
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.StartTrackFailed, "startTrackPage failed, page view may not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5950
+ _throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.StartTrackFailed, "startTrackPage failed, page view may not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5542
5951
  }
5543
5952
  };
5544
5953
  _self.stopTrackPage = function (name, url, properties, measurement) {
@@ -5553,11 +5962,11 @@
5553
5962
  }
5554
5963
  _pageTracking.stop(name, url, properties, measurement);
5555
5964
  if (_self.config.autoTrackPageVisitTime) {
5556
- _self._pageVisitTimeManager.trackPreviousPageVisit(name, url);
5965
+ _pageVisitTimeManager.trackPreviousPageVisit(name, url);
5557
5966
  }
5558
5967
  }
5559
5968
  catch (e) {
5560
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.StopTrackFailed, "stopTrackPage failed, page view will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5969
+ _throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.StopTrackFailed, "stopTrackPage failed, page view will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5561
5970
  }
5562
5971
  };
5563
5972
  _self.sendExceptionInternal = function (exception, customProperties, systemProperties) {
@@ -5567,11 +5976,14 @@
5567
5976
  _self.core.track(telemetryItem);
5568
5977
  };
5569
5978
  _self.trackException = function (exception, customProperties) {
5979
+ if (exception && !exception.exception && exception.error) {
5980
+ exception.exception = exception.error;
5981
+ }
5570
5982
  try {
5571
5983
  _self.sendExceptionInternal(exception, customProperties);
5572
5984
  }
5573
5985
  catch (e) {
5574
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackExceptionFailed, "trackException failed, exception will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5986
+ _throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackExceptionFailed, "trackException failed, exception will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
5575
5987
  }
5576
5988
  };
5577
5989
  _self._onerror = function (exception) {
@@ -5605,158 +6017,97 @@
5605
6017
  }
5606
6018
  catch (e) {
5607
6019
  var errorString = error ? (error.name + ", " + error.message) : "null";
5608
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.ExceptionWhileLoggingError, "_onError threw exception while logging error, error will not be collected: "
6020
+ _throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.ExceptionWhileLoggingError, "_onError threw exception while logging error, error will not be collected: "
5609
6021
  + getExceptionName(e), { exception: dumpObj(e), errorString: errorString });
5610
6022
  }
5611
6023
  };
5612
6024
  _self.addTelemetryInitializer = function (telemetryInitializer) {
5613
- _self._telemetryInitializers.push(telemetryInitializer);
6025
+ if (_self.core) {
6026
+ return _self.core.addTelemetryInitializer(telemetryInitializer);
6027
+ }
6028
+ if (!_preInitTelemetryInitializers) {
6029
+ _preInitTelemetryInitializers = [];
6030
+ }
6031
+ _preInitTelemetryInitializers.push(telemetryInitializer);
5614
6032
  };
5615
6033
  _self.initialize = function (config, core, extensions, pluginChain) {
5616
6034
  if (_self.isInitialized()) {
5617
6035
  return;
5618
6036
  }
5619
6037
  if (isNullOrUndefined(core)) {
5620
- throw Error("Error initializing");
6038
+ throwError("Error initializing");
5621
6039
  }
5622
6040
  _base.initialize(config, core, extensions, pluginChain);
5623
- _self.setInitialized(false);
5624
- var ctx = _self._getTelCtx();
5625
- var identifier = _self.identifier;
5626
- _self.config = ctx.getExtCfg(identifier);
5627
- var defaults = ApplicationInsights.getDefaultConfig(config);
5628
- if (defaults !== undefined) {
5629
- objForEachKey(defaults, function (field, value) {
5630
- _self.config[field] = ctx.getConfig(identifier, field, value);
5631
- if (_self.config[field] === undefined) {
5632
- _self.config[field] = value;
5633
- }
5634
- });
5635
- }
5636
- if (_self.config.isStorageUseDisabled) {
5637
- utlDisableStorage();
5638
- }
5639
- var configGetters = {
5640
- instrumentationKey: function () { return config.instrumentationKey; },
5641
- accountId: function () { return _self.config.accountId || config.accountId; },
5642
- sessionRenewalMs: function () { return _self.config.sessionRenewalMs || config.sessionRenewalMs; },
5643
- sessionExpirationMs: function () { return _self.config.sessionExpirationMs || config.sessionExpirationMs; },
5644
- sampleRate: function () { return _self.config.samplingPercentage || config.samplingPercentage; },
5645
- sdkExtension: function () { return _self.config.sdkExtension || config.sdkExtension; },
5646
- isBrowserLinkTrackingEnabled: function () { return _self.config.isBrowserLinkTrackingEnabled || config.isBrowserLinkTrackingEnabled; },
5647
- appId: function () { return _self.config.appId || config.appId; }
5648
- };
5649
- _self._pageViewPerformanceManager = new PageViewPerformanceManager(_self.core);
5650
- _self._pageViewManager = new PageViewManager(_this, _self.config.overridePageViewDuration, _self.core, _self._pageViewPerformanceManager);
5651
- _self._pageVisitTimeManager = new PageVisitTimeManager(_self.diagLog(), function (pageName, pageUrl, pageVisitTime) { return trackPageVisitTime(pageName, pageUrl, pageVisitTime); });
5652
- _self._telemetryInitializers = _self._telemetryInitializers || [];
5653
- _addDefaultTelemetryInitializers(configGetters);
5654
- _eventTracking = new Timing(_self.diagLog(), "trackEvent");
5655
- _eventTracking.action =
5656
- function (name, url, duration, properties) {
5657
- if (!properties) {
6041
+ try {
6042
+ _evtNamespace = mergeEvtNamespace(createUniqueNamespace("AnalyticsPlugin"), core.evtNamespace && core.evtNamespace());
6043
+ if (_preInitTelemetryInitializers) {
6044
+ arrForEach(_preInitTelemetryInitializers, function (initializer) {
6045
+ core.addTelemetryInitializer(initializer);
6046
+ });
6047
+ _preInitTelemetryInitializers = null;
6048
+ }
6049
+ var extConfig = _populateDefaults(config);
6050
+ _updateStorageUsage(extConfig);
6051
+ _pageViewPerformanceManager = new PageViewPerformanceManager(_self.core);
6052
+ _pageViewManager = new PageViewManager(_this, extConfig.overridePageViewDuration, _self.core, _pageViewPerformanceManager);
6053
+ _pageVisitTimeManager = new PageVisitTimeManager(_self.diagLog(), function (pageName, pageUrl, pageVisitTime) { return trackPageVisitTime(pageName, pageUrl, pageVisitTime); });
6054
+ _updateBrowserLinkTracking(extConfig, config);
6055
+ _eventTracking = new Timing(_self.diagLog(), "trackEvent");
6056
+ _eventTracking.action =
6057
+ function (name, url, duration, properties) {
6058
+ if (!properties) {
6059
+ properties = {};
6060
+ }
6061
+ properties[durationProperty] = duration.toString();
6062
+ _self.trackEvent({ name: name, properties: properties });
6063
+ };
6064
+ _pageTracking = new Timing(_self.diagLog(), "trackPageView");
6065
+ _pageTracking.action = function (name, url, duration, properties, measurements) {
6066
+ if (isNullOrUndefined(properties)) {
5658
6067
  properties = {};
5659
6068
  }
5660
6069
  properties[durationProperty] = duration.toString();
5661
- _self.trackEvent({ name: name, properties: properties });
5662
- };
5663
- _pageTracking = new Timing(_self.diagLog(), "trackPageView");
5664
- _pageTracking.action = function (name, url, duration, properties, measurements) {
5665
- if (isNullOrUndefined(properties)) {
5666
- properties = {};
5667
- }
5668
- properties[durationProperty] = duration.toString();
5669
- var pageViewItem = {
5670
- name: name,
5671
- uri: url,
5672
- properties: properties,
5673
- measurements: measurements
5674
- };
5675
- _self.sendPageViewInternal(pageViewItem, properties);
5676
- };
5677
- var _window = getWindow();
5678
- var _history = getHistory();
5679
- var _location = getLocation(true);
5680
- var instance = _this;
5681
- if (_self.config.disableExceptionTracking === false &&
5682
- !_self.config.autoExceptionInstrumented && _window) {
5683
- var onerror_1 = "onerror";
5684
- var originalOnError_1 = _window[onerror_1];
5685
- _window.onerror = function (message, url, lineNumber, columnNumber, error) {
5686
- var evt = _window[strEvent];
5687
- var handled = originalOnError_1 && originalOnError_1(message, url, lineNumber, columnNumber, error);
5688
- if (handled !== true) {
5689
- instance._onerror(Exception.CreateAutoException(message, url, lineNumber, columnNumber, error, evt));
5690
- }
5691
- return handled;
5692
- };
5693
- _self.config.autoExceptionInstrumented = true;
5694
- }
5695
- if (_self.config.disableExceptionTracking === false &&
5696
- _self.config.enableUnhandledPromiseRejectionTracking === true &&
5697
- !_self.config.autoUnhandledPromiseInstrumented && _window) {
5698
- var onunhandledrejection_1 = "onunhandledrejection";
5699
- var originalOnUnhandledRejection_1 = _window[onunhandledrejection_1];
5700
- _window[onunhandledrejection_1] = function (error) {
5701
- var evt = _window[strEvent];
5702
- var handled = originalOnUnhandledRejection_1 && originalOnUnhandledRejection_1.call(_window, error);
5703
- if (handled !== true) {
5704
- instance._onerror(Exception.CreateAutoException(_getReason(error), _location ? _location.href : "", 0, 0, error, evt));
5705
- }
5706
- return handled;
6070
+ var pageViewItem = {
6071
+ name: name,
6072
+ uri: url,
6073
+ properties: properties,
6074
+ measurements: measurements
6075
+ };
6076
+ _self.sendPageViewInternal(pageViewItem, properties);
5707
6077
  };
5708
- _self.config.autoUnhandledPromiseInstrumented = true;
5709
- }
5710
- if (_self.config.enableAutoRouteTracking === true
5711
- && _history && isFunction(_history.pushState) && isFunction(_history.replaceState)
5712
- && _window
5713
- && typeof Event !== "undefined") {
5714
- var _self_1 = _this;
5715
- arrForEach(extensions, function (extension) {
5716
- if (extension.identifier === PropertiesPluginIdentifier) {
5717
- _properties = extension;
5718
- }
5719
- });
5720
- _history.pushState = (function (f) { return function pushState() {
5721
- var ret = f.apply(this, arguments);
5722
- _dispatchEvent(_window, createDomEvent(_self_1.config.namePrefix + "pushState"));
5723
- _dispatchEvent(_window, createDomEvent(_self_1.config.namePrefix + "locationchange"));
5724
- return ret;
5725
- }; })(_history.pushState);
5726
- _history.replaceState = (function (f) { return function replaceState() {
5727
- var ret = f.apply(this, arguments);
5728
- _dispatchEvent(_window, createDomEvent(_self_1.config.namePrefix + "replaceState"));
5729
- _dispatchEvent(_window, createDomEvent(_self_1.config.namePrefix + "locationchange"));
5730
- return ret;
5731
- }; })(_history.replaceState);
5732
- if (_window.addEventListener) {
5733
- _window.addEventListener(_self_1.config.namePrefix + "popstate", function () {
5734
- _dispatchEvent(_window, createDomEvent(_self_1.config.namePrefix + "locationchange"));
5735
- });
5736
- _window.addEventListener(_self_1.config.namePrefix + "locationchange", function () {
5737
- if (_properties && _properties.context && _properties.context.telemetryTrace) {
5738
- _properties.context.telemetryTrace.traceID = generateW3CId();
5739
- var traceLocationName = "_unknown_";
5740
- if (_location && _location.pathname) {
5741
- traceLocationName = _location.pathname + (_location.hash || "");
5742
- }
5743
- _properties.context.telemetryTrace.name = dataSanitizeString(_self_1.diagLog(), traceLocationName);
5744
- }
5745
- if (_currUri) {
5746
- _prevUri = _currUri;
5747
- _currUri = _location && _location.href || "";
5748
- }
5749
- else {
5750
- _currUri = _location && _location.href || "";
5751
- }
5752
- setTimeout((function (uri) {
5753
- _self_1.trackPageView({ refUri: uri, properties: { duration: 0 } });
5754
- }).bind(_this, _prevUri), _self_1.autoRoutePVDelay);
5755
- });
6078
+ if (hasWindow()) {
6079
+ _updateExceptionTracking(extConfig);
6080
+ _updateLocationChange(extConfig);
5756
6081
  }
5757
6082
  }
5758
- _self.setInitialized(true);
6083
+ catch (e) {
6084
+ _self.setInitialized(false);
6085
+ throw e;
6086
+ }
5759
6087
  };
6088
+ _self._doTeardown = function (unloadCtx, unloadState) {
6089
+ eventOff(window, null, null, _evtNamespace);
6090
+ _initDefaults();
6091
+ };
6092
+ function _populateDefaults(config) {
6093
+ var ctx = createProcessTelemetryContext(null, config, _self.core);
6094
+ var identifier = _self.identifier;
6095
+ var defaults = _getDefaultConfig(config);
6096
+ var extConfig = _self.config = ctx.getExtCfg(identifier);
6097
+ if (defaults !== undefined) {
6098
+ objForEachKey(defaults, function (field, value) {
6099
+ extConfig[field] = ctx.getConfig(identifier, field, value);
6100
+ if (extConfig[field] === undefined) {
6101
+ extConfig = value;
6102
+ }
6103
+ });
6104
+ }
6105
+ return extConfig;
6106
+ }
6107
+ function _updateBrowserLinkTracking(extConfig, config) {
6108
+ _isBrowserLinkTrackingEnabled = extConfig.isBrowserLinkTrackingEnabled || config.isBrowserLinkTrackingEnabled;
6109
+ _addDefaultTelemetryInitializers();
6110
+ }
5760
6111
  function trackPageVisitTime(pageName, pageUrl, pageVisitTime) {
5761
6112
  var properties = { PageName: pageName, PageUrl: pageUrl };
5762
6113
  _self.trackMetric({
@@ -5767,11 +6118,11 @@
5767
6118
  sampleCount: 1
5768
6119
  }, properties);
5769
6120
  }
5770
- function _addDefaultTelemetryInitializers(configGetters) {
5771
- if (!configGetters.isBrowserLinkTrackingEnabled()) {
6121
+ function _addDefaultTelemetryInitializers() {
6122
+ if (!_browserLinkInitializerAdded && _isBrowserLinkTrackingEnabled) {
5772
6123
  var browserLinkPaths_1 = ["/browserLinkSignalR/", "/__browserLink/"];
5773
6124
  var dropBrowserLinkRequests = function (envelope) {
5774
- if (envelope.baseType === RemoteDependencyData.dataType) {
6125
+ if (_isBrowserLinkTrackingEnabled && envelope.baseType === RemoteDependencyData.dataType) {
5775
6126
  var remoteData = envelope.baseData;
5776
6127
  if (remoteData) {
5777
6128
  for (var i = 0; i < browserLinkPaths_1.length; i++) {
@@ -5783,70 +6134,147 @@
5783
6134
  }
5784
6135
  return true;
5785
6136
  };
5786
- _addTelemetryInitializer(dropBrowserLinkRequests);
6137
+ _self.addTelemetryInitializer(dropBrowserLinkRequests);
6138
+ _browserLinkInitializerAdded = true;
5787
6139
  }
5788
6140
  }
5789
- function _addTelemetryInitializer(telemetryInitializer) {
5790
- _self._telemetryInitializers.push(telemetryInitializer);
5791
- }
5792
6141
  function _sendCORSException(exception, properties) {
5793
6142
  var telemetryItem = TelemetryItemCreator.create(exception, Exception.dataType, Exception.envelopeType, _self.diagLog(), properties);
5794
6143
  _self.core.track(telemetryItem);
5795
6144
  }
5796
- });
5797
- return _this;
5798
- }
5799
- ApplicationInsights.getDefaultConfig = function (config) {
5800
- if (!config) {
5801
- config = {};
5802
- }
5803
- config.sessionRenewalMs = 30 * 60 * 1000;
5804
- config.sessionExpirationMs = 24 * 60 * 60 * 1000;
5805
- config.disableExceptionTracking = stringToBoolOrDefault(config.disableExceptionTracking);
5806
- config.autoTrackPageVisitTime = stringToBoolOrDefault(config.autoTrackPageVisitTime);
5807
- config.overridePageViewDuration = stringToBoolOrDefault(config.overridePageViewDuration);
5808
- config.enableUnhandledPromiseRejectionTracking = stringToBoolOrDefault(config.enableUnhandledPromiseRejectionTracking);
5809
- if (isNaN(config.samplingPercentage) || config.samplingPercentage <= 0 || config.samplingPercentage >= 100) {
5810
- config.samplingPercentage = 100;
5811
- }
5812
- config.isStorageUseDisabled = stringToBoolOrDefault(config.isStorageUseDisabled);
5813
- config.isBrowserLinkTrackingEnabled = stringToBoolOrDefault(config.isBrowserLinkTrackingEnabled);
5814
- config.enableAutoRouteTracking = stringToBoolOrDefault(config.enableAutoRouteTracking);
5815
- config.namePrefix = config.namePrefix || "";
5816
- config.enableDebug = stringToBoolOrDefault(config.enableDebug);
5817
- config.disableFlushOnBeforeUnload = stringToBoolOrDefault(config.disableFlushOnBeforeUnload);
5818
- config.disableFlushOnUnload = stringToBoolOrDefault(config.disableFlushOnUnload, config.disableFlushOnBeforeUnload);
5819
- return config;
5820
- };
5821
- ApplicationInsights.Version = "2.8.0-beta.2203-02";
5822
- return ApplicationInsights;
5823
- }(BaseTelemetryPlugin));
5824
- var Timing = /** @class */ (function () {
5825
- function Timing(logger, name) {
5826
- var _self = this;
5827
- var _events = {};
5828
- _self.start = function (name) {
5829
- if (typeof _events[name] !== "undefined") {
5830
- logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.StartCalledMoreThanOnce, "start was called more than once for this event without calling stop.", { name: name, key: name }, true);
6145
+ function _updateExceptionTracking(extConfig) {
6146
+ var _window = getWindow();
6147
+ var locn = getLocation(true);
6148
+ _disableExceptionTracking = extConfig.disableExceptionTracking;
6149
+ if (!_disableExceptionTracking && !_autoExceptionInstrumented && !extConfig.autoExceptionInstrumented) {
6150
+ _addHook(InstrumentFunc(_window, "onerror", {
6151
+ ns: _evtNamespace,
6152
+ rsp: function (callDetails, message, url, lineNumber, columnNumber, error) {
6153
+ if (!_disableExceptionTracking && callDetails.rslt !== true) {
6154
+ _self._onerror(Exception.CreateAutoException(message, url, lineNumber, columnNumber, error, callDetails.evt));
6155
+ }
6156
+ }
6157
+ }));
6158
+ _autoExceptionInstrumented = true;
6159
+ }
6160
+ _addUnhandledPromiseRejectionTracking(extConfig, _window, locn);
5831
6161
  }
5832
- _events[name] = +new Date;
5833
- };
5834
- _self.stop = function (name, url, properties, measurements) {
5835
- var start = _events[name];
5836
- if (isNaN(start)) {
5837
- logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.StopCalledWithoutStart, "stop was called without a corresponding start.", { name: name, key: name }, true);
6162
+ function _updateLocationChange(extConfig) {
6163
+ var win = getWindow();
6164
+ var locn = getLocation(true);
6165
+ _enableAutoRouteTracking = extConfig.enableAutoRouteTracking === true;
6166
+ if (win && _enableAutoRouteTracking && hasHistory()) {
6167
+ var _history = getHistory();
6168
+ if (isFunction(_history.pushState) && isFunction(_history.replaceState) && typeof Event !== strShimUndefined) {
6169
+ _addHistoryListener(extConfig, win, _history, locn);
6170
+ }
6171
+ }
5838
6172
  }
5839
- else {
5840
- var end = +new Date;
5841
- var duration = dateTimeUtilsDuration(start, end);
5842
- _self.action(name, url, duration, properties, measurements);
6173
+ function _addHistoryListener(extConfig, win, history, locn) {
6174
+ function _popstateHandler() {
6175
+ if (_enableAutoRouteTracking) {
6176
+ _dispatchEvent(win, createDomEvent(extConfig.namePrefix + "locationchange"));
6177
+ }
6178
+ }
6179
+ function _locationChangeHandler() {
6180
+ if (_currUri) {
6181
+ _prevUri = _currUri;
6182
+ _currUri = locn && locn.href || "";
6183
+ }
6184
+ else {
6185
+ _currUri = locn && locn.href || "";
6186
+ }
6187
+ if (_enableAutoRouteTracking) {
6188
+ var properties = _self.core.getPlugin(PropertiesPluginIdentifier);
6189
+ if (properties) {
6190
+ var context = properties.plugin.context;
6191
+ if (context && context.telemetryTrace) {
6192
+ context.telemetryTrace.traceID = generateW3CId();
6193
+ var traceLocationName = "_unknown_";
6194
+ if (locn && locn.pathname) {
6195
+ traceLocationName = locn.pathname + (locn.hash || "");
6196
+ }
6197
+ context.telemetryTrace.name = dataSanitizeString(_self.diagLog(), traceLocationName);
6198
+ }
6199
+ }
6200
+ setTimeout((function (uri) {
6201
+ _self.trackPageView({ refUri: uri, properties: { duration: 0 } });
6202
+ }).bind(this, _prevUri), _self.autoRoutePVDelay);
6203
+ }
6204
+ }
6205
+ if (!_historyListenerAdded) {
6206
+ _addHook(InstrumentFunc(history, "pushState", {
6207
+ ns: _evtNamespace,
6208
+ rsp: function () {
6209
+ if (_enableAutoRouteTracking) {
6210
+ _dispatchEvent(win, createDomEvent(extConfig.namePrefix + "pushState"));
6211
+ _dispatchEvent(win, createDomEvent(extConfig.namePrefix + "locationchange"));
6212
+ }
6213
+ }
6214
+ }));
6215
+ _addHook(InstrumentFunc(history, "replaceState", {
6216
+ ns: _evtNamespace,
6217
+ rsp: function () {
6218
+ if (_enableAutoRouteTracking) {
6219
+ _dispatchEvent(win, createDomEvent(extConfig.namePrefix + "replaceState"));
6220
+ _dispatchEvent(win, createDomEvent(extConfig.namePrefix + "locationchange"));
6221
+ }
6222
+ }
6223
+ }));
6224
+ eventOn(win, extConfig.namePrefix + "popstate", _popstateHandler, _evtNamespace);
6225
+ eventOn(win, extConfig.namePrefix + "locationchange", _locationChangeHandler, _evtNamespace);
6226
+ _historyListenerAdded = true;
6227
+ }
6228
+ }
6229
+ function _addUnhandledPromiseRejectionTracking(extConfig, _window, _location) {
6230
+ _enableUnhandledPromiseRejectionTracking = extConfig.enableUnhandledPromiseRejectionTracking === true;
6231
+ if (_enableUnhandledPromiseRejectionTracking && !_autoUnhandledPromiseInstrumented) {
6232
+ _addHook(InstrumentFunc(_window, "onunhandledrejection", {
6233
+ ns: _evtNamespace,
6234
+ rsp: function (callDetails, error) {
6235
+ if (_enableUnhandledPromiseRejectionTracking && callDetails.rslt !== true) {
6236
+ _self._onerror(Exception.CreateAutoException(_getReason(error), _location ? _location.href : "", 0, 0, error, callDetails.evt));
6237
+ }
6238
+ }
6239
+ }));
6240
+ _autoUnhandledPromiseInstrumented = true;
6241
+ extConfig.autoUnhandledPromiseInstrumented = _autoUnhandledPromiseInstrumented;
6242
+ }
5843
6243
  }
5844
- delete _events[name];
5845
- _events[name] = undefined;
5846
- };
6244
+ function _throwInternal(severity, msgId, msg, properties, isUserAct) {
6245
+ _self.diagLog().throwInternal(severity, msgId, msg, properties, isUserAct);
6246
+ }
6247
+ function _initDefaults() {
6248
+ _eventTracking = null;
6249
+ _pageTracking = null;
6250
+ _pageViewManager = null;
6251
+ _pageViewPerformanceManager = null;
6252
+ _pageVisitTimeManager = null;
6253
+ _preInitTelemetryInitializers = null;
6254
+ _isBrowserLinkTrackingEnabled = false;
6255
+ _browserLinkInitializerAdded = false;
6256
+ _enableAutoRouteTracking = false;
6257
+ _historyListenerAdded = false;
6258
+ _disableExceptionTracking = false;
6259
+ _autoExceptionInstrumented = false;
6260
+ _enableUnhandledPromiseRejectionTracking = false;
6261
+ _autoUnhandledPromiseInstrumented = false;
6262
+ var location = getLocation(true);
6263
+ _prevUri = location && location.href || "";
6264
+ _currUri = null;
6265
+ _evtNamespace = null;
6266
+ }
6267
+ objDefineAccessors(_self, "_pageViewManager", function () { return _pageViewManager; });
6268
+ objDefineAccessors(_self, "_pageViewPerformanceManager", function () { return _pageViewPerformanceManager; });
6269
+ objDefineAccessors(_self, "_pageVisitTimeManager", function () { return _pageVisitTimeManager; });
6270
+ objDefineAccessors(_self, "_evtNamespace", function () { return "." + _evtNamespace; });
6271
+ });
6272
+ return _this;
5847
6273
  }
5848
- return Timing;
5849
- }());
6274
+ AnalyticsPlugin.Version = "2.8.0-beta.2203-05";
6275
+ AnalyticsPlugin.getDefaultConfig = _getDefaultConfig;
6276
+ return AnalyticsPlugin;
6277
+ }(BaseTelemetryPlugin));
5850
6278
 
5851
6279
  var BaseSendBuffer = /** @class */ (function () {
5852
6280
  function BaseSendBuffer(logger, config) {
@@ -6125,7 +6553,7 @@
6125
6553
  }
6126
6554
  }
6127
6555
  var EnvelopeCreator = {
6128
- Version: "2.8.0-beta.2203-02"
6556
+ Version: "2.8.0-beta.2203-05"
6129
6557
  };
6130
6558
  function DependencyEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {
6131
6559
  EnvelopeCreatorInit(logger, telemetryItem);
@@ -6420,65 +6848,81 @@
6420
6848
  return Serializer;
6421
6849
  }());
6422
6850
 
6423
- var OfflineListener = /** @class */ (function () {
6424
- function OfflineListener() {
6425
- var _window = getWindow();
6426
- var _document = getDocument();
6427
- var isListening = false;
6428
- var _onlineStatus = true;
6429
- dynamicProto(OfflineListener, this, function (_self) {
6430
- try {
6431
- if (_window) {
6432
- if (attachEvent(_window, "online", _setOnline)) {
6433
- attachEvent(_window, "offline", _setOffline);
6434
- isListening = true;
6435
- }
6436
- }
6437
- if (_document) {
6438
- var target = _document.body || _document;
6439
- if (!isUndefined(target.ononline)) {
6440
- target.ononline = _setOnline;
6441
- target.onoffline = _setOffline;
6442
- isListening = true;
6443
- }
6444
- }
6445
- if (isListening) {
6446
- var _navigator = getNavigator();
6447
- if (_navigator && !isNullOrUndefined(_navigator.onLine)) {
6448
- _onlineStatus = _navigator.onLine;
6449
- }
6851
+ function _disableEvents(target, evtNamespace) {
6852
+ eventOff(target, null, null, evtNamespace);
6853
+ }
6854
+ function createOfflineListener(parentEvtNamespace) {
6855
+ var _document = getDocument();
6856
+ var _navigator = getNavigator();
6857
+ var _isListening = false;
6858
+ var _onlineStatus = true;
6859
+ var _evtNamespace = mergeEvtNamespace(createUniqueNamespace("OfflineListener"), parentEvtNamespace);
6860
+ try {
6861
+ if (_enableEvents(getWindow())) {
6862
+ _isListening = true;
6863
+ }
6864
+ if (_document) {
6865
+ var target = _document.body || _document;
6866
+ if (target.ononline) {
6867
+ if (_enableEvents(target)) {
6868
+ _isListening = true;
6450
6869
  }
6451
6870
  }
6452
- catch (e) {
6453
- isListening = false;
6871
+ }
6872
+ if (_isListening) {
6873
+ if (_navigator && !isNullOrUndefined(_navigator.onLine)) {
6874
+ _onlineStatus = _navigator.onLine;
6454
6875
  }
6455
- _self.isListening = isListening;
6456
- _self.isOnline = function () {
6457
- var result = true;
6458
- var _navigator = getNavigator();
6459
- if (isListening) {
6460
- result = _onlineStatus;
6461
- }
6462
- else if (_navigator && !isNullOrUndefined(_navigator.onLine)) {
6463
- result = _navigator.onLine;
6464
- }
6465
- return result;
6466
- };
6467
- _self.isOffline = function () {
6468
- return !_self.isOnline();
6469
- };
6470
- function _setOnline() {
6471
- _onlineStatus = true;
6876
+ }
6877
+ }
6878
+ catch (e) {
6879
+ _isListening = false;
6880
+ }
6881
+ function _enableEvents(target) {
6882
+ var enabled = false;
6883
+ if (target) {
6884
+ enabled = eventOn(target, "online", _setOnline, _evtNamespace);
6885
+ if (enabled) {
6886
+ eventOn(target, "offline", _setOffline, _evtNamespace);
6472
6887
  }
6473
- function _setOffline() {
6474
- _onlineStatus = false;
6888
+ }
6889
+ return enabled;
6890
+ }
6891
+ function _setOnline() {
6892
+ _onlineStatus = true;
6893
+ }
6894
+ function _setOffline() {
6895
+ _onlineStatus = false;
6896
+ }
6897
+ function _isOnline() {
6898
+ var result = true;
6899
+ if (_isListening) {
6900
+ result = _onlineStatus;
6901
+ }
6902
+ else if (_navigator && !isNullOrUndefined(_navigator.onLine)) {
6903
+ result = _navigator.onLine;
6904
+ }
6905
+ return result;
6906
+ }
6907
+ function _unload() {
6908
+ var win = getWindow();
6909
+ if (win && _isListening) {
6910
+ _disableEvents(win, _evtNamespace);
6911
+ if (_document) {
6912
+ var target = _document.body || _document;
6913
+ if (!isUndefined(target.ononline)) {
6914
+ _disableEvents(target, _evtNamespace);
6915
+ }
6475
6916
  }
6476
- });
6917
+ _isListening = false;
6918
+ }
6477
6919
  }
6478
- OfflineListener.Offline = new OfflineListener;
6479
- return OfflineListener;
6480
- }());
6481
- var Offline = OfflineListener.Offline;
6920
+ return {
6921
+ isOnline: _isOnline,
6922
+ isListening: function () { return _isListening; },
6923
+ unload: _unload
6924
+ };
6925
+ }
6482
6926
 
6483
6927
  var MIN_INPUT_LENGTH = 8;
6484
6928
  var HashCodeScoreGenerator = /** @class */ (function () {
@@ -6606,22 +7050,22 @@
6606
7050
  var _this = _super.call(this) || this;
6607
7051
  _this.priority = 1001;
6608
7052
  _this.identifier = BreezeChannelIdentifier;
7053
+ _this._senderConfig = _getDefaultAppInsightsChannelConfig();
6609
7054
  var _consecutiveErrors;
6610
7055
  var _retryAt;
6611
7056
  var _lastSend;
6612
- var _paused = false;
7057
+ var _paused;
6613
7058
  var _timeoutHandle;
6614
7059
  var _serializer;
6615
7060
  var _stamp_specific_redirects;
6616
- var _headers = {};
7061
+ var _headers;
6617
7062
  var _syncFetchPayload = 0;
6618
7063
  var _fallbackSender;
6619
7064
  var _syncUnloadSender;
6620
- _this._senderConfig = _getDefaultAppInsightsChannelConfig();
7065
+ var _offlineListener;
7066
+ var _evtNamespace;
6621
7067
  dynamicProto(Sender, _this, function (_self, _base) {
6622
- function _notImplemented() {
6623
- throwError("Method not implemented.");
6624
- }
7068
+ _initDefaults();
6625
7069
  _self.pause = function () {
6626
7070
  _clearScheduledTimer();
6627
7071
  _paused = true;
@@ -6644,7 +7088,7 @@
6644
7088
  _self.triggerSend(isAsync, null, sendReason || 1 );
6645
7089
  }
6646
7090
  catch (e) {
6647
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.FlushFailed, "flush failed, telemetry will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
7091
+ _throwInternal(_self.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.FlushFailed, "flush failed, telemetry will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
6648
7092
  }
6649
7093
  }
6650
7094
  };
@@ -6655,7 +7099,7 @@
6655
7099
  _self.triggerSend(true, _doUnloadSend, 2 );
6656
7100
  }
6657
7101
  catch (e) {
6658
- _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) });
7102
+ _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) });
6659
7103
  }
6660
7104
  }
6661
7105
  else {
@@ -6663,7 +7107,6 @@
6663
7107
  }
6664
7108
  }
6665
7109
  };
6666
- _self.teardown = _notImplemented;
6667
7110
  _self.addHeader = function (name, value) {
6668
7111
  _headers[name] = value;
6669
7112
  };
@@ -6678,6 +7121,8 @@
6678
7121
  _self._sender = null;
6679
7122
  _stamp_specific_redirects = 0;
6680
7123
  var diagLog = _self.diagLog();
7124
+ _evtNamespace = mergeEvtNamespace(createUniqueNamespace("Sender"), core.evtNamespace && core.evtNamespace());
7125
+ _offlineListener = createOfflineListener(_evtNamespace);
6681
7126
  var defaultConfig = _getDefaultAppInsightsChannelConfig();
6682
7127
  objForEachKey(defaultConfig, function (field, value) {
6683
7128
  _self._senderConfig[field] = function () { return ctx.getConfig(identifier, field, value()); };
@@ -6686,7 +7131,7 @@
6686
7131
  ? new SessionStorageSendBuffer(diagLog, _self._senderConfig) : new ArraySendBuffer(diagLog, _self._senderConfig);
6687
7132
  _self._sample = new Sample(_self._senderConfig.samplingPercentage(), diagLog);
6688
7133
  if (!_validateInstrumentationKey(config)) {
6689
- diagLog.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.InvalidInstrumentationKey, "Invalid Instrumentation key " + config.instrumentationKey);
7134
+ _throwInternal(diagLog, LoggingSeverity.CRITICAL, _InternalMessageId.InvalidInstrumentationKey, "Invalid Instrumentation key " + config.instrumentationKey);
6690
7135
  }
6691
7136
  if (!isInternalApplicationInsightsEndpoint(_self._senderConfig.endpointUrl()) && _self._senderConfig.customHeaders() && _self._senderConfig.customHeaders().length > 0) {
6692
7137
  arrForEach(_self._senderConfig.customHeaders(), function (customHeader) {
@@ -6732,22 +7177,22 @@
6732
7177
  return;
6733
7178
  }
6734
7179
  if (!telemetryItem) {
6735
- itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.CannotSendEmptyTelemetry, "Cannot send empty telemetry");
7180
+ _throwInternal(itemCtx.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.CannotSendEmptyTelemetry, "Cannot send empty telemetry");
6736
7181
  return;
6737
7182
  }
6738
7183
  if (telemetryItem.baseData && !telemetryItem.baseType) {
6739
- itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.InvalidEvent, "Cannot send telemetry without baseData and baseType");
7184
+ _throwInternal(itemCtx.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.InvalidEvent, "Cannot send telemetry without baseData and baseType");
6740
7185
  return;
6741
7186
  }
6742
7187
  if (!telemetryItem.baseType) {
6743
7188
  telemetryItem.baseType = "EventData";
6744
7189
  }
6745
7190
  if (!_self._sender) {
6746
- itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.SenderNotInitialized, "Sender was not initialized");
7191
+ _throwInternal(itemCtx.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.SenderNotInitialized, "Sender was not initialized");
6747
7192
  return;
6748
7193
  }
6749
7194
  if (!_isSampledIn(telemetryItem)) {
6750
- itemCtx.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TelemetrySampledAndNotSent, "Telemetry item was sampled out and not sent", { SampleRate: _self._sample.sampleRate });
7195
+ _throwInternal(itemCtx.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TelemetrySampledAndNotSent, "Telemetry item was sampled out and not sent", { SampleRate: _self._sample.sampleRate });
6751
7196
  return;
6752
7197
  }
6753
7198
  else {
@@ -6757,7 +7202,7 @@
6757
7202
  var defaultEnvelopeIkey = telemetryItem.iKey || _self._senderConfig.instrumentationKey();
6758
7203
  var aiEnvelope_1 = Sender.constructEnvelope(telemetryItem, defaultEnvelopeIkey, itemCtx.diagLog(), convertUndefined);
6759
7204
  if (!aiEnvelope_1) {
6760
- itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.CreateEnvelopeError, "Unable to create an AppInsights envelope");
7205
+ _throwInternal(itemCtx.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.CreateEnvelopeError, "Unable to create an AppInsights envelope");
6761
7206
  return;
6762
7207
  }
6763
7208
  var doNotSendItem_1 = false;
@@ -6770,7 +7215,7 @@
6770
7215
  }
6771
7216
  }
6772
7217
  catch (e) {
6773
- itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TelemetryInitializerFailed, "One of telemetry initializers failed, telemetry item will not be sent: " + getExceptionName(e), { exception: dumpObj(e) }, true);
7218
+ _throwInternal(itemCtx.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.TelemetryInitializerFailed, "One of telemetry initializers failed, telemetry item will not be sent: " + getExceptionName(e), { exception: dumpObj(e) }, true);
6774
7219
  }
6775
7220
  });
6776
7221
  delete telemetryItem.tags[ProcessLegacy];
@@ -6788,7 +7233,7 @@
6788
7233
  _setupTimer();
6789
7234
  }
6790
7235
  catch (e) {
6791
- 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) });
7236
+ _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) });
6792
7237
  }
6793
7238
  _self.processNext(telemetryItem, itemCtx);
6794
7239
  };
@@ -6823,13 +7268,18 @@
6823
7268
  catch (e) {
6824
7269
  var ieVer = getIEVersion();
6825
7270
  if (!ieVer || ieVer > 9) {
6826
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TransmissionFailed, "Telemetry transmission failed, some telemetry will be lost: " + getExceptionName(e), { exception: dumpObj(e) });
7271
+ _throwInternal(_self.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.TransmissionFailed, "Telemetry transmission failed, some telemetry will be lost: " + getExceptionName(e), { exception: dumpObj(e) });
6827
7272
  }
6828
7273
  }
6829
7274
  }
6830
7275
  };
7276
+ _self._doTeardown = function (unloadCtx, unloadState) {
7277
+ _self.onunloadFlush();
7278
+ _offlineListener.unload();
7279
+ _initDefaults();
7280
+ };
6831
7281
  _self._onError = function (payload, message, event) {
6832
- _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.OnError, "Failed to send telemetry.", { message: message });
7282
+ _throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.OnError, "Failed to send telemetry.", { message: message });
6833
7283
  _self._buffer.clearSent(payload);
6834
7284
  };
6835
7285
  _self._onPartialSuccess = function (payload, results) {
@@ -6854,7 +7304,7 @@
6854
7304
  }
6855
7305
  if (retry.length > 0) {
6856
7306
  _resendPayload(retry);
6857
- _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, "Partial success. " +
7307
+ _throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, "Partial success. " +
6858
7308
  "Delivered: " + payload.length + ", Failed: " + failed.length +
6859
7309
  ". Will retry to send " + retry.length + " our of " + results.itemsReceived + " items");
6860
7310
  }
@@ -6899,18 +7349,18 @@
6899
7349
  }
6900
7350
  if (!_self._senderConfig.isRetryDisabled() && _isRetriable(status)) {
6901
7351
  _resendPayload(payload);
6902
- _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " +
7352
+ _throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " +
6903
7353
  "Response code " + status + ". Will retry to send " + payload.length + " items.");
6904
7354
  }
6905
7355
  else {
6906
7356
  _self._onError(payload, errorMessage);
6907
7357
  }
6908
7358
  }
6909
- else if (Offline.isOffline()) {
7359
+ else if (_offlineListener && !_offlineListener.isOnline()) {
6910
7360
  if (!_self._senderConfig.isRetryDisabled()) {
6911
7361
  var offlineBackOffMultiplier = 10;
6912
7362
  _resendPayload(payload, offlineBackOffMultiplier);
6913
- _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."));
7363
+ _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."));
6914
7364
  }
6915
7365
  }
6916
7366
  else {
@@ -6977,8 +7427,8 @@
6977
7427
  }
6978
7428
  }
6979
7429
  if (droppedPayload.length > 0) {
6980
- _fallbackSender(droppedPayload, true);
6981
- _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " + "Failed to send telemetry with Beacon API, retried with normal sender.");
7430
+ _fallbackSender && _fallbackSender(droppedPayload, true);
7431
+ _throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " + "Failed to send telemetry with Beacon API, retried with normal sender.");
6982
7432
  }
6983
7433
  }
6984
7434
  }
@@ -7019,7 +7469,7 @@
7019
7469
  }
7020
7470
  else {
7021
7471
  _fallbackSender && _fallbackSender(payload, true);
7022
- _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " + "Failed to send telemetry with Beacon API, retried with xhrSender.");
7472
+ _throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " + "Failed to send telemetry with Beacon API, retried with xhrSender.");
7023
7473
  }
7024
7474
  }
7025
7475
  }
@@ -7110,7 +7560,7 @@
7110
7560
  }
7111
7561
  }
7112
7562
  catch (e) {
7113
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.InvalidBackendResponse, "Cannot parse the response. " + getExceptionName(e), {
7563
+ _throwInternal(_self.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.InvalidBackendResponse, "Cannot parse the response. " + getExceptionName(e), {
7114
7564
  response: response
7115
7565
  });
7116
7566
  }
@@ -7181,7 +7631,7 @@
7181
7631
  xdr.onerror = function (event) { return _self._onError(payload, _formatErrorMessageXdr(xdr), event); };
7182
7632
  var hostingProtocol = _window && _window.location && _window.location.protocol || "";
7183
7633
  if (_self._senderConfig.endpointUrl().lastIndexOf(hostingProtocol, 0) !== 0) {
7184
- _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " +
7634
+ _throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " +
7185
7635
  "Cannot send XDomain request. The endpoint URL protocol doesn't match the hosting page protocol.");
7186
7636
  buffer.clear();
7187
7637
  return;
@@ -7212,7 +7662,7 @@
7212
7662
  manager.eventsSendRequest(sendRequest, isAsync);
7213
7663
  }
7214
7664
  catch (e) {
7215
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.NotificationException, "send request notification failed: " + getExceptionName(e), { exception: dumpObj(e) });
7665
+ _throwInternal(_self.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.NotificationException, "send request notification failed: " + getExceptionName(e), { exception: dumpObj(e) });
7216
7666
  }
7217
7667
  }
7218
7668
  }
@@ -7225,6 +7675,25 @@
7225
7675
  var regexp = new RegExp(UUID_Regex);
7226
7676
  return regexp.test(config.instrumentationKey);
7227
7677
  }
7678
+ function _initDefaults() {
7679
+ _self._sender = null;
7680
+ _self._buffer = null;
7681
+ _self._appId = null;
7682
+ _self._sample = null;
7683
+ _headers = {};
7684
+ _offlineListener = null;
7685
+ _consecutiveErrors = 0;
7686
+ _retryAt = null;
7687
+ _lastSend = null;
7688
+ _paused = false;
7689
+ _timeoutHandle = null;
7690
+ _serializer = null;
7691
+ _stamp_specific_redirects = 0;
7692
+ _syncFetchPayload = 0;
7693
+ _fallbackSender = null;
7694
+ _syncUnloadSender = null;
7695
+ _evtNamespace = null;
7696
+ }
7228
7697
  });
7229
7698
  return _this;
7230
7699
  }
@@ -7394,7 +7863,7 @@
7394
7863
  return Device;
7395
7864
  }());
7396
7865
 
7397
- var Version = "2.8.0-beta.2203-02";
7866
+ var Version = "2.8.0-beta.2203-05";
7398
7867
  var Internal = /** @class */ (function () {
7399
7868
  function Internal(config) {
7400
7869
  this.sdkVersion = (config.sdkExtension && config.sdkExtension() ? config.sdkExtension() + "_" : "") + "javascript:" + Version;
@@ -8817,7 +9286,7 @@
8817
9286
  config.endpointUrl = ingest ? "".concat(ingest, "/v2/track") : config.endpointUrl;
8818
9287
  config.instrumentationKey = cs.instrumentationkey || config.instrumentationKey;
8819
9288
  }
8820
- _self.appInsights = new ApplicationInsights();
9289
+ _self.appInsights = new AnalyticsPlugin();
8821
9290
  _self.properties = new PropertiesPlugin$1();
8822
9291
  _self.dependencies = new AjaxMonitor();
8823
9292
  _self.core = new AppInsightsCore();
@@ -9242,7 +9711,7 @@
9242
9711
  }());
9243
9712
 
9244
9713
  exports.AppInsightsCore = AppInsightsCore;
9245
- exports.ApplicationAnalytics = ApplicationInsights;
9714
+ exports.ApplicationAnalytics = AnalyticsPlugin;
9246
9715
  exports.ApplicationInsights = Initialization;
9247
9716
  exports.ApplicationInsightsContainer = ApplicationInsightsContainer;
9248
9717
  exports.BaseCore = BaseCore;