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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/browser/applicationinsights-core-js.integrity.json +9 -9
  2. package/browser/applicationinsights-core-js.js +50 -24
  3. package/browser/applicationinsights-core-js.js.map +1 -1
  4. package/browser/applicationinsights-core-js.min.js +2 -2
  5. package/browser/applicationinsights-core-js.min.js.map +1 -1
  6. package/dist/applicationinsights-core-js.api.json +58 -0
  7. package/dist/applicationinsights-core-js.api.md +3 -0
  8. package/dist/applicationinsights-core-js.d.ts +44 -1
  9. package/dist/applicationinsights-core-js.js +50 -24
  10. package/dist/applicationinsights-core-js.js.map +1 -1
  11. package/dist/applicationinsights-core-js.min.js +2 -2
  12. package/dist/applicationinsights-core-js.min.js.map +1 -1
  13. package/dist/applicationinsights-core-js.rollup.d.ts +44 -1
  14. package/dist-esm/Config/ConfigDefaultHelpers.js +1 -1
  15. package/dist-esm/Config/ConfigDefaults.js +1 -1
  16. package/dist-esm/Config/DynamicConfig.js +4 -4
  17. package/dist-esm/Config/DynamicConfig.js.map +1 -1
  18. package/dist-esm/Config/DynamicProperty.js +8 -10
  19. package/dist-esm/Config/DynamicProperty.js.map +1 -1
  20. package/dist-esm/Config/DynamicState.js +1 -1
  21. package/dist-esm/Config/DynamicSupport.js +114 -1
  22. package/dist-esm/Config/DynamicSupport.js.map +1 -1
  23. package/dist-esm/Config/IConfigDefaults.js +1 -1
  24. package/dist-esm/Config/IDynamicConfigHandler.js +1 -1
  25. package/dist-esm/Config/IDynamicPropertyHandler.js +1 -1
  26. package/dist-esm/Config/IDynamicWatcher.js +1 -1
  27. package/dist-esm/Config/_IDynamicConfigHandlerState.js +1 -1
  28. package/dist-esm/JavaScriptSDK/AggregationError.js +1 -1
  29. package/dist-esm/JavaScriptSDK/AppInsightsCore.js +1 -1
  30. package/dist-esm/JavaScriptSDK/BaseTelemetryPlugin.js +1 -1
  31. package/dist-esm/JavaScriptSDK/Constants.js +1 -1
  32. package/dist-esm/JavaScriptSDK/CookieMgr.js +23 -19
  33. package/dist-esm/JavaScriptSDK/CookieMgr.js.map +1 -1
  34. package/dist-esm/JavaScriptSDK/CoreUtils.js +1 -1
  35. package/dist-esm/JavaScriptSDK/DataCacheHelper.js +2 -2
  36. package/dist-esm/JavaScriptSDK/DataCacheHelper.js.map +1 -1
  37. package/dist-esm/JavaScriptSDK/DbgExtensionUtils.js +1 -1
  38. package/dist-esm/JavaScriptSDK/DiagnosticLogger.js +1 -1
  39. package/dist-esm/JavaScriptSDK/EnvUtils.js +1 -1
  40. package/dist-esm/JavaScriptSDK/EventHelpers.js +1 -1
  41. package/dist-esm/JavaScriptSDK/HelperFuncs.js +1 -1
  42. package/dist-esm/JavaScriptSDK/InstrumentHooks.js +1 -1
  43. package/dist-esm/JavaScriptSDK/InternalConstants.js +1 -1
  44. package/dist-esm/JavaScriptSDK/NotificationManager.js +1 -1
  45. package/dist-esm/JavaScriptSDK/PerfManager.js +1 -1
  46. package/dist-esm/JavaScriptSDK/ProcessTelemetryContext.js +1 -1
  47. package/dist-esm/JavaScriptSDK/RandomHelper.js +1 -1
  48. package/dist-esm/JavaScriptSDK/TelemetryHelpers.js +1 -1
  49. package/dist-esm/JavaScriptSDK/TelemetryInitializerPlugin.js +1 -1
  50. package/dist-esm/JavaScriptSDK/UnloadHandlerContainer.js +1 -1
  51. package/dist-esm/JavaScriptSDK/UnloadHookContainer.js +1 -1
  52. package/dist-esm/JavaScriptSDK/W3cTraceParent.js +1 -1
  53. package/dist-esm/JavaScriptSDK.Enums/EnumHelperFuncs.js +1 -1
  54. package/dist-esm/JavaScriptSDK.Enums/EventsDiscardedReason.js +1 -1
  55. package/dist-esm/JavaScriptSDK.Enums/LoggingEnums.js +1 -1
  56. package/dist-esm/JavaScriptSDK.Enums/SendRequestReason.js +1 -1
  57. package/dist-esm/JavaScriptSDK.Enums/TelemetryUnloadReason.js +1 -1
  58. package/dist-esm/JavaScriptSDK.Enums/TelemetryUpdateReason.js +1 -1
  59. package/dist-esm/JavaScriptSDK.Interfaces/IAppInsightsCore.js +1 -1
  60. package/dist-esm/JavaScriptSDK.Interfaces/IChannelControls.js +1 -1
  61. package/dist-esm/JavaScriptSDK.Interfaces/IChannelControlsHost.js +1 -1
  62. package/dist-esm/JavaScriptSDK.Interfaces/IConfiguration.js +1 -1
  63. package/dist-esm/JavaScriptSDK.Interfaces/ICookieMgr.js +1 -1
  64. package/dist-esm/JavaScriptSDK.Interfaces/IDbgExtension.js +1 -1
  65. package/dist-esm/JavaScriptSDK.Interfaces/IDiagnosticLogger.js +1 -1
  66. package/dist-esm/JavaScriptSDK.Interfaces/IDistributedTraceContext.js +1 -1
  67. package/dist-esm/JavaScriptSDK.Interfaces/IInstrumentHooks.js +1 -1
  68. package/dist-esm/JavaScriptSDK.Interfaces/INotificationListener.js +1 -1
  69. package/dist-esm/JavaScriptSDK.Interfaces/INotificationManager.js +1 -1
  70. package/dist-esm/JavaScriptSDK.Interfaces/IPerfEvent.js +1 -1
  71. package/dist-esm/JavaScriptSDK.Interfaces/IPerfManager.js +1 -1
  72. package/dist-esm/JavaScriptSDK.Interfaces/IProcessTelemetryContext.js +1 -1
  73. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryInitializers.js +1 -1
  74. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryItem.js +1 -1
  75. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryPlugin.js +1 -1
  76. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryPluginChain.js +1 -1
  77. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryUnloadState.js +1 -1
  78. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryUpdateState.js +1 -1
  79. package/dist-esm/JavaScriptSDK.Interfaces/ITraceParent.js +1 -1
  80. package/dist-esm/JavaScriptSDK.Interfaces/IUnloadHook.js +1 -1
  81. package/dist-esm/JavaScriptSDK.Interfaces/IUnloadableComponent.js +1 -1
  82. package/dist-esm/__DynamicConstants.js +1 -1
  83. package/dist-esm/applicationinsights-core-js.js +2 -2
  84. package/dist-esm/applicationinsights-core-js.js.map +1 -1
  85. package/package.json +1 -1
  86. package/types/Config/DynamicProperty.d.ts +1 -1
  87. package/types/Config/DynamicSupport.d.ts +67 -0
  88. package/types/applicationinsights-core-js.d.ts +1 -1
