@microsoft/applicationinsights-core-js 2.8.0-beta.2203-02 → 2.8.0-beta.2203-03

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/browser/applicationinsights-core-js.integrity.json +9 -9
  2. package/browser/applicationinsights-core-js.js +197 -10
  3. package/browser/applicationinsights-core-js.js.map +1 -1
  4. package/browser/applicationinsights-core-js.min.js +2 -2
  5. package/browser/applicationinsights-core-js.min.js.map +1 -1
  6. package/dist/applicationinsights-core-js.api.json +751 -33
  7. package/dist/applicationinsights-core-js.api.md +26 -0
  8. package/dist/applicationinsights-core-js.d.ts +73 -2
  9. package/dist/applicationinsights-core-js.js +197 -10
  10. package/dist/applicationinsights-core-js.js.map +1 -1
  11. package/dist/applicationinsights-core-js.min.js +2 -2
  12. package/dist/applicationinsights-core-js.min.js.map +1 -1
  13. package/dist/applicationinsights-core-js.rollup.d.ts +73 -2
  14. package/dist-esm/JavaScriptSDK/AppInsightsCore.js +1 -1
  15. package/dist-esm/JavaScriptSDK/BaseCore.js +183 -10
  16. package/dist-esm/JavaScriptSDK/BaseCore.js.map +1 -1
  17. package/dist-esm/JavaScriptSDK/BaseTelemetryPlugin.js +8 -2
  18. package/dist-esm/JavaScriptSDK/BaseTelemetryPlugin.js.map +1 -1
  19. package/dist-esm/JavaScriptSDK/ChannelController.js +1 -1
  20. package/dist-esm/JavaScriptSDK/Constants.js +1 -1
  21. package/dist-esm/JavaScriptSDK/CookieMgr.js +1 -1
  22. package/dist-esm/JavaScriptSDK/CoreUtils.js +1 -1
  23. package/dist-esm/JavaScriptSDK/DataCacheHelper.js +1 -1
  24. package/dist-esm/JavaScriptSDK/DbgExtensionUtils.js +1 -1
  25. package/dist-esm/JavaScriptSDK/DiagnosticLogger.js +1 -1
  26. package/dist-esm/JavaScriptSDK/EnvUtils.js +1 -1
  27. package/dist-esm/JavaScriptSDK/EventHelpers.js +1 -1
  28. package/dist-esm/JavaScriptSDK/HelperFuncs.js +2 -2
  29. package/dist-esm/JavaScriptSDK/HelperFuncs.js.map +1 -1
  30. package/dist-esm/JavaScriptSDK/InstrumentHooks.js +1 -1
  31. package/dist-esm/JavaScriptSDK/InternalConstants.js +1 -1
  32. package/dist-esm/JavaScriptSDK/NotificationManager.js +1 -1
  33. package/dist-esm/JavaScriptSDK/PerfManager.js +1 -1
  34. package/dist-esm/JavaScriptSDK/ProcessTelemetryContext.js +16 -2
  35. package/dist-esm/JavaScriptSDK/ProcessTelemetryContext.js.map +1 -1
  36. package/dist-esm/JavaScriptSDK/RandomHelper.js +1 -1
  37. package/dist-esm/JavaScriptSDK/TelemetryHelpers.js +1 -1
  38. package/dist-esm/JavaScriptSDK/TelemetryInitializerPlugin.js +1 -1
  39. package/dist-esm/JavaScriptSDK/UnloadHandlerContainer.js +32 -0
  40. package/dist-esm/JavaScriptSDK/UnloadHandlerContainer.js.map +1 -0
  41. package/dist-esm/JavaScriptSDK.Enums/EventsDiscardedReason.js +1 -1
  42. package/dist-esm/JavaScriptSDK.Enums/LoggingEnums.js +1 -1
  43. package/dist-esm/JavaScriptSDK.Enums/SendRequestReason.js +1 -1
  44. package/dist-esm/JavaScriptSDK.Enums/TelemetryUnloadReason.js +1 -1
  45. package/dist-esm/JavaScriptSDK.Interfaces/IAppInsightsCore.js +1 -1
  46. package/dist-esm/JavaScriptSDK.Interfaces/IChannelControls.js +1 -1
  47. package/dist-esm/JavaScriptSDK.Interfaces/IConfiguration.js +1 -1
  48. package/dist-esm/JavaScriptSDK.Interfaces/ICookieMgr.js +1 -1
  49. package/dist-esm/JavaScriptSDK.Interfaces/IDbgExtension.js +1 -1
  50. package/dist-esm/JavaScriptSDK.Interfaces/IDiagnosticLogger.js +1 -1
  51. package/dist-esm/JavaScriptSDK.Interfaces/IInstrumentHooks.js +1 -1
  52. package/dist-esm/JavaScriptSDK.Interfaces/INotificationListener.js +1 -1
  53. package/dist-esm/JavaScriptSDK.Interfaces/INotificationManager.js +1 -1
  54. package/dist-esm/JavaScriptSDK.Interfaces/IPerfEvent.js +1 -1
  55. package/dist-esm/JavaScriptSDK.Interfaces/IPerfManager.js +1 -1
  56. package/dist-esm/JavaScriptSDK.Interfaces/IProcessTelemetryContext.js +1 -1
  57. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryInitializers.js +1 -1
  58. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryItem.js +1 -1
  59. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryPlugin.js +1 -1
  60. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryPluginChain.js +1 -1
  61. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryUnloadState.js +1 -1
  62. package/dist-esm/applicationinsights-core-js.js +2 -1
  63. package/dist-esm/applicationinsights-core-js.js.map +1 -1
  64. package/package.json +1 -1
  65. package/src/JavaScriptSDK/BaseCore.ts +233 -10
  66. package/src/JavaScriptSDK/BaseTelemetryPlugin.ts +16 -2
  67. package/src/JavaScriptSDK/HelperFuncs.ts +1 -1
  68. package/src/JavaScriptSDK/ProcessTelemetryContext.ts +16 -2
  69. package/src/JavaScriptSDK/UnloadHandlerContainer.ts +44 -0
  70. package/src/JavaScriptSDK.Enums/SendRequestReason.ts +5 -0
  71. package/src/JavaScriptSDK.Enums/TelemetryUnloadReason.ts +3 -3
  72. package/src/JavaScriptSDK.Interfaces/IAppInsightsCore.ts +29 -2
  73. package/types/JavaScriptSDK/BaseCore.d.ts +17 -1
  74. package/types/JavaScriptSDK/BaseTelemetryPlugin.d.ts +6 -0
  75. package/types/JavaScriptSDK/ProcessTelemetryContext.d.ts +2 -0
  76. package/types/JavaScriptSDK/UnloadHandlerContainer.d.ts +11 -0
  77. package/types/JavaScriptSDK.Enums/SendRequestReason.d.ts +4 -0
  78. package/types/JavaScriptSDK.Enums/TelemetryUnloadReason.d.ts +13 -1
  79. package/types/JavaScriptSDK.Interfaces/IAppInsightsCore.d.ts +24 -1
  80. package/types/applicationinsights-core-js.d.ts +1 -0
