@microsoft/applicationinsights-core-js 3.0.0-beta.2301-15 → 3.0.0-beta.2301-18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/browser/applicationinsights-core-js.integrity.json +9 -9
- package/browser/applicationinsights-core-js.js +109 -68
- package/browser/applicationinsights-core-js.js.map +1 -1
- package/browser/applicationinsights-core-js.min.js +2 -2
- package/browser/applicationinsights-core-js.min.js.map +1 -1
- package/dist/applicationinsights-core-js.api.json +358 -27
- package/dist/applicationinsights-core-js.api.md +18 -5
- package/dist/applicationinsights-core-js.d.ts +53 -6
- package/dist/applicationinsights-core-js.js +109 -68
- package/dist/applicationinsights-core-js.js.map +1 -1
- package/dist/applicationinsights-core-js.min.js +2 -2
- package/dist/applicationinsights-core-js.min.js.map +1 -1
- package/dist/applicationinsights-core-js.rollup.d.ts +53 -6
- package/dist-esm/Config/ConfigDefaults.js +1 -1
- package/dist-esm/Config/DynamicConfig.js +11 -1
- package/dist-esm/Config/DynamicConfig.js.map +1 -1
- package/dist-esm/Config/DynamicProperty.js +48 -21
- package/dist-esm/Config/DynamicProperty.js.map +1 -1
- package/dist-esm/Config/DynamicState.js +18 -12
- package/dist-esm/Config/DynamicState.js.map +1 -1
- package/dist-esm/Config/DynamicSupport.js +1 -1
- package/dist-esm/Config/IConfigDefaults.js +1 -1
- package/dist-esm/Config/IDynamicConfigHandler.js +1 -1
- package/dist-esm/Config/IDynamicPropertyHandler.js +1 -1
- package/dist-esm/Config/IDynamicWatcher.js +1 -1
- package/dist-esm/Config/_IDynamicConfigHandlerState.js +1 -1
- package/dist-esm/JavaScriptSDK/AggregationError.js +1 -1
- package/dist-esm/JavaScriptSDK/AppInsightsCore.js +15 -20
- package/dist-esm/JavaScriptSDK/AppInsightsCore.js.map +1 -1
- package/dist-esm/JavaScriptSDK/BaseTelemetryPlugin.js +10 -24
- package/dist-esm/JavaScriptSDK/BaseTelemetryPlugin.js.map +1 -1
- package/dist-esm/JavaScriptSDK/Constants.js +1 -1
- package/dist-esm/JavaScriptSDK/CookieMgr.js +1 -1
- package/dist-esm/JavaScriptSDK/CoreUtils.js +1 -1
- package/dist-esm/JavaScriptSDK/DataCacheHelper.js +2 -2
- package/dist-esm/JavaScriptSDK/DataCacheHelper.js.map +1 -1
- package/dist-esm/JavaScriptSDK/DbgExtensionUtils.js +1 -1
- package/dist-esm/JavaScriptSDK/DiagnosticLogger.js +1 -1
- package/dist-esm/JavaScriptSDK/EnvUtils.js +1 -1
- package/dist-esm/JavaScriptSDK/EventHelpers.js +1 -1
- package/dist-esm/JavaScriptSDK/HelperFuncs.js +3 -3
- package/dist-esm/JavaScriptSDK/HelperFuncs.js.map +1 -1
- package/dist-esm/JavaScriptSDK/InstrumentHooks.js +1 -1
- package/dist-esm/JavaScriptSDK/InternalConstants.js +1 -1
- package/dist-esm/JavaScriptSDK/NotificationManager.js +1 -1
- package/dist-esm/JavaScriptSDK/PerfManager.js +1 -1
- package/dist-esm/JavaScriptSDK/ProcessTelemetryContext.js +11 -9
- package/dist-esm/JavaScriptSDK/ProcessTelemetryContext.js.map +1 -1
- package/dist-esm/JavaScriptSDK/RandomHelper.js +1 -1
- package/dist-esm/JavaScriptSDK/TelemetryHelpers.js +3 -3
- package/dist-esm/JavaScriptSDK/TelemetryHelpers.js.map +1 -1
- package/dist-esm/JavaScriptSDK/TelemetryInitializerPlugin.js +1 -1
- package/dist-esm/JavaScriptSDK/UnloadHandlerContainer.js +1 -1
- package/dist-esm/JavaScriptSDK/UnloadHookContainer.js +40 -0
- package/dist-esm/JavaScriptSDK/UnloadHookContainer.js.map +1 -0
- package/dist-esm/JavaScriptSDK/W3cTraceParent.js +1 -1
- package/dist-esm/JavaScriptSDK.Enums/EnumHelperFuncs.js +1 -1
- package/dist-esm/JavaScriptSDK.Enums/EventsDiscardedReason.js +1 -1
- package/dist-esm/JavaScriptSDK.Enums/LoggingEnums.js +1 -1
- package/dist-esm/JavaScriptSDK.Enums/SendRequestReason.js +1 -1
- package/dist-esm/JavaScriptSDK.Enums/TelemetryUnloadReason.js +1 -1
- package/dist-esm/JavaScriptSDK.Enums/TelemetryUpdateReason.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/IAppInsightsCore.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/IChannelControls.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/IConfiguration.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/ICookieMgr.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/IDbgExtension.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/IDiagnosticLogger.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/IDistributedTraceContext.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/IInstrumentHooks.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/INotificationListener.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/INotificationManager.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/IPerfEvent.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/IPerfManager.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/IProcessTelemetryContext.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryInitializers.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryItem.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryPlugin.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryPluginChain.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryUnloadState.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryUpdateState.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/ITraceParent.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/IUnloadHook.js +1 -1
- package/dist-esm/JavaScriptSDK.Interfaces/IUnloadableComponent.js +1 -1
- package/dist-esm/__DynamicConstants.js +1 -2
- package/dist-esm/__DynamicConstants.js.map +1 -1
- package/dist-esm/applicationinsights-core-js.js +2 -1
- package/dist-esm/applicationinsights-core-js.js.map +1 -1
- package/package.json +1 -1
- package/src/JavaScriptSDK/AppInsightsCore.ts +16 -20
- package/src/JavaScriptSDK/BaseTelemetryPlugin.ts +16 -26
- package/src/JavaScriptSDK/ProcessTelemetryContext.ts +10 -7
- package/src/JavaScriptSDK/UnloadHandlerContainer.ts +1 -1
- package/src/JavaScriptSDK/UnloadHookContainer.ts +52 -0
- package/types/Config/DynamicProperty.d.ts +1 -1
- package/types/Config/IDynamicConfigHandler.d.ts +14 -0
- package/types/Config/IDynamicWatcher.d.ts +14 -0
- package/types/Config/_IDynamicConfigHandlerState.d.ts +1 -0
- package/types/JavaScriptSDK/BaseTelemetryPlugin.d.ts +8 -1
- package/types/JavaScriptSDK/UnloadHandlerContainer.d.ts +1 -4
- package/types/JavaScriptSDK/UnloadHookContainer.d.ts +16 -0
- package/types/__DynamicConstants.d.ts +0 -1
- 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.2301-
|
|
2
|
+
* Microsoft Application Insights Core Javascript SDK, 3.0.0-beta.2301-18
|
|
3
3
|
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
4
|
*
|
|
5
5
|
* Microsoft Application Insights Team
|
|
@@ -359,6 +359,12 @@ export declare abstract class BaseTelemetryPlugin implements ITelemetryPlugin {
|
|
|
359
359
|
* @returns boolean - true if the plugin has or will call asyncCallback, this allows the plugin to perform any asynchronous operations.
|
|
360
360
|
*/
|
|
361
361
|
protected _doUpdate?: (updateCtx?: IProcessTelemetryUpdateContext, updateState?: ITelemetryUpdateState, asyncCallback?: () => void) => void | boolean;
|
|
362
|
+
/**
|
|
363
|
+
* Exposes the underlying unload hook container instance for this extension to allow it to be passed down to any sub components of the class.
|
|
364
|
+
* This should NEVER be exposed or called publically as it's scope is for internal use by BaseTelemetryPlugin and any derived class (which is why
|
|
365
|
+
* it's scoped as protected)
|
|
366
|
+
*/
|
|
367
|
+
protected readonly _unloadHooks: IUnloadHookContainer;
|
|
362
368
|
constructor();
|
|
363
369
|
initialize(config: IConfiguration, core: IAppInsightsCore, extensions: IPlugin[], pluginChain?: ITelemetryPluginChain): void;
|
|
364
370
|
/**
|
|
@@ -387,7 +393,7 @@ export declare abstract class BaseTelemetryPlugin implements ITelemetryPlugin {
|
|
|
387
393
|
* Add this hook so that it is automatically removed during unloading
|
|
388
394
|
* @param hooks - The single hook or an array of IInstrumentHook objects
|
|
389
395
|
*/
|
|
390
|
-
protected _addHook(hooks: IUnloadHook | IUnloadHook[] | ILegacyUnloadHook | ILegacyUnloadHook[]): void;
|
|
396
|
+
protected _addHook(hooks: IUnloadHook | IUnloadHook[] | Iterator<IUnloadHook> | ILegacyUnloadHook | ILegacyUnloadHook[] | Iterator<ILegacyUnloadHook>): void;
|
|
391
397
|
}
|
|
392
398
|
|
|
393
399
|
/**
|
|
@@ -438,10 +444,14 @@ export declare function createTraceParent(traceId?: string, spanId?: string, fla
|
|
|
438
444
|
|
|
439
445
|
export declare function createUniqueNamespace(name: string, includeVersion?: boolean): string;
|
|
440
446
|
|
|
441
|
-
export declare function createUnloadHandlerContainer():
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
447
|
+
export declare function createUnloadHandlerContainer(): IUnloadHandlerContainer;
|
|
448
|
+
|
|
449
|
+
/**
|
|
450
|
+
* Create a IUnloadHookContainer which can be used to remember unload hook functions to be executed during the component unloading
|
|
451
|
+
* process.
|
|
452
|
+
* @returns A new IUnloadHookContainer instance
|
|
453
|
+
*/
|
|
454
|
+
export declare function createUnloadHookContainer(): IUnloadHookContainer;
|
|
445
455
|
|
|
446
456
|
/**
|
|
447
457
|
* Create a 2 index map that maps an enum's key and value to the defined map value, X["key"] => mapValue and X[0] => mapValue.
|
|
@@ -1514,6 +1524,20 @@ export declare interface IDynamicConfigHandler<T extends IConfiguration> {
|
|
|
1514
1524
|
* @param defaultValues - The default values to apply to the config
|
|
1515
1525
|
*/
|
|
1516
1526
|
setDf: <C>(theConfig: C, defaultValues: IConfigDefaults<C, T>) => C;
|
|
1527
|
+
/**
|
|
1528
|
+
* Set this named property of the target as referenced, which will cause any object or array instances
|
|
1529
|
+
* to be updated in-place rather than being entirely replaced. All other values will continue to be replaced.
|
|
1530
|
+
* @returns The referenced properties current value
|
|
1531
|
+
*/
|
|
1532
|
+
ref: <C, V = any>(target: C, name: string) => V;
|
|
1533
|
+
/**
|
|
1534
|
+
* Set this named property of the target as read-only, which will block this single named property from
|
|
1535
|
+
* ever being changed for the target instance.
|
|
1536
|
+
* This does NOT freeze or seal the instance, it just stops the direct re-assignment of the named property,
|
|
1537
|
+
* if the value is a non-primitive (ie. an object or array) it's properties will still be mutable.
|
|
1538
|
+
* @returns The referenced properties current value
|
|
1539
|
+
*/
|
|
1540
|
+
rdOnly: <C, V = any>(target: C, name: string) => V;
|
|
1517
1541
|
}
|
|
1518
1542
|
|
|
1519
1543
|
export declare interface IDynamicPropertyHandler<T> {
|
|
@@ -2293,6 +2317,15 @@ export declare interface IUnloadHook {
|
|
|
2293
2317
|
rm: () => void;
|
|
2294
2318
|
}
|
|
2295
2319
|
|
|
2320
|
+
/**
|
|
2321
|
+
* Interface which identifiesAdd this hook so that it is automatically removed during unloading
|
|
2322
|
+
* @param hooks - The single hook or an array of IInstrumentHook objects
|
|
2323
|
+
*/
|
|
2324
|
+
export declare interface IUnloadHookContainer {
|
|
2325
|
+
add: (hooks: IUnloadHook | IUnloadHook[] | Iterator<IUnloadHook> | ILegacyUnloadHook | ILegacyUnloadHook[] | Iterator<ILegacyUnloadHook>) => void;
|
|
2326
|
+
run: (logger?: IDiagnosticLogger) => void;
|
|
2327
|
+
}
|
|
2328
|
+
|
|
2296
2329
|
export declare interface IWatchDetails<T extends IConfiguration> {
|
|
2297
2330
|
/**
|
|
2298
2331
|
* The current config object
|
|
@@ -2311,6 +2344,20 @@ export declare interface IWatchDetails<T extends IConfiguration> {
|
|
|
2311
2344
|
* @param defaultValues - The default values to apply to the config
|
|
2312
2345
|
*/
|
|
2313
2346
|
setDf: <C>(theConfig: C, defaultValues: IConfigDefaults<C>) => C;
|
|
2347
|
+
/**
|
|
2348
|
+
* Set this named property of the target as referenced, which will cause any object or array instance
|
|
2349
|
+
* to be updated in-place rather than being entirely replaced. All other values will continue to be replaced.
|
|
2350
|
+
* @returns The referenced properties current value
|
|
2351
|
+
*/
|
|
2352
|
+
ref: <C, V = any>(target: C, name: string) => V;
|
|
2353
|
+
/**
|
|
2354
|
+
* Set this named property of the target as read-only, which will block this single named property from
|
|
2355
|
+
* ever being changed for the target instance.
|
|
2356
|
+
* This does NOT freeze or seal the instance, it just stops the direct re-assignment of the named property,
|
|
2357
|
+
* if the value is a non-primitive (ie. an object or array) it's properties will still be mutable.
|
|
2358
|
+
* @returns The referenced properties current value
|
|
2359
|
+
*/
|
|
2360
|
+
rdOnly: <C, V = any>(target: C, name: string) => V;
|
|
2314
2361
|
}
|
|
2315
2362
|
|
|
2316
2363
|
export declare interface IWatcherHandler<T extends IConfiguration> extends IUnloadHook {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Application Insights JavaScript SDK - Core, 3.0.0-beta.2301-
|
|
2
|
+
* Application Insights JavaScript SDK - Core, 3.0.0-beta.2301-18
|
|
3
3
|
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
4
|
*/
|
|
5
5
|
|
|
@@ -60,6 +60,14 @@ function _createDynamicHandler(logger, target, inPlace) {
|
|
|
60
60
|
function _block(configHandler) {
|
|
61
61
|
theState.use(null, configHandler);
|
|
62
62
|
}
|
|
63
|
+
function _ref(target, name) {
|
|
64
|
+
// Make sure it's dynamic and mark as referenced with it's current value
|
|
65
|
+
return _setDynamicProperty(theState, target, name, target[name], true);
|
|
66
|
+
}
|
|
67
|
+
function _rdOnly(target, name) {
|
|
68
|
+
// Make sure it's dynamic and mark as readonly with it's current value
|
|
69
|
+
return _setDynamicProperty(theState, target, name, target[name], false, true);
|
|
70
|
+
}
|
|
63
71
|
function _applyDefaults(theConfig, defaultValues) {
|
|
64
72
|
if (defaultValues) {
|
|
65
73
|
// Resolve/apply the defaults
|
|
@@ -79,6 +87,8 @@ function _createDynamicHandler(logger, target, inPlace) {
|
|
|
79
87
|
_a.set = _setValue,
|
|
80
88
|
_a[_DYN_SET_DF /* @min:setDf */] = _applyDefaults,
|
|
81
89
|
_a[_DYN_WATCH /* @min:watch */] = _watch,
|
|
90
|
+
_a.ref = _ref,
|
|
91
|
+
_a.rdOnly = _rdOnly,
|
|
82
92
|
_a._block = _block,
|
|
83
93
|
_a);
|
|
84
94
|
objDefineProp(cfgHandler, "uid", (_b = {},
|
|
@@ -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_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 _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._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"}
|
|
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_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.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,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Application Insights JavaScript SDK - Core, 3.0.0-beta.2301-
|
|
2
|
+
* Application Insights JavaScript SDK - Core, 3.0.0-beta.2301-18
|
|
3
3
|
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
4
|
*/
|
|
5
5
|
|
|
@@ -32,6 +32,10 @@ function _patchArray(state, target) {
|
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
+
function _getOwnPropGetter(target, name) {
|
|
36
|
+
var propDesc = objGetOwnPropertyDescriptor(target, name);
|
|
37
|
+
return propDesc && propDesc.get;
|
|
38
|
+
}
|
|
35
39
|
function _makeDynamicProperty(state, theConfig, name, value) {
|
|
36
40
|
// Does not appear to be dynamic so lets make it so
|
|
37
41
|
var detail = {
|
|
@@ -79,53 +83,76 @@ function _makeDynamicProperty(state, theConfig, name, value) {
|
|
|
79
83
|
};
|
|
80
84
|
function _setProperty(newValue) {
|
|
81
85
|
if (value !== newValue) {
|
|
82
|
-
if (!!
|
|
86
|
+
if (!!_getProperty[state.ro] && !state.upd) {
|
|
83
87
|
// field is marked as readonly so return false
|
|
84
|
-
throwInvalidAccess("[" + name + "] is
|
|
88
|
+
throwInvalidAccess("[" + name + "] is read-only:" + dumpObj(theConfig));
|
|
85
89
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
90
|
+
var isReferenced = _getProperty[state.rf];
|
|
91
|
+
if (isPlainObject(value) || isArray(value)) {
|
|
92
|
+
if (isReferenced) {
|
|
93
|
+
// Reassign the properties from the current value to the same properties from the newValue
|
|
94
|
+
// This will set properties not in the newValue to undefined
|
|
95
|
+
objForEachKey(value, function (key) {
|
|
96
|
+
value[key] = newValue[key];
|
|
97
|
+
});
|
|
98
|
+
// Now assign / re-assign value with all of the keys from newValue
|
|
99
|
+
objForEachKey(newValue, function (key, theValue) {
|
|
100
|
+
_setDynamicProperty(state, value, key, theValue);
|
|
101
|
+
});
|
|
102
|
+
// Now drop newValue so when we assign value later it keeps the existing reference
|
|
103
|
+
newValue = value;
|
|
104
|
+
}
|
|
105
|
+
else if (value && value[CFG_HANDLER_LINK]) {
|
|
106
|
+
// As we are replacing the value, if it's already dynamic then we need to notify the listeners
|
|
107
|
+
// for every property it has already
|
|
92
108
|
objForEachKey(value, function (key) {
|
|
93
109
|
// Check if the value is dynamic
|
|
94
|
-
var
|
|
95
|
-
if (
|
|
110
|
+
var getter = _getOwnPropGetter(value, key);
|
|
111
|
+
if (getter) {
|
|
96
112
|
// And if it is tell it's listeners that the value has changed
|
|
97
|
-
var valueState =
|
|
113
|
+
var valueState = getter[state.prop];
|
|
98
114
|
valueState && valueState.chng();
|
|
99
115
|
}
|
|
100
116
|
});
|
|
101
117
|
}
|
|
102
118
|
}
|
|
103
119
|
checkDynamic = false;
|
|
104
|
-
if (isPlainObject(newValue) || isArray(newValue)) {
|
|
120
|
+
if (!isReferenced && (isPlainObject(newValue) || isArray(newValue))) {
|
|
121
|
+
// As the newValue is an object/array lets preemptively make it dynamic
|
|
105
122
|
_makeDynamicObject(state, newValue);
|
|
106
123
|
}
|
|
124
|
+
// Now assign the internal "value" to the newValue
|
|
107
125
|
value = newValue;
|
|
108
126
|
// Cause any listeners to be scheduled for notification
|
|
109
127
|
state.add(detail);
|
|
110
128
|
}
|
|
111
129
|
}
|
|
112
130
|
objDefineAccessors(theConfig, detail.n, _getProperty, _setProperty, true);
|
|
131
|
+
// Return the dynamic reference
|
|
132
|
+
return _getProperty();
|
|
113
133
|
}
|
|
114
|
-
export function _setDynamicProperty(state, target, name, value) {
|
|
134
|
+
export function _setDynamicProperty(state, target, name, value, inPlace, rdOnly) {
|
|
115
135
|
if (target) {
|
|
116
|
-
var isDynamic = false;
|
|
117
136
|
// To be a dynamic property it needs to have a get function
|
|
118
|
-
var
|
|
119
|
-
|
|
120
|
-
isDynamic = !!propDesc.get[state.prop];
|
|
121
|
-
}
|
|
137
|
+
var getter = _getOwnPropGetter(target, name);
|
|
138
|
+
var isDynamic = getter && !!getter[state.prop];
|
|
122
139
|
if (!isDynamic) {
|
|
123
|
-
_makeDynamicProperty(state, target, name, value);
|
|
140
|
+
value = _makeDynamicProperty(state, target, name, value);
|
|
141
|
+
if (inPlace || rdOnly) {
|
|
142
|
+
getter = _getOwnPropGetter(target, name);
|
|
143
|
+
}
|
|
124
144
|
}
|
|
125
145
|
else {
|
|
126
|
-
// Looks like it's already dynamic
|
|
146
|
+
// Looks like it's already dynamic just assign the new value
|
|
127
147
|
target[name] = value;
|
|
128
148
|
}
|
|
149
|
+
// Assign the optional flags if true
|
|
150
|
+
if (inPlace) {
|
|
151
|
+
getter[state.rf] = inPlace;
|
|
152
|
+
}
|
|
153
|
+
if (rdOnly) {
|
|
154
|
+
getter[state.ro] = rdOnly;
|
|
155
|
+
}
|
|
129
156
|
}
|
|
130
157
|
return value;
|
|
131
158
|
}
|
|
@@ -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 { _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 _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 function _getProperty() {\r\n if (checkDynamic) {\r\n if (value && !value[CFG_HANDLER_LINK] && (isPlainObject(value) || isArray(value))) {\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 (!!
|
|
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 { _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 function _getProperty() {\r\n if (checkDynamic) {\r\n if (value && !value[CFG_HANDLER_LINK] && (isPlainObject(value) || isArray(value))) {\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 var isReferenced = _getProperty[state.rf];\r\n if (isPlainObject(value) || isArray(value)) {\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[key];\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 checkDynamic = false;\r\n if (!isReferenced && (isPlainObject(newValue) || isArray(newValue))) {\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 // 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 /*, newValues?: any*/) {\r\n var _a;\r\n // Assign target with new value properties (converting into dynamic properties in the process)\r\n objForEachKey(/*newValues || */ 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"}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Application Insights JavaScript SDK - Core, 3.0.0-beta.2301-
|
|
2
|
+
* Application Insights JavaScript SDK - Core, 3.0.0-beta.2301-18
|
|
3
3
|
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
import { arrForEach, arrIndexOf, dumpObj, newSymbol, scheduleTimeout } from "@nevware21/ts-utils";
|
|
8
8
|
import { throwAggregationError } from "../JavaScriptSDK/AggregationError";
|
|
9
|
-
import { _DYN_CANCEL, _DYN_LENGTH, _DYN_LOGGER, _DYN_PUSH, _DYN_SET_DF, _DYN_THROW_INTERNAL } from "../__DynamicConstants";
|
|
9
|
+
import { _DYN_CANCEL, _DYN_LENGTH, _DYN_LOGGER, _DYN_NOTIFY, _DYN_PUSH, _DYN_SET_DF, _DYN_THROW_INTERNAL } from "../__DynamicConstants";
|
|
10
10
|
var symPrefix = "[[ai_";
|
|
11
11
|
var symPostfix = "]]";
|
|
12
12
|
export function _createState(cfgHandler) {
|
|
13
|
+
var _a;
|
|
13
14
|
var dynamicPropertySymbol = newSymbol(symPrefix + "get" + cfgHandler.uid + symPostfix);
|
|
14
15
|
var dynamicPropertyReadOnly = newSymbol(symPrefix + "ro" + cfgHandler.uid + symPostfix);
|
|
16
|
+
var dynamicPropertyReferenced = newSymbol(symPrefix + "rf" + cfgHandler.uid + symPostfix);
|
|
15
17
|
var dynamicPropertyDetail = newSymbol(symPrefix + "dtl" + cfgHandler.uid + symPostfix);
|
|
16
18
|
var _waitingHandlers = null;
|
|
17
19
|
var _watcherTimer = null;
|
|
@@ -30,7 +32,9 @@ export function _createState(cfgHandler) {
|
|
|
30
32
|
callback({
|
|
31
33
|
cfg: cfgHandler.cfg,
|
|
32
34
|
set: cfgHandler.set.bind(cfgHandler),
|
|
33
|
-
setDf: cfgHandler[_DYN_SET_DF /* @min:%2esetDf */].bind(cfgHandler)
|
|
35
|
+
setDf: cfgHandler[_DYN_SET_DF /* @min:%2esetDf */].bind(cfgHandler),
|
|
36
|
+
ref: cfgHandler.ref.bind(cfgHandler),
|
|
37
|
+
rdOnly: cfgHandler.rdOnly.bind(cfgHandler)
|
|
34
38
|
});
|
|
35
39
|
}
|
|
36
40
|
catch (e) {
|
|
@@ -120,15 +124,17 @@ export function _createState(cfgHandler) {
|
|
|
120
124
|
}
|
|
121
125
|
}
|
|
122
126
|
}
|
|
123
|
-
theState = {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
127
|
+
theState = (_a = {
|
|
128
|
+
prop: dynamicPropertySymbol,
|
|
129
|
+
ro: dynamicPropertyReadOnly,
|
|
130
|
+
rf: dynamicPropertyReferenced,
|
|
131
|
+
hdlr: cfgHandler,
|
|
132
|
+
add: _addWatcher
|
|
133
|
+
},
|
|
134
|
+
_a[_DYN_NOTIFY /* @min:notify */] = _notifyWatchers,
|
|
135
|
+
_a.use = _useHandler,
|
|
136
|
+
_a.trk = _trackHandler,
|
|
137
|
+
_a);
|
|
132
138
|
return theState;
|
|
133
139
|
}
|
|
134
140
|
//# sourceMappingURL=DynamicState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicState.js.map","sources":["DynamicState.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { arrForEach, arrIndexOf, dumpObj, newSymbol, scheduleTimeout } from \"@nevware21/ts-utils\";\r\nimport { throwAggregationError } from \"../JavaScriptSDK/AggregationError\";\r\nimport { _DYN_CANCEL, _DYN_LENGTH, _DYN_LOGGER, _DYN_PUSH, _DYN_SET_DF, _DYN_THROW_INTERNAL } from \"../__DynamicConstants\";\r\nvar symPrefix = \"[[ai_\";\r\nvar symPostfix = \"]]\";\r\nexport function _createState(cfgHandler) {\r\n var dynamicPropertySymbol = newSymbol(symPrefix + \"get\" + cfgHandler.uid + symPostfix);\r\n var dynamicPropertyReadOnly = newSymbol(symPrefix + \"ro\" + cfgHandler.uid + symPostfix);\r\n var dynamicPropertyDetail = newSymbol(symPrefix + \"dtl\" + cfgHandler.uid + symPostfix);\r\n var _waitingHandlers = null;\r\n var _watcherTimer = null;\r\n var theState;\r\n function _useHandler(activeHandler, callback) {\r\n var prevWatcher = theState.act;\r\n try {\r\n theState.act = activeHandler;\r\n if (activeHandler && activeHandler[dynamicPropertyDetail]) {\r\n // Clear out the previously tracked details for this handler, so that access are re-evaluated\r\n arrForEach(activeHandler[dynamicPropertyDetail], function (detail) {\r\n detail.clr(activeHandler);\r\n });\r\n activeHandler[dynamicPropertyDetail] = [];\r\n }\r\n callback({\r\n cfg: cfgHandler.cfg,\r\n set: cfgHandler.set.bind(cfgHandler),\r\n setDf: cfgHandler[_DYN_SET_DF /* @min:%2esetDf */].bind(cfgHandler)\r\n });\r\n }\r\n catch (e) {\r\n var logger = cfgHandler[_DYN_LOGGER /* @min:%2elogger */];\r\n if (logger) {\r\n // Don't let one individual failure break everyone\r\n logger[_DYN_THROW_INTERNAL /* @min:%2ethrowInternal */](1 /* eLoggingSeverity.CRITICAL */, 107 /* _eInternalMessageId.ConfigWatcherException */, dumpObj(e));\r\n }\r\n // Re-throw the exception so that any true \"error\" is reported back to the called\r\n throw e;\r\n }\r\n finally {\r\n theState.act = prevWatcher || null;\r\n }\r\n }\r\n function _notifyWatchers() {\r\n if (_waitingHandlers) {\r\n var notifyHandlers = _waitingHandlers;\r\n _waitingHandlers = null;\r\n // Stop any timer as we are running them now anyway\r\n _watcherTimer && _watcherTimer[_DYN_CANCEL /* @min:%2ecancel */]();\r\n _watcherTimer = null;\r\n var watcherFailures_1 = [];\r\n // Now run the handlers\r\n arrForEach(notifyHandlers, function (handler) {\r\n if (handler) {\r\n if (handler[dynamicPropertyDetail]) {\r\n arrForEach(handler[dynamicPropertyDetail], function (detail) {\r\n // Clear out this handler from previously tracked details, so that access are re-evaluated\r\n detail.clr(handler);\r\n });\r\n handler[dynamicPropertyDetail] = null;\r\n }\r\n // The handler may have self removed as part of another handler so re-check\r\n if (handler.fn) {\r\n try {\r\n _useHandler(handler, handler.fn);\r\n }\r\n catch (e) {\r\n // Don't let a single failing watcher cause other watches to fail\r\n watcherFailures_1[_DYN_PUSH /* @min:%2epush */](e);\r\n }\r\n }\r\n }\r\n });\r\n // During notification we may have had additional updates -- so notify those updates as well\r\n if (_waitingHandlers) {\r\n try {\r\n _notifyWatchers();\r\n }\r\n catch (e) {\r\n watcherFailures_1[_DYN_PUSH /* @min:%2epush */](e);\r\n }\r\n }\r\n if (watcherFailures_1[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n throwAggregationError(\"Watcher error(s): \", watcherFailures_1);\r\n }\r\n }\r\n }\r\n function _addWatcher(detail) {\r\n if (detail && detail.h[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n if (!_waitingHandlers) {\r\n _waitingHandlers = [];\r\n }\r\n if (!_watcherTimer) {\r\n _watcherTimer = scheduleTimeout(function () {\r\n _watcherTimer = null;\r\n _notifyWatchers();\r\n }, 0);\r\n }\r\n // Add all of the handlers for this detail (if not already present) - using normal for-loop for performance\r\n for (var idx = 0; idx < detail.h[_DYN_LENGTH /* @min:%2elength */]; idx++) {\r\n var handler = detail.h[idx];\r\n // Add this handler to the collection of handlers to re-execute\r\n if (handler && arrIndexOf(_waitingHandlers, handler) === -1) {\r\n _waitingHandlers[_DYN_PUSH /* @min:%2epush */](handler);\r\n }\r\n }\r\n }\r\n }\r\n function _trackHandler(handler, detail) {\r\n if (handler) {\r\n var details = handler[dynamicPropertyDetail] = handler[dynamicPropertyDetail] || [];\r\n if (arrIndexOf(details, detail) === -1) {\r\n // If this detail is not already listed as tracked then add it so that we re-evaluate it's usage\r\n details[_DYN_PUSH /* @min:%2epush */](detail);\r\n }\r\n }\r\n }\r\n theState = {\r\n
|
|
1
|
+
{"version":3,"file":"DynamicState.js.map","sources":["DynamicState.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { arrForEach, arrIndexOf, dumpObj, newSymbol, scheduleTimeout } from \"@nevware21/ts-utils\";\r\nimport { throwAggregationError } from \"../JavaScriptSDK/AggregationError\";\r\nimport { _DYN_CANCEL, _DYN_LENGTH, _DYN_LOGGER, _DYN_NOTIFY, _DYN_PUSH, _DYN_SET_DF, _DYN_THROW_INTERNAL } from \"../__DynamicConstants\";\r\nvar symPrefix = \"[[ai_\";\r\nvar symPostfix = \"]]\";\r\nexport function _createState(cfgHandler) {\r\n var _a;\r\n var dynamicPropertySymbol = newSymbol(symPrefix + \"get\" + cfgHandler.uid + symPostfix);\r\n var dynamicPropertyReadOnly = newSymbol(symPrefix + \"ro\" + cfgHandler.uid + symPostfix);\r\n var dynamicPropertyReferenced = newSymbol(symPrefix + \"rf\" + cfgHandler.uid + symPostfix);\r\n var dynamicPropertyDetail = newSymbol(symPrefix + \"dtl\" + cfgHandler.uid + symPostfix);\r\n var _waitingHandlers = null;\r\n var _watcherTimer = null;\r\n var theState;\r\n function _useHandler(activeHandler, callback) {\r\n var prevWatcher = theState.act;\r\n try {\r\n theState.act = activeHandler;\r\n if (activeHandler && activeHandler[dynamicPropertyDetail]) {\r\n // Clear out the previously tracked details for this handler, so that access are re-evaluated\r\n arrForEach(activeHandler[dynamicPropertyDetail], function (detail) {\r\n detail.clr(activeHandler);\r\n });\r\n activeHandler[dynamicPropertyDetail] = [];\r\n }\r\n callback({\r\n cfg: cfgHandler.cfg,\r\n set: cfgHandler.set.bind(cfgHandler),\r\n setDf: cfgHandler[_DYN_SET_DF /* @min:%2esetDf */].bind(cfgHandler),\r\n ref: cfgHandler.ref.bind(cfgHandler),\r\n rdOnly: cfgHandler.rdOnly.bind(cfgHandler)\r\n });\r\n }\r\n catch (e) {\r\n var logger = cfgHandler[_DYN_LOGGER /* @min:%2elogger */];\r\n if (logger) {\r\n // Don't let one individual failure break everyone\r\n logger[_DYN_THROW_INTERNAL /* @min:%2ethrowInternal */](1 /* eLoggingSeverity.CRITICAL */, 107 /* _eInternalMessageId.ConfigWatcherException */, dumpObj(e));\r\n }\r\n // Re-throw the exception so that any true \"error\" is reported back to the called\r\n throw e;\r\n }\r\n finally {\r\n theState.act = prevWatcher || null;\r\n }\r\n }\r\n function _notifyWatchers() {\r\n if (_waitingHandlers) {\r\n var notifyHandlers = _waitingHandlers;\r\n _waitingHandlers = null;\r\n // Stop any timer as we are running them now anyway\r\n _watcherTimer && _watcherTimer[_DYN_CANCEL /* @min:%2ecancel */]();\r\n _watcherTimer = null;\r\n var watcherFailures_1 = [];\r\n // Now run the handlers\r\n arrForEach(notifyHandlers, function (handler) {\r\n if (handler) {\r\n if (handler[dynamicPropertyDetail]) {\r\n arrForEach(handler[dynamicPropertyDetail], function (detail) {\r\n // Clear out this handler from previously tracked details, so that access are re-evaluated\r\n detail.clr(handler);\r\n });\r\n handler[dynamicPropertyDetail] = null;\r\n }\r\n // The handler may have self removed as part of another handler so re-check\r\n if (handler.fn) {\r\n try {\r\n _useHandler(handler, handler.fn);\r\n }\r\n catch (e) {\r\n // Don't let a single failing watcher cause other watches to fail\r\n watcherFailures_1[_DYN_PUSH /* @min:%2epush */](e);\r\n }\r\n }\r\n }\r\n });\r\n // During notification we may have had additional updates -- so notify those updates as well\r\n if (_waitingHandlers) {\r\n try {\r\n _notifyWatchers();\r\n }\r\n catch (e) {\r\n watcherFailures_1[_DYN_PUSH /* @min:%2epush */](e);\r\n }\r\n }\r\n if (watcherFailures_1[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n throwAggregationError(\"Watcher error(s): \", watcherFailures_1);\r\n }\r\n }\r\n }\r\n function _addWatcher(detail) {\r\n if (detail && detail.h[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n if (!_waitingHandlers) {\r\n _waitingHandlers = [];\r\n }\r\n if (!_watcherTimer) {\r\n _watcherTimer = scheduleTimeout(function () {\r\n _watcherTimer = null;\r\n _notifyWatchers();\r\n }, 0);\r\n }\r\n // Add all of the handlers for this detail (if not already present) - using normal for-loop for performance\r\n for (var idx = 0; idx < detail.h[_DYN_LENGTH /* @min:%2elength */]; idx++) {\r\n var handler = detail.h[idx];\r\n // Add this handler to the collection of handlers to re-execute\r\n if (handler && arrIndexOf(_waitingHandlers, handler) === -1) {\r\n _waitingHandlers[_DYN_PUSH /* @min:%2epush */](handler);\r\n }\r\n }\r\n }\r\n }\r\n function _trackHandler(handler, detail) {\r\n if (handler) {\r\n var details = handler[dynamicPropertyDetail] = handler[dynamicPropertyDetail] || [];\r\n if (arrIndexOf(details, detail) === -1) {\r\n // If this detail is not already listed as tracked then add it so that we re-evaluate it's usage\r\n details[_DYN_PUSH /* @min:%2epush */](detail);\r\n }\r\n }\r\n }\r\n theState = (_a = {\r\n prop: dynamicPropertySymbol,\r\n ro: dynamicPropertyReadOnly,\r\n rf: dynamicPropertyReferenced,\r\n hdlr: cfgHandler,\r\n add: _addWatcher\r\n },\r\n _a[_DYN_NOTIFY /* @min:notify */] = _notifyWatchers,\r\n _a.use = _useHandler,\r\n _a.trk = _trackHandler,\r\n _a);\r\n return theState;\r\n}\r\n//# sourceMappingURL=DynamicState.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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Application Insights JavaScript SDK - Core, 3.0.0-beta.2301-
|
|
2
|
+
* Application Insights JavaScript SDK - Core, 3.0.0-beta.2301-18
|
|
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,
|
|
11
|
+
import { arrAppend, arrForEach, arrIndexOf, deepExtend, hasDocument, isFunction, isNullOrUndefined, isPlainObject, objDeepFreeze, objDefineProp, objForEachKey, objFreeze, objHasOwn, scheduleInterval, scheduleTimeout, throwError } from "@nevware21/ts-utils";
|
|
12
12
|
import { createDynamicConfig, onConfigChange } from "../Config/DynamicConfig";
|
|
13
|
-
import { _DYN_ADD_NOTIFICATION_LIS1,
|
|
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";
|
|
14
14
|
import { ChannelControllerPriority } from "./Constants";
|
|
15
15
|
import { createCookieMgr } from "./CookieMgr";
|
|
16
16
|
import { createUniqueNamespace } from "./DataCacheHelper";
|
|
@@ -24,6 +24,7 @@ import { createProcessTelemetryContext, createProcessTelemetryUnloadContext, cre
|
|
|
24
24
|
import { _getPluginState, createDistributedTraceContext, initializePlugins, sortPlugins } from "./TelemetryHelpers";
|
|
25
25
|
import { TelemetryInitializerPlugin } from "./TelemetryInitializerPlugin";
|
|
26
26
|
import { createUnloadHandlerContainer } from "./UnloadHandlerContainer";
|
|
27
|
+
import { createUnloadHookContainer } from "./UnloadHookContainer";
|
|
27
28
|
var strValidationError = "Plugins must provide initialize method";
|
|
28
29
|
var strNotificationManager = "_notificationManager";
|
|
29
30
|
var strSdkUnloadingError = "SDK is still unloading...";
|
|
@@ -179,7 +180,7 @@ var AppInsightsCore = /** @class */ (function () {
|
|
|
179
180
|
var _internalLogsEventName;
|
|
180
181
|
var _evtNamespace;
|
|
181
182
|
var _unloadHandlers;
|
|
182
|
-
var
|
|
183
|
+
var _hookContainer;
|
|
183
184
|
var _debugListener;
|
|
184
185
|
var _traceCtx;
|
|
185
186
|
var _instrumentationKey;
|
|
@@ -215,6 +216,13 @@ var AppInsightsCore = /** @class */ (function () {
|
|
|
215
216
|
// This will be "re-run" if the referenced config properties are changed
|
|
216
217
|
_addUnloadHook(_configHandler[_DYN_WATCH /* @min:%2ewatch */](function (details) {
|
|
217
218
|
_instrumentationKey = details.cfg.instrumentationKey;
|
|
219
|
+
// Mark the extensionConfig and all first level keys as referenced
|
|
220
|
+
// This is so that calls to getExtCfg() will always return the same object
|
|
221
|
+
// Even when a user may "re-assign" the plugin properties (or it's unloaded/reloaded)
|
|
222
|
+
var extCfg = details.ref(details.cfg, STR_EXTENSION_CONFIG);
|
|
223
|
+
objForEachKey(extCfg, function (key) {
|
|
224
|
+
details.ref(extCfg, key);
|
|
225
|
+
});
|
|
218
226
|
if (isNullOrUndefined(_instrumentationKey)) {
|
|
219
227
|
throwError("Please provide instrumentation key");
|
|
220
228
|
}
|
|
@@ -410,18 +418,7 @@ var AppInsightsCore = /** @class */ (function () {
|
|
|
410
418
|
_a);
|
|
411
419
|
var processUnloadCtx = createProcessTelemetryUnloadContext(_getPluginChain(), _self);
|
|
412
420
|
processUnloadCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](function () {
|
|
413
|
-
|
|
414
|
-
_hooks = [];
|
|
415
|
-
// Remove all registered unload hooks
|
|
416
|
-
arrForEach(oldHooks, function (fn) {
|
|
417
|
-
// allow either rm or remove callback function
|
|
418
|
-
try {
|
|
419
|
-
(fn.rm || fn.remove)[_DYN_CALL /* @min:%2ecall */](fn);
|
|
420
|
-
}
|
|
421
|
-
catch (e) {
|
|
422
|
-
_throwInternal(_self[_DYN_LOGGER /* @min:%2elogger */], 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, "Unloading:" + dumpObj(e));
|
|
423
|
-
}
|
|
424
|
-
});
|
|
421
|
+
_hookContainer.run(_self[_DYN_LOGGER /* @min:%2elogger */]);
|
|
425
422
|
_initDefaults();
|
|
426
423
|
unloadComplete && unloadComplete(unloadState);
|
|
427
424
|
}, _self);
|
|
@@ -640,7 +637,7 @@ var AppInsightsCore = /** @class */ (function () {
|
|
|
640
637
|
_unloadHandlers = createUnloadHandlerContainer();
|
|
641
638
|
_traceCtx = null;
|
|
642
639
|
_instrumentationKey = null;
|
|
643
|
-
|
|
640
|
+
_hookContainer = createUnloadHookContainer();
|
|
644
641
|
_cfgListeners = [];
|
|
645
642
|
_pluginVersionString = null;
|
|
646
643
|
_pluginVersionStringArr = null;
|
|
@@ -898,9 +895,7 @@ var AppInsightsCore = /** @class */ (function () {
|
|
|
898
895
|
}
|
|
899
896
|
}
|
|
900
897
|
function _addUnloadHook(hooks) {
|
|
901
|
-
|
|
902
|
-
arrAppend(_hooks, hooks);
|
|
903
|
-
}
|
|
898
|
+
_hookContainer.add(hooks);
|
|
904
899
|
}
|
|
905
900
|
});
|
|
906
901
|
}
|