@@ -6000,6 +6000,64 @@
6000
6000
  }
6001
6001
  ]
6002
6002
  },
6003
+ {
6004
+ "kind": "Function",
6005
+ "canonicalReference": "@microsoft/applicationinsights-core-js!blockDynamicConversion:function(1)",
6006
+ "docComment": "/**\n * Mark the provided value so that if it's included into the configuration it will NOT have its properties converted into a dynamic (reactive) object. If the object is not a plain object or an array (ie. a class) this function has not affect as only Objects and Arrays are converted into dynamic objects in the dynamic configuration.\n *\n * When you have tagged a value as both {@link forceDynamicConversion} and blocked force will take precedence.\n *\n * You should only need to use this function, if you are creating dynamic \"classes\" from objects which confirm to the require interface. A common case for this is during unit testing where it's easier to create mock extensions.\n *\n * If `value` is falsy (null / undefined / 0 / empty string etc) it will not be tagged and if there is an exception adding the property to the value (because its frozen etc) the exception will be swallowed\n *\n * @param value - The object that you want to block from being converted into a trackable dynamic object\n *\n * @returns The original value\n *\n * @example\n * ```ts\n * // This is a valid \"extension\", but it is technically an object\n * // So when included in the config.extensions it WILL be cloned and then\n * // converted into a dynamic object, where all of its properties will become\n * // get/set object properties and will be tracked. While this WILL still\n * // function, when attempt to use a mocking framework on top of this the\n * // functions are now technically get accessors which return a function\n * // and this can cause some mocking frameworks to fail.\n * let mockChannel = {\n * pause: () => { },\n * resume: () => { },\n * teardown: () => { },\n * flush: (async: any, callBack: any) => { },\n * processTelemetry: (env: any) => { },\n * setNextPlugin: (next: any) => { },\n * initialize: (config: any, core: any, extensions: any) => { },\n * identifier: \"testChannel\",\n * priority: 1003\n * };\n * ```\n *\n */\n",
6007
+ "excerptTokens": [
6008
+ {
6009
+ "kind": "Content",
6010
+ "text": "export declare function blockDynamicConversion<T>(value: "
6011
+ },
6012
+ {
6013
+ "kind": "Content",
6014
+ "text": "T"
6015
+ },
6016
+ {
6017
+ "kind": "Content",
6018
+ "text": "): "
6019
+ },
6020
+ {
6021
+ "kind": "Content",
6022
+ "text": "T"
6023
+ },
6024
+ {
6025
+ "kind": "Content",
6026
+ "text": ";"
6027
+ }
6028
+ ],
6029
+ "fileUrlPath": "types/Config/DynamicSupport.d.ts",
6030
+ "returnTypeTokenRange": {
6031
+ "startIndex": 3,
6032
+ "endIndex": 4
6033
+ },
6034
+ "releaseTag": "Public",
6035
+ "overloadIndex": 1,
6036
+ "parameters": [
6037
+ {
6038
+ "parameterName": "value",
6039
+ "parameterTypeTokenRange": {
6040
+ "startIndex": 1,
6041
+ "endIndex": 2
6042
+ },
6043
+ "isOptional": false
6044
+ }
6045
+ ],
6046
+ "typeParameters": [
6047
+ {
6048
+ "typeParameterName": "T",
6049
+ "constraintTokenRange": {
6050
+ "startIndex": 0,
6051
+ "endIndex": 0
6052
+ },
6053
+ "defaultTypeTokenRange": {
6054
+ "startIndex": 0,
6055
+ "endIndex": 0
6056
+ }
6057
+ }
6058
+ ],
6059
+ "name": "blockDynamicConversion"
6060
+ },
6003
6061
  {
6004
6062
  "kind": "Function",
6005
6063
  "canonicalReference": "@microsoft/applicationinsights-core-js!cfgDfBoolean:function(1)",
@@ -171,6 +171,9 @@ export abstract class BaseTelemetryPlugin implements ITelemetryPlugin {
171
171
  version?: string;
172
172
  }
173
173
 
174
+ // @public
175
+ export function blockDynamicConversion<T>(value: T): T;
176
+
174
177
  // @public
175
178
  export function cfgDfBoolean<T, C = IConfiguration>(defaultValue?: boolean, fallBackName?: keyof T | keyof C | Array<keyof T | keyof C>): IConfigDefaultCheck<T, boolean, C>;
176
179
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Microsoft Application Insights Core Javascript SDK, 3.0.0-beta.2303-09
2
+ * Microsoft Application Insights Core Javascript SDK, 3.0.0-beta.2303-10
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  *
5
5
  * Microsoft Application Insights Team
@@ -389,6 +389,49 @@ declare namespace ApplicationInsights {
389
389
  protected _addHook(hooks: IUnloadHook | IUnloadHook[] | Iterator<IUnloadHook> | ILegacyUnloadHook | ILegacyUnloadHook[] | Iterator<ILegacyUnloadHook>): void;
390
390
  }
391
391
 
392
+ /**
393
+ * Mark the provided value so that if it's included into the configuration it will NOT have
394
+ * its properties converted into a dynamic (reactive) object. If the object is not a plain object
395
+ * or an array (ie. a class) this function has not affect as only Objects and Arrays are converted
396
+ * into dynamic objects in the dynamic configuration.
397
+ *
398
+ * When you have tagged a value as both {@link forceDynamicConversion} and blocked force will take precedence.
399
+ *
400
+ * You should only need to use this function, if you are creating dynamic "classes" from objects
401
+ * which confirm to the require interface. A common case for this is during unit testing where it's
402
+ * easier to create mock extensions.
403
+ *
404
+ * If `value` is falsy (null / undefined / 0 / empty string etc) it will not be tagged and
405
+ * if there is an exception adding the property to the value (because its frozen etc) the
406
+ * exception will be swallowed
407
+ *
408
+ * @example
409
+ * ```ts
410
+ * // This is a valid "extension", but it is technically an object
411
+ * // So when included in the config.extensions it WILL be cloned and then
412
+ * // converted into a dynamic object, where all of its properties will become
413
+ * // get/set object properties and will be tracked. While this WILL still
414
+ * // function, when attempt to use a mocking framework on top of this the
415
+ * // functions are now technically get accessors which return a function
416
+ * // and this can cause some mocking frameworks to fail.
417
+ * let mockChannel = {
418
+ * pause: () => { },
419
+ * resume: () => { },
420
+ * teardown: () => { },
421
+ * flush: (async: any, callBack: any) => { },
422
+ * processTelemetry: (env: any) => { },
423
+ * setNextPlugin: (next: any) => { },
424
+ * initialize: (config: any, core: any, extensions: any) => { },
425
+ * identifier: "testChannel",
426
+ * priority: 1003
427
+ * };
428
+ * ```
429
+ * @param value - The object that you want to block from being converted into a
430
+ * trackable dynamic object
431
+ * @returns The original value
432
+ */
433
+ function blockDynamicConversion<T>(value: T): T;
434
+
392
435
  /**
393
436
  * Helper which returns an IConfigDefaultCheck instance that will validate and convert the user
394
437
  * provided value to a boolean from a string or boolean value
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Application Insights JavaScript SDK - Core, 3.0.0-beta.2303-09
2
+ * Application Insights JavaScript SDK - Core, 3.0.0-beta.2303-10
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
  (function (global, factory) {
@@ -1767,7 +1767,7 @@
1767
1767
  return result;
1768
1768
  }
1769
1769
 
1770
- var version = "3.0.0-beta.2303-09";
1770
+ var version = "3.0.0-beta.2303-10";
1771
1771
  var instanceName = "." + newId(6);
1772
1772
  var _dataUid = 0;
1773
1773
  function _canAcceptData(target) {
@@ -1949,6 +1949,8 @@
1949
1949
  }
1950
1950
 
1951
1951
  var CFG_HANDLER_LINK = symbolFor("[[ai_dynCfg_1]]");
1952
+ var BLOCK_DYNAMIC = symbolFor("[[ai_blkDynCfg_1]]");
1953
+ var FORCE_DYNAMIC = symbolFor("[[ai_frcDynCfg_1]]");
1952
1954
  function _cfgDeepCopy(source) {
1953
1955
  if (source) {
1954
1956
  var target_1;
@@ -1977,6 +1979,26 @@
1977
1979
  }
1978
1980
  return null;
1979
1981
  }
1982
+ function blockDynamicConversion(value) {
1983
+ if (value && (isPlainObject(value) || isArray(value))) {
1984
+ try {
1985
+ value[BLOCK_DYNAMIC] = true;
1986
+ }
1987
+ catch (e) {
1988
+ }
1989
+ }
1990
+ return value;
1991
+ }
1992
+ function _canMakeDynamic(value) {
1993
+ var result = false;
1994
+ if (value) {
1995
+ result = value[FORCE_DYNAMIC];
1996
+ if (!result && !value[BLOCK_DYNAMIC]) {
1997
+ result = isPlainObject(value) || isArray(value);
1998
+ }
1999
+ }
2000
+ return result;
2001
+ }
1980
2002
  function throwInvalidAccess(message) {
1981
2003
  throwTypeError$1("InvalidAccess:" + message);
1982
2004
  }
@@ -2031,7 +2053,7 @@
2031
2053
  var isObjectOrArray = false;
2032
2054
  function _getProperty() {
2033
2055
  if (checkDynamic) {
2034
- isObjectOrArray = isObjectOrArray || (value && (isPlainObject(value) || isArray(value)));
2056
+ isObjectOrArray = isObjectOrArray || _canMakeDynamic(value);
2035
2057
  if (value && !value[CFG_HANDLER_LINK] && isObjectOrArray) {
2036
2058
  value = _makeDynamicObject(state, value);
2037
2059
  }
@@ -2054,7 +2076,7 @@
2054
2076
  throwInvalidAccess("[" + name + "] is read-only:" + dumpObj(theConfig));
2055
2077
  }
2056
2078
  if (checkDynamic) {
2057
- isObjectOrArray = isObjectOrArray || (value && (isPlainObject(value) || isArray(value)));
2079
+ isObjectOrArray = isObjectOrArray || _canMakeDynamic(value);
2058
2080
  checkDynamic = false;
2059
2081
  }
2060
2082
  var isReferenced = isObjectOrArray && _getProperty[state.rf];
@@ -2079,7 +2101,7 @@
2079
2101
  }
2080
2102
  }
2081
2103
  if (newValue !== value) {
2082
- var newIsObjectOrArray = newValue && (isPlainObject(newValue) || isArray(newValue));
2104
+ var newIsObjectOrArray = newValue && _canMakeDynamic(newValue);
2083
2105
  if (!isReferenced && newIsObjectOrArray) {
2084
2106
  _makeDynamicObject(state, newValue);
2085
2107
  }
@@ -2090,14 +2112,13 @@
2090
2112
  }
2091
2113
  }
2092
2114
  objDefine(theConfig, detail.n, { g: _getProperty, s: _setProperty });
2093
- return _getProperty();
2094
2115
  }
2095
2116
  function _setDynamicProperty(state, target, name, value, inPlace, rdOnly) {
2096
2117
  if (target) {
2097
2118
  var getter = _getOwnPropGetter(target, name);
2098
2119
  var isDynamic = getter && !!getter[state.prop];
2099
2120
  if (!isDynamic) {
2100
- value = _makeDynamicProperty(state, target, name, value);
2121
+ _makeDynamicProperty(state, target, name, value);
2101
2122
  if (inPlace || rdOnly) {
2102
2123
  getter = _getOwnPropGetter(target, name);
2103
2124
  }
@@ -2112,7 +2133,7 @@
2112
2133
  getter[state.ro] = rdOnly;
2113
2134
  }
2114
2135
  }
2115
- return value;
2136
+ return target;
2116
2137
  }
2117
2138
  function _makeDynamicObject(state, target) {
2118
2139
  objForEachKey(target, function (key, value) {
@@ -2273,7 +2294,7 @@
2273
2294
  theState[_DYN_NOTIFY ]();
2274
2295
  }
2275
2296
  function _setValue(target, name, value) {
2276
- return _setDynamicProperty(theState, target, name, value);
2297
+ return _setDynamicProperty(theState, target, name, value)[name];
2277
2298
  }
2278
2299
  function _watch(configHandler) {
2279
2300
  return _createAndUseHandler(theState, configHandler);
@@ -2282,10 +2303,10 @@
2282
2303
  theState.use(null, configHandler);
2283
2304
  }
2284
2305
  function _ref(target, name) {
2285
- return _setDynamicProperty(theState, target, name, target[name], true);
2306
+ return _setDynamicProperty(theState, target, name, target[name], true)[name];
2286
2307
  }
2287
2308
  function _rdOnly(target, name) {
2288
- return _setDynamicProperty(theState, target, name, target[name], false, true);
2309
+ return _setDynamicProperty(theState, target, name, target[name], false, true)[name];
2289
2310
  }
2290
2311
  function _applyDefaults(theConfig, defaultValues) {
2291
2312
  if (defaultValues) {
@@ -2664,6 +2685,20 @@
2664
2685
  }
2665
2686
  return _isIgnoredCookie(cookieMgrCfg, name);
2666
2687
  }
2688
+ function _isCfgEnabled(rootConfig, cookieMgrConfig) {
2689
+ var isCfgEnabled = cookieMgrConfig.enabled;
2690
+ if (isNullOrUndefined(isCfgEnabled)) {
2691
+ var cookieEnabled = void 0;
2692
+ if (!isUndefined(rootConfig[strIsCookieUseDisabled])) {
2693
+ cookieEnabled = !rootConfig[strIsCookieUseDisabled];
2694
+ }
2695
+ if (!isUndefined(rootConfig[strDisableCookiesUsage])) {
2696
+ cookieEnabled = !rootConfig[strDisableCookiesUsage];
2697
+ }
2698
+ isCfgEnabled = cookieEnabled;
2699
+ }
2700
+ return isCfgEnabled;
2701
+ }
2667
2702
  function safeGetCookieMgr(core, config) {
2668
2703
  var cookieMgr;
2669
2704
  if (core) {
@@ -2695,27 +2730,16 @@
2695
2730
  onConfigChange(rootConfig, function (details) {
2696
2731
  details[_DYN_SET_DF ](details.cfg, rootDefaultConfig);
2697
2732
  cookieMgrConfig = details.ref(details.cfg, "cookieCfg");
2698
- var isEnabled = cookieMgrConfig.enabled;
2699
- if (isNullOrUndefined(isEnabled)) {
2700
- var cookieEnabled = void 0;
2701
- if (!isUndefined(rootConfig[strIsCookieUseDisabled])) {
2702
- cookieEnabled = !rootConfig[strIsCookieUseDisabled];
2703
- }
2704
- if (!isUndefined(rootConfig[strDisableCookiesUsage])) {
2705
- cookieEnabled = !rootConfig[strDisableCookiesUsage];
2706
- }
2707
- isEnabled = cookieEnabled;
2708
- }
2709
2733
  _path = cookieMgrConfig[STR_PATH ] || "/";
2710
2734
  _domain = cookieMgrConfig[STR_DOMAIN ];
2711
- _enabled = isEnabled !== false;
2735
+ _enabled = _isCfgEnabled(rootConfig, cookieMgrConfig) !== false;
2712
2736
  _getCookieFn = cookieMgrConfig.getCookie || _getCookieValue;
2713
2737
  _setCookieFn = cookieMgrConfig.setCookie || _setCookieValue;
2714
2738
  _delCookieFn = cookieMgrConfig.delCookie || _setCookieValue;
2715
2739
  }, logger);
2716
2740
  var cookieMgr = {
2717
2741
  isEnabled: function () {
2718
- var enabled = _enabled && areCookiesSupported(logger);
2742
+ var enabled = _isCfgEnabled(rootConfig, cookieMgrConfig) !== false && _enabled && areCookiesSupported(logger);
2719
2743
  var gblManager = _globalCookieConfig[strConfigCookieMgr];
2720
2744
  if (enabled && gblManager && cookieMgr !== gblManager) {
2721
2745
  enabled = _isMgrEnabled(gblManager);
@@ -2724,6 +2748,7 @@
2724
2748
  },
2725
2749
  setEnabled: function (value) {
2726
2750
  _enabled = value !== false;
2751
+ cookieMgrConfig.enabled = value;
2727
2752
  },
2728
2753
  set: function (name, value, maxAgeSec, domain, path) {
2729
2754
  var result = false;
@@ -5270,6 +5295,7 @@
5270
5295
  exports.arrReduce = arrReduce;
5271
5296
  exports.asString = asString;
5272
5297
  exports.attachEvent = attachEvent;
5298
+ exports.blockDynamicConversion = blockDynamicConversion;
5273
5299
  exports.cfgDfBoolean = cfgDfBoolean;
5274
5300
  exports.cfgDfFunc = cfgDfFunc;
5275
5301
  exports.cfgDfMerge = cfgDfMerge;