@microsoft/applicationinsights-core-js 3.0.0-beta.2210-01 → 3.0.0-beta.2210-02
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 +1249 -675
- 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 +3668 -1712
- package/dist/applicationinsights-core-js.api.md +131 -54
- package/dist/applicationinsights-core-js.d.ts +332 -131
- package/dist/applicationinsights-core-js.js +1249 -675
- 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 +332 -131
- package/dist-esm/Config/ConfigDefaults.js +114 -0
- package/dist-esm/Config/ConfigDefaults.js.map +1 -0
- package/dist-esm/Config/DynamicConfig.js +129 -0
- package/dist-esm/Config/DynamicConfig.js.map +1 -0
- package/dist-esm/Config/DynamicProperty.js +139 -0
- package/dist-esm/Config/DynamicProperty.js.map +1 -0
- package/dist-esm/Config/DynamicState.js +109 -0
- package/dist-esm/Config/DynamicState.js.map +1 -0
- package/dist-esm/Config/DynamicSupport.js +57 -0
- package/dist-esm/Config/DynamicSupport.js.map +1 -0
- package/dist-esm/Config/IConfigDefaults.js +8 -0
- package/dist-esm/Config/IConfigDefaults.js.map +1 -0
- package/dist-esm/Config/IDynamicConfigHandler.js +8 -0
- package/dist-esm/Config/IDynamicConfigHandler.js.map +1 -0
- package/dist-esm/Config/IDynamicPropertyHandler.js +8 -0
- package/dist-esm/Config/IDynamicPropertyHandler.js.map +1 -0
- package/dist-esm/Config/IDynamicWatcher.js +8 -0
- package/dist-esm/Config/IDynamicWatcher.js.map +1 -0
- package/dist-esm/Config/_IDynamicConfigHandlerState.js +6 -0
- package/dist-esm/Config/_IDynamicConfigHandlerState.js.map +1 -0
- package/dist-esm/JavaScriptSDK/AppInsightsCore.js +808 -23
- package/dist-esm/JavaScriptSDK/AppInsightsCore.js.map +1 -1
- package/dist-esm/JavaScriptSDK/BaseTelemetryPlugin.js +22 -18
- package/dist-esm/JavaScriptSDK/BaseTelemetryPlugin.js.map +1 -1
- package/dist-esm/JavaScriptSDK/ChannelController.js +1 -1
- package/dist-esm/JavaScriptSDK/CookieMgr.js +78 -38
- package/dist-esm/JavaScriptSDK/CookieMgr.js.map +1 -1
- package/dist-esm/JavaScriptSDK/CoreUtils.js +6 -5
- package/dist-esm/JavaScriptSDK/CoreUtils.js.map +1 -1
- package/dist-esm/JavaScriptSDK/DataCacheHelper.js +10 -8
- package/dist-esm/JavaScriptSDK/DataCacheHelper.js.map +1 -1
- package/dist-esm/JavaScriptSDK/DbgExtensionUtils.js +1 -1
- package/dist-esm/JavaScriptSDK/DiagnosticLogger.js +40 -23
- package/dist-esm/JavaScriptSDK/DiagnosticLogger.js.map +1 -1
- package/dist-esm/JavaScriptSDK/EnvUtils.js +1 -115
- package/dist-esm/JavaScriptSDK/EnvUtils.js.map +1 -1
- package/dist-esm/JavaScriptSDK/EventHelpers.js +30 -29
- package/dist-esm/JavaScriptSDK/EventHelpers.js.map +1 -1
- package/dist-esm/JavaScriptSDK/HelperFuncs.js +19 -34
- package/dist-esm/JavaScriptSDK/HelperFuncs.js.map +1 -1
- package/dist-esm/JavaScriptSDK/InstrumentHooks.js +1 -1
- package/dist-esm/JavaScriptSDK/InternalConstants.js +5 -1
- package/dist-esm/JavaScriptSDK/InternalConstants.js.map +1 -1
- package/dist-esm/JavaScriptSDK/NotificationManager.js +18 -11
- package/dist-esm/JavaScriptSDK/NotificationManager.js.map +1 -1
- package/dist-esm/JavaScriptSDK/PerfManager.js +2 -3
- package/dist-esm/JavaScriptSDK/PerfManager.js.map +1 -1
- package/dist-esm/JavaScriptSDK/ProcessTelemetryContext.js +62 -53
- package/dist-esm/JavaScriptSDK/ProcessTelemetryContext.js.map +1 -1
- package/dist-esm/JavaScriptSDK/RandomHelper.js +1 -1
- package/dist-esm/JavaScriptSDK/TelemetryHelpers.js +8 -10
- package/dist-esm/JavaScriptSDK/TelemetryHelpers.js.map +1 -1
- package/dist-esm/JavaScriptSDK/TelemetryInitializerPlugin.js +3 -4
- package/dist-esm/JavaScriptSDK/TelemetryInitializerPlugin.js.map +1 -1
- package/dist-esm/JavaScriptSDK/UnloadHandlerContainer.js +1 -1
- package/dist-esm/JavaScriptSDK/W3cTraceParent.js +12 -10
- package/dist-esm/JavaScriptSDK/W3cTraceParent.js.map +1 -1
- package/dist-esm/JavaScriptSDK.Enums/EnumHelperFuncs.js +1 -2
- package/dist-esm/JavaScriptSDK.Enums/EnumHelperFuncs.js.map +1 -1
- package/dist-esm/JavaScriptSDK.Enums/EventsDiscardedReason.js +1 -1
- package/dist-esm/JavaScriptSDK.Enums/LoggingEnums.js +2 -107
- package/dist-esm/JavaScriptSDK.Enums/LoggingEnums.js.map +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 +8 -0
- package/dist-esm/JavaScriptSDK.Interfaces/IUnloadHook.js.map +1 -0
- package/dist-esm/JavaScriptSDK.Interfaces/IUnloadableComponent.js +3 -1
- package/dist-esm/JavaScriptSDK.Interfaces/IUnloadableComponent.js.map +1 -1
- package/dist-esm/__DynamicConstants.js +26 -23
- package/dist-esm/__DynamicConstants.js.map +1 -1
- package/dist-esm/applicationinsights-core-js.js +6 -4
- package/dist-esm/applicationinsights-core-js.js.map +1 -1
- package/package.json +2 -2
- package/src/JavaScriptSDK/AppInsightsCore.ts +1156 -16
- package/src/JavaScriptSDK/BaseTelemetryPlugin.ts +25 -17
- package/src/JavaScriptSDK/CookieMgr.ts +88 -41
- package/src/JavaScriptSDK/CoreUtils.ts +4 -3
- package/src/JavaScriptSDK/DiagnosticLogger.ts +51 -29
- package/src/JavaScriptSDK/EnvUtils.ts +0 -133
- package/src/JavaScriptSDK/EventHelpers.ts +29 -28
- package/src/JavaScriptSDK/HelperFuncs.ts +22 -39
- package/src/JavaScriptSDK/InternalConstants.ts +5 -0
- package/src/JavaScriptSDK/NotificationManager.ts +25 -14
- package/src/JavaScriptSDK/PerfManager.ts +2 -2
- package/src/JavaScriptSDK/ProcessTelemetryContext.ts +73 -56
- package/src/JavaScriptSDK/TelemetryHelpers.ts +8 -9
- package/src/JavaScriptSDK/TelemetryInitializerPlugin.ts +2 -2
- package/src/JavaScriptSDK/W3cTraceParent.ts +7 -6
- package/src/JavaScriptSDK.Enums/EnumHelperFuncs.ts +0 -1
- package/src/JavaScriptSDK.Enums/LoggingEnums.ts +9 -108
- package/src/JavaScriptSDK.Enums/TelemetryUpdateReason.ts +1 -1
- package/src/JavaScriptSDK.Interfaces/IAppInsightsCore.ts +28 -3
- package/src/JavaScriptSDK.Interfaces/ICookieMgr.ts +8 -0
- package/src/JavaScriptSDK.Interfaces/IDiagnosticLogger.ts +15 -8
- package/src/JavaScriptSDK.Interfaces/IInstrumentHooks.ts +3 -1
- package/src/JavaScriptSDK.Interfaces/INotificationListener.ts +5 -5
- package/src/JavaScriptSDK.Interfaces/INotificationManager.ts +8 -8
- package/src/JavaScriptSDK.Interfaces/IPerfManager.ts +3 -3
- package/src/JavaScriptSDK.Interfaces/IProcessTelemetryContext.ts +10 -9
- package/src/JavaScriptSDK.Interfaces/ITelemetryInitializers.ts +2 -1
- package/src/JavaScriptSDK.Interfaces/ITelemetryUpdateState.ts +15 -5
- package/src/JavaScriptSDK.Interfaces/IUnloadHook.ts +22 -0
- package/src/JavaScriptSDK.Interfaces/IUnloadableComponent.ts +3 -3
- package/tsconfig.json +3 -2
- package/types/Config/ConfigDefaults.d.ts +10 -0
- package/types/Config/DynamicConfig.d.ts +23 -0
- package/types/Config/DynamicProperty.d.ts +3 -0
- package/types/Config/DynamicState.d.ts +3 -0
- package/types/Config/DynamicSupport.d.ts +15 -0
- package/types/Config/IConfigDefaults.d.ts +42 -0
- package/types/Config/IDynamicConfigHandler.d.ts +46 -0
- package/types/Config/IDynamicPropertyHandler.d.ts +11 -0
- package/types/Config/IDynamicWatcher.d.ts +28 -0
- package/types/Config/_IDynamicConfigHandlerState.d.ts +35 -0
- package/types/JavaScriptSDK/AppInsightsCore.d.ts +136 -4
- package/types/JavaScriptSDK/BaseTelemetryPlugin.d.ts +2 -2
- package/types/JavaScriptSDK/CookieMgr.d.ts +0 -10
- package/types/JavaScriptSDK/DiagnosticLogger.d.ts +18 -16
- package/types/JavaScriptSDK/EventHelpers.d.ts +24 -24
- package/types/JavaScriptSDK/HelperFuncs.d.ts +13 -11
- package/types/JavaScriptSDK/InternalConstants.d.ts +4 -0
- package/types/JavaScriptSDK/NotificationManager.d.ts +7 -7
- package/types/JavaScriptSDK/PerfManager.d.ts +2 -2
- package/types/JavaScriptSDK/ProcessTelemetryContext.d.ts +3 -2
- package/types/JavaScriptSDK/TelemetryHelpers.d.ts +3 -3
- package/types/JavaScriptSDK.Enums/LoggingEnums.d.ts +7 -5
- package/types/JavaScriptSDK.Enums/TelemetryUpdateReason.d.ts +1 -0
- package/types/JavaScriptSDK.Interfaces/IAppInsightsCore.d.ts +25 -3
- package/types/JavaScriptSDK.Interfaces/ICookieMgr.d.ts +6 -0
- package/types/JavaScriptSDK.Interfaces/IDiagnosticLogger.d.ts +14 -8
- package/types/JavaScriptSDK.Interfaces/IInstrumentHooks.d.ts +2 -1
- package/types/JavaScriptSDK.Interfaces/INotificationListener.d.ts +5 -5
- package/types/JavaScriptSDK.Interfaces/INotificationManager.d.ts +8 -8
- package/types/JavaScriptSDK.Interfaces/IPerfManager.d.ts +3 -3
- package/types/JavaScriptSDK.Interfaces/IProcessTelemetryContext.d.ts +5 -9
- package/types/JavaScriptSDK.Interfaces/ITelemetryInitializers.d.ts +2 -1
- package/types/JavaScriptSDK.Interfaces/ITelemetryUpdateState.d.ts +13 -2
- package/types/JavaScriptSDK.Interfaces/IUnloadHook.d.ts +18 -0
- package/types/__DynamicConstants.d.ts +18 -15
- package/types/applicationinsights-core-js.d.ts +11 -4
- package/dist-esm/JavaScriptSDK/BaseCore.js +0 -654
- package/dist-esm/JavaScriptSDK/BaseCore.js.map +0 -1
- package/src/JavaScriptSDK/BaseCore.ts +0 -948
- package/types/JavaScriptSDK/BaseCore.d.ts +0 -124
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Application Insights JavaScript SDK - Core, 3.0.0-beta.2210-02
|
|
3
|
+
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
import { asString, dumpObj, isArray, isDefined, isNullOrUndefined, isObject, objHasOwn } from "@nevware21/ts-utils";
|
|
8
|
+
import { isPlainObject, objForEachKey } from "../JavaScriptSDK/HelperFuncs";
|
|
9
|
+
import { STR_NOT_DYNAMIC_ERROR } from "../JavaScriptSDK/InternalConstants";
|
|
10
|
+
import { _DYN_LENGTH } from "../__DynamicConstants";
|
|
11
|
+
import { CFG_HANDLER_LINK, _cfgDeepCopy, throwInvalidAccess } from "./DynamicSupport";
|
|
12
|
+
function _getDefault(dynamicHandler, theConfig, cfgDefaults) {
|
|
13
|
+
var defValue;
|
|
14
|
+
var isDefaultValid = cfgDefaults.dfVal || isDefined;
|
|
15
|
+
// There is a fallback config key so try and grab that first
|
|
16
|
+
if (theConfig && cfgDefaults.fb) {
|
|
17
|
+
var fallbacks = cfgDefaults.fb;
|
|
18
|
+
if (!isArray(fallbacks)) {
|
|
19
|
+
fallbacks = [fallbacks];
|
|
20
|
+
}
|
|
21
|
+
for (var lp = 0; lp < fallbacks[_DYN_LENGTH /* @min:%2elength */]; lp++) {
|
|
22
|
+
var fallback = fallbacks[lp];
|
|
23
|
+
var fbValue = theConfig[fallback];
|
|
24
|
+
if (isDefaultValid(fbValue)) {
|
|
25
|
+
defValue = fbValue;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
// Needed to ensure that the fallback value (and potentially) new field is also dynamic even if null/undefined
|
|
29
|
+
fbValue = dynamicHandler.cfg[fallback];
|
|
30
|
+
if (isDefaultValid(fbValue)) {
|
|
31
|
+
defValue = fbValue;
|
|
32
|
+
}
|
|
33
|
+
// Needed to ensure that the fallback value (and potentially) new field is also dynamic even if null/undefined
|
|
34
|
+
dynamicHandler.set(dynamicHandler.cfg, asString(fallback), fbValue);
|
|
35
|
+
}
|
|
36
|
+
if (isDefaultValid(defValue)) {
|
|
37
|
+
// We have a valid default so break out of the look
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// If the value is still not defined and we have a default value then use that
|
|
43
|
+
if (!isDefaultValid(defValue) && isDefaultValid(cfgDefaults.v)) {
|
|
44
|
+
defValue = cfgDefaults.v;
|
|
45
|
+
}
|
|
46
|
+
return defValue;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Applies the default value on the config property and makes sure that it's dynamic
|
|
50
|
+
* @param theConfig
|
|
51
|
+
* @param name
|
|
52
|
+
* @param defaultValue
|
|
53
|
+
*/
|
|
54
|
+
export function _applyDefaultValue(theConfig, name, defaultValue) {
|
|
55
|
+
var dynamicHandler = theConfig[CFG_HANDLER_LINK];
|
|
56
|
+
if (!dynamicHandler) {
|
|
57
|
+
throwInvalidAccess(STR_NOT_DYNAMIC_ERROR + dumpObj(theConfig));
|
|
58
|
+
}
|
|
59
|
+
// Resolve the initial config value from the provided value or use the defined default
|
|
60
|
+
var isValid;
|
|
61
|
+
var setFn;
|
|
62
|
+
var defValue;
|
|
63
|
+
var cfgDefaults = defaultValue;
|
|
64
|
+
if (cfgDefaults && isObject(cfgDefaults) && (cfgDefaults.isVal || cfgDefaults.set || cfgDefaults.fb || objHasOwn(cfgDefaults, "v"))) {
|
|
65
|
+
// looks like a IConfigDefault
|
|
66
|
+
isValid = cfgDefaults.isVal;
|
|
67
|
+
setFn = cfgDefaults.set;
|
|
68
|
+
defValue = _getDefault(dynamicHandler, theConfig, cfgDefaults);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
defValue = defaultValue;
|
|
72
|
+
}
|
|
73
|
+
// Set the value to the default value;
|
|
74
|
+
var theValue = defValue;
|
|
75
|
+
var usingDefault = true;
|
|
76
|
+
var cfgValue = theConfig[name];
|
|
77
|
+
// try and get and user provided values
|
|
78
|
+
if (cfgValue || !isNullOrUndefined(cfgValue)) {
|
|
79
|
+
// Use the defined theConfig[name] value
|
|
80
|
+
theValue = cfgValue;
|
|
81
|
+
usingDefault = false;
|
|
82
|
+
}
|
|
83
|
+
if (!usingDefault) {
|
|
84
|
+
// The values are different and we have a special default value check, which is used to
|
|
85
|
+
// override config values like empty strings to continue using the default
|
|
86
|
+
if (isValid && theValue !== defValue && !isValid(theValue)) {
|
|
87
|
+
theValue = defValue;
|
|
88
|
+
usingDefault = true;
|
|
89
|
+
}
|
|
90
|
+
if (setFn) {
|
|
91
|
+
theValue = setFn(theValue, defValue, theConfig);
|
|
92
|
+
usingDefault = theValue === defValue;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (theValue && usingDefault && (isPlainObject(theValue) || isArray(theValue))) {
|
|
96
|
+
theValue = _cfgDeepCopy(theValue);
|
|
97
|
+
}
|
|
98
|
+
// Needed to ensure that the (potentially) new field is dynamic even if null/undefined
|
|
99
|
+
dynamicHandler.set(theConfig, name, theValue);
|
|
100
|
+
}
|
|
101
|
+
export function applyDefaults(theConfig, defaultValues) {
|
|
102
|
+
if (defaultValues) {
|
|
103
|
+
if (theConfig && !theConfig[CFG_HANDLER_LINK] && (isPlainObject(theConfig) || isArray(theConfig))) {
|
|
104
|
+
throwInvalidAccess(STR_NOT_DYNAMIC_ERROR + dumpObj(theConfig));
|
|
105
|
+
}
|
|
106
|
+
// Resolve/apply the defaults
|
|
107
|
+
objForEachKey(defaultValues, function (name, value) {
|
|
108
|
+
// Sets the value and makes it dynamic (if it doesn't already exist)
|
|
109
|
+
_applyDefaultValue(theConfig, name, value);
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
return theConfig;
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=ConfigDefaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfigDefaults.js.map","sources":["ConfigDefaults.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { asString, dumpObj, isArray, isDefined, isNullOrUndefined, isObject, objHasOwn } from \"@nevware21/ts-utils\";\r\nimport { isPlainObject, objForEachKey } from \"../JavaScriptSDK/HelperFuncs\";\r\nimport { STR_NOT_DYNAMIC_ERROR } from \"../JavaScriptSDK/InternalConstants\";\r\nimport { _DYN_LENGTH } from \"../__DynamicConstants\";\r\nimport { CFG_HANDLER_LINK, _cfgDeepCopy, throwInvalidAccess } from \"./DynamicSupport\";\r\nfunction _getDefault(dynamicHandler, theConfig, cfgDefaults) {\r\n var defValue;\r\n var isDefaultValid = cfgDefaults.dfVal || isDefined;\r\n // There is a fallback config key so try and grab that first\r\n if (theConfig && cfgDefaults.fb) {\r\n var fallbacks = cfgDefaults.fb;\r\n if (!isArray(fallbacks)) {\r\n fallbacks = [fallbacks];\r\n }\r\n for (var lp = 0; lp < fallbacks[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n var fallback = fallbacks[lp];\r\n var fbValue = theConfig[fallback];\r\n if (isDefaultValid(fbValue)) {\r\n defValue = fbValue;\r\n }\r\n else {\r\n // Needed to ensure that the fallback value (and potentially) new field is also dynamic even if null/undefined\r\n fbValue = dynamicHandler.cfg[fallback];\r\n if (isDefaultValid(fbValue)) {\r\n defValue = fbValue;\r\n }\r\n // Needed to ensure that the fallback value (and potentially) new field is also dynamic even if null/undefined\r\n dynamicHandler.set(dynamicHandler.cfg, asString(fallback), fbValue);\r\n }\r\n if (isDefaultValid(defValue)) {\r\n // We have a valid default so break out of the look\r\n break;\r\n }\r\n }\r\n }\r\n // If the value is still not defined and we have a default value then use that\r\n if (!isDefaultValid(defValue) && isDefaultValid(cfgDefaults.v)) {\r\n defValue = cfgDefaults.v;\r\n }\r\n return defValue;\r\n}\r\n/**\r\n * Applies the default value on the config property and makes sure that it's dynamic\r\n * @param theConfig\r\n * @param name\r\n * @param defaultValue\r\n */\r\nexport function _applyDefaultValue(theConfig, name, defaultValue) {\r\n var dynamicHandler = theConfig[CFG_HANDLER_LINK];\r\n if (!dynamicHandler) {\r\n throwInvalidAccess(STR_NOT_DYNAMIC_ERROR + dumpObj(theConfig));\r\n }\r\n // Resolve the initial config value from the provided value or use the defined default\r\n var isValid;\r\n var setFn;\r\n var defValue;\r\n var cfgDefaults = defaultValue;\r\n if (cfgDefaults && isObject(cfgDefaults) && (cfgDefaults.isVal || cfgDefaults.set || cfgDefaults.fb || objHasOwn(cfgDefaults, \"v\"))) {\r\n // looks like a IConfigDefault\r\n isValid = cfgDefaults.isVal;\r\n setFn = cfgDefaults.set;\r\n defValue = _getDefault(dynamicHandler, theConfig, cfgDefaults);\r\n }\r\n else {\r\n defValue = defaultValue;\r\n }\r\n // Set the value to the default value;\r\n var theValue = defValue;\r\n var usingDefault = true;\r\n var cfgValue = theConfig[name];\r\n // try and get and user provided values\r\n if (cfgValue || !isNullOrUndefined(cfgValue)) {\r\n // Use the defined theConfig[name] value\r\n theValue = cfgValue;\r\n usingDefault = false;\r\n }\r\n if (!usingDefault) {\r\n // The values are different and we have a special default value check, which is used to\r\n // override config values like empty strings to continue using the default\r\n if (isValid && theValue !== defValue && !isValid(theValue)) {\r\n theValue = defValue;\r\n usingDefault = true;\r\n }\r\n if (setFn) {\r\n theValue = setFn(theValue, defValue, theConfig);\r\n usingDefault = theValue === defValue;\r\n }\r\n }\r\n if (theValue && usingDefault && (isPlainObject(theValue) || isArray(theValue))) {\r\n theValue = _cfgDeepCopy(theValue);\r\n }\r\n // Needed to ensure that the (potentially) new field is dynamic even if null/undefined\r\n dynamicHandler.set(theConfig, name, theValue);\r\n}\r\nexport function applyDefaults(theConfig, defaultValues) {\r\n if (defaultValues) {\r\n if (theConfig && !theConfig[CFG_HANDLER_LINK] && (isPlainObject(theConfig) || isArray(theConfig))) {\r\n throwInvalidAccess(STR_NOT_DYNAMIC_ERROR + dumpObj(theConfig));\r\n }\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(theConfig, name, value);\r\n });\r\n }\r\n return theConfig;\r\n}\r\n//# sourceMappingURL=ConfigDefaults.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"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Application Insights JavaScript SDK - Core, 3.0.0-beta.2210-02
|
|
3
|
+
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
import { dumpObj, objDefineProp } from "@nevware21/ts-utils";
|
|
8
|
+
import { createUniqueNamespace } from "../JavaScriptSDK/DataCacheHelper";
|
|
9
|
+
import { STR_NOT_DYNAMIC_ERROR, STR_WARN_TO_CONSOLE } from "../JavaScriptSDK/InternalConstants";
|
|
10
|
+
import { _DYN_CONFIGURABLE, _DYN_ENUMERABLE, _DYN_LOGGER, _DYN_NOTIFY, _DYN_THROW_INTERNAL, _DYN_WATCH } from "../__DynamicConstants";
|
|
11
|
+
import { applyDefaults } from "./ConfigDefaults";
|
|
12
|
+
import { _makeDynamicObject, _setDynamicProperty } from "./DynamicProperty";
|
|
13
|
+
import { _createState } from "./DynamicState";
|
|
14
|
+
import { CFG_HANDLER_LINK, _cfgDeepCopy, getDynamicConfigHandler, throwInvalidAccess } from "./DynamicSupport";
|
|
15
|
+
/**
|
|
16
|
+
* Identifies a function which will be re-called whenever any of it's accessed configuration values
|
|
17
|
+
* change.
|
|
18
|
+
* @param configHandler - The callback that will be called for the initial request and then whenever any
|
|
19
|
+
* accessed configuration changes are identified.
|
|
20
|
+
*/
|
|
21
|
+
function _createAndUseHandler(state, configHandler) {
|
|
22
|
+
var handler = {
|
|
23
|
+
fn: configHandler,
|
|
24
|
+
rm: function () {
|
|
25
|
+
// Clear all references to the handler so it can be garbage collected
|
|
26
|
+
// This will also cause this handler to never get called and eventually removed
|
|
27
|
+
handler.fn = null;
|
|
28
|
+
state = null;
|
|
29
|
+
configHandler = null;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
state.use(handler, configHandler);
|
|
33
|
+
return handler;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Creates the dynamic config handler and associates with the target config as the root object
|
|
37
|
+
* @param target - The config that you want to be root of the dynamic config
|
|
38
|
+
* @param inPlace - Should the passed config be converted in-place or a new proxy returned
|
|
39
|
+
* @returns The existing dynamic handler or a new instance with the provided config values
|
|
40
|
+
*/
|
|
41
|
+
function _createDynamicHandler(logger, target, inPlace) {
|
|
42
|
+
var _a, _b;
|
|
43
|
+
var dynamicConfig = getDynamicConfigHandler(target);
|
|
44
|
+
if (dynamicConfig) {
|
|
45
|
+
// The passed config is already dynamic so return it's tracker
|
|
46
|
+
return dynamicConfig;
|
|
47
|
+
}
|
|
48
|
+
var uid = createUniqueNamespace("dyncfg", true);
|
|
49
|
+
var newTarget = (target && inPlace !== false) ? target : _cfgDeepCopy(target);
|
|
50
|
+
var theState;
|
|
51
|
+
function _notifyWatchers() {
|
|
52
|
+
theState[_DYN_NOTIFY /* @min:%2enotify */]();
|
|
53
|
+
}
|
|
54
|
+
function _setValue(target, name, value) {
|
|
55
|
+
return _setDynamicProperty(theState, target, name, value);
|
|
56
|
+
}
|
|
57
|
+
function _watch(configHandler) {
|
|
58
|
+
return _createAndUseHandler(theState, configHandler);
|
|
59
|
+
}
|
|
60
|
+
function _block(configHandler) {
|
|
61
|
+
theState.use(null, configHandler);
|
|
62
|
+
}
|
|
63
|
+
var cfgHandler = (_a = {
|
|
64
|
+
uid: null,
|
|
65
|
+
cfg: newTarget
|
|
66
|
+
},
|
|
67
|
+
_a[_DYN_LOGGER /* @min:logger */] = logger,
|
|
68
|
+
_a[_DYN_NOTIFY /* @min:notify */] = _notifyWatchers,
|
|
69
|
+
_a.set = _setValue,
|
|
70
|
+
_a[_DYN_WATCH /* @min:watch */] = _watch,
|
|
71
|
+
_a._block = _block,
|
|
72
|
+
_a);
|
|
73
|
+
objDefineProp(cfgHandler, "uid", (_b = {},
|
|
74
|
+
_b[_DYN_CONFIGURABLE /* @min:configurable */] = false,
|
|
75
|
+
_b[_DYN_ENUMERABLE /* @min:enumerable */] = false,
|
|
76
|
+
_b.writable = false,
|
|
77
|
+
_b.value = uid,
|
|
78
|
+
_b));
|
|
79
|
+
theState = _createState(cfgHandler);
|
|
80
|
+
// Setup tracking for all defined default keys
|
|
81
|
+
_makeDynamicObject(theState, newTarget);
|
|
82
|
+
return cfgHandler;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Log an invalid access message to the console
|
|
86
|
+
* @param message
|
|
87
|
+
*/
|
|
88
|
+
function _logInvalidAccess(logger, message) {
|
|
89
|
+
if (logger) {
|
|
90
|
+
logger[STR_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */](message);
|
|
91
|
+
logger[_DYN_THROW_INTERNAL /* @min:%2ethrowInternal */](2 /* eLoggingSeverity.WARNING */, 108 /* _eInternalMessageId.DynamicConfigException */, message);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
// We don't have a logger so just throw an exception
|
|
95
|
+
throwInvalidAccess(message);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Create or return a dynamic version of the passed config, if it is not already dynamic
|
|
100
|
+
* @param config - The config to be converted into a dynamic config
|
|
101
|
+
* @param defaultConfig - The default values to apply on the config if the properties don't already exist
|
|
102
|
+
* @param inPlace - Should the config be converted in-place into a dynamic config or a new instance returned, defaults to true
|
|
103
|
+
* @returns The dynamic config handler for the config (whether new or existing)
|
|
104
|
+
*/
|
|
105
|
+
export function createDynamicConfig(config, defaultConfig, logger, inPlace) {
|
|
106
|
+
var dynamic = _createDynamicHandler(logger, config || {}, inPlace);
|
|
107
|
+
if (defaultConfig) {
|
|
108
|
+
applyDefaults(dynamic.cfg, defaultConfig);
|
|
109
|
+
}
|
|
110
|
+
return dynamic;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Watch and track changes for accesses to the current config, the provided config MUST already be
|
|
114
|
+
* a dynamic config or a child accessed via the dynamic config
|
|
115
|
+
* @param config
|
|
116
|
+
* @param configHandler
|
|
117
|
+
* @param logger - The logger instance to use if there is no existing handler
|
|
118
|
+
* @returns A watcher handler instance that can be used to remove itself when being unloaded
|
|
119
|
+
* @throws TypeError if the provided config is not a dynamic config instance
|
|
120
|
+
*/
|
|
121
|
+
export function onConfigChange(config, configHandler, logger) {
|
|
122
|
+
var handler = config[CFG_HANDLER_LINK] || config;
|
|
123
|
+
if (handler.cfg && (handler.cfg === config || handler.cfg[CFG_HANDLER_LINK] === handler)) {
|
|
124
|
+
return handler[_DYN_WATCH /* @min:%2ewatch */](configHandler);
|
|
125
|
+
}
|
|
126
|
+
_logInvalidAccess(logger, STR_NOT_DYNAMIC_ERROR + dumpObj(config));
|
|
127
|
+
createDynamicConfig(config, null, logger)[_DYN_WATCH /* @min:%2ewatch */](configHandler);
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=DynamicConfig.js.map
|
|
@@ -0,0 +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 } 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_THROW_INTERNAL, _DYN_WATCH } from \"../__DynamicConstants\";\r\nimport { applyDefaults } 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 dynamicConfig = getDynamicConfigHandler(target);\r\n if (dynamicConfig) {\r\n // The passed config is already dynamic so return it's tracker\r\n return dynamicConfig;\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 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_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 dynamic = _createDynamicHandler(logger, config || {}, inPlace);\r\n if (defaultConfig) {\r\n applyDefaults(dynamic.cfg, defaultConfig);\r\n }\r\n return dynamic;\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"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Application Insights JavaScript SDK - Core, 3.0.0-beta.2210-02
|
|
3
|
+
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
import { arrForEach, dumpObj, isArray, objDefineAccessors, objDefineProp, objForEachKey, objGetOwnPropertyDescriptor } from "@nevware21/ts-utils";
|
|
8
|
+
import { isPlainObject } from "../JavaScriptSDK/HelperFuncs";
|
|
9
|
+
import { UNDEFINED_VALUE } from "../JavaScriptSDK/InternalConstants";
|
|
10
|
+
import { _DYN_APPLY, _DYN_CONFIGURABLE, _DYN_ENUMERABLE, _DYN_INDEX_OF, _DYN_PUSH } from "../__DynamicConstants";
|
|
11
|
+
import { CFG_HANDLER_LINK, throwInvalidAccess } from "./DynamicSupport";
|
|
12
|
+
var arrayMethodsToPatch = [
|
|
13
|
+
"push",
|
|
14
|
+
"pop",
|
|
15
|
+
"shift",
|
|
16
|
+
"unshift",
|
|
17
|
+
"splice"
|
|
18
|
+
];
|
|
19
|
+
function _patchArray(state, target) {
|
|
20
|
+
if (isArray(target)) {
|
|
21
|
+
// Monkey Patch the methods that might change the array
|
|
22
|
+
arrForEach(arrayMethodsToPatch, function (method) {
|
|
23
|
+
var orgMethod = target[method];
|
|
24
|
+
target[method] = function () {
|
|
25
|
+
var args = [];
|
|
26
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
27
|
+
args[_i] = arguments[_i];
|
|
28
|
+
}
|
|
29
|
+
var result = orgMethod[_DYN_APPLY /* @min:%2eapply */](this, args);
|
|
30
|
+
// items may be added, removed or moved so need to make some new dynamic properties
|
|
31
|
+
_makeDynamicObject(state, target);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function _makeDynamicProperty(state, theConfig, name, value) {
|
|
38
|
+
// Does not appear to be dynamic so lets make it so
|
|
39
|
+
var detail = {
|
|
40
|
+
n: name,
|
|
41
|
+
h: [],
|
|
42
|
+
add: function (handler) {
|
|
43
|
+
if (handler && handler.fn && detail.h[_DYN_INDEX_OF /* @min:%2eindexOf */](handler) === -1) {
|
|
44
|
+
detail.h[_DYN_PUSH /* @min:%2epush */](handler);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
// Flag to optimize lookup response time by avoiding additional function calls
|
|
49
|
+
var checkDynamic = true;
|
|
50
|
+
function _getProperty() {
|
|
51
|
+
if (checkDynamic) {
|
|
52
|
+
if (value && !value[CFG_HANDLER_LINK] && (isPlainObject(value) || isArray(value))) {
|
|
53
|
+
// It doesn't look like it's already dynamic so lets make sure it's converted the object into a dynamic Config as well
|
|
54
|
+
value = _makeDynamicObject(state, value);
|
|
55
|
+
}
|
|
56
|
+
// If it needed to be converted it now has been
|
|
57
|
+
checkDynamic = false;
|
|
58
|
+
}
|
|
59
|
+
// If there is an active handler then add it to the tracking set of handlers
|
|
60
|
+
var activeHandler = state.act;
|
|
61
|
+
if (activeHandler) {
|
|
62
|
+
detail.add(activeHandler);
|
|
63
|
+
}
|
|
64
|
+
return value;
|
|
65
|
+
}
|
|
66
|
+
// Tag this getting as our dynamic property
|
|
67
|
+
_getProperty[state.prop] = true;
|
|
68
|
+
function _setProperty(newValue) {
|
|
69
|
+
if (value !== newValue) {
|
|
70
|
+
if (!!_setProperty[state.ro] && state.upd) {
|
|
71
|
+
// field is marked as readonly so return false
|
|
72
|
+
throwInvalidAccess("[" + name + "] is sealed from " + dumpObj(theConfig));
|
|
73
|
+
}
|
|
74
|
+
// As we are replacing the value, if already dynamic then we need to notify any listeners that changes
|
|
75
|
+
// are happening
|
|
76
|
+
if (value && value[CFG_HANDLER_LINK]) {
|
|
77
|
+
// For objects / arrays, we can indirectly inform any listeners by just changing the value to undefined
|
|
78
|
+
// This will trigger any listeners by simply calling their version of the setter.
|
|
79
|
+
if (isPlainObject(value)) {
|
|
80
|
+
objForEachKey(value, function (key) {
|
|
81
|
+
value[key] = UNDEFINED_VALUE;
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
else if (isArray(value)) {
|
|
85
|
+
arrForEach(value, function (propValue, idx) {
|
|
86
|
+
value[idx] = UNDEFINED_VALUE;
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
checkDynamic = false;
|
|
91
|
+
if (isPlainObject(newValue) || isArray(newValue)) {
|
|
92
|
+
_makeDynamicObject(state, newValue);
|
|
93
|
+
}
|
|
94
|
+
value = newValue;
|
|
95
|
+
// Cause any listeners to be scheduled for notification
|
|
96
|
+
state.add(detail);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
objDefineAccessors(theConfig, detail.n, _getProperty, _setProperty, true);
|
|
100
|
+
}
|
|
101
|
+
export function _setDynamicProperty(state, target, name, value) {
|
|
102
|
+
if (target) {
|
|
103
|
+
var isDynamic = false;
|
|
104
|
+
// To be a dynamic property it needs to have a get function
|
|
105
|
+
var propDesc = objGetOwnPropertyDescriptor(target, name);
|
|
106
|
+
if (propDesc && propDesc.get) {
|
|
107
|
+
isDynamic = !!propDesc.get[state.prop];
|
|
108
|
+
}
|
|
109
|
+
if (!isDynamic) {
|
|
110
|
+
_makeDynamicProperty(state, target, name, value);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
// Looks like it's already dynamic and a different value so just assign the new value
|
|
114
|
+
target[name] = value;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return value;
|
|
118
|
+
}
|
|
119
|
+
export function _makeDynamicObject(state, target /*, newValues?: any*/) {
|
|
120
|
+
var _a;
|
|
121
|
+
// Assign target with new value properties (converting into dynamic properties in the process)
|
|
122
|
+
objForEachKey(/*newValues || */ target, function (key, value) {
|
|
123
|
+
// Assign and/or make the property dynamic
|
|
124
|
+
_setDynamicProperty(state, target, key, value);
|
|
125
|
+
});
|
|
126
|
+
if (!target[CFG_HANDLER_LINK]) {
|
|
127
|
+
// Link the config back to the dynamic config details
|
|
128
|
+
objDefineProp(target, CFG_HANDLER_LINK, (_a = {},
|
|
129
|
+
_a[_DYN_CONFIGURABLE /* @min:configurable */] = false,
|
|
130
|
+
_a[_DYN_ENUMERABLE /* @min:enumerable */] = false,
|
|
131
|
+
_a.get = function () {
|
|
132
|
+
return state.hdlr;
|
|
133
|
+
},
|
|
134
|
+
_a));
|
|
135
|
+
_patchArray(state, target);
|
|
136
|
+
}
|
|
137
|
+
return target;
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=DynamicProperty.js.map
|
|
@@ -0,0 +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, dumpObj, isArray, objDefineAccessors, objDefineProp, objForEachKey, objGetOwnPropertyDescriptor } from \"@nevware21/ts-utils\";\r\nimport { isPlainObject } from \"../JavaScriptSDK/HelperFuncs\";\r\nimport { UNDEFINED_VALUE } from \"../JavaScriptSDK/InternalConstants\";\r\nimport { _DYN_APPLY, _DYN_CONFIGURABLE, _DYN_ENUMERABLE, _DYN_INDEX_OF, _DYN_PUSH } 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 add: function (handler) {\r\n if (handler && handler.fn && detail.h[_DYN_INDEX_OF /* @min:%2eindexOf */](handler) === -1) {\r\n detail.h[_DYN_PUSH /* @min:%2epush */](handler);\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.add(activeHandler);\r\n }\r\n return value;\r\n }\r\n // Tag this getting as our dynamic property\r\n _getProperty[state.prop] = true;\r\n function _setProperty(newValue) {\r\n if (value !== newValue) {\r\n if (!!_setProperty[state.ro] && state.upd) {\r\n // field is marked as readonly so return false\r\n throwInvalidAccess(\"[\" + name + \"] is sealed from \" + dumpObj(theConfig));\r\n }\r\n // As we are replacing the value, if already dynamic then we need to notify any listeners that changes\r\n // are happening\r\n if (value && value[CFG_HANDLER_LINK]) {\r\n // For objects / arrays, we can indirectly inform any listeners by just changing the value to undefined\r\n // This will trigger any listeners by simply calling their version of the setter.\r\n if (isPlainObject(value)) {\r\n objForEachKey(value, function (key) {\r\n value[key] = UNDEFINED_VALUE;\r\n });\r\n }\r\n else if (isArray(value)) {\r\n arrForEach(value, function (propValue, idx) {\r\n value[idx] = UNDEFINED_VALUE;\r\n });\r\n }\r\n }\r\n checkDynamic = false;\r\n if (isPlainObject(newValue) || isArray(newValue)) {\r\n _makeDynamicObject(state, newValue);\r\n }\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}\r\nexport function _setDynamicProperty(state, target, name, value) {\r\n if (target) {\r\n var isDynamic = false;\r\n // To be a dynamic property it needs to have a get function\r\n var propDesc = objGetOwnPropertyDescriptor(target, name);\r\n if (propDesc && propDesc.get) {\r\n isDynamic = !!propDesc.get[state.prop];\r\n }\r\n if (!isDynamic) {\r\n _makeDynamicProperty(state, target, name, value);\r\n }\r\n else {\r\n // Looks like it's already dynamic and a different value so just assign the new value\r\n target[name] = value;\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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Application Insights JavaScript SDK - Core, 3.0.0-beta.2210-02
|
|
3
|
+
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
import { arrForEach, dumpObj, newSymbol } from "@nevware21/ts-utils";
|
|
8
|
+
import { _DYN_INDEX_OF, _DYN_LENGTH, _DYN_LOGGER, _DYN_NOTIFY, _DYN_PUSH, _DYN_THROW_INTERNAL } from "../__DynamicConstants";
|
|
9
|
+
import { throwInvalidAccess } from "./DynamicSupport";
|
|
10
|
+
var symPrefix = "[[ai_";
|
|
11
|
+
var symPostfix = "]]";
|
|
12
|
+
/**
|
|
13
|
+
* @internal
|
|
14
|
+
* @ignore
|
|
15
|
+
* Add the watcher to the collection of watchers to be notified for the named value that is changing
|
|
16
|
+
* @param watchers - The collection of watchers
|
|
17
|
+
* @param theDetail - The dynamic property detail
|
|
18
|
+
* @param prevValue - The previous value
|
|
19
|
+
*/
|
|
20
|
+
function _insertWatcher(watchers, theDetail) {
|
|
21
|
+
if (theDetail && theDetail.h && theDetail.h[_DYN_LENGTH /* @min:%2elength */] > 0) {
|
|
22
|
+
arrForEach(theDetail.h, function (handler) {
|
|
23
|
+
// The handler may have self removed and we also want to only call the handler once.
|
|
24
|
+
if (handler && handler.fn && watchers[_DYN_INDEX_OF /* @min:%2eindexOf */](handler) === -1) {
|
|
25
|
+
watchers[_DYN_PUSH /* @min:%2epush */](handler);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export function _createState(cfgHandler) {
|
|
31
|
+
var _a;
|
|
32
|
+
var dynamicPropertySymbol = newSymbol(symPrefix + "get" + cfgHandler.uid + symPostfix);
|
|
33
|
+
var dynamicPropertyReadOnly = newSymbol(symPrefix + "ro" + cfgHandler.uid + symPostfix);
|
|
34
|
+
var _waitingHandlers = null;
|
|
35
|
+
var _watcherTimer = null;
|
|
36
|
+
var theState;
|
|
37
|
+
function _useHandler(activeHandler, callback) {
|
|
38
|
+
var prevWatcher = theState.act;
|
|
39
|
+
try {
|
|
40
|
+
theState.act = activeHandler;
|
|
41
|
+
callback({
|
|
42
|
+
cfg: cfgHandler.cfg,
|
|
43
|
+
hdlr: cfgHandler
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
catch (e) {
|
|
47
|
+
var message = "Watcher [" + dumpObj(callback) + "] failed [" + dumpObj(e) + "]";
|
|
48
|
+
var logger = cfgHandler[_DYN_LOGGER /* @min:%2elogger */];
|
|
49
|
+
if (logger) {
|
|
50
|
+
// Don't let one individual failure break everyone
|
|
51
|
+
cfgHandler.logger[_DYN_THROW_INTERNAL /* @min:%2ethrowInternal */](1 /* eLoggingSeverity.CRITICAL */, 107 /* _eInternalMessageId.ConfigWatcherException */, message);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
throwInvalidAccess(message);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
finally {
|
|
58
|
+
theState.act = prevWatcher || null;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function _notifyWatchers() {
|
|
62
|
+
if (_waitingHandlers) {
|
|
63
|
+
var notifyHandlers = _waitingHandlers;
|
|
64
|
+
_waitingHandlers = null;
|
|
65
|
+
if (_watcherTimer) {
|
|
66
|
+
// Stop any timer as we are running them now anyway
|
|
67
|
+
clearTimeout(_watcherTimer);
|
|
68
|
+
_watcherTimer = null;
|
|
69
|
+
}
|
|
70
|
+
// Now run the handlers
|
|
71
|
+
arrForEach(notifyHandlers, function (handler) {
|
|
72
|
+
// The handler may have self removed as part of another handler so re-check
|
|
73
|
+
if (handler.fn) {
|
|
74
|
+
_useHandler(handler, handler.fn);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
// During notification we may have had additional updates -- so notify those updates as well
|
|
78
|
+
if (_waitingHandlers) {
|
|
79
|
+
_notifyWatchers();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function _addWatcher(detail) {
|
|
84
|
+
if (detail && detail.h[_DYN_LENGTH /* @min:%2elength */] > 0) {
|
|
85
|
+
if (!_waitingHandlers) {
|
|
86
|
+
_waitingHandlers = [];
|
|
87
|
+
}
|
|
88
|
+
if (!_watcherTimer) {
|
|
89
|
+
_watcherTimer = setTimeout(function () {
|
|
90
|
+
_watcherTimer = null;
|
|
91
|
+
_notifyWatchers();
|
|
92
|
+
}, 0);
|
|
93
|
+
}
|
|
94
|
+
// Add the watcher to the collection of waiting watchers to be executed later
|
|
95
|
+
_insertWatcher(_waitingHandlers, detail);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
theState = (_a = {
|
|
99
|
+
prop: dynamicPropertySymbol,
|
|
100
|
+
ro: dynamicPropertyReadOnly,
|
|
101
|
+
hdlr: cfgHandler,
|
|
102
|
+
add: _addWatcher
|
|
103
|
+
},
|
|
104
|
+
_a[_DYN_NOTIFY /* @min:notify */] = _notifyWatchers,
|
|
105
|
+
_a.use = _useHandler,
|
|
106
|
+
_a);
|
|
107
|
+
return theState;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=DynamicState.js.map
|
|
@@ -0,0 +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, dumpObj, newSymbol } from \"@nevware21/ts-utils\";\r\nimport { _DYN_INDEX_OF, _DYN_LENGTH, _DYN_LOGGER, _DYN_NOTIFY, _DYN_PUSH, _DYN_THROW_INTERNAL } from \"../__DynamicConstants\";\r\nimport { throwInvalidAccess } from \"./DynamicSupport\";\r\nvar symPrefix = \"[[ai_\";\r\nvar symPostfix = \"]]\";\r\n/**\r\n * @internal\r\n * @ignore\r\n * Add the watcher to the collection of watchers to be notified for the named value that is changing\r\n * @param watchers - The collection of watchers\r\n * @param theDetail - The dynamic property detail\r\n * @param prevValue - The previous value\r\n */\r\nfunction _insertWatcher(watchers, theDetail) {\r\n if (theDetail && theDetail.h && theDetail.h[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(theDetail.h, function (handler) {\r\n // The handler may have self removed and we also want to only call the handler once.\r\n if (handler && handler.fn && watchers[_DYN_INDEX_OF /* @min:%2eindexOf */](handler) === -1) {\r\n watchers[_DYN_PUSH /* @min:%2epush */](handler);\r\n }\r\n });\r\n }\r\n}\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 _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 callback({\r\n cfg: cfgHandler.cfg,\r\n hdlr: cfgHandler\r\n });\r\n }\r\n catch (e) {\r\n var message = \"Watcher [\" + dumpObj(callback) + \"] failed [\" + dumpObj(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 cfgHandler.logger[_DYN_THROW_INTERNAL /* @min:%2ethrowInternal */](1 /* eLoggingSeverity.CRITICAL */, 107 /* _eInternalMessageId.ConfigWatcherException */, message);\r\n }\r\n else {\r\n throwInvalidAccess(message);\r\n }\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 if (_watcherTimer) {\r\n // Stop any timer as we are running them now anyway\r\n clearTimeout(_watcherTimer);\r\n _watcherTimer = null;\r\n }\r\n // Now run the handlers\r\n arrForEach(notifyHandlers, function (handler) {\r\n // The handler may have self removed as part of another handler so re-check\r\n if (handler.fn) {\r\n _useHandler(handler, handler.fn);\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 _notifyWatchers();\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 = setTimeout(function () {\r\n _watcherTimer = null;\r\n _notifyWatchers();\r\n }, 0);\r\n }\r\n // Add the watcher to the collection of waiting watchers to be executed later\r\n _insertWatcher(_waitingHandlers, detail);\r\n }\r\n }\r\n theState = (_a = {\r\n prop: dynamicPropertySymbol,\r\n ro: dynamicPropertyReadOnly,\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);\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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Application Insights JavaScript SDK - Core, 3.0.0-beta.2210-02
|
|
3
|
+
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
import { arrForEach, isArray, objForEachKey, symbolFor, throwTypeError } from "@nevware21/ts-utils";
|
|
8
|
+
import { isPlainObject } from "../JavaScriptSDK/HelperFuncs";
|
|
9
|
+
import { _DYN_LENGTH } from "../__DynamicConstants";
|
|
10
|
+
// Using Symbol.for so that if the same symbol was already created it would be returned
|
|
11
|
+
// To handle multiple instances using potentially different versions we are not using
|
|
12
|
+
// createUniqueNamespace()
|
|
13
|
+
export var CFG_HANDLER_LINK = symbolFor("[[ai_dynCfg_1]]");
|
|
14
|
+
export function _cfgDeepCopy(source) {
|
|
15
|
+
if (source) {
|
|
16
|
+
if (isArray(source)) {
|
|
17
|
+
var result_1 = [];
|
|
18
|
+
result_1[_DYN_LENGTH /* @min:%2elength */] = source[_DYN_LENGTH /* @min:%2elength */];
|
|
19
|
+
arrForEach(source, function (value, idx) {
|
|
20
|
+
result_1[idx] = _cfgDeepCopy(value);
|
|
21
|
+
});
|
|
22
|
+
return result_1;
|
|
23
|
+
}
|
|
24
|
+
if (isPlainObject(source)) {
|
|
25
|
+
var target_1 = {};
|
|
26
|
+
objForEachKey(source, function (key, value) {
|
|
27
|
+
// Perform a deep copy of the object
|
|
28
|
+
target_1[key] = _cfgDeepCopy(value);
|
|
29
|
+
});
|
|
30
|
+
return target_1;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return source;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* @internal
|
|
37
|
+
* Get the dynamic config handler if the value is already dynamic
|
|
38
|
+
* @param value
|
|
39
|
+
* @returns
|
|
40
|
+
*/
|
|
41
|
+
export function getDynamicConfigHandler(value) {
|
|
42
|
+
if (value) {
|
|
43
|
+
var handler = value[CFG_HANDLER_LINK] || value;
|
|
44
|
+
if (handler.cfg && (handler.cfg === value || handler.cfg[CFG_HANDLER_LINK] === handler)) {
|
|
45
|
+
return handler;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Throws an invalid access exception
|
|
52
|
+
* @param message - The message to include in the exception
|
|
53
|
+
*/
|
|
54
|
+
export function throwInvalidAccess(message) {
|
|
55
|
+
throwTypeError("InvalidAccess:" + message);
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=DynamicSupport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DynamicSupport.js.map","sources":["DynamicSupport.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { arrForEach, isArray, objForEachKey, symbolFor, throwTypeError } from \"@nevware21/ts-utils\";\r\nimport { isPlainObject } from \"../JavaScriptSDK/HelperFuncs\";\r\nimport { _DYN_LENGTH } from \"../__DynamicConstants\";\r\n// Using Symbol.for so that if the same symbol was already created it would be returned\r\n// To handle multiple instances using potentially different versions we are not using\r\n// createUniqueNamespace()\r\nexport var CFG_HANDLER_LINK = symbolFor(\"[[ai_dynCfg_1]]\");\r\nexport function _cfgDeepCopy(source) {\r\n if (source) {\r\n if (isArray(source)) {\r\n var result_1 = [];\r\n result_1[_DYN_LENGTH /* @min:%2elength */] = source[_DYN_LENGTH /* @min:%2elength */];\r\n arrForEach(source, function (value, idx) {\r\n result_1[idx] = _cfgDeepCopy(value);\r\n });\r\n return result_1;\r\n }\r\n if (isPlainObject(source)) {\r\n var target_1 = {};\r\n objForEachKey(source, function (key, value) {\r\n // Perform a deep copy of the object\r\n target_1[key] = _cfgDeepCopy(value);\r\n });\r\n return target_1;\r\n }\r\n }\r\n return source;\r\n}\r\n/**\r\n * @internal\r\n * Get the dynamic config handler if the value is already dynamic\r\n * @param value\r\n * @returns\r\n */\r\nexport function getDynamicConfigHandler(value) {\r\n if (value) {\r\n var handler = value[CFG_HANDLER_LINK] || value;\r\n if (handler.cfg && (handler.cfg === value || handler.cfg[CFG_HANDLER_LINK] === handler)) {\r\n return handler;\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Throws an invalid access exception\r\n * @param message - The message to include in the exception\r\n */\r\nexport function throwInvalidAccess(message) {\r\n throwTypeError(\"InvalidAccess:\" + message);\r\n}\r\n//# sourceMappingURL=DynamicSupport.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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IConfigDefaults.js.map","sources":["IConfigDefaults.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nexport {};\r\n//# sourceMappingURL=IConfigDefaults.js.map"],"names":[],"mappings":";;;;AAA4D;AAC1B;AAClC;AACA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IDynamicConfigHandler.js.map","sources":["IDynamicConfigHandler.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nexport {};\r\n//# sourceMappingURL=IDynamicConfigHandler.js.map"],"names":[],"mappings":";;;;AAA4D;AAC1B;AAClC;AACA"}
|