@microsoft/applicationinsights-core-js 3.0.0-beta.2303-05 → 3.0.0-beta.2303-09

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 (91) hide show
  1. package/browser/applicationinsights-core-js.integrity.json +9 -9
  2. package/browser/applicationinsights-core-js.js +67 -76
  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 +112 -4
  7. package/dist/applicationinsights-core-js.api.md +7 -2
  8. package/dist/applicationinsights-core-js.d.ts +11 -3
  9. package/dist/applicationinsights-core-js.js +67 -76
  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 +11 -3
  14. package/dist-esm/Config/ConfigDefaultHelpers.js +1 -1
  15. package/dist-esm/Config/ConfigDefaults.js +1 -1
  16. package/dist-esm/Config/DynamicConfig.js +10 -10
  17. package/dist-esm/Config/DynamicConfig.js.map +1 -1
  18. package/dist-esm/Config/DynamicProperty.js +8 -11
  19. package/dist-esm/Config/DynamicProperty.js.map +1 -1
  20. package/dist-esm/Config/DynamicState.js +1 -1
  21. package/dist-esm/Config/DynamicSupport.js +1 -1
  22. package/dist-esm/Config/IConfigDefaults.js +1 -1
  23. package/dist-esm/Config/IDynamicConfigHandler.js +1 -1
  24. package/dist-esm/Config/IDynamicPropertyHandler.js +1 -1
  25. package/dist-esm/Config/IDynamicWatcher.js +1 -1
  26. package/dist-esm/Config/_IDynamicConfigHandlerState.js +1 -1
  27. package/dist-esm/JavaScriptSDK/AggregationError.js +1 -1
  28. package/dist-esm/JavaScriptSDK/AppInsightsCore.js +42 -34
  29. package/dist-esm/JavaScriptSDK/AppInsightsCore.js.map +1 -1
  30. package/dist-esm/JavaScriptSDK/BaseTelemetryPlugin.js +1 -1
  31. package/dist-esm/JavaScriptSDK/Constants.js +1 -1
  32. package/dist-esm/JavaScriptSDK/CookieMgr.js +1 -1
  33. package/dist-esm/JavaScriptSDK/CoreUtils.js +1 -1
  34. package/dist-esm/JavaScriptSDK/DataCacheHelper.js +8 -28
  35. package/dist-esm/JavaScriptSDK/DataCacheHelper.js.map +1 -1
  36. package/dist-esm/JavaScriptSDK/DbgExtensionUtils.js +1 -1
  37. package/dist-esm/JavaScriptSDK/DiagnosticLogger.js +1 -1
  38. package/dist-esm/JavaScriptSDK/EnvUtils.js +1 -1
  39. package/dist-esm/JavaScriptSDK/EventHelpers.js +1 -1
  40. package/dist-esm/JavaScriptSDK/HelperFuncs.js +10 -12
  41. package/dist-esm/JavaScriptSDK/HelperFuncs.js.map +1 -1
  42. package/dist-esm/JavaScriptSDK/InstrumentHooks.js +1 -1
  43. package/dist-esm/JavaScriptSDK/InternalConstants.js +1 -1
  44. package/dist-esm/JavaScriptSDK/NotificationManager.js +1 -1
  45. package/dist-esm/JavaScriptSDK/PerfManager.js +11 -9
  46. package/dist-esm/JavaScriptSDK/PerfManager.js.map +1 -1
  47. package/dist-esm/JavaScriptSDK/ProcessTelemetryContext.js +1 -1
  48. package/dist-esm/JavaScriptSDK/RandomHelper.js +1 -1
  49. package/dist-esm/JavaScriptSDK/TelemetryHelpers.js +1 -1
  50. package/dist-esm/JavaScriptSDK/TelemetryInitializerPlugin.js +1 -1
  51. package/dist-esm/JavaScriptSDK/UnloadHandlerContainer.js +1 -1
  52. package/dist-esm/JavaScriptSDK/UnloadHookContainer.js +1 -1
  53. package/dist-esm/JavaScriptSDK/W3cTraceParent.js +1 -1
  54. package/dist-esm/JavaScriptSDK.Enums/EnumHelperFuncs.js +1 -1
  55. package/dist-esm/JavaScriptSDK.Enums/EventsDiscardedReason.js +1 -1
  56. package/dist-esm/JavaScriptSDK.Enums/LoggingEnums.js +1 -1
  57. package/dist-esm/JavaScriptSDK.Enums/SendRequestReason.js +1 -1
  58. package/dist-esm/JavaScriptSDK.Enums/TelemetryUnloadReason.js +1 -1
  59. package/dist-esm/JavaScriptSDK.Enums/TelemetryUpdateReason.js +1 -1
  60. package/dist-esm/JavaScriptSDK.Interfaces/IAppInsightsCore.js +1 -1
  61. package/dist-esm/JavaScriptSDK.Interfaces/IChannelControls.js +1 -1
  62. package/dist-esm/JavaScriptSDK.Interfaces/IChannelControlsHost.js +8 -0
  63. package/dist-esm/JavaScriptSDK.Interfaces/IChannelControlsHost.js.map +1 -0
  64. package/dist-esm/JavaScriptSDK.Interfaces/IConfiguration.js +1 -1
  65. package/dist-esm/JavaScriptSDK.Interfaces/ICookieMgr.js +1 -1
  66. package/dist-esm/JavaScriptSDK.Interfaces/IDbgExtension.js +1 -1
  67. package/dist-esm/JavaScriptSDK.Interfaces/IDiagnosticLogger.js +1 -1
  68. package/dist-esm/JavaScriptSDK.Interfaces/IDistributedTraceContext.js +1 -1
  69. package/dist-esm/JavaScriptSDK.Interfaces/IInstrumentHooks.js +1 -1
  70. package/dist-esm/JavaScriptSDK.Interfaces/INotificationListener.js +1 -1
  71. package/dist-esm/JavaScriptSDK.Interfaces/INotificationManager.js +1 -1
  72. package/dist-esm/JavaScriptSDK.Interfaces/IPerfEvent.js +1 -1
  73. package/dist-esm/JavaScriptSDK.Interfaces/IPerfManager.js +1 -1
  74. package/dist-esm/JavaScriptSDK.Interfaces/IProcessTelemetryContext.js +1 -1
  75. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryInitializers.js +1 -1
  76. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryItem.js +1 -1
  77. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryPlugin.js +1 -1
  78. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryPluginChain.js +1 -1
  79. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryUnloadState.js +1 -1
  80. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryUpdateState.js +1 -1
  81. package/dist-esm/JavaScriptSDK.Interfaces/ITraceParent.js +1 -1
  82. package/dist-esm/JavaScriptSDK.Interfaces/IUnloadHook.js +1 -1
  83. package/dist-esm/JavaScriptSDK.Interfaces/IUnloadableComponent.js +1 -1
  84. package/dist-esm/__DynamicConstants.js +4 -6
  85. package/dist-esm/__DynamicConstants.js.map +1 -1
  86. package/dist-esm/applicationinsights-core-js.js +1 -1
  87. package/package.json +1 -1
  88. package/types/JavaScriptSDK.Interfaces/IChannelControlsHost.d.ts +9 -0
  89. package/types/JavaScriptSDK.Interfaces/IConfiguration.d.ts +2 -2
  90. package/types/__DynamicConstants.d.ts +0 -2
  91. package/types/applicationinsights-core-js.d.ts +1 -0
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Microsoft Application Insights Core Javascript SDK, 3.0.0-beta.2303-05
2
+ * Microsoft Application Insights Core Javascript SDK, 3.0.0-beta.2303-09
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  *
5
5
  * Microsoft Application Insights Team