@@ -1,25 +1,25 @@
1
1
  {
2
2
  "name": "applicationinsights-core-js",
3
- "version": "2.8.0-beta.2203-02",
3
+ "version": "2.8.0-beta.2203-03",
4
4
  "ext": {
5
5
  "@js": {
6
6
  "file": "applicationinsights-core-js.js",
7
7
  "type": "text/javascript; charset=utf-8",
8
- "integrity": "sha256-cOSz8BlX2/Kuvap92rB0StGPBrrb/knAZ78Q+p/nQOE= sha384-jnm9lN4AAQqwlbqeD4EPva8vO0hXgxDvC5t7Oj1NwjBkH92qtk76uzJRkJwdah9t sha512-7OVkDYsKwxxGOD2NtK5Do+EZQc4sHAompCTfMLLoeNmh8kE3gnQbupiUvMrc/06PaxJ5Yi4JaV5n4dhSLGZQTg==",
8
+ "integrity": "sha256-oq6feKi0NZqlWF01/+wxhyFRQuKiKoGIaaLviWgTJZQ= sha384-zrc0GtK3EBg+InxHxf2hvNXSzipCKFk/cNgilyMIV5PAk6g6niZMuJNeAD/fJL+p sha512-pT8wzJw/9k0UzDQYtAK5pZkXP68w7kuMQqFkykQVrvFEGBedaKO71gmWw3nqWC75PINjiD1eH7r+Dnn3Dujp1g==",
9
9
  "hashes": {
10
- "sha256": "cOSz8BlX2/Kuvap92rB0StGPBrrb/knAZ78Q+p/nQOE=",
11
- "sha384": "jnm9lN4AAQqwlbqeD4EPva8vO0hXgxDvC5t7Oj1NwjBkH92qtk76uzJRkJwdah9t",
12
- "sha512": "7OVkDYsKwxxGOD2NtK5Do+EZQc4sHAompCTfMLLoeNmh8kE3gnQbupiUvMrc/06PaxJ5Yi4JaV5n4dhSLGZQTg=="
10
+ "sha256": "oq6feKi0NZqlWF01/+wxhyFRQuKiKoGIaaLviWgTJZQ=",
11
+ "sha384": "zrc0GtK3EBg+InxHxf2hvNXSzipCKFk/cNgilyMIV5PAk6g6niZMuJNeAD/fJL+p",
12
+ "sha512": "pT8wzJw/9k0UzDQYtAK5pZkXP68w7kuMQqFkykQVrvFEGBedaKO71gmWw3nqWC75PINjiD1eH7r+Dnn3Dujp1g=="
13
13
  }
14
14
  },
15
15
  "@min.js": {
16
16
  "file": "applicationinsights-core-js.min.js",
17
17
  "type": "text/javascript; charset=utf-8",
18
- "integrity": "sha256-oFy7mVpp0qLIL+biYG16+oXIC4TQnKbCjBDb6SbD0eg= sha384-i9ZQmHv672Qw8CSdvY7tN7qQeNEFXmpC4ZNkQDxHJyaNu+UvX2WZ1dRkLwtxPNKt sha512-5g5R34d9/xpzIk6QtSqR+ZXFvx93mdrKCReZs8gBZRg/eVOFiGBlFKAj56OOLaufDpQbQCDCiBkLiS4s03YT/Q==",
18
+ "integrity": "sha256-5AV0D1pW++2w63V0/Lc7peR6pWOZ5uZNBrrEPvOeBKY= sha384-YyXbsaMSLJMeX+mrOXPXOMklYlbsvWUyKYPkTVgBEpQuxIp9SO8P7Vz75z/HfFE4 sha512-2JgHcVMG+19gd9t4/4SM5s0lJfqtXw7G4BVvgvFmZhfKKO2v3j7TgQqUEf+J+ETj0afZsGYzEkotQ3xKgpUTpg==",
19
19
  "hashes": {
20
- "sha256": "oFy7mVpp0qLIL+biYG16+oXIC4TQnKbCjBDb6SbD0eg=",
21
- "sha384": "i9ZQmHv672Qw8CSdvY7tN7qQeNEFXmpC4ZNkQDxHJyaNu+UvX2WZ1dRkLwtxPNKt",
22
- "sha512": "5g5R34d9/xpzIk6QtSqR+ZXFvx93mdrKCReZs8gBZRg/eVOFiGBlFKAj56OOLaufDpQbQCDCiBkLiS4s03YT/Q=="
20
+ "sha256": "5AV0D1pW++2w63V0/Lc7peR6pWOZ5uZNBrrEPvOeBKY=",
21
+ "sha384": "YyXbsaMSLJMeX+mrOXPXOMklYlbsvWUyKYPkTVgBEpQuxIp9SO8P7Vz75z/HfFE4",
22
+ "sha512": "2JgHcVMG+19gd9t4/4SM5s0lJfqtXw7G4BVvgvFmZhfKKO2v3j7TgQqUEf+J+ETj0afZsGYzEkotQ3xKgpUTpg=="
23
23
  }
24
24
  }
25
25
  }
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Application Insights JavaScript SDK - Core, 2.8.0-beta.2203-02
2
+ * Application Insights JavaScript SDK - Core, 2.8.0-beta.2203-03
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
  (function (global, factory) {
@@ -833,7 +833,7 @@
833
833
  objForEachKey(values, function (field, value) {
834
834
  enumClass[field] = value;
835
835
  if (!isUndefined(enumClass[value])) {
836
- throwError("Value: [" + value + "] already exists for " + field);
836
+ throwError("[" + value + "] exists for " + field);
837
837
  }
838
838
  enumClass[value] = field;
839
839
  });
@@ -1676,8 +1676,11 @@
1676
1676
  return createTelemetryProxyChain([startAt], config, core);
1677
1677
  }
1678
1678
  function _createInternalContext(telemetryChain, config, core, startAt) {
1679
- var _nextProxy = startAt ? _getNextProxyStart(telemetryChain, config, core, startAt) : telemetryChain;
1679
+ var _nextProxy = null;
1680
1680
  var _onComplete = [];
1681
+ if (startAt !== null) {
1682
+ _nextProxy = startAt ? _getNextProxyStart(telemetryChain, config, core, startAt) : telemetryChain;
1683
+ }
1681
1684
  var context = {
1682
1685
  _next: _moveNext,
1683
1686
  ctx: {
@@ -2401,6 +2404,30 @@
2401
2404
  return channelQueue;
2402
2405
  }
2403
2406
 
2407
+ function createUnloadHandlerContainer() {
2408
+ var handlers = [];
2409
+ function _addHandler(handler) {
2410
+ if (handler) {
2411
+ handlers.push(handler);
2412
+ }
2413
+ }
2414
+ function _runHandlers(unloadCtx, unloadState) {
2415
+ arrForEach(handlers, function (handler) {
2416
+ try {
2417
+ handler(unloadCtx, unloadState);
2418
+ }
2419
+ catch (e) {
2420
+ unloadCtx.diagLog().throwInternal(2 , 73 , "Unexpected error calling unload handler - " + dumpObj(e));
2421
+ }
2422
+ });
2423
+ handlers = [];
2424
+ }
2425
+ return {
2426
+ add: _addHandler,
2427
+ run: _runHandlers
2428
+ };
2429
+ }
2430
+
2404
2431
  var strGetPlugin = "getPlugin";
2405
2432
  var BaseTelemetryPlugin = /** @class */ (function () {
2406
2433
  function BaseTelemetryPlugin() {
@@ -2408,6 +2435,7 @@
2408
2435
  var _isinitialized;
2409
2436
  var _rootCtx;
2410
2437
  var _nextPlugin;
2438
+ var _unloadHandlerContainer;
2411
2439
  var _hooks;
2412
2440
  _initDefaults();
2413
2441
  dynamicProto(BaseTelemetryPlugin, _self, function (_self) {
@@ -2429,6 +2457,7 @@
2429
2457
  function _unloadCallback() {
2430
2458
  if (!unloadDone) {
2431
2459
  unloadDone = true;
2460
+ _unloadHandlerContainer.run(theUnloadCtx, unloadState);
2432
2461
  arrForEach(_hooks, function (fn) {
2433
2462
  fn.rm();
2434
2463
  });
@@ -2457,6 +2486,7 @@
2457
2486
  }
2458
2487
  }
2459
2488
  };
2489
+ proxyFunctionAs(_self, "_addUnloadCb", function () { return _unloadHandlerContainer; }, "add");
2460
2490
  });
2461
2491
  _self.diagLog = function (itemCtx) {
2462
2492
  return _getTelCtx(itemCtx).diagLog();
@@ -2513,6 +2543,7 @@
2513
2543
  _rootCtx = null;
2514
2544
  _nextPlugin = null;
2515
2545
  _hooks = [];
2546
+ _unloadHandlerContainer = createUnloadHandlerContainer();
2516
2547
  }
2517
2548
  }
2518
2549
  return BaseTelemetryPlugin;
@@ -2582,6 +2613,8 @@
2582
2613
 
2583
2614
  var strValidationError = "Plugins must provide initialize method";
2584
2615
  var strNotificationManager = "_notificationManager";
2616
+ var strSdkUnloadingError = "SDK is still unloading...";
2617
+ var strSdkNotInitialized = "SDK is not initialized";
2585
2618
  function _createPerfManager(core, notificationMgr) {
2586
2619
  return new PerfManager(notificationMgr);
2587
2620
  }
@@ -2611,6 +2644,16 @@
2611
2644
  core: coreExtensions
2612
2645
  };
2613
2646
  }
2647
+ function _isPluginPresent(thePlugin, plugins) {
2648
+ var exists = false;
2649
+ arrForEach(plugins, function (plugin) {
2650
+ if (plugin === thePlugin) {
2651
+ exists = true;
2652
+ return -1;
2653
+ }
2654
+ });
2655
+ return exists;
2656
+ }
2614
2657
  function _createDummyNotificationManager() {
2615
2658
  var _a;
2616
2659
  return objCreateFn((_a = {},
@@ -2635,15 +2678,20 @@
2635
2678
  var _channelControl;
2636
2679
  var _channelConfig;
2637
2680
  var _channelQueue;
2681
+ var _isUnloading;
2638
2682
  var _telemetryInitializerPlugin;
2639
2683
  var _internalLogsEventName;
2640
2684
  var _evtNamespace;
2685
+ var _unloadHandlers;
2641
2686
  var _debugListener;
2642
2687
  var _internalLogPoller = 0;
2643
2688
  dynamicProto(BaseCore, this, function (_self) {
2644
2689
  _initDefaults();
2645
2690
  _self.isInitialized = function () { return _isInitialized; };
2646
2691
  _self.initialize = function (config, extensions, logger, notificationManager) {
2692
+ if (_isUnloading) {
2693
+ throwError(strSdkUnloadingError);
2694
+ }
2647
2695
  if (_self.isInitialized()) {
2648
2696
  throwError("Core should not be initialized more than once");
2649
2697
  }
@@ -2656,8 +2704,7 @@
2656
2704
  _initDebugListener(config);
2657
2705
  _initPerfManager(config);
2658
2706
  config.extensions = isNullOrUndefined(config.extensions) ? [] : config.extensions;
2659
- var extConfig = getSetValue(config, strExtensionConfig);
2660
- extConfig.NotificationManager = notificationManager;
2707
+ _initExtConfig(config);
2661
2708
  if (logger) {
2662
2709
  _self.logger = logger;
2663
2710
  }
@@ -2682,7 +2729,7 @@
2682
2729
  setValue(telemetryItem, strIKey, _self.config.instrumentationKey, null, isNotTruthy);
2683
2730
  setValue(telemetryItem, "time", toISOString(new Date()), null, isNotTruthy);
2684
2731
  setValue(telemetryItem, "ver", "4.0", null, isNullOrUndefined);
2685
- if (_self.isInitialized()) {
2732
+ if (!_isUnloading && _self.isInitialized()) {
2686
2733
  _createTelCtx().processNext(telemetryItem);
2687
2734
  }
2688
2735
  else {
@@ -2697,14 +2744,14 @@
2697
2744
  }
2698
2745
  return _notificationManager;
2699
2746
  };
2700
- _self.addNotificationListener = function (listener) {
2747
+ _self[strAddNotificationListener] = function (listener) {
2701
2748
  if (_notificationManager) {
2702
- _notificationManager.addNotificationListener(listener);
2749
+ _notificationManager[strAddNotificationListener](listener);
2703
2750
  }
2704
2751
  };
2705
- _self.removeNotificationListener = function (listener) {
2752
+ _self[strRemoveNotificationListener] = function (listener) {
2706
2753
  if (_notificationManager) {
2707
- _notificationManager.removeNotificationListener(listener);
2754
+ _notificationManager[strRemoveNotificationListener](listener);
2708
2755
  }
2709
2756
  };
2710
2757
  _self.getCookieMgr = function () {
@@ -2761,10 +2808,80 @@
2761
2808
  }
2762
2809
  };
2763
2810
  proxyFunctions(_self, function () { return _telemetryInitializerPlugin; }, ["addTelemetryInitializer"]);
2811
+ _self.unload = function (isAsync, unloadComplete, cbTimeout) {
2812
+ if (isAsync === void 0) { isAsync = true; }
2813
+ if (!_isInitialized) {
2814
+ throwError(strSdkNotInitialized);
2815
+ }
2816
+ if (_isUnloading) {
2817
+ throwError(strSdkUnloadingError);
2818
+ }
2819
+ var unloadState = {
2820
+ reason: 50 ,
2821
+ isAsync: isAsync,
2822
+ flushComplete: false
2823
+ };
2824
+ var processUnloadCtx = createProcessTelemetryUnloadContext(_getPluginChain(), _self.config, _self);
2825
+ processUnloadCtx.onComplete(function () {
2826
+ _initDefaults();
2827
+ unloadComplete && unloadComplete(unloadState);
2828
+ }, _self);
2829
+ function _doUnload(flushComplete) {
2830
+ unloadState.flushComplete = flushComplete;
2831
+ _isUnloading = true;
2832
+ _unloadHandlers.run(processUnloadCtx, unloadState);
2833
+ _self.stopPollingInternalLogs();
2834
+ processUnloadCtx.processNext(unloadState);
2835
+ }
2836
+ if (_channelControl) {
2837
+ _channelControl.flush(isAsync, _doUnload, 6 , cbTimeout);
2838
+ }
2839
+ else {
2840
+ _doUnload(true);
2841
+ }
2842
+ };
2764
2843
  _self.getPlugin = _getPlugin;
2844
+ _self.addPlugin = function (plugin, replaceExisting, isAsync, addCb) {
2845
+ if (isAsync === void 0) { isAsync = true; }
2846
+ if (!plugin) {
2847
+ addCb && addCb(false);
2848
+ _logOrThrowError(strValidationError);
2849
+ return;
2850
+ }
2851
+ var existingPlugin = _getPlugin(plugin.identifier);
2852
+ if (existingPlugin && !replaceExisting) {
2853
+ addCb && addCb(false);
2854
+ _logOrThrowError("Plugin [" + plugin.identifier + "] is already loaded!");
2855
+ return;
2856
+ }
2857
+ function _addPlugin(removed) {
2858
+ _configExtensions.push(plugin);
2859
+ _initPluginChain(_self.config);
2860
+ addCb && addCb(true);
2861
+ }
2862
+ if (existingPlugin) {
2863
+ var removedPlugins = [existingPlugin.plugin];
2864
+ var unloadState = {
2865
+ reason: 2 ,
2866
+ isAsync: isAsync
2867
+ };
2868
+ _removePlugins(removedPlugins, unloadState, function (removed) {
2869
+ if (!removed) {
2870
+ addCb && addCb(false);
2871
+ }
2872
+ else {
2873
+ _addPlugin();
2874
+ }
2875
+ });
2876
+ }
2877
+ else {
2878
+ _addPlugin();
2879
+ }
2880
+ };
2765
2881
  _self.evtNamespace = function () {
2766
2882
  return _evtNamespace;
2767
2883
  };
2884
+ proxyFunctionAs(_self, "addUnloadCb", function () { return _unloadHandlers; }, "add");
2768
2885
  function _initDefaults() {
2769
2886
  _isInitialized = false;
2770
2887
  _self.logger = new DiagnosticLogger({ loggingLevelConsole: 1 });
@@ -2782,8 +2899,10 @@
2782
2899
  _channelControl = null;
2783
2900
  _channelConfig = null;
2784
2901
  _channelQueue = null;
2902
+ _isUnloading = false;
2785
2903
  _internalLogsEventName = null;
2786
2904
  _evtNamespace = createUniqueNamespace("AIBaseCore", true);
2905
+ _unloadHandlers = createUnloadHandlerContainer();
2787
2906
  }
2788
2907
  function _createTelCtx() {
2789
2908
  return createProcessTelemetryContext(_getPluginChain(), _self.config, _self);
@@ -2836,6 +2955,20 @@
2836
2955
  isEnabled: function () {
2837
2956
  var pluginState = _getPluginState(thePlugin);
2838
2957
  return !pluginState[strTeardown] && !pluginState[strDisabled];
2958
+ },
2959
+ remove: function (isAsync, removeCb) {
2960
+ if (isAsync === void 0) { isAsync = true; }
2961
+ var pluginsToRemove = [thePlugin];
2962
+ var unloadState = {
2963
+ reason: 1 ,
2964
+ isAsync: isAsync
2965
+ };
2966
+ _removePlugins(pluginsToRemove, unloadState, function (removed) {
2967
+ if (removed) {
2968
+ _initPluginChain(_self.config);
2969
+ }
2970
+ removeCb && removeCb(removed);
2971
+ });
2839
2972
  }
2840
2973
  };
2841
2974
  }
@@ -2851,6 +2984,46 @@
2851
2984
  }
2852
2985
  return _pluginChain;
2853
2986
  }
2987
+ function _removePlugins(thePlugins, unloadState, removeComplete) {
2988
+ if (thePlugins && thePlugins.length > 0) {
2989
+ var unloadChain = createTelemetryProxyChain(thePlugins, _self.config, _self);
2990
+ var unloadCtx = createProcessTelemetryUnloadContext(unloadChain, _self.config, _self);
2991
+ unloadCtx.onComplete(function () {
2992
+ var removed = false;
2993
+ var newConfigExtensions = [];
2994
+ arrForEach(_configExtensions, function (plugin, idx) {
2995
+ if (!_isPluginPresent(plugin, thePlugins)) {
2996
+ newConfigExtensions.push(plugin);
2997
+ }
2998
+ else {
2999
+ removed = true;
3000
+ }
3001
+ });
3002
+ _configExtensions = newConfigExtensions;
3003
+ var newChannelConfig = [];
3004
+ if (_channelConfig) {
3005
+ arrForEach(_channelConfig, function (queue, idx) {
3006
+ var newQueue = [];
3007
+ arrForEach(queue, function (channel) {
3008
+ if (!_isPluginPresent(channel, thePlugins)) {
3009
+ newQueue.push(channel);
3010
+ }
3011
+ else {
3012
+ removed = true;
3013
+ }
3014
+ });
3015
+ newChannelConfig.push(newQueue);
3016
+ });
3017
+ _channelConfig = newChannelConfig;
3018
+ }
3019
+ removeComplete && removeComplete(removed);
3020
+ });
3021
+ unloadCtx.processNext(unloadState);
3022
+ }
3023
+ else {
3024
+ removeComplete(false);
3025
+ }
3026
+ }
2854
3027
  function _flushInternalLogs() {
2855
3028
  var queue = _self.logger ? _self.logger.queue : [];
2856
3029
  if (queue) {
@@ -2885,6 +3058,19 @@
2885
3058
  setValue(_self.config, "createPerfMgr", _createPerfManager);
2886
3059
  }
2887
3060
  }
3061
+ function _initExtConfig(config) {
3062
+ var extConfig = getSetValue(config, strExtensionConfig);
3063
+ extConfig.NotificationManager = _notificationManager;
3064
+ }
3065
+ function _logOrThrowError(message) {
3066
+ var logger = _self.logger;
3067
+ if (logger) {
3068
+ logger.throwInternal(2 , 73 , message);
3069
+ }
3070
+ else {
3071
+ throwError(message);
3072
+ }
3073
+ }
2888
3074
  });
2889
3075
  }
2890
3076
  return BaseCore;
@@ -3699,6 +3885,7 @@
3699
3885
  exports.createEnumStyle = createEnumStyle;
3700
3886
  exports.createProcessTelemetryContext = createProcessTelemetryContext;
3701
3887
  exports.createUniqueNamespace = createUniqueNamespace;
3888
+ exports.createUnloadHandlerContainer = createUnloadHandlerContainer;
3702
3889
  exports.dateNow = dateNow;
3703
3890
  exports.deleteCookie = deleteCookie;
3704
3891
  exports.detachEvent = detachEvent;