@@ -1134,6 +1134,14 @@ export declare interface IChannelControls extends ITelemetryPlugin {
1134
1134
  flush?(async: boolean, callBack?: (flushComplete?: boolean) => void, sendReason?: SendRequestReason): boolean | void;
1135
1135
  }
1136
1136
 
1137
+ export declare interface IChannelControlsHost extends IChannelControls {
1138
+ /**
1139
+ * Get and return the named channel instance (if present) from the queues
1140
+ * @param pluginIdentifier - The identifier name of the plugin
1141
+ */
1142
+ getChannel<T extends IPlugin = IPlugin>(pluginIdentifier: string): T;
1143
+ }
1144
+
1137
1145
  /**
1138
1146
  * The type to identify whether the default value should be applied in preference to the provided value.
1139
1147
  */
@@ -1261,12 +1269,12 @@ export declare interface IConfiguration {
1261
1269
  /**
1262
1270
  * Additional plugins that should be loaded by core at runtime
1263
1271
  */
1264
- extensions?: ITelemetryPlugin[];
1272
+ readonly extensions?: ITelemetryPlugin[];
1265
1273
  /**
1266
1274
  * Channel queues that is setup by caller in desired order.
1267
1275
  * If channels are provided here, core will ignore any channels that are already setup, example if there is a SKU with an initialized channel
1268
1276
  */
1269
- channels?: IChannelControls[][];
1277
+ readonly channels?: IChannelControls[][];
1270
1278
  /**
1271
1279
  * @type {boolean}
1272
1280
  * Flag that disables the Instrumentation Key validation.
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Core, 3.0.0-beta.2303-05
2
+ * Application Insights JavaScript SDK - Core, 3.0.0-beta.2303-09
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Core, 3.0.0-beta.2303-05
2
+ * Application Insights JavaScript SDK - Core, 3.0.0-beta.2303-09
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
 
@@ -1,13 +1,13 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Core, 3.0.0-beta.2303-05
2
+ * Application Insights JavaScript SDK - Core, 3.0.0-beta.2303-09
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
 
6
6
 
7
- import { dumpObj, objDefineProp, objForEachKey } from "@nevware21/ts-utils";
7
+ import { dumpObj, objDefine, objForEachKey } from "@nevware21/ts-utils";
8
8
  import { createUniqueNamespace } from "../JavaScriptSDK/DataCacheHelper";
9
9
  import { STR_NOT_DYNAMIC_ERROR, STR_WARN_TO_CONSOLE } from "../JavaScriptSDK/InternalConstants";
10
- import { _DYN_CONFIGURABLE, _DYN_ENUMERABLE, _DYN_LOGGER, _DYN_NOTIFY, _DYN_RD_ONLY, _DYN_SET_DF, _DYN_THROW_INTERNAL, _DYN_WATCH } from "../__DynamicConstants";
10
+ import { _DYN_LOGGER, _DYN_NOTIFY, _DYN_RD_ONLY, _DYN_SET_DF, _DYN_THROW_INTERNAL, _DYN_WATCH } from "../__DynamicConstants";
11
11
  import { _applyDefaultValue } from "./ConfigDefaults";
12
12
  import { _makeDynamicObject, _setDynamicProperty } from "./DynamicProperty";
13
13
  import { _createState } from "./DynamicState";
@@ -39,7 +39,7 @@ function _createAndUseHandler(state, configHandler) {
39
39
  * @returns The existing dynamic handler or a new instance with the provided config values
40
40
  */
41
41
  function _createDynamicHandler(logger, target, inPlace) {
42
- var _a, _b;
42
+ var _a;
43
43
  var dynamicHandler = getDynamicConfigHandler(target);
44
44
  if (dynamicHandler) {
45
45
  // The passed config is already dynamic so return it's tracker
@@ -91,12 +91,12 @@ function _createDynamicHandler(logger, target, inPlace) {
91
91
  _a[_DYN_RD_ONLY /* @min:rdOnly */] = _rdOnly,
92
92
  _a._block = _block,
93
93
  _a);
94
- objDefineProp(cfgHandler, "uid", (_b = {},
95
- _b[_DYN_CONFIGURABLE /* @min:configurable */] = false,
96
- _b[_DYN_ENUMERABLE /* @min:enumerable */] = false,
97
- _b.writable = false,
98
- _b.value = uid,
99
- _b));
94
+ objDefine(cfgHandler, "uid", {
95
+ c: false,
96
+ e: false,
97
+ w: false,
98
+ v: uid
99
+ });
100
100
  theState = _createState(cfgHandler);
101
101
  // Setup tracking for all defined default keys
102
102
  _makeDynamicObject(theState, newTarget);
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicConfig.js.map","sources":["DynamicConfig.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { dumpObj, objDefineProp, objForEachKey } from \"@nevware21/ts-utils\";\r\nimport { createUniqueNamespace } from \"../JavaScriptSDK/DataCacheHelper\";\r\nimport { STR_NOT_DYNAMIC_ERROR, STR_WARN_TO_CONSOLE } from \"../JavaScriptSDK/InternalConstants\";\r\nimport { _DYN_CONFIGURABLE, _DYN_ENUMERABLE, _DYN_LOGGER, _DYN_NOTIFY, _DYN_RD_ONLY, _DYN_SET_DF, _DYN_THROW_INTERNAL, _DYN_WATCH } from \"../__DynamicConstants\";\r\nimport { _applyDefaultValue } from \"./ConfigDefaults\";\r\nimport { _makeDynamicObject, _setDynamicProperty } from \"./DynamicProperty\";\r\nimport { _createState } from \"./DynamicState\";\r\nimport { CFG_HANDLER_LINK, _cfgDeepCopy, getDynamicConfigHandler, throwInvalidAccess } from \"./DynamicSupport\";\r\n/**\r\n * Identifies a function which will be re-called whenever any of it's accessed configuration values\r\n * change.\r\n * @param configHandler - The callback that will be called for the initial request and then whenever any\r\n * accessed configuration changes are identified.\r\n */\r\nfunction _createAndUseHandler(state, configHandler) {\r\n var handler = {\r\n fn: configHandler,\r\n rm: function () {\r\n // Clear all references to the handler so it can be garbage collected\r\n // This will also cause this handler to never get called and eventually removed\r\n handler.fn = null;\r\n state = null;\r\n configHandler = null;\r\n }\r\n };\r\n state.use(handler, configHandler);\r\n return handler;\r\n}\r\n/**\r\n * Creates the dynamic config handler and associates with the target config as the root object\r\n * @param target - The config that you want to be root of the dynamic config\r\n * @param inPlace - Should the passed config be converted in-place or a new proxy returned\r\n * @returns The existing dynamic handler or a new instance with the provided config values\r\n */\r\nfunction _createDynamicHandler(logger, target, inPlace) {\r\n var _a, _b;\r\n var dynamicHandler = getDynamicConfigHandler(target);\r\n if (dynamicHandler) {\r\n // The passed config is already dynamic so return it's tracker\r\n return dynamicHandler;\r\n }\r\n var uid = createUniqueNamespace(\"dyncfg\", true);\r\n var newTarget = (target && inPlace !== false) ? target : _cfgDeepCopy(target);\r\n var theState;\r\n function _notifyWatchers() {\r\n theState[_DYN_NOTIFY /* @min:%2enotify */]();\r\n }\r\n function _setValue(target, name, value) {\r\n return _setDynamicProperty(theState, target, name, value);\r\n }\r\n function _watch(configHandler) {\r\n return _createAndUseHandler(theState, configHandler);\r\n }\r\n function _block(configHandler) {\r\n theState.use(null, configHandler);\r\n }\r\n function _ref(target, name) {\r\n // Make sure it's dynamic and mark as referenced with it's current value\r\n return _setDynamicProperty(theState, target, name, target[name], true);\r\n }\r\n function _rdOnly(target, name) {\r\n // Make sure it's dynamic and mark as readonly with it's current value\r\n return _setDynamicProperty(theState, target, name, target[name], false, true);\r\n }\r\n function _applyDefaults(theConfig, defaultValues) {\r\n if (defaultValues) {\r\n // Resolve/apply the defaults\r\n objForEachKey(defaultValues, function (name, value) {\r\n // Sets the value and makes it dynamic (if it doesn't already exist)\r\n _applyDefaultValue(cfgHandler, theConfig, name, value);\r\n });\r\n }\r\n return theConfig;\r\n }\r\n var cfgHandler = (_a = {\r\n uid: null,\r\n cfg: newTarget\r\n },\r\n _a[_DYN_LOGGER /* @min:logger */] = logger,\r\n _a[_DYN_NOTIFY /* @min:notify */] = _notifyWatchers,\r\n _a.set = _setValue,\r\n _a[_DYN_SET_DF /* @min:setDf */] = _applyDefaults,\r\n _a[_DYN_WATCH /* @min:watch */] = _watch,\r\n _a.ref = _ref,\r\n _a[_DYN_RD_ONLY /* @min:rdOnly */] = _rdOnly,\r\n _a._block = _block,\r\n _a);\r\n objDefineProp(cfgHandler, \"uid\", (_b = {},\r\n _b[_DYN_CONFIGURABLE /* @min:configurable */] = false,\r\n _b[_DYN_ENUMERABLE /* @min:enumerable */] = false,\r\n _b.writable = false,\r\n _b.value = uid,\r\n _b));\r\n theState = _createState(cfgHandler);\r\n // Setup tracking for all defined default keys\r\n _makeDynamicObject(theState, newTarget);\r\n return cfgHandler;\r\n}\r\n/**\r\n * Log an invalid access message to the console\r\n * @param message\r\n */\r\nfunction _logInvalidAccess(logger, message) {\r\n if (logger) {\r\n logger[STR_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */](message);\r\n logger[_DYN_THROW_INTERNAL /* @min:%2ethrowInternal */](2 /* eLoggingSeverity.WARNING */, 108 /* _eInternalMessageId.DynamicConfigException */, message);\r\n }\r\n else {\r\n // We don't have a logger so just throw an exception\r\n throwInvalidAccess(message);\r\n }\r\n}\r\n/**\r\n * Create or return a dynamic version of the passed config, if it is not already dynamic\r\n * @param config - The config to be converted into a dynamic config\r\n * @param defaultConfig - The default values to apply on the config if the properties don't already exist\r\n * @param inPlace - Should the config be converted in-place into a dynamic config or a new instance returned, defaults to true\r\n * @returns The dynamic config handler for the config (whether new or existing)\r\n */\r\nexport function createDynamicConfig(config, defaultConfig, logger, inPlace) {\r\n var dynamicHandler = _createDynamicHandler(logger, config || {}, inPlace);\r\n if (defaultConfig) {\r\n dynamicHandler[_DYN_SET_DF /* @min:%2esetDf */](dynamicHandler.cfg, defaultConfig);\r\n }\r\n return dynamicHandler;\r\n}\r\n/**\r\n * Watch and track changes for accesses to the current config, the provided config MUST already be\r\n * a dynamic config or a child accessed via the dynamic config\r\n * @param config\r\n * @param configHandler\r\n * @param logger - The logger instance to use if there is no existing handler\r\n * @returns A watcher handler instance that can be used to remove itself when being unloaded\r\n * @throws TypeError if the provided config is not a dynamic config instance\r\n */\r\nexport function onConfigChange(config, configHandler, logger) {\r\n var handler = config[CFG_HANDLER_LINK] || config;\r\n if (handler.cfg && (handler.cfg === config || handler.cfg[CFG_HANDLER_LINK] === handler)) {\r\n return handler[_DYN_WATCH /* @min:%2ewatch */](configHandler);\r\n }\r\n _logInvalidAccess(logger, STR_NOT_DYNAMIC_ERROR + dumpObj(config));\r\n createDynamicConfig(config, null, logger)[_DYN_WATCH /* @min:%2ewatch */](configHandler);\r\n}\r\n//# sourceMappingURL=DynamicConfig.js.map"],"names":[],"mappings":";;;;AAA4D;AAC1B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
1
+ {"version":3,"file":"DynamicConfig.js.map","sources":["DynamicConfig.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { dumpObj, objDefine, objForEachKey } from \"@nevware21/ts-utils\";\r\nimport { createUniqueNamespace } from \"../JavaScriptSDK/DataCacheHelper\";\r\nimport { STR_NOT_DYNAMIC_ERROR, STR_WARN_TO_CONSOLE } from \"../JavaScriptSDK/InternalConstants\";\r\nimport { _DYN_LOGGER, _DYN_NOTIFY, _DYN_RD_ONLY, _DYN_SET_DF, _DYN_THROW_INTERNAL, _DYN_WATCH } from \"../__DynamicConstants\";\r\nimport { _applyDefaultValue } from \"./ConfigDefaults\";\r\nimport { _makeDynamicObject, _setDynamicProperty } from \"./DynamicProperty\";\r\nimport { _createState } from \"./DynamicState\";\r\nimport { CFG_HANDLER_LINK, _cfgDeepCopy, getDynamicConfigHandler, throwInvalidAccess } from \"./DynamicSupport\";\r\n/**\r\n * Identifies a function which will be re-called whenever any of it's accessed configuration values\r\n * change.\r\n * @param configHandler - The callback that will be called for the initial request and then whenever any\r\n * accessed configuration changes are identified.\r\n */\r\nfunction _createAndUseHandler(state, configHandler) {\r\n var handler = {\r\n fn: configHandler,\r\n rm: function () {\r\n // Clear all references to the handler so it can be garbage collected\r\n // This will also cause this handler to never get called and eventually removed\r\n handler.fn = null;\r\n state = null;\r\n configHandler = null;\r\n }\r\n };\r\n state.use(handler, configHandler);\r\n return handler;\r\n}\r\n/**\r\n * Creates the dynamic config handler and associates with the target config as the root object\r\n * @param target - The config that you want to be root of the dynamic config\r\n * @param inPlace - Should the passed config be converted in-place or a new proxy returned\r\n * @returns The existing dynamic handler or a new instance with the provided config values\r\n */\r\nfunction _createDynamicHandler(logger, target, inPlace) {\r\n var _a;\r\n var dynamicHandler = getDynamicConfigHandler(target);\r\n if (dynamicHandler) {\r\n // The passed config is already dynamic so return it's tracker\r\n return dynamicHandler;\r\n }\r\n var uid = createUniqueNamespace(\"dyncfg\", true);\r\n var newTarget = (target && inPlace !== false) ? target : _cfgDeepCopy(target);\r\n var theState;\r\n function _notifyWatchers() {\r\n theState[_DYN_NOTIFY /* @min:%2enotify */]();\r\n }\r\n function _setValue(target, name, value) {\r\n return _setDynamicProperty(theState, target, name, value);\r\n }\r\n function _watch(configHandler) {\r\n return _createAndUseHandler(theState, configHandler);\r\n }\r\n function _block(configHandler) {\r\n theState.use(null, configHandler);\r\n }\r\n function _ref(target, name) {\r\n // Make sure it's dynamic and mark as referenced with it's current value\r\n return _setDynamicProperty(theState, target, name, target[name], true);\r\n }\r\n function _rdOnly(target, name) {\r\n // Make sure it's dynamic and mark as readonly with it's current value\r\n return _setDynamicProperty(theState, target, name, target[name], false, true);\r\n }\r\n function _applyDefaults(theConfig, defaultValues) {\r\n if (defaultValues) {\r\n // Resolve/apply the defaults\r\n objForEachKey(defaultValues, function (name, value) {\r\n // Sets the value and makes it dynamic (if it doesn't already exist)\r\n _applyDefaultValue(cfgHandler, theConfig, name, value);\r\n });\r\n }\r\n return theConfig;\r\n }\r\n var cfgHandler = (_a = {\r\n uid: null,\r\n cfg: newTarget\r\n },\r\n _a[_DYN_LOGGER /* @min:logger */] = logger,\r\n _a[_DYN_NOTIFY /* @min:notify */] = _notifyWatchers,\r\n _a.set = _setValue,\r\n _a[_DYN_SET_DF /* @min:setDf */] = _applyDefaults,\r\n _a[_DYN_WATCH /* @min:watch */] = _watch,\r\n _a.ref = _ref,\r\n _a[_DYN_RD_ONLY /* @min:rdOnly */] = _rdOnly,\r\n _a._block = _block,\r\n _a);\r\n objDefine(cfgHandler, \"uid\", {\r\n c: false,\r\n e: false,\r\n w: false,\r\n v: uid\r\n });\r\n theState = _createState(cfgHandler);\r\n // Setup tracking for all defined default keys\r\n _makeDynamicObject(theState, newTarget);\r\n return cfgHandler;\r\n}\r\n/**\r\n * Log an invalid access message to the console\r\n * @param message\r\n */\r\nfunction _logInvalidAccess(logger, message) {\r\n if (logger) {\r\n logger[STR_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */](message);\r\n logger[_DYN_THROW_INTERNAL /* @min:%2ethrowInternal */](2 /* eLoggingSeverity.WARNING */, 108 /* _eInternalMessageId.DynamicConfigException */, message);\r\n }\r\n else {\r\n // We don't have a logger so just throw an exception\r\n throwInvalidAccess(message);\r\n }\r\n}\r\n/**\r\n * Create or return a dynamic version of the passed config, if it is not already dynamic\r\n * @param config - The config to be converted into a dynamic config\r\n * @param defaultConfig - The default values to apply on the config if the properties don't already exist\r\n * @param inPlace - Should the config be converted in-place into a dynamic config or a new instance returned, defaults to true\r\n * @returns The dynamic config handler for the config (whether new or existing)\r\n */\r\nexport function createDynamicConfig(config, defaultConfig, logger, inPlace) {\r\n var dynamicHandler = _createDynamicHandler(logger, config || {}, inPlace);\r\n if (defaultConfig) {\r\n dynamicHandler[_DYN_SET_DF /* @min:%2esetDf */](dynamicHandler.cfg, defaultConfig);\r\n }\r\n return dynamicHandler;\r\n}\r\n/**\r\n * Watch and track changes for accesses to the current config, the provided config MUST already be\r\n * a dynamic config or a child accessed via the dynamic config\r\n * @param config\r\n * @param configHandler\r\n * @param logger - The logger instance to use if there is no existing handler\r\n * @returns A watcher handler instance that can be used to remove itself when being unloaded\r\n * @throws TypeError if the provided config is not a dynamic config instance\r\n */\r\nexport function onConfigChange(config, configHandler, logger) {\r\n var handler = config[CFG_HANDLER_LINK] || config;\r\n if (handler.cfg && (handler.cfg === config || handler.cfg[CFG_HANDLER_LINK] === handler)) {\r\n return handler[_DYN_WATCH /* @min:%2ewatch */](configHandler);\r\n }\r\n _logInvalidAccess(logger, STR_NOT_DYNAMIC_ERROR + dumpObj(config));\r\n createDynamicConfig(config, null, logger)[_DYN_WATCH /* @min:%2ewatch */](configHandler);\r\n}\r\n//# sourceMappingURL=DynamicConfig.js.map"],"names":[],"mappings":";;;;AAA4D;AAC1B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
@@ -1,12 +1,12 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Core, 3.0.0-beta.2303-05
2
+ * Application Insights JavaScript SDK - Core, 3.0.0-beta.2303-09
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
 
6
6
 
7
- import { arrForEach, arrIndexOf, dumpObj, isArray, isPlainObject, objDefineAccessors, objDefineProp, objForEachKey, objGetOwnPropertyDescriptor } from "@nevware21/ts-utils";
7
+ import { arrForEach, arrIndexOf, dumpObj, isArray, isPlainObject, objDefine, objDefineProp, objForEachKey, objGetOwnPropertyDescriptor } from "@nevware21/ts-utils";
8
8
  import { UNDEFINED_VALUE } from "../JavaScriptSDK/InternalConstants";
9
- import { _DYN_APPLY, _DYN_CONFIGURABLE, _DYN_ENUMERABLE, _DYN_PUSH, _DYN_SPLICE } from "../__DynamicConstants";
9
+ import { _DYN_APPLY, _DYN_PUSH, _DYN_SPLICE } from "../__DynamicConstants";
10
10
  import { CFG_HANDLER_LINK, throwInvalidAccess } from "./DynamicSupport";
11
11
  var arrayMethodsToPatch = [
12
12
  "push",
@@ -140,7 +140,7 @@ function _makeDynamicProperty(state, theConfig, name, value) {
140
140
  state.add(detail);
141
141
  }
142
142
  }
143
- objDefineAccessors(theConfig, detail.n, _getProperty, _setProperty, true);
143
+ objDefine(theConfig, detail.n, { g: _getProperty, s: _setProperty });
144
144
  // Return the dynamic reference
145
145
  return _getProperty();
146
146
  }
@@ -170,7 +170,6 @@ export function _setDynamicProperty(state, target, name, value, inPlace, rdOnly)
170
170
  return value;
171
171
  }
172
172
  export function _makeDynamicObject(state, target) {
173
- var _a;
174
173
  // Assign target with new value properties (converting into dynamic properties in the process)
175
174
  objForEachKey(target, function (key, value) {
176
175
  // Assign and/or make the property dynamic
@@ -178,13 +177,11 @@ export function _makeDynamicObject(state, target) {
178
177
  });
179
178
  if (!target[CFG_HANDLER_LINK]) {
180
179
  // Link the config back to the dynamic config details
181
- objDefineProp(target, CFG_HANDLER_LINK, (_a = {},
182
- _a[_DYN_CONFIGURABLE /* @min:configurable */] = false,
183
- _a[_DYN_ENUMERABLE /* @min:enumerable */] = false,
184
- _a.get = function () {
180
+ objDefineProp(target, CFG_HANDLER_LINK, {
181
+ get: function () {
185
182
  return state.hdlr;
186
- },
187
- _a));
183
+ }
184
+ });
188
185
  _patchArray(state, target);
189
186
  }
190
187
  return target;
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicProperty.js.map","sources":["DynamicProperty.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { arrForEach, arrIndexOf, dumpObj, isArray, isPlainObject, objDefineAccessors, objDefineProp, objForEachKey, objGetOwnPropertyDescriptor } from \"@nevware21/ts-utils\";\r\nimport { UNDEFINED_VALUE } from \"../JavaScriptSDK/InternalConstants\";\r\nimport { _DYN_APPLY, _DYN_CONFIGURABLE, _DYN_ENUMERABLE, _DYN_PUSH, _DYN_SPLICE } from \"../__DynamicConstants\";\r\nimport { CFG_HANDLER_LINK, throwInvalidAccess } from \"./DynamicSupport\";\r\nvar arrayMethodsToPatch = [\r\n \"push\",\r\n \"pop\",\r\n \"shift\",\r\n \"unshift\",\r\n \"splice\"\r\n];\r\nfunction _patchArray(state, target) {\r\n if (isArray(target)) {\r\n // Monkey Patch the methods that might change the array\r\n arrForEach(arrayMethodsToPatch, function (method) {\r\n var orgMethod = target[method];\r\n target[method] = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var result = orgMethod[_DYN_APPLY /* @min:%2eapply */](this, args);\r\n // items may be added, removed or moved so need to make some new dynamic properties\r\n _makeDynamicObject(state, target);\r\n return result;\r\n };\r\n });\r\n }\r\n}\r\nfunction _getOwnPropGetter(target, name) {\r\n var propDesc = objGetOwnPropertyDescriptor(target, name);\r\n return propDesc && propDesc.get;\r\n}\r\nfunction _makeDynamicProperty(state, theConfig, name, value) {\r\n // Does not appear to be dynamic so lets make it so\r\n var detail = {\r\n n: name,\r\n h: [],\r\n trk: function (handler) {\r\n if (handler && handler.fn) {\r\n if (arrIndexOf(detail.h, handler) === -1) {\r\n // Add this handler to the collection that should be notified when the value changes\r\n detail.h[_DYN_PUSH /* @min:%2epush */](handler);\r\n }\r\n state.trk(handler, detail);\r\n }\r\n },\r\n clr: function (handler) {\r\n var idx = arrIndexOf(detail.h, handler);\r\n if (idx !== -1) {\r\n detail.h[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n }\r\n }\r\n };\r\n // Flag to optimize lookup response time by avoiding additional function calls\r\n var checkDynamic = true;\r\n var isObjectOrArray = false;\r\n function _getProperty() {\r\n if (checkDynamic) {\r\n isObjectOrArray = isObjectOrArray || (value && (isPlainObject(value) || isArray(value)));\r\n // Make sure that if it's an object that we make it dynamic\r\n if (value && !value[CFG_HANDLER_LINK] && isObjectOrArray) {\r\n // It doesn't look like it's already dynamic so lets make sure it's converted the object into a dynamic Config as well\r\n value = _makeDynamicObject(state, value);\r\n }\r\n // If it needed to be converted it now has been\r\n checkDynamic = false;\r\n }\r\n // If there is an active handler then add it to the tracking set of handlers\r\n var activeHandler = state.act;\r\n if (activeHandler) {\r\n detail.trk(activeHandler);\r\n }\r\n return value;\r\n }\r\n // Tag this getter as our dynamic property and provide shortcut for notifying a change\r\n _getProperty[state.prop] = {\r\n chng: function () {\r\n state.add(detail);\r\n }\r\n };\r\n function _setProperty(newValue) {\r\n if (value !== newValue) {\r\n if (!!_getProperty[state.ro] && !state.upd) {\r\n // field is marked as readonly so return false\r\n throwInvalidAccess(\"[\" + name + \"] is read-only:\" + dumpObj(theConfig));\r\n }\r\n if (checkDynamic) {\r\n isObjectOrArray = isObjectOrArray || (value && (isPlainObject(value) || isArray(value)));\r\n checkDynamic = false;\r\n }\r\n // The value must be a plain object or an array to enforce the reference (in-place updates)\r\n var isReferenced = isObjectOrArray && _getProperty[state.rf];\r\n if (isObjectOrArray) {\r\n // We are about to replace a plain object or an array\r\n if (isReferenced) {\r\n // Reassign the properties from the current value to the same properties from the newValue\r\n // This will set properties not in the newValue to undefined\r\n objForEachKey(value, function (key) {\r\n value[key] = newValue ? newValue[key] : UNDEFINED_VALUE;\r\n });\r\n // Now assign / re-assign value with all of the keys from newValue\r\n objForEachKey(newValue, function (key, theValue) {\r\n _setDynamicProperty(state, value, key, theValue);\r\n });\r\n // Now drop newValue so when we assign value later it keeps the existing reference\r\n newValue = value;\r\n }\r\n else if (value && value[CFG_HANDLER_LINK]) {\r\n // As we are replacing the value, if it's already dynamic then we need to notify the listeners\r\n // for every property it has already\r\n objForEachKey(value, function (key) {\r\n // Check if the value is dynamic\r\n var getter = _getOwnPropGetter(value, key);\r\n if (getter) {\r\n // And if it is tell it's listeners that the value has changed\r\n var valueState = getter[state.prop];\r\n valueState && valueState.chng();\r\n }\r\n });\r\n }\r\n }\r\n if (newValue !== value) {\r\n var newIsObjectOrArray = newValue && (isPlainObject(newValue) || isArray(newValue));\r\n if (!isReferenced && newIsObjectOrArray) {\r\n // As the newValue is an object/array lets preemptively make it dynamic\r\n _makeDynamicObject(state, newValue);\r\n }\r\n // Now assign the internal \"value\" to the newValue\r\n value = newValue;\r\n isObjectOrArray = newIsObjectOrArray;\r\n }\r\n // Cause any listeners to be scheduled for notification\r\n state.add(detail);\r\n }\r\n }\r\n objDefineAccessors(theConfig, detail.n, _getProperty, _setProperty, true);\r\n // Return the dynamic reference\r\n return _getProperty();\r\n}\r\nexport function _setDynamicProperty(state, target, name, value, inPlace, rdOnly) {\r\n if (target) {\r\n // To be a dynamic property it needs to have a get function\r\n var getter = _getOwnPropGetter(target, name);\r\n var isDynamic = getter && !!getter[state.prop];\r\n if (!isDynamic) {\r\n value = _makeDynamicProperty(state, target, name, value);\r\n if (inPlace || rdOnly) {\r\n getter = _getOwnPropGetter(target, name);\r\n }\r\n }\r\n else {\r\n // Looks like it's already dynamic just assign the new value\r\n target[name] = value;\r\n }\r\n // Assign the optional flags if true\r\n if (inPlace) {\r\n getter[state.rf] = inPlace;\r\n }\r\n if (rdOnly) {\r\n getter[state.ro] = rdOnly;\r\n }\r\n }\r\n return value;\r\n}\r\nexport function _makeDynamicObject(state, target) {\r\n var _a;\r\n // Assign target with new value properties (converting into dynamic properties in the process)\r\n objForEachKey(target, function (key, value) {\r\n // Assign and/or make the property dynamic\r\n _setDynamicProperty(state, target, key, value);\r\n });\r\n if (!target[CFG_HANDLER_LINK]) {\r\n // Link the config back to the dynamic config details\r\n objDefineProp(target, CFG_HANDLER_LINK, (_a = {},\r\n _a[_DYN_CONFIGURABLE /* @min:configurable */] = false,\r\n _a[_DYN_ENUMERABLE /* @min:enumerable */] = false,\r\n _a.get = function () {\r\n return state.hdlr;\r\n },\r\n _a));\r\n _patchArray(state, target);\r\n }\r\n return target;\r\n}\r\n//# sourceMappingURL=DynamicProperty.js.map"],"names":[],"mappings":";;;;AAA4D;AAC1B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
1
+ {"version":3,"file":"DynamicProperty.js.map","sources":["DynamicProperty.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { arrForEach, arrIndexOf, dumpObj, isArray, isPlainObject, objDefine, objDefineProp, objForEachKey, objGetOwnPropertyDescriptor } from \"@nevware21/ts-utils\";\r\nimport { UNDEFINED_VALUE } from \"../JavaScriptSDK/InternalConstants\";\r\nimport { _DYN_APPLY, _DYN_PUSH, _DYN_SPLICE } from \"../__DynamicConstants\";\r\nimport { CFG_HANDLER_LINK, throwInvalidAccess } from \"./DynamicSupport\";\r\nvar arrayMethodsToPatch = [\r\n \"push\",\r\n \"pop\",\r\n \"shift\",\r\n \"unshift\",\r\n \"splice\"\r\n];\r\nfunction _patchArray(state, target) {\r\n if (isArray(target)) {\r\n // Monkey Patch the methods that might change the array\r\n arrForEach(arrayMethodsToPatch, function (method) {\r\n var orgMethod = target[method];\r\n target[method] = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var result = orgMethod[_DYN_APPLY /* @min:%2eapply */](this, args);\r\n // items may be added, removed or moved so need to make some new dynamic properties\r\n _makeDynamicObject(state, target);\r\n return result;\r\n };\r\n });\r\n }\r\n}\r\nfunction _getOwnPropGetter(target, name) {\r\n var propDesc = objGetOwnPropertyDescriptor(target, name);\r\n return propDesc && propDesc.get;\r\n}\r\nfunction _makeDynamicProperty(state, theConfig, name, value) {\r\n // Does not appear to be dynamic so lets make it so\r\n var detail = {\r\n n: name,\r\n h: [],\r\n trk: function (handler) {\r\n if (handler && handler.fn) {\r\n if (arrIndexOf(detail.h, handler) === -1) {\r\n // Add this handler to the collection that should be notified when the value changes\r\n detail.h[_DYN_PUSH /* @min:%2epush */](handler);\r\n }\r\n state.trk(handler, detail);\r\n }\r\n },\r\n clr: function (handler) {\r\n var idx = arrIndexOf(detail.h, handler);\r\n if (idx !== -1) {\r\n detail.h[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n }\r\n }\r\n };\r\n // Flag to optimize lookup response time by avoiding additional function calls\r\n var checkDynamic = true;\r\n var isObjectOrArray = false;\r\n function _getProperty() {\r\n if (checkDynamic) {\r\n isObjectOrArray = isObjectOrArray || (value && (isPlainObject(value) || isArray(value)));\r\n // Make sure that if it's an object that we make it dynamic\r\n if (value && !value[CFG_HANDLER_LINK] && isObjectOrArray) {\r\n // It doesn't look like it's already dynamic so lets make sure it's converted the object into a dynamic Config as well\r\n value = _makeDynamicObject(state, value);\r\n }\r\n // If it needed to be converted it now has been\r\n checkDynamic = false;\r\n }\r\n // If there is an active handler then add it to the tracking set of handlers\r\n var activeHandler = state.act;\r\n if (activeHandler) {\r\n detail.trk(activeHandler);\r\n }\r\n return value;\r\n }\r\n // Tag this getter as our dynamic property and provide shortcut for notifying a change\r\n _getProperty[state.prop] = {\r\n chng: function () {\r\n state.add(detail);\r\n }\r\n };\r\n function _setProperty(newValue) {\r\n if (value !== newValue) {\r\n if (!!_getProperty[state.ro] && !state.upd) {\r\n // field is marked as readonly so return false\r\n throwInvalidAccess(\"[\" + name + \"] is read-only:\" + dumpObj(theConfig));\r\n }\r\n if (checkDynamic) {\r\n isObjectOrArray = isObjectOrArray || (value && (isPlainObject(value) || isArray(value)));\r\n checkDynamic = false;\r\n }\r\n // The value must be a plain object or an array to enforce the reference (in-place updates)\r\n var isReferenced = isObjectOrArray && _getProperty[state.rf];\r\n if (isObjectOrArray) {\r\n // We are about to replace a plain object or an array\r\n if (isReferenced) {\r\n // Reassign the properties from the current value to the same properties from the newValue\r\n // This will set properties not in the newValue to undefined\r\n objForEachKey(value, function (key) {\r\n value[key] = newValue ? newValue[key] : UNDEFINED_VALUE;\r\n });\r\n // Now assign / re-assign value with all of the keys from newValue\r\n objForEachKey(newValue, function (key, theValue) {\r\n _setDynamicProperty(state, value, key, theValue);\r\n });\r\n // Now drop newValue so when we assign value later it keeps the existing reference\r\n newValue = value;\r\n }\r\n else if (value && value[CFG_HANDLER_LINK]) {\r\n // As we are replacing the value, if it's already dynamic then we need to notify the listeners\r\n // for every property it has already\r\n objForEachKey(value, function (key) {\r\n // Check if the value is dynamic\r\n var getter = _getOwnPropGetter(value, key);\r\n if (getter) {\r\n // And if it is tell it's listeners that the value has changed\r\n var valueState = getter[state.prop];\r\n valueState && valueState.chng();\r\n }\r\n });\r\n }\r\n }\r\n if (newValue !== value) {\r\n var newIsObjectOrArray = newValue && (isPlainObject(newValue) || isArray(newValue));\r\n if (!isReferenced && newIsObjectOrArray) {\r\n // As the newValue is an object/array lets preemptively make it dynamic\r\n _makeDynamicObject(state, newValue);\r\n }\r\n // Now assign the internal \"value\" to the newValue\r\n value = newValue;\r\n isObjectOrArray = newIsObjectOrArray;\r\n }\r\n // Cause any listeners to be scheduled for notification\r\n state.add(detail);\r\n }\r\n }\r\n objDefine(theConfig, detail.n, { g: _getProperty, s: _setProperty });\r\n // Return the dynamic reference\r\n return _getProperty();\r\n}\r\nexport function _setDynamicProperty(state, target, name, value, inPlace, rdOnly) {\r\n if (target) {\r\n // To be a dynamic property it needs to have a get function\r\n var getter = _getOwnPropGetter(target, name);\r\n var isDynamic = getter && !!getter[state.prop];\r\n if (!isDynamic) {\r\n value = _makeDynamicProperty(state, target, name, value);\r\n if (inPlace || rdOnly) {\r\n getter = _getOwnPropGetter(target, name);\r\n }\r\n }\r\n else {\r\n // Looks like it's already dynamic just assign the new value\r\n target[name] = value;\r\n }\r\n // Assign the optional flags if true\r\n if (inPlace) {\r\n getter[state.rf] = inPlace;\r\n }\r\n if (rdOnly) {\r\n getter[state.ro] = rdOnly;\r\n }\r\n }\r\n return value;\r\n}\r\nexport function _makeDynamicObject(state, target) {\r\n // Assign target with new value properties (converting into dynamic properties in the process)\r\n objForEachKey(target, function (key, value) {\r\n // Assign and/or make the property dynamic\r\n _setDynamicProperty(state, target, key, value);\r\n });\r\n if (!target[CFG_HANDLER_LINK]) {\r\n // Link the config back to the dynamic config details\r\n objDefineProp(target, CFG_HANDLER_LINK, {\r\n get: function () {\r\n return state.hdlr;\r\n }\r\n });\r\n _patchArray(state, target);\r\n }\r\n return target;\r\n}\r\n//# sourceMappingURL=DynamicProperty.js.map"],"names":[],"mappings":";;;;AAA4D;AAC1B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Core, 3.0.0-beta.2303-05
2
+ * Application Insights JavaScript SDK - Core, 3.0.0-beta.2303-09
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Core, 3.0.0-beta.2303-05
2
+ * Application Insights JavaScript SDK - Core, 3.0.0-beta.2303-09
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Core, 3.0.0-beta.2303-05
2
+ * Application Insights JavaScript SDK - Core, 3.0.0-beta.2303-09
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Core, 3.0.0-beta.2303-05
2
+ * Application Insights JavaScript SDK - Core, 3.0.0-beta.2303-09
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Core, 3.0.0-beta.2303-05
2
+ * Application Insights JavaScript SDK - Core, 3.0.0-beta.2303-09
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Core, 3.0.0-beta.2303-05
2
+ * Application Insights JavaScript SDK - Core, 3.0.0-beta.2303-09
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Core, 3.0.0-beta.2303-05
2
+ * Application Insights JavaScript SDK - Core, 3.0.0-beta.2303-09
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
  export {};
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Core, 3.0.0-beta.2303-05
2
+ * Application Insights JavaScript SDK - Core, 3.0.0-beta.2303-09
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Core, 3.0.0-beta.2303-05
2
+ * Application Insights JavaScript SDK - Core, 3.0.0-beta.2303-09
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
 
@@ -8,9 +8,9 @@
8
8
  var _a;
9
9
  import { __spreadArrayFn as __spreadArray } from "@microsoft/applicationinsights-shims";
10
10
  import dynamicProto from "@microsoft/dynamicproto-js";
11
- import { arrAppend, arrForEach, arrIndexOf, deepExtend, hasDocument, isFunction, isNullOrUndefined, isPlainObject, objDeepFreeze, objDefineProp, objForEachKey, objFreeze, objHasOwn, scheduleInterval, scheduleTimeout, throwError } from "@nevware21/ts-utils";
11
+ import { arrAppend, arrForEach, arrIndexOf, deepExtend, hasDocument, isFunction, isNullOrUndefined, isPlainObject, objDeepFreeze, objDefine, objForEachKey, objFreeze, objHasOwn, scheduleInterval, scheduleTimeout, throwError } from "@nevware21/ts-utils";
12
12
  import { createDynamicConfig, onConfigChange } from "../Config/DynamicConfig";
13
- import { _DYN_ADD_NOTIFICATION_LIS1, _DYN_CANCEL, _DYN_CONFIGURABLE, _DYN_CREATE_NEW, _DYN_ENUMERABLE, _DYN_GET_NOTIFY_MGR, _DYN_GET_PLUGIN, _DYN_GET_PROCESS_TEL_CONT0, _DYN_IDENTIFIER, _DYN_INITIALIZE, _DYN_IS_ASYNC, _DYN_IS_INITIALIZED, _DYN_LENGTH, _DYN_LOGGER, _DYN_LOGGING_LEVEL_CONSOL4, _DYN_MESSAGE, _DYN_MESSAGE_ID, _DYN_NAME, _DYN_NOTIFY, _DYN_ON_COMPLETE, _DYN_POLL_INTERNAL_LOGS, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_REMOVE_NOTIFICATION_2, _DYN_SET_DF, _DYN_SPLICE, _DYN_STOP_POLLING_INTERNA3, _DYN_TEARDOWN, _DYN_TIME, _DYN_VERSION, _DYN_WATCH } from "../__DynamicConstants";
13
+ import { _DYN_ADD_NOTIFICATION_LIS1, _DYN_CANCEL, _DYN_CREATE_NEW, _DYN_GET_NOTIFY_MGR, _DYN_GET_PLUGIN, _DYN_GET_PROCESS_TEL_CONT0, _DYN_IDENTIFIER, _DYN_INITIALIZE, _DYN_IS_ASYNC, _DYN_IS_INITIALIZED, _DYN_LENGTH, _DYN_LOGGER, _DYN_LOGGING_LEVEL_CONSOL4, _DYN_MESSAGE, _DYN_MESSAGE_ID, _DYN_NAME, _DYN_NOTIFY, _DYN_ON_COMPLETE, _DYN_POLL_INTERNAL_LOGS, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_REMOVE_NOTIFICATION_2, _DYN_SET_DF, _DYN_SPLICE, _DYN_STOP_POLLING_INTERNA3, _DYN_TEARDOWN, _DYN_TIME, _DYN_VERSION, _DYN_WATCH } from "../__DynamicConstants";
14
14
  import { ChannelControllerPriority } from "./Constants";
15
15
  import { createCookieMgr } from "./CookieMgr";
16
16
  import { createUniqueNamespace } from "./DataCacheHelper";
@@ -38,9 +38,9 @@ var strSdkNotInitialized = "SDK is not initialized";
38
38
  var defaultConfig = objDeepFreeze((_a = {
39
39
  cookieCfg: {}
40
40
  },
41
- _a[STR_EXTENSIONS] = [],
42
- _a[STR_CHANNELS] = [],
43
- _a[STR_EXTENSION_CONFIG] = {},
41
+ _a[STR_EXTENSIONS] = { rdOnly: true, ref: true, v: [] },
42
+ _a[STR_CHANNELS] = { rdOnly: true, ref: true, v: [] },
43
+ _a[STR_EXTENSION_CONFIG] = { ref: true, v: {} },
44
44
  _a[STR_CREATE_PERF_MGR] = UNDEFINED_VALUE,
45
45
  _a.loggingLevelConsole = 0 /* eLoggingSeverity.DISABLED */,
46
46
  _a.diagnosticLogInterval = UNDEFINED_VALUE,
@@ -495,11 +495,11 @@ var AppInsightsCore = /** @class */ (function () {
495
495
  newConfig = updateState.newConfig;
496
496
  var cfg = _configHandler.cfg;
497
497
  // replace the immutable (if initialized) values
498
+ // We don't currently allow updating the extensions and channels via the update config
499
+ // So overwriting any user provided values to reuse the existing values
498
500
  newConfig[STR_EXTENSIONS /* @min:%2eextensions */] = cfg[STR_EXTENSIONS /* @min:%2eextensions */];
499
501
  newConfig[STR_CHANNELS /* @min:%2echannels */] = cfg[STR_CHANNELS /* @min:%2echannels */];
500
502
  }
501
- // We don't currently allow updating the extensions and channels via the update config
502
- // So overwriting any user provided values to reuse the existing values
503
503
  // Explicitly blocking any previous config watchers so that they don't get called because
504
504
  // of this bulk update (Probably not necessary)
505
505
  _configHandler._block(function (details) {
@@ -581,35 +581,28 @@ var AppInsightsCore = /** @class */ (function () {
581
581
  }
582
582
  }
583
583
  function _initDefaults() {
584
- var _a, _b, _c;
585
584
  _isInitialized = false;
586
585
  // Use a default logger so initialization errors are not dropped on the floor with full logging
587
586
  _configHandler = createDynamicConfig({}, defaultConfig, _self[_DYN_LOGGER /* @min:%2elogger */]);
588
587
  // Set the logging level to critical so that any critical initialization failures are displayed on the console
589
588
  _configHandler.cfg[_DYN_LOGGING_LEVEL_CONSOL4 /* @min:%2eloggingLevelConsole */] = 1 /* eLoggingSeverity.CRITICAL */;
590
589
  // Define _self.config
591
- objDefineProp(_self, "config", (_a = {},
592
- _a[_DYN_CONFIGURABLE /* @min:configurable */] = true,
593
- _a[_DYN_ENUMERABLE /* @min:enumerable */] = true,
594
- _a.get = function () { return _configHandler.cfg; },
595
- _a.set = function (newValue) {
590
+ objDefine(_self, "config", {
591
+ g: function () { return _configHandler.cfg; },
592
+ s: function (newValue) {
596
593
  _self.updateCfg(newValue, false);
597
- },
598
- _a));
599
- objDefineProp(_self, "pluginVersionStringArr", (_b = {},
600
- _b[_DYN_CONFIGURABLE /* @min:configurable */] = true,
601
- _b[_DYN_ENUMERABLE /* @min:enumerable */] = true,
602
- _b.get = function () {
594
+ }
595
+ });
596
+ objDefine(_self, "pluginVersionStringArr", {
597
+ g: function () {
603
598
  if (!_pluginVersionStringArr) {
604
599
  _setPluginVersions();
605
600
  }
606
601
  return _pluginVersionStringArr;
607
- },
608
- _b));
609
- objDefineProp(_self, "pluginVersionString", (_c = {},
610
- _c[_DYN_CONFIGURABLE /* @min:configurable */] = true,
611
- _c[_DYN_ENUMERABLE /* @min:enumerable */] = true,
612
- _c.get = function () {
602
+ }
603
+ });
604
+ objDefine(_self, "pluginVersionString", {
605
+ g: function () {
613
606
  if (!_pluginVersionString) {
614
607
  if (!_pluginVersionStringArr) {
615
608
  _setPluginVersions();
@@ -617,10 +610,13 @@ var AppInsightsCore = /** @class */ (function () {
617
610
  _pluginVersionString = _pluginVersionStringArr.join(";");
618
611
  }
619
612
  return _pluginVersionString || STR_EMPTY;
620
- },
621
- _c));
613
+ }
614
+ });
622
615
  _self[_DYN_LOGGER /* @min:%2elogger */] = new DiagnosticLogger(_configHandler.cfg);
623
616
  _extensions = [];
617
+ var cfgExtensions = _self.config[STR_EXTENSIONS /* @min:%2eextensions */] || [];
618
+ cfgExtensions.splice(0, cfgExtensions[_DYN_LENGTH /* @min:%2elength */]);
619
+ arrAppend(cfgExtensions, _extensions);
624
620
  _telemetryInitializerPlugin = new TelemetryInitializerPlugin();
625
621
  _eventQueue = [];
626
622
  _notificationManager = null;
@@ -660,6 +656,12 @@ var AppInsightsCore = /** @class */ (function () {
660
656
  var allExtensions = arrAppend(sortPlugins(theExtensions[STR_CORE /* @min:%2ecore */]), _channels);
661
657
  // Required to allow plugins to call core.getPlugin() during their own initialization
662
658
  _extensions = objFreeze(allExtensions);
659
+ // This has a side effect of adding the extensions passed during initialization
660
+ // into the config.extensions, so you can see all of the extensions loaded.
661
+ // This will also get updated by the addPlugin() and remove plugin code.
662
+ var cfgExtensions = _self.config[STR_EXTENSIONS /* @min:%2eextensions */] || [];
663
+ cfgExtensions.splice(0, cfgExtensions[_DYN_LENGTH /* @min:%2elength */]);
664
+ arrAppend(cfgExtensions, _extensions);
663
665
  var rootCtx = _createTelCtx();
664
666
  // Initializing the channels first
665
667
  if (_channels && _channels[_DYN_LENGTH /* @min:%2elength */] > 0) {
@@ -674,18 +676,24 @@ var AppInsightsCore = /** @class */ (function () {
674
676
  function _getPlugin(pluginIdentifier) {
675
677
  var theExt = null;
676
678
  var thePlugin = null;
679
+ var channelHosts = [];
677
680
  arrForEach(_extensions, function (ext) {
678
681
  if (ext[_DYN_IDENTIFIER /* @min:%2eidentifier */] === pluginIdentifier && ext !== _telemetryInitializerPlugin) {
679
682
  thePlugin = ext;
680
683
  return -1;
681
684
  }
682
- // TODO: Check if the extension is an extension "host" (like the TeeChannel)
683
- // So that if the extension is not found we can ask the "host" plugins for the plugin
685
+ if (ext.getChannel) {
686
+ channelHosts[_DYN_PUSH /* @min:%2epush */](ext);
687
+ }
684
688
  });
685
- // if (!thePlugin && _channelControl) {
686
- // // Check the channel Controller
687
- // thePlugin = _channelControl.getChannel(pluginIdentifier);
688
- // }
689
+ if (!thePlugin && channelHosts[_DYN_LENGTH /* @min:%2elength */] > 0) {
690
+ arrForEach(channelHosts, function (host) {
691
+ thePlugin = host.getChannel(pluginIdentifier);
692
+ if (!thePlugin) {
693
+ return -1;
694
+ }
695
+ });
696
+ }
689
697
  if (thePlugin) {
690
698
  theExt = {
691
699
  plugin: thePlugin,