@microsoft/applicationinsights-core-js 3.0.0-beta.2211-01 → 3.0.0-beta.2211-04

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 (101) hide show
  1. package/browser/applicationinsights-core-js.integrity.json +9 -9
  2. package/browser/applicationinsights-core-js.js +1093 -1237
  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 +91 -89
  7. package/dist/applicationinsights-core-js.api.md +11 -10
  8. package/dist/applicationinsights-core-js.d.ts +10 -9
  9. package/dist/applicationinsights-core-js.js +1093 -1237
  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 +10 -9
  14. package/dist-esm/Config/ConfigDefaults.js +1 -1
  15. package/dist-esm/Config/DynamicConfig.js +1 -1
  16. package/dist-esm/Config/DynamicProperty.js +1 -1
  17. package/dist-esm/Config/DynamicState.js +3 -3
  18. package/dist-esm/Config/DynamicState.js.map +1 -1
  19. package/dist-esm/Config/DynamicSupport.js +1 -1
  20. package/dist-esm/Config/IConfigDefaults.js +1 -1
  21. package/dist-esm/Config/IDynamicConfigHandler.js +1 -1
  22. package/dist-esm/Config/IDynamicPropertyHandler.js +1 -1
  23. package/dist-esm/Config/IDynamicWatcher.js +1 -1
  24. package/dist-esm/Config/_IDynamicConfigHandlerState.js +1 -1
  25. package/dist-esm/JavaScriptSDK/AggregationError.js +1 -1
  26. package/dist-esm/JavaScriptSDK/AppInsightsCore.js +115 -72
  27. package/dist-esm/JavaScriptSDK/AppInsightsCore.js.map +1 -1
  28. package/dist-esm/JavaScriptSDK/BaseTelemetryPlugin.js +1 -1
  29. package/dist-esm/JavaScriptSDK/Constants.js +8 -0
  30. package/dist-esm/JavaScriptSDK/Constants.js.map +1 -0
  31. package/dist-esm/JavaScriptSDK/CookieMgr.js +1 -1
  32. package/dist-esm/JavaScriptSDK/CoreUtils.js +1 -1
  33. package/dist-esm/JavaScriptSDK/DataCacheHelper.js +2 -2
  34. package/dist-esm/JavaScriptSDK/DataCacheHelper.js.map +1 -1
  35. package/dist-esm/JavaScriptSDK/DbgExtensionUtils.js +1 -1
  36. package/dist-esm/JavaScriptSDK/DiagnosticLogger.js +1 -1
  37. package/dist-esm/JavaScriptSDK/EnvUtils.js +1 -1
  38. package/dist-esm/JavaScriptSDK/EventHelpers.js +1 -1
  39. package/dist-esm/JavaScriptSDK/HelperFuncs.js +1 -1
  40. package/dist-esm/JavaScriptSDK/InstrumentHooks.js +1 -1
  41. package/dist-esm/JavaScriptSDK/InternalConstants.js +1 -1
  42. package/dist-esm/JavaScriptSDK/NotificationManager.js +1 -1
  43. package/dist-esm/JavaScriptSDK/PerfManager.js +1 -1
  44. package/dist-esm/JavaScriptSDK/ProcessTelemetryContext.js +5 -5
  45. package/dist-esm/JavaScriptSDK/ProcessTelemetryContext.js.map +1 -1
  46. package/dist-esm/JavaScriptSDK/RandomHelper.js +1 -1
  47. package/dist-esm/JavaScriptSDK/TelemetryHelpers.js +1 -1
  48. package/dist-esm/JavaScriptSDK/TelemetryInitializerPlugin.js +1 -1
  49. package/dist-esm/JavaScriptSDK/UnloadHandlerContainer.js +1 -1
  50. package/dist-esm/JavaScriptSDK/W3cTraceParent.js +1 -1
  51. package/dist-esm/JavaScriptSDK.Enums/EnumHelperFuncs.js +1 -1
  52. package/dist-esm/JavaScriptSDK.Enums/EventsDiscardedReason.js +1 -1
  53. package/dist-esm/JavaScriptSDK.Enums/LoggingEnums.js +1 -1
  54. package/dist-esm/JavaScriptSDK.Enums/SendRequestReason.js +1 -1
  55. package/dist-esm/JavaScriptSDK.Enums/TelemetryUnloadReason.js +1 -1
  56. package/dist-esm/JavaScriptSDK.Enums/TelemetryUpdateReason.js +1 -1
  57. package/dist-esm/JavaScriptSDK.Interfaces/IAppInsightsCore.js +1 -1
  58. package/dist-esm/JavaScriptSDK.Interfaces/IChannelControls.js +1 -1
  59. package/dist-esm/JavaScriptSDK.Interfaces/IConfiguration.js +1 -1
  60. package/dist-esm/JavaScriptSDK.Interfaces/ICookieMgr.js +1 -1
  61. package/dist-esm/JavaScriptSDK.Interfaces/IDbgExtension.js +1 -1
  62. package/dist-esm/JavaScriptSDK.Interfaces/IDiagnosticLogger.js +1 -1
  63. package/dist-esm/JavaScriptSDK.Interfaces/IDistributedTraceContext.js +1 -1
  64. package/dist-esm/JavaScriptSDK.Interfaces/IInstrumentHooks.js +1 -1
  65. package/dist-esm/JavaScriptSDK.Interfaces/INotificationListener.js +1 -1
  66. package/dist-esm/JavaScriptSDK.Interfaces/INotificationManager.js +1 -1
  67. package/dist-esm/JavaScriptSDK.Interfaces/IPerfEvent.js +1 -1
  68. package/dist-esm/JavaScriptSDK.Interfaces/IPerfManager.js +1 -1
  69. package/dist-esm/JavaScriptSDK.Interfaces/IProcessTelemetryContext.js +1 -1
  70. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryInitializers.js +1 -1
  71. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryItem.js +1 -1
  72. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryPlugin.js +1 -1
  73. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryPluginChain.js +1 -1
  74. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryUnloadState.js +1 -1
  75. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryUpdateState.js +1 -1
  76. package/dist-esm/JavaScriptSDK.Interfaces/ITraceParent.js +1 -1
  77. package/dist-esm/JavaScriptSDK.Interfaces/IUnloadHook.js +1 -1
  78. package/dist-esm/JavaScriptSDK.Interfaces/IUnloadableComponent.js +1 -1
  79. package/dist-esm/__DynamicConstants.js +17 -17
  80. package/dist-esm/__DynamicConstants.js.map +1 -1
  81. package/dist-esm/applicationinsights-core-js.js +1 -1
  82. package/package.json +1 -1
  83. package/src/JavaScriptSDK/AppInsightsCore.ts +126 -79
  84. package/src/JavaScriptSDK/Constants.ts +4 -0
  85. package/src/JavaScriptSDK.Interfaces/IAppInsightsCore.ts +4 -3
  86. package/src/JavaScriptSDK.Interfaces/IChannelControls.ts +4 -4
  87. package/types/Config/IConfigDefaults.d.ts +3 -3
  88. package/types/Config/IDynamicWatcher.d.ts +1 -1
  89. package/types/JavaScriptSDK/AppInsightsCore.d.ts +3 -2
  90. package/types/JavaScriptSDK/Constants.d.ts +1 -0
  91. package/types/JavaScriptSDK/UnloadHandlerContainer.d.ts +1 -1
  92. package/types/JavaScriptSDK.Enums/EventsDiscardedReason.d.ts +1 -1
  93. package/types/JavaScriptSDK.Enums/LoggingEnums.d.ts +2 -2
  94. package/types/JavaScriptSDK.Interfaces/IAppInsightsCore.d.ts +3 -2
  95. package/types/JavaScriptSDK.Interfaces/IChannelControls.d.ts +4 -4
  96. package/types/JavaScriptSDK.Interfaces/IInstrumentHooks.d.ts +1 -1
  97. package/types/__DynamicConstants.d.ts +4 -4
  98. package/dist-esm/JavaScriptSDK/ChannelController.js +0 -217
  99. package/dist-esm/JavaScriptSDK/ChannelController.js.map +0 -1
  100. package/src/JavaScriptSDK/ChannelController.ts +0 -274
  101. package/types/JavaScriptSDK/ChannelController.d.ts +0 -19
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Application Insights JavaScript SDK - Core, 3.0.0-beta.2211-01
2
+ * Application Insights JavaScript SDK - Core, 3.0.0-beta.2211-04
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
  (function (global, factory) {
@@ -782,6 +782,22 @@
782
782
  return _scheduleTimeoutWith(this, setTimeout, clearTimeout, _extractArgs(arguments, 0));
783
783
  }
784
784
 
785
+ function scheduleInterval(callback, timeout) {
786
+ var self = this;
787
+ var theArguments = arguments;
788
+ var intervalId = setInterval.apply(self, theArguments);
789
+ return {
790
+ cancel: function () {
791
+ clearInterval(intervalId);
792
+ },
793
+ refresh: function () {
794
+ clearInterval(intervalId);
795
+ intervalId = setInterval.apply(self, theArguments);
796
+ return this;
797
+ }
798
+ };
799
+ }
800
+
785
801
  var createEnumStyle = createEnum;
786
802
  var createValueMap = createTypeMap;
787
803
 
@@ -805,9 +821,12 @@
805
821
  var _DYN_APPLY = "apply";
806
822
  var _DYN_PUSH = "push";
807
823
  var _DYN_SPLICE = "splice";
824
+ var _DYN_CANCEL = "cancel";
808
825
  var _DYN_INITIALIZE = "initialize";
809
826
  var _DYN_IDENTIFIER = "identifier";
810
827
  var _DYN_IS_INITIALIZED = "isInitialized";
828
+ var _DYN_GET_PLUGIN = "getPlugin";
829
+ var _DYN_POLL_INTERNAL_LOGS = "pollInternalLogs";
811
830
  var _DYN_NAME = "name";
812
831
  var _DYN_TIME = "time";
813
832
  var _DYN_PROCESS_NEXT = "processNext";
@@ -818,10 +837,9 @@
818
837
  var _DYN_STOP_POLLING_INTERNA3 = "stopPollingInternalLogs";
819
838
  var _DYN_ON_COMPLETE = "onComplete";
820
839
  var _DYN_CALL = "call";
821
- var _DYN_GET_PLUGIN = "getPlugin";
822
- var _DYN_FLUSH = "flush";
823
840
  var _DYN_VERSION = "version";
824
841
  var _DYN_LOGGING_LEVEL_CONSOL4 = "loggingLevelConsole";
842
+ var _DYN_CREATE_NEW = "createNew";
825
843
  var _DYN_TEARDOWN = "teardown";
826
844
  var _DYN_MESSAGE_ID = "messageId";
827
845
  var _DYN_MESSAGE = "message";
@@ -831,8 +849,6 @@
831
849
  var _DYN_UPDATE = "update";
832
850
  var _DYN_GET_NEXT = "getNext";
833
851
  var _DYN_SET_NEXT_PLUGIN = "setNextPlugin";
834
- var _DYN_CREATE_NEW = "createNew";
835
- var _DYN_CONFIG = "config";
836
852
  var _DYN_USER_AGENT = "userAgent";
837
853
  var _DYN_SPLIT = "split";
838
854
  var _DYN_NODE_TYPE = "nodeType";
@@ -1709,7 +1725,7 @@
1709
1725
  }
1710
1726
 
1711
1727
  var _objDefineProperty = ObjDefineProperty;
1712
- var version = "3.0.0-beta.2211-01";
1728
+ var version = "3.0.0-beta.2211-04";
1713
1729
  var instanceName = "." + newId(6);
1714
1730
  var _dataUid = 0;
1715
1731
  function _createAccessor(target, prop, value) {
@@ -2043,7 +2059,7 @@
2043
2059
  if (_waitingHandlers) {
2044
2060
  var notifyHandlers = _waitingHandlers;
2045
2061
  _waitingHandlers = null;
2046
- _watcherTimer && _watcherTimer.cancel();
2062
+ _watcherTimer && _watcherTimer[_DYN_CANCEL ]();
2047
2063
  _watcherTimer = null;
2048
2064
  var watcherFailures_1 = [];
2049
2065
  arrForEach(notifyHandlers, function (handler) {
@@ -2203,6 +2219,8 @@
2203
2219
  createDynamicConfig(config, null, logger)[_DYN_WATCH ](configHandler);
2204
2220
  }
2205
2221
 
2222
+ var ChannelControllerPriority = 500;
2223
+
2206
2224
  var listenerFuncs = [STR_EVENTS_SENT, STR_EVENTS_DISCARDED, STR_EVENTS_SEND_REQUEST, STR_PERF_EVENT];
2207
2225
  var _aiNamespace = null;
2208
2226
  var _debugListener;
@@ -2419,1308 +2437,1114 @@
2419
2437
  _getLogger(logger)[_DYN_LOG_INTERNAL_MESSAGE ](severity, message);
2420
2438
  }
2421
2439
 
2422
- var strExecutionContextKey = "ctx";
2423
- var strParentContextKey = "ParentContextKey";
2424
- var strChildrenContextKey = "ChildrenContextKey";
2425
- var _defaultPerfManager = null;
2426
- var PerfEvent = /** @class */ (function () {
2427
- function PerfEvent(name, payloadDetails, isAsync) {
2428
- var _self = this;
2429
- _self.start = utcNow();
2430
- _self[_DYN_NAME ] = name;
2431
- _self[_DYN_IS_ASYNC ] = isAsync;
2432
- _self[_DYN_IS_CHILD_EVT ] = function () { return false; };
2433
- if (isFunction(payloadDetails)) {
2434
- var theDetails_1;
2435
- objDefineAccessors(_self, "payload", function () {
2436
- if (!theDetails_1 && isFunction(payloadDetails)) {
2437
- theDetails_1 = payloadDetails();
2438
- payloadDetails = null;
2439
- }
2440
- return theDetails_1;
2441
- });
2442
- }
2443
- _self[_DYN_GET_CTX ] = function (key) {
2444
- if (key) {
2445
- if (key === PerfEvent[strParentContextKey] || key === PerfEvent[strChildrenContextKey]) {
2446
- return _self[key];
2447
- }
2448
- return (_self[strExecutionContextKey] || {})[key];
2449
- }
2450
- return null;
2451
- };
2452
- _self[_DYN_SET_CTX ] = function (key, value) {
2453
- if (key) {
2454
- if (key === PerfEvent[strParentContextKey]) {
2455
- if (!_self[key]) {
2456
- _self[_DYN_IS_CHILD_EVT ] = function () { return true; };
2457
- }
2458
- _self[key] = value;
2459
- }
2460
- else if (key === PerfEvent[strChildrenContextKey]) {
2461
- _self[key] = value;
2462
- }
2463
- else {
2464
- var ctx = _self[strExecutionContextKey] = _self[strExecutionContextKey] || {};
2465
- ctx[key] = value;
2466
- }
2467
- }
2468
- };
2469
- _self[_DYN_COMPLETE ] = function () {
2470
- var childTime = 0;
2471
- var childEvts = _self[_DYN_GET_CTX ](PerfEvent[strChildrenContextKey]);
2472
- if (isArray(childEvts)) {
2473
- for (var lp = 0; lp < childEvts[_DYN_LENGTH ]; lp++) {
2474
- var childEvt = childEvts[lp];
2475
- if (childEvt) {
2476
- childTime += childEvt[_DYN_TIME ];
2477
- }
2478
- }
2479
- }
2480
- _self[_DYN_TIME ] = utcNow() - _self.start;
2481
- _self.exTime = _self[_DYN_TIME ] - childTime;
2482
- _self[_DYN_COMPLETE ] = function () { };
2483
- };
2484
- }
2485
- PerfEvent.ParentContextKey = "parent";
2486
- PerfEvent.ChildrenContextKey = "childEvts";
2487
- return PerfEvent;
2488
- }());
2489
- var PerfManager = /** @class */ (function () {
2490
- function PerfManager(manager) {
2491
- this.ctx = {};
2492
- dynamicProto(PerfManager, this, function (_self) {
2493
- _self.create = function (src, payloadDetails, isAsync) {
2494
- return new PerfEvent(src, payloadDetails, isAsync);
2495
- };
2496
- _self.fire = function (perfEvent) {
2497
- if (perfEvent) {
2498
- perfEvent[_DYN_COMPLETE ]();
2499
- if (manager && isFunction(manager[STR_PERF_EVENT ])) {
2500
- manager[STR_PERF_EVENT ](perfEvent);
2501
- }
2502
- }
2503
- };
2504
- _self[_DYN_SET_CTX ] = function (key, value) {
2505
- if (key) {
2506
- var ctx = _self[strExecutionContextKey] = _self[strExecutionContextKey] || {};
2507
- ctx[key] = value;
2508
- }
2509
- };
2510
- _self[_DYN_GET_CTX ] = function (key) {
2511
- return (_self[strExecutionContextKey] || {})[key];
2512
- };
2513
- });
2514
- }
2515
- PerfManager.__ieDyn=1;
2516
- return PerfManager;
2517
- }());
2518
- var doPerfActiveKey = "CoreUtils.doPerf";
2519
- function doPerf(mgrSource, getSource, func, details, isAsync) {
2520
- if (mgrSource) {
2521
- var perfMgr = mgrSource;
2522
- if (perfMgr[STR_GET_PERF_MGR]) {
2523
- perfMgr = perfMgr[STR_GET_PERF_MGR]();
2524
- }
2525
- if (perfMgr) {
2526
- var perfEvt = void 0;
2527
- var currentActive = perfMgr[_DYN_GET_CTX ](doPerfActiveKey);
2528
- try {
2529
- perfEvt = perfMgr.create(getSource(), details, isAsync);
2530
- if (perfEvt) {
2531
- if (currentActive && perfEvt[_DYN_SET_CTX ]) {
2532
- perfEvt[_DYN_SET_CTX ](PerfEvent[strParentContextKey], currentActive);
2533
- if (currentActive[_DYN_GET_CTX ] && currentActive[_DYN_SET_CTX ]) {
2534
- var children = currentActive[_DYN_GET_CTX ](PerfEvent[strChildrenContextKey]);
2535
- if (!children) {
2536
- children = [];
2537
- currentActive[_DYN_SET_CTX ](PerfEvent[strChildrenContextKey], children);
2538
- }
2539
- children[_DYN_PUSH ](perfEvt);
2540
- }
2541
- }
2542
- perfMgr[_DYN_SET_CTX ](doPerfActiveKey, perfEvt);
2543
- return func(perfEvt);
2544
- }
2545
- }
2546
- catch (ex) {
2547
- if (perfEvt && perfEvt[_DYN_SET_CTX ]) {
2548
- perfEvt[_DYN_SET_CTX ]("exception", ex);
2549
- }
2550
- }
2551
- finally {
2552
- if (perfEvt) {
2553
- perfMgr.fire(perfEvt);
2554
- }
2555
- perfMgr[_DYN_SET_CTX ](doPerfActiveKey, currentActive);
2556
- }
2557
- }
2440
+ var _a$2, _b;
2441
+ var strToGMTString = "toGMTString";
2442
+ var strToUTCString = "toUTCString";
2443
+ var strCookie = "cookie";
2444
+ var strExpires = "expires";
2445
+ var strIsCookieUseDisabled = "isCookieUseDisabled";
2446
+ var strDisableCookiesUsage = "disableCookiesUsage";
2447
+ var strConfigCookieMgr = "_ckMgr";
2448
+ var _supportsCookies = null;
2449
+ var _allowUaSameSite = null;
2450
+ var _parsedCookieValue = null;
2451
+ var _doc = getDocument();
2452
+ var _cookieCache = {};
2453
+ var _globalCookieConfig = {};
2454
+ var defaultConfig$1 = objDeepFreeze((_a$2 = {},
2455
+ _a$2[STR_DOMAIN] = { fb: "cookieDomain", dfVal: isNotNullOrUndefined },
2456
+ _a$2.path = { fb: "cookiePath", dfVal: isNotNullOrUndefined },
2457
+ _a$2.enabled = UNDEFINED_VALUE,
2458
+ _a$2));
2459
+ var rootDefaultConfig = (_b = {
2460
+ cookieCfg: {},
2461
+ cookieDomain: UNDEFINED_VALUE,
2462
+ cookiePath: UNDEFINED_VALUE
2463
+ },
2464
+ _b[strDisableCookiesUsage] = UNDEFINED_VALUE,
2465
+ _b);
2466
+ function _gblCookieMgr(config, logger) {
2467
+ var inst = createCookieMgr[strConfigCookieMgr] || _globalCookieConfig[strConfigCookieMgr];
2468
+ if (!inst) {
2469
+ inst = createCookieMgr[strConfigCookieMgr] = createCookieMgr(config, logger);
2470
+ _globalCookieConfig[strConfigCookieMgr] = inst;
2558
2471
  }
2559
- return func();
2560
- }
2561
- function setGblPerfMgr(perfManager) {
2562
- _defaultPerfManager = perfManager;
2563
- }
2564
- function getGblPerfMgr() {
2565
- return _defaultPerfManager;
2566
- }
2567
-
2568
- var Undefined = strShimUndefined;
2569
- function newGuid() {
2570
- var uuid = generateW3CId();
2571
- return strSubstring(uuid, 0, 8) + "-" + strSubstring(uuid, 8, 12) + "-" + strSubstring(uuid, 12, 16) + "-" + strSubstring(uuid, 16, 20) + "-" + strSubstring(uuid, 20);
2472
+ return inst;
2572
2473
  }
2573
- function generateW3CId() {
2574
- var hexValues = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"];
2575
- var oct = STR_EMPTY, tmp;
2576
- for (var a = 0; a < 4; a++) {
2577
- tmp = random32();
2578
- oct +=
2579
- hexValues[tmp & 0xF] +
2580
- hexValues[tmp >> 4 & 0xF] +
2581
- hexValues[tmp >> 8 & 0xF] +
2582
- hexValues[tmp >> 12 & 0xF] +
2583
- hexValues[tmp >> 16 & 0xF] +
2584
- hexValues[tmp >> 20 & 0xF] +
2585
- hexValues[tmp >> 24 & 0xF] +
2586
- hexValues[tmp >> 28 & 0xF];
2474
+ function _isMgrEnabled(cookieMgr) {
2475
+ if (cookieMgr) {
2476
+ return cookieMgr.isEnabled();
2587
2477
  }
2588
- var clockSequenceHi = hexValues[8 + (random32() & 0x03) | 0];
2589
- return strSubstr(oct, 0, 8) + strSubstr(oct, 9, 4) + "4" + strSubstr(oct, 13, 3) + clockSequenceHi + strSubstr(oct, 16, 3) + strSubstr(oct, 19, 12);
2478
+ return true;
2590
2479
  }
2591
-
2592
- var TRACE_PARENT_REGEX = /^([\da-f]{2})-([\da-f]{32})-([\da-f]{16})-([\da-f]{2})(-[^\s]{1,64})?$/i;
2593
- var DEFAULT_VERSION = "00";
2594
- var INVALID_VERSION = "ff";
2595
- var INVALID_TRACE_ID = "00000000000000000000000000000000";
2596
- var INVALID_SPAN_ID = "0000000000000000";
2597
- var SAMPLED_FLAG = 0x01;
2598
- function _isValid(value, len, invalidValue) {
2599
- if (value && value[_DYN_LENGTH ] === len && value !== invalidValue) {
2600
- return !!value.match(/^[\da-f]*$/i);
2480
+ function _isIgnoredCookie(cookieMgrCfg, name) {
2481
+ if (name && cookieMgrCfg && isArray(cookieMgrCfg.ignoreCookies)) {
2482
+ return arrIndexOf(cookieMgrCfg.ignoreCookies, name) !== -1;
2601
2483
  }
2602
2484
  return false;
2603
2485
  }
2604
- function _formatValue(value, len, defValue) {
2605
- if (_isValid(value, len)) {
2606
- return value;
2486
+ function _isBlockedCookie(cookieMgrCfg, name) {
2487
+ if (name && cookieMgrCfg && isArray(cookieMgrCfg.blockedCookies)) {
2488
+ if (arrIndexOf(cookieMgrCfg.blockedCookies, name) !== -1) {
2489
+ return true;
2490
+ }
2607
2491
  }
2608
- return defValue;
2492
+ return _isIgnoredCookie(cookieMgrCfg, name);
2609
2493
  }
2610
- function _formatFlags(value) {
2611
- if (isNaN(value) || value < 0 || value > 255) {
2612
- value = 0x01;
2613
- }
2614
- var result = value.toString(16);
2615
- while (result[_DYN_LENGTH ] < 2) {
2616
- result = "0" + result;
2494
+ function safeGetCookieMgr(core, config) {
2495
+ var cookieMgr;
2496
+ if (core) {
2497
+ cookieMgr = core.getCookieMgr();
2617
2498
  }
2618
- return result;
2619
- }
2620
- function createTraceParent(traceId, spanId, flags, version) {
2621
- var _a;
2622
- return _a = {},
2623
- _a[_DYN_VERSION ] = _isValid(version, 2, INVALID_VERSION) ? version : DEFAULT_VERSION,
2624
- _a[_DYN_TRACE_ID ] = isValidTraceId(traceId) ? traceId : generateW3CId(),
2625
- _a[_DYN_SPAN_ID ] = isValidSpanId(spanId) ? spanId : strLeft(generateW3CId(), 16),
2626
- _a.traceFlags = flags >= 0 && flags <= 0xFF ? flags : 1,
2627
- _a;
2628
- }
2629
- function parseTraceParent(value) {
2630
- var _a;
2631
- if (!value) {
2632
- return null;
2633
- }
2634
- if (isArray(value)) {
2635
- value = value[0] || "";
2636
- }
2637
- if (!value || !isString(value) || value[_DYN_LENGTH ] > 8192) {
2638
- return null;
2639
- }
2640
- var match = TRACE_PARENT_REGEX.exec(strTrim(value));
2641
- if (!match ||
2642
- match[1] === INVALID_VERSION ||
2643
- match[2] === INVALID_TRACE_ID ||
2644
- match[3] === INVALID_SPAN_ID) {
2645
- return null;
2646
- }
2647
- return _a = {},
2648
- _a[_DYN_VERSION ] = (match[1] || STR_EMPTY)[_DYN_TO_LOWER_CASE ](),
2649
- _a.traceId = (match[2] || STR_EMPTY)[_DYN_TO_LOWER_CASE ](),
2650
- _a.spanId = (match[3] || STR_EMPTY)[_DYN_TO_LOWER_CASE ](),
2651
- _a[_DYN_TRACE_FLAGS ] = parseInt(match[4], 16),
2652
- _a;
2653
- }
2654
- function isValidTraceId(value) {
2655
- return _isValid(value, 32, INVALID_TRACE_ID);
2656
- }
2657
- function isValidSpanId(value) {
2658
- return _isValid(value, 16, INVALID_SPAN_ID);
2659
- }
2660
- function isValidTraceParent(value) {
2661
- if (!value ||
2662
- !_isValid(value[_DYN_VERSION ], 2, INVALID_VERSION) ||
2663
- !_isValid(value[_DYN_TRACE_ID ], 32, INVALID_TRACE_ID) ||
2664
- !_isValid(value[_DYN_SPAN_ID ], 16, INVALID_SPAN_ID) ||
2665
- !_isValid(_formatFlags(value[_DYN_TRACE_FLAGS ]), 2)) {
2666
- return false;
2667
- }
2668
- return true;
2669
- }
2670
- function isSampledFlag(value) {
2671
- if (isValidTraceParent(value)) {
2672
- return (value[_DYN_TRACE_FLAGS ] & SAMPLED_FLAG) === SAMPLED_FLAG;
2673
- }
2674
- return false;
2675
- }
2676
- function formatTraceParent(value) {
2677
- if (value) {
2678
- var flags = _formatFlags(value[_DYN_TRACE_FLAGS ]);
2679
- if (!_isValid(flags, 2)) {
2680
- flags = "01";
2499
+ else if (config) {
2500
+ var cookieCfg = config.cookieCfg;
2501
+ if (cookieCfg && cookieCfg[strConfigCookieMgr]) {
2502
+ cookieMgr = cookieCfg[strConfigCookieMgr];
2681
2503
  }
2682
- var version = value[_DYN_VERSION ] || DEFAULT_VERSION;
2683
- if (version !== "00" && version !== "ff") {
2684
- version = DEFAULT_VERSION;
2504
+ else {
2505
+ cookieMgr = createCookieMgr(config);
2685
2506
  }
2686
- return "".concat(version.toLowerCase(), "-").concat(_formatValue(value.traceId, 32, INVALID_TRACE_ID).toLowerCase(), "-").concat(_formatValue(value.spanId, 16, INVALID_SPAN_ID).toLowerCase(), "-").concat(flags.toLowerCase());
2687
2507
  }
2688
- return "";
2689
- }
2690
- function findW3cTraceParent() {
2691
- var name = "traceparent";
2692
- var traceParent = parseTraceParent(findMetaTag(name));
2693
- if (!traceParent) {
2694
- traceParent = parseTraceParent(findNamedServerTiming(name));
2508
+ if (!cookieMgr) {
2509
+ cookieMgr = _gblCookieMgr(config, (core || {})[_DYN_LOGGER ]);
2695
2510
  }
2696
- return traceParent;
2697
- }
2698
-
2699
- var pluginStateData = createElmNodeData("plugin");
2700
- function _getPluginState(plugin) {
2701
- return pluginStateData.get(plugin, "state", {}, true);
2511
+ return cookieMgr;
2702
2512
  }
2703
- function initializePlugins(processContext, extensions) {
2704
- var initPlugins = [];
2705
- var lastPlugin = null;
2706
- var proxy = processContext[_DYN_GET_NEXT ]();
2707
- var pluginState;
2708
- while (proxy) {
2709
- var thePlugin = proxy[_DYN_GET_PLUGIN ]();
2710
- if (thePlugin) {
2711
- if (lastPlugin && lastPlugin[_DYN_SET_NEXT_PLUGIN ] && thePlugin[STR_PROCESS_TELEMETRY ]) {
2712
- lastPlugin[_DYN_SET_NEXT_PLUGIN ](thePlugin);
2713
- }
2714
- var isInitialized = false;
2715
- if (isFunction(thePlugin[_DYN_IS_INITIALIZED ])) {
2716
- isInitialized = thePlugin[_DYN_IS_INITIALIZED ]();
2717
- }
2718
- else {
2719
- pluginState = _getPluginState(thePlugin);
2720
- isInitialized = pluginState[_DYN_IS_INITIALIZED ];
2513
+ function createCookieMgr(rootConfig, logger) {
2514
+ var cookieMgrConfig;
2515
+ var _path;
2516
+ var _domain;
2517
+ var _enabled;
2518
+ var _getCookieFn;
2519
+ var _setCookieFn;
2520
+ var _delCookieFn;
2521
+ rootConfig = createDynamicConfig(rootConfig || _globalCookieConfig, null, logger).cfg;
2522
+ onConfigChange(rootConfig, function (details) {
2523
+ details[_DYN_SET_DF ](details.cfg, rootDefaultConfig);
2524
+ cookieMgrConfig = details[_DYN_SET_DF ](details.cfg.cookieCfg, defaultConfig$1);
2525
+ var isEnabled = cookieMgrConfig.enabled;
2526
+ if (isNullOrUndefined(isEnabled)) {
2527
+ var cookieEnabled = void 0;
2528
+ if (!isUndefined(rootConfig[strIsCookieUseDisabled])) {
2529
+ cookieEnabled = !rootConfig[strIsCookieUseDisabled];
2721
2530
  }
2722
- if (!isInitialized) {
2723
- initPlugins[_DYN_PUSH ](thePlugin);
2531
+ if (!isUndefined(rootConfig[strDisableCookiesUsage])) {
2532
+ cookieEnabled = !rootConfig[strDisableCookiesUsage];
2724
2533
  }
2725
- lastPlugin = thePlugin;
2726
- proxy = proxy[_DYN_GET_NEXT ]();
2727
- }
2728
- }
2729
- arrForEach(initPlugins, function (thePlugin) {
2730
- var core = processContext[STR_CORE ]();
2731
- thePlugin[_DYN_INITIALIZE ](processContext.getCfg(), core, extensions, processContext[_DYN_GET_NEXT ]());
2732
- pluginState = _getPluginState(thePlugin);
2733
- if (!thePlugin[STR_CORE] && !pluginState[STR_CORE]) {
2734
- pluginState[STR_CORE] = core;
2534
+ isEnabled = cookieEnabled;
2735
2535
  }
2736
- pluginState[_DYN_IS_INITIALIZED ] = true;
2737
- delete pluginState[_DYN_TEARDOWN ];
2738
- });
2739
- }
2740
- function sortPlugins(plugins) {
2741
- return plugins.sort(function (extA, extB) {
2742
- var result = 0;
2743
- if (extB) {
2744
- var bHasProcess = extB[STR_PROCESS_TELEMETRY];
2745
- if (extA[STR_PROCESS_TELEMETRY]) {
2746
- result = bHasProcess ? extA[STR_PRIORITY] - extB[STR_PRIORITY] : 1;
2747
- }
2748
- else if (bHasProcess) {
2749
- result = -1;
2536
+ _path = cookieMgrConfig[STR_PATH ] || "/";
2537
+ _domain = cookieMgrConfig[STR_DOMAIN ];
2538
+ _enabled = isEnabled !== false;
2539
+ _getCookieFn = cookieMgrConfig.getCookie || _getCookieValue;
2540
+ _setCookieFn = cookieMgrConfig.setCookie || _setCookieValue;
2541
+ _delCookieFn = cookieMgrConfig.delCookie || _setCookieValue;
2542
+ }, logger);
2543
+ var cookieMgr = {
2544
+ isEnabled: function () {
2545
+ var enabled = _enabled && areCookiesSupported(logger);
2546
+ var gblManager = _globalCookieConfig[strConfigCookieMgr];
2547
+ if (enabled && gblManager && cookieMgr !== gblManager) {
2548
+ enabled = _isMgrEnabled(gblManager);
2750
2549
  }
2751
- }
2752
- else {
2753
- result = extA ? 1 : -1;
2754
- }
2755
- return result;
2756
- });
2757
- }
2758
- function unloadComponents(components, unloadCtx, unloadState, asyncCallback) {
2759
- var idx = 0;
2760
- function _doUnload() {
2761
- while (idx < components[_DYN_LENGTH ]) {
2762
- var component = components[idx++];
2763
- if (component) {
2764
- var func = component._doUnload || component[_DYN__DO_TEARDOWN ];
2765
- if (isFunction(func)) {
2766
- if (func[_DYN_CALL ](component, unloadCtx, unloadState, _doUnload) === true) {
2767
- return true;
2550
+ return enabled;
2551
+ },
2552
+ setEnabled: function (value) {
2553
+ _enabled = value !== false;
2554
+ },
2555
+ set: function (name, value, maxAgeSec, domain, path) {
2556
+ var result = false;
2557
+ if (_isMgrEnabled(cookieMgr) && !_isBlockedCookie(cookieMgrConfig, name)) {
2558
+ var values = {};
2559
+ var theValue = strTrim(value || STR_EMPTY);
2560
+ var idx = strIndexOf(theValue, ";");
2561
+ if (idx !== -1) {
2562
+ theValue = strTrim(strLeft(value, idx));
2563
+ values = _extractParts(strSubstring(value, idx + 1));
2564
+ }
2565
+ setValue(values, STR_DOMAIN, domain || _domain, isTruthy, isUndefined);
2566
+ if (!isNullOrUndefined(maxAgeSec)) {
2567
+ var _isIE = isIE();
2568
+ if (isUndefined(values[strExpires])) {
2569
+ var nowMs = utcNow();
2570
+ var expireMs = nowMs + (maxAgeSec * 1000);
2571
+ if (expireMs > 0) {
2572
+ var expiry = new Date();
2573
+ expiry.setTime(expireMs);
2574
+ setValue(values, strExpires, _formatDate(expiry, !_isIE ? strToUTCString : strToGMTString) || _formatDate(expiry, _isIE ? strToGMTString : strToUTCString) || STR_EMPTY, isTruthy);
2575
+ }
2576
+ }
2577
+ if (!_isIE) {
2578
+ setValue(values, "max-age", STR_EMPTY + maxAgeSec, null, isUndefined);
2579
+ }
2580
+ }
2581
+ var location_1 = getLocation();
2582
+ if (location_1 && location_1.protocol === "https:") {
2583
+ setValue(values, "secure", null, null, isUndefined);
2584
+ if (_allowUaSameSite === null) {
2585
+ _allowUaSameSite = !uaDisallowsSameSiteNone((getNavigator() || {})[_DYN_USER_AGENT ]);
2586
+ }
2587
+ if (_allowUaSameSite) {
2588
+ setValue(values, "SameSite", "None", null, isUndefined);
2768
2589
  }
2769
2590
  }
2591
+ setValue(values, STR_PATH, path || _path, null, isUndefined);
2592
+ _setCookieFn(name, _formatCookieValue(theValue, values));
2593
+ result = true;
2770
2594
  }
2771
- }
2772
- }
2773
- return _doUnload();
2774
- }
2775
- function createDistributedTraceContext(parentCtx) {
2776
- var trace = {};
2777
- return {
2778
- getName: function () {
2779
- return trace[_DYN_NAME ];
2780
- },
2781
- setName: function (newValue) {
2782
- parentCtx && parentCtx.setName(newValue);
2783
- trace[_DYN_NAME ] = newValue;
2784
- },
2785
- getTraceId: function () {
2786
- return trace[_DYN_TRACE_ID ];
2595
+ return result;
2787
2596
  },
2788
- setTraceId: function (newValue) {
2789
- parentCtx && parentCtx.setTraceId(newValue);
2790
- if (isValidTraceId(newValue)) {
2791
- trace[_DYN_TRACE_ID ] = newValue;
2597
+ get: function (name) {
2598
+ var value = STR_EMPTY;
2599
+ if (_isMgrEnabled(cookieMgr) && !_isIgnoredCookie(cookieMgrConfig, name)) {
2600
+ value = _getCookieFn(name);
2792
2601
  }
2602
+ return value;
2793
2603
  },
2794
- getSpanId: function () {
2795
- return trace[_DYN_SPAN_ID ];
2796
- },
2797
- setSpanId: function (newValue) {
2798
- parentCtx && parentCtx.setSpanId(newValue);
2799
- if (isValidSpanId(newValue)) {
2800
- trace[_DYN_SPAN_ID ] = newValue;
2604
+ del: function (name, path) {
2605
+ var result = false;
2606
+ if (_isMgrEnabled(cookieMgr)) {
2607
+ result = cookieMgr.purge(name, path);
2801
2608
  }
2609
+ return result;
2802
2610
  },
2803
- getTraceFlags: function () {
2804
- return trace[_DYN_TRACE_FLAGS ];
2805
- },
2806
- setTraceFlags: function (newTraceFlags) {
2807
- parentCtx && parentCtx.setTraceFlags(newTraceFlags);
2808
- trace[_DYN_TRACE_FLAGS ] = newTraceFlags;
2611
+ purge: function (name, path) {
2612
+ var _a;
2613
+ var result = false;
2614
+ if (areCookiesSupported(logger)) {
2615
+ var values = (_a = {},
2616
+ _a[STR_PATH] = path ? path : "/",
2617
+ _a[strExpires] = "Thu, 01 Jan 1970 00:00:01 GMT",
2618
+ _a);
2619
+ if (!isIE()) {
2620
+ values["max-age"] = "0";
2621
+ }
2622
+ _delCookieFn(name, _formatCookieValue(STR_EMPTY, values));
2623
+ result = true;
2624
+ }
2625
+ return result;
2809
2626
  }
2810
2627
  };
2628
+ cookieMgr[strConfigCookieMgr] = cookieMgr;
2629
+ return cookieMgr;
2811
2630
  }
2812
-
2813
- var strTelemetryPluginChain = "TelemetryPluginChain";
2814
- var strHasRunFlags = "_hasRun";
2815
- var strGetTelCtx = "_getTelCtx";
2816
- var _chainId = 0;
2817
- function _getNextProxyStart(proxy, core, startAt) {
2818
- while (proxy) {
2819
- if (proxy[_DYN_GET_PLUGIN ]() === startAt) {
2820
- return proxy;
2631
+ function areCookiesSupported(logger) {
2632
+ if (_supportsCookies === null) {
2633
+ _supportsCookies = false;
2634
+ try {
2635
+ var doc = _doc || {};
2636
+ _supportsCookies = doc[strCookie] !== undefined;
2637
+ }
2638
+ catch (e) {
2639
+ _throwInternal(logger, 2 , 68 , "Cannot access document.cookie - " + getExceptionName(e), { exception: dumpObj(e) });
2821
2640
  }
2822
- proxy = proxy[_DYN_GET_NEXT ]();
2823
2641
  }
2824
- return createTelemetryProxyChain([startAt], core[_DYN_CONFIG ] || {}, core);
2642
+ return _supportsCookies;
2825
2643
  }
2826
- function _createInternalContext(telemetryChain, dynamicHandler, core, startAt) {
2827
- var _nextProxy = null;
2828
- var _onComplete = [];
2829
- if (!dynamicHandler) {
2830
- dynamicHandler = createDynamicConfig({}, null, core[_DYN_LOGGER ]);
2644
+ function _extractParts(theValue) {
2645
+ var values = {};
2646
+ if (theValue && theValue[_DYN_LENGTH ]) {
2647
+ var parts = strTrim(theValue)[_DYN_SPLIT ](";");
2648
+ arrForEach(parts, function (thePart) {
2649
+ thePart = strTrim(thePart || STR_EMPTY);
2650
+ if (thePart) {
2651
+ var idx = strIndexOf(thePart, "=");
2652
+ if (idx === -1) {
2653
+ values[thePart] = null;
2654
+ }
2655
+ else {
2656
+ values[strTrim(strLeft(thePart, idx))] = strTrim(strSubstring(thePart, idx + 1));
2657
+ }
2658
+ }
2659
+ });
2831
2660
  }
2832
- if (startAt !== null) {
2833
- _nextProxy = startAt ? _getNextProxyStart(telemetryChain, core, startAt) : telemetryChain;
2661
+ return values;
2662
+ }
2663
+ function _formatDate(theDate, func) {
2664
+ if (isFunction(theDate[func])) {
2665
+ return theDate[func]();
2834
2666
  }
2835
- var context = {
2836
- _next: _moveNext,
2837
- ctx: {
2838
- core: function () {
2839
- return core;
2840
- },
2841
- diagLog: function () {
2842
- return safeGetLogger(core, dynamicHandler.cfg);
2843
- },
2844
- getCfg: function () {
2845
- return dynamicHandler.cfg;
2846
- },
2847
- getExtCfg: _resolveExtCfg,
2848
- getConfig: _getConfig,
2849
- hasNext: function () {
2850
- return !!_nextProxy;
2851
- },
2852
- getNext: function () {
2853
- return _nextProxy;
2854
- },
2855
- setNext: function (nextPlugin) {
2856
- _nextProxy = nextPlugin;
2857
- },
2858
- iterate: _iterateChain,
2859
- onComplete: _addOnComplete
2667
+ return null;
2668
+ }
2669
+ function _formatCookieValue(value, values) {
2670
+ var cookieValue = value || STR_EMPTY;
2671
+ objForEachKey(values, function (name, theValue) {
2672
+ cookieValue += "; " + name + (!isNullOrUndefined(theValue) ? "=" + theValue : STR_EMPTY);
2673
+ });
2674
+ return cookieValue;
2675
+ }
2676
+ function _getCookieValue(name) {
2677
+ var cookieValue = STR_EMPTY;
2678
+ if (_doc) {
2679
+ var theCookie = _doc[strCookie] || STR_EMPTY;
2680
+ if (_parsedCookieValue !== theCookie) {
2681
+ _cookieCache = _extractParts(theCookie);
2682
+ _parsedCookieValue = theCookie;
2860
2683
  }
2861
- };
2862
- function _addOnComplete(onComplete, that) {
2863
- var args = [];
2864
- for (var _i = 2; _i < arguments.length; _i++) {
2865
- args[_i - 2] = arguments[_i];
2684
+ cookieValue = strTrim(_cookieCache[name] || STR_EMPTY);
2685
+ }
2686
+ return cookieValue;
2687
+ }
2688
+ function _setCookieValue(name, cookieValue) {
2689
+ if (_doc) {
2690
+ _doc[strCookie] = name + "=" + cookieValue;
2691
+ }
2692
+ }
2693
+ function uaDisallowsSameSiteNone(userAgent) {
2694
+ if (!isString(userAgent)) {
2695
+ return false;
2696
+ }
2697
+ if (strContains(userAgent, "CPU iPhone OS 12") || strContains(userAgent, "iPad; CPU OS 12")) {
2698
+ return true;
2699
+ }
2700
+ if (strContains(userAgent, "Macintosh; Intel Mac OS X 10_14") && strContains(userAgent, "Version/") && strContains(userAgent, "Safari")) {
2701
+ return true;
2702
+ }
2703
+ if (strContains(userAgent, "Macintosh; Intel Mac OS X 10_14") && strEndsWith(userAgent, "AppleWebKit/605.1.15 (KHTML, like Gecko)")) {
2704
+ return true;
2705
+ }
2706
+ if (strContains(userAgent, "Chrome/5") || strContains(userAgent, "Chrome/6")) {
2707
+ return true;
2708
+ }
2709
+ if (strContains(userAgent, "UnrealEngine") && !strContains(userAgent, "Chrome")) {
2710
+ return true;
2711
+ }
2712
+ if (strContains(userAgent, "UCBrowser/12") || strContains(userAgent, "UCBrowser/11")) {
2713
+ return true;
2714
+ }
2715
+ return false;
2716
+ }
2717
+
2718
+ var defaultValues$1 = {
2719
+ perfEvtsSendAll: false
2720
+ };
2721
+ function _runListeners(listeners, name, isAsync, callback) {
2722
+ arrForEach(listeners, function (listener) {
2723
+ if (listener && listener[name]) {
2724
+ if (isAsync) {
2725
+ scheduleTimeout(function () { return callback(listener); }, 0);
2726
+ }
2727
+ else {
2728
+ try {
2729
+ callback(listener);
2730
+ }
2731
+ catch (e) {
2732
+ }
2733
+ }
2866
2734
  }
2867
- if (onComplete) {
2868
- _onComplete[_DYN_PUSH ]({
2869
- func: onComplete,
2870
- self: !isUndefined(that) ? that : context.ctx,
2871
- args: args
2735
+ });
2736
+ }
2737
+ var NotificationManager = /** @class */ (function () {
2738
+ function NotificationManager(config) {
2739
+ this.listeners = [];
2740
+ var perfEvtsSendAll;
2741
+ var cfgHandler = createDynamicConfig(config, defaultValues$1);
2742
+ cfgHandler[_DYN_WATCH ](function (details) {
2743
+ perfEvtsSendAll = !!details.cfg.perfEvtsSendAll;
2744
+ });
2745
+ dynamicProto(NotificationManager, this, function (_self) {
2746
+ _self[_DYN_ADD_NOTIFICATION_LIS1 ] = function (listener) {
2747
+ _self.listeners[_DYN_PUSH ](listener);
2748
+ };
2749
+ _self[_DYN_REMOVE_NOTIFICATION_2 ] = function (listener) {
2750
+ var index = arrIndexOf(_self[_DYN_LISTENERS ], listener);
2751
+ while (index > -1) {
2752
+ _self.listeners[_DYN_SPLICE ](index, 1);
2753
+ index = arrIndexOf(_self[_DYN_LISTENERS ], listener);
2754
+ }
2755
+ };
2756
+ _self[STR_EVENTS_SENT ] = function (events) {
2757
+ _runListeners(_self[_DYN_LISTENERS ], STR_EVENTS_SENT, true, function (listener) {
2758
+ listener[STR_EVENTS_SENT ](events);
2759
+ });
2760
+ };
2761
+ _self[STR_EVENTS_DISCARDED ] = function (events, reason) {
2762
+ _runListeners(_self[_DYN_LISTENERS ], STR_EVENTS_DISCARDED, true, function (listener) {
2763
+ listener[STR_EVENTS_DISCARDED ](events, reason);
2764
+ });
2765
+ };
2766
+ _self[STR_EVENTS_SEND_REQUEST ] = function (sendReason, isAsync) {
2767
+ _runListeners(_self[_DYN_LISTENERS ], STR_EVENTS_SEND_REQUEST, isAsync, function (listener) {
2768
+ listener[STR_EVENTS_SEND_REQUEST ](sendReason, isAsync);
2769
+ });
2770
+ };
2771
+ _self[STR_PERF_EVENT ] = function (perfEvent) {
2772
+ if (perfEvent) {
2773
+ if (perfEvtsSendAll || !perfEvent[_DYN_IS_CHILD_EVT ]()) {
2774
+ _runListeners(_self[_DYN_LISTENERS ], STR_PERF_EVENT, false, function (listener) {
2775
+ if (perfEvent[_DYN_IS_ASYNC ]) {
2776
+ scheduleTimeout(function () { return listener[STR_PERF_EVENT ](perfEvent); }, 0);
2777
+ }
2778
+ else {
2779
+ listener[STR_PERF_EVENT ](perfEvent);
2780
+ }
2781
+ });
2782
+ }
2783
+ }
2784
+ };
2785
+ });
2786
+ }
2787
+ NotificationManager.__ieDyn=1;
2788
+ return NotificationManager;
2789
+ }());
2790
+
2791
+ var strExecutionContextKey = "ctx";
2792
+ var strParentContextKey = "ParentContextKey";
2793
+ var strChildrenContextKey = "ChildrenContextKey";
2794
+ var _defaultPerfManager = null;
2795
+ var PerfEvent = /** @class */ (function () {
2796
+ function PerfEvent(name, payloadDetails, isAsync) {
2797
+ var _self = this;
2798
+ _self.start = utcNow();
2799
+ _self[_DYN_NAME ] = name;
2800
+ _self[_DYN_IS_ASYNC ] = isAsync;
2801
+ _self[_DYN_IS_CHILD_EVT ] = function () { return false; };
2802
+ if (isFunction(payloadDetails)) {
2803
+ var theDetails_1;
2804
+ objDefineAccessors(_self, "payload", function () {
2805
+ if (!theDetails_1 && isFunction(payloadDetails)) {
2806
+ theDetails_1 = payloadDetails();
2807
+ payloadDetails = null;
2808
+ }
2809
+ return theDetails_1;
2872
2810
  });
2873
2811
  }
2874
- }
2875
- function _moveNext() {
2876
- var nextProxy = _nextProxy;
2877
- _nextProxy = nextProxy ? nextProxy[_DYN_GET_NEXT ]() : null;
2878
- if (!nextProxy) {
2879
- var onComplete = _onComplete;
2880
- if (onComplete && onComplete[_DYN_LENGTH ] > 0) {
2881
- arrForEach(onComplete, function (completeDetails) {
2882
- try {
2883
- completeDetails.func[_DYN_CALL ](completeDetails.self, completeDetails.args);
2884
- }
2885
- catch (e) {
2886
- _throwInternal(core[_DYN_LOGGER ], 2 , 73 , "Unexpected Exception during onComplete - " + dumpObj(e));
2887
- }
2888
- });
2889
- _onComplete = [];
2812
+ _self[_DYN_GET_CTX ] = function (key) {
2813
+ if (key) {
2814
+ if (key === PerfEvent[strParentContextKey] || key === PerfEvent[strChildrenContextKey]) {
2815
+ return _self[key];
2816
+ }
2817
+ return (_self[strExecutionContextKey] || {})[key];
2890
2818
  }
2891
- }
2892
- return nextProxy;
2893
- }
2894
- function _getExtCfg(identifier, createIfMissing) {
2895
- var idCfg = null;
2896
- var cfg = dynamicHandler.cfg;
2897
- if (cfg && identifier) {
2898
- var extCfg = cfg[STR_EXTENSION_CONFIG ];
2899
- if (!extCfg && createIfMissing) {
2900
- extCfg = {};
2819
+ return null;
2820
+ };
2821
+ _self[_DYN_SET_CTX ] = function (key, value) {
2822
+ if (key) {
2823
+ if (key === PerfEvent[strParentContextKey]) {
2824
+ if (!_self[key]) {
2825
+ _self[_DYN_IS_CHILD_EVT ] = function () { return true; };
2826
+ }
2827
+ _self[key] = value;
2828
+ }
2829
+ else if (key === PerfEvent[strChildrenContextKey]) {
2830
+ _self[key] = value;
2831
+ }
2832
+ else {
2833
+ var ctx = _self[strExecutionContextKey] = _self[strExecutionContextKey] || {};
2834
+ ctx[key] = value;
2835
+ }
2901
2836
  }
2902
- dynamicHandler.set(cfg, STR_EXTENSION_CONFIG, extCfg);
2903
- extCfg = cfg[STR_EXTENSION_CONFIG ];
2904
- if (extCfg) {
2905
- idCfg = extCfg[identifier];
2906
- if (!idCfg && createIfMissing) {
2907
- idCfg = {};
2837
+ };
2838
+ _self[_DYN_COMPLETE ] = function () {
2839
+ var childTime = 0;
2840
+ var childEvts = _self[_DYN_GET_CTX ](PerfEvent[strChildrenContextKey]);
2841
+ if (isArray(childEvts)) {
2842
+ for (var lp = 0; lp < childEvts[_DYN_LENGTH ]; lp++) {
2843
+ var childEvt = childEvts[lp];
2844
+ if (childEvt) {
2845
+ childTime += childEvt[_DYN_TIME ];
2846
+ }
2908
2847
  }
2909
- dynamicHandler.set(extCfg, identifier, idCfg);
2910
- idCfg = extCfg[identifier];
2911
2848
  }
2912
- }
2913
- return idCfg;
2849
+ _self[_DYN_TIME ] = utcNow() - _self.start;
2850
+ _self.exTime = _self[_DYN_TIME ] - childTime;
2851
+ _self[_DYN_COMPLETE ] = function () { };
2852
+ };
2914
2853
  }
2915
- function _resolveExtCfg(identifier, defaultValues) {
2916
- var newConfig = _getExtCfg(identifier, true);
2917
- if (defaultValues) {
2918
- objForEachKey(defaultValues, function (field, defaultValue) {
2919
- if (isNullOrUndefined(newConfig[field])) {
2920
- var cfgValue = dynamicHandler.cfg[field];
2921
- if (cfgValue || !isNullOrUndefined(cfgValue)) {
2922
- newConfig[field] = cfgValue;
2854
+ PerfEvent.ParentContextKey = "parent";
2855
+ PerfEvent.ChildrenContextKey = "childEvts";
2856
+ return PerfEvent;
2857
+ }());
2858
+ var PerfManager = /** @class */ (function () {
2859
+ function PerfManager(manager) {
2860
+ this.ctx = {};
2861
+ dynamicProto(PerfManager, this, function (_self) {
2862
+ _self.create = function (src, payloadDetails, isAsync) {
2863
+ return new PerfEvent(src, payloadDetails, isAsync);
2864
+ };
2865
+ _self.fire = function (perfEvent) {
2866
+ if (perfEvent) {
2867
+ perfEvent[_DYN_COMPLETE ]();
2868
+ if (manager && isFunction(manager[STR_PERF_EVENT ])) {
2869
+ manager[STR_PERF_EVENT ](perfEvent);
2923
2870
  }
2924
2871
  }
2925
- _applyDefaultValue(dynamicHandler, newConfig, field, defaultValue);
2926
- });
2927
- }
2928
- return dynamicHandler[_DYN_SET_DF ](newConfig, defaultValues);
2872
+ };
2873
+ _self[_DYN_SET_CTX ] = function (key, value) {
2874
+ if (key) {
2875
+ var ctx = _self[strExecutionContextKey] = _self[strExecutionContextKey] || {};
2876
+ ctx[key] = value;
2877
+ }
2878
+ };
2879
+ _self[_DYN_GET_CTX ] = function (key) {
2880
+ return (_self[strExecutionContextKey] || {})[key];
2881
+ };
2882
+ });
2929
2883
  }
2930
- function _getConfig(identifier, field, defaultValue) {
2931
- if (defaultValue === void 0) { defaultValue = false; }
2932
- var theValue;
2933
- var extConfig = _getExtCfg(identifier, false);
2934
- var rootConfig = dynamicHandler.cfg;
2935
- if (extConfig && (extConfig[field] || !isNullOrUndefined(extConfig[field]))) {
2936
- theValue = extConfig[field];
2937
- }
2938
- else if (rootConfig[field] || !isNullOrUndefined(rootConfig[field])) {
2939
- theValue = rootConfig[field];
2884
+ PerfManager.__ieDyn=1;
2885
+ return PerfManager;
2886
+ }());
2887
+ var doPerfActiveKey = "CoreUtils.doPerf";
2888
+ function doPerf(mgrSource, getSource, func, details, isAsync) {
2889
+ if (mgrSource) {
2890
+ var perfMgr = mgrSource;
2891
+ if (perfMgr[STR_GET_PERF_MGR]) {
2892
+ perfMgr = perfMgr[STR_GET_PERF_MGR]();
2940
2893
  }
2941
- return (theValue || !isNullOrUndefined(theValue)) ? theValue : defaultValue;
2942
- }
2943
- function _iterateChain(cb) {
2944
- var nextPlugin;
2945
- while (!!(nextPlugin = context._next())) {
2946
- var plugin = nextPlugin[_DYN_GET_PLUGIN ]();
2947
- if (plugin) {
2948
- cb(plugin);
2894
+ if (perfMgr) {
2895
+ var perfEvt = void 0;
2896
+ var currentActive = perfMgr[_DYN_GET_CTX ](doPerfActiveKey);
2897
+ try {
2898
+ perfEvt = perfMgr.create(getSource(), details, isAsync);
2899
+ if (perfEvt) {
2900
+ if (currentActive && perfEvt[_DYN_SET_CTX ]) {
2901
+ perfEvt[_DYN_SET_CTX ](PerfEvent[strParentContextKey], currentActive);
2902
+ if (currentActive[_DYN_GET_CTX ] && currentActive[_DYN_SET_CTX ]) {
2903
+ var children = currentActive[_DYN_GET_CTX ](PerfEvent[strChildrenContextKey]);
2904
+ if (!children) {
2905
+ children = [];
2906
+ currentActive[_DYN_SET_CTX ](PerfEvent[strChildrenContextKey], children);
2907
+ }
2908
+ children[_DYN_PUSH ](perfEvt);
2909
+ }
2910
+ }
2911
+ perfMgr[_DYN_SET_CTX ](doPerfActiveKey, perfEvt);
2912
+ return func(perfEvt);
2913
+ }
2914
+ }
2915
+ catch (ex) {
2916
+ if (perfEvt && perfEvt[_DYN_SET_CTX ]) {
2917
+ perfEvt[_DYN_SET_CTX ]("exception", ex);
2918
+ }
2919
+ }
2920
+ finally {
2921
+ if (perfEvt) {
2922
+ perfMgr.fire(perfEvt);
2923
+ }
2924
+ perfMgr[_DYN_SET_CTX ](doPerfActiveKey, currentActive);
2949
2925
  }
2950
2926
  }
2951
2927
  }
2952
- return context;
2928
+ return func();
2953
2929
  }
2954
- function createProcessTelemetryContext(telemetryChain, cfg, core, startAt) {
2955
- var config = createDynamicConfig(cfg);
2956
- var internalContext = _createInternalContext(telemetryChain, config, core, startAt);
2957
- var context = internalContext.ctx;
2958
- function _processNext(env) {
2959
- var nextPlugin = internalContext._next();
2960
- if (nextPlugin) {
2961
- nextPlugin[STR_PROCESS_TELEMETRY ](env, context);
2962
- }
2963
- return !nextPlugin;
2930
+ function setGblPerfMgr(perfManager) {
2931
+ _defaultPerfManager = perfManager;
2932
+ }
2933
+ function getGblPerfMgr() {
2934
+ return _defaultPerfManager;
2935
+ }
2936
+
2937
+ var Undefined = strShimUndefined;
2938
+ function newGuid() {
2939
+ var uuid = generateW3CId();
2940
+ return strSubstring(uuid, 0, 8) + "-" + strSubstring(uuid, 8, 12) + "-" + strSubstring(uuid, 12, 16) + "-" + strSubstring(uuid, 16, 20) + "-" + strSubstring(uuid, 20);
2941
+ }
2942
+ function generateW3CId() {
2943
+ var hexValues = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"];
2944
+ var oct = STR_EMPTY, tmp;
2945
+ for (var a = 0; a < 4; a++) {
2946
+ tmp = random32();
2947
+ oct +=
2948
+ hexValues[tmp & 0xF] +
2949
+ hexValues[tmp >> 4 & 0xF] +
2950
+ hexValues[tmp >> 8 & 0xF] +
2951
+ hexValues[tmp >> 12 & 0xF] +
2952
+ hexValues[tmp >> 16 & 0xF] +
2953
+ hexValues[tmp >> 20 & 0xF] +
2954
+ hexValues[tmp >> 24 & 0xF] +
2955
+ hexValues[tmp >> 28 & 0xF];
2964
2956
  }
2965
- function _createNew(plugins, startAt) {
2966
- if (plugins === void 0) { plugins = null; }
2967
- if (isArray(plugins)) {
2968
- plugins = createTelemetryProxyChain(plugins, config.cfg, core, startAt);
2969
- }
2970
- return createProcessTelemetryContext(plugins || context[_DYN_GET_NEXT ](), config.cfg, core, startAt);
2957
+ var clockSequenceHi = hexValues[8 + (random32() & 0x03) | 0];
2958
+ return strSubstr(oct, 0, 8) + strSubstr(oct, 9, 4) + "4" + strSubstr(oct, 13, 3) + clockSequenceHi + strSubstr(oct, 16, 3) + strSubstr(oct, 19, 12);
2959
+ }
2960
+
2961
+ var TRACE_PARENT_REGEX = /^([\da-f]{2})-([\da-f]{32})-([\da-f]{16})-([\da-f]{2})(-[^\s]{1,64})?$/i;
2962
+ var DEFAULT_VERSION = "00";
2963
+ var INVALID_VERSION = "ff";
2964
+ var INVALID_TRACE_ID = "00000000000000000000000000000000";
2965
+ var INVALID_SPAN_ID = "0000000000000000";
2966
+ var SAMPLED_FLAG = 0x01;
2967
+ function _isValid(value, len, invalidValue) {
2968
+ if (value && value[_DYN_LENGTH ] === len && value !== invalidValue) {
2969
+ return !!value.match(/^[\da-f]*$/i);
2971
2970
  }
2972
- context[_DYN_PROCESS_NEXT ] = _processNext;
2973
- context[_DYN_CREATE_NEW ] = _createNew;
2974
- return context;
2971
+ return false;
2975
2972
  }
2976
- function createProcessTelemetryUnloadContext(telemetryChain, core, startAt) {
2977
- var config = createDynamicConfig(core[_DYN_CONFIG ]);
2978
- var internalContext = _createInternalContext(telemetryChain, config, core, startAt);
2979
- var context = internalContext.ctx;
2980
- function _processNext(unloadState) {
2981
- var nextPlugin = internalContext._next();
2982
- nextPlugin && nextPlugin.unload(context, unloadState);
2983
- return !nextPlugin;
2973
+ function _formatValue(value, len, defValue) {
2974
+ if (_isValid(value, len)) {
2975
+ return value;
2984
2976
  }
2985
- function _createNew(plugins, startAt) {
2986
- if (plugins === void 0) { plugins = null; }
2987
- if (isArray(plugins)) {
2988
- plugins = createTelemetryProxyChain(plugins, config.cfg, core, startAt);
2989
- }
2990
- return createProcessTelemetryUnloadContext(plugins || context[_DYN_GET_NEXT ](), core, startAt);
2977
+ return defValue;
2978
+ }
2979
+ function _formatFlags(value) {
2980
+ if (isNaN(value) || value < 0 || value > 255) {
2981
+ value = 0x01;
2991
2982
  }
2992
- context[_DYN_PROCESS_NEXT ] = _processNext;
2993
- context[_DYN_CREATE_NEW ] = _createNew;
2994
- return context;
2983
+ var result = value.toString(16);
2984
+ while (result[_DYN_LENGTH ] < 2) {
2985
+ result = "0" + result;
2986
+ }
2987
+ return result;
2995
2988
  }
2996
- function createProcessTelemetryUpdateContext(telemetryChain, core, startAt) {
2997
- var config = createDynamicConfig(core[_DYN_CONFIG ]);
2998
- var internalContext = _createInternalContext(telemetryChain, config, core, startAt);
2999
- var context = internalContext.ctx;
3000
- function _processNext(updateState) {
3001
- return context.iterate(function (plugin) {
3002
- if (isFunction(plugin[_DYN_UPDATE ])) {
3003
- plugin[_DYN_UPDATE ](context, updateState);
3004
- }
3005
- });
2989
+ function createTraceParent(traceId, spanId, flags, version) {
2990
+ var _a;
2991
+ return _a = {},
2992
+ _a[_DYN_VERSION ] = _isValid(version, 2, INVALID_VERSION) ? version : DEFAULT_VERSION,
2993
+ _a[_DYN_TRACE_ID ] = isValidTraceId(traceId) ? traceId : generateW3CId(),
2994
+ _a[_DYN_SPAN_ID ] = isValidSpanId(spanId) ? spanId : strLeft(generateW3CId(), 16),
2995
+ _a.traceFlags = flags >= 0 && flags <= 0xFF ? flags : 1,
2996
+ _a;
2997
+ }
2998
+ function parseTraceParent(value) {
2999
+ var _a;
3000
+ if (!value) {
3001
+ return null;
3006
3002
  }
3007
- function _createNew(plugins, startAt) {
3008
- if (plugins === void 0) { plugins = null; }
3009
- if (isArray(plugins)) {
3010
- plugins = createTelemetryProxyChain(plugins, config.cfg, core, startAt);
3011
- }
3012
- return createProcessTelemetryUpdateContext(plugins || context[_DYN_GET_NEXT ](), core, startAt);
3003
+ if (isArray(value)) {
3004
+ value = value[0] || "";
3013
3005
  }
3014
- context[_DYN_PROCESS_NEXT ] = _processNext;
3015
- context[_DYN_CREATE_NEW ] = _createNew;
3016
- return context;
3017
- }
3018
- function createTelemetryProxyChain(plugins, config, core, startAt) {
3019
- var firstProxy = null;
3020
- var add = startAt ? false : true;
3021
- if (isArray(plugins) && plugins[_DYN_LENGTH ] > 0) {
3022
- var lastProxy_1 = null;
3023
- arrForEach(plugins, function (thePlugin) {
3024
- if (!add && startAt === thePlugin) {
3025
- add = true;
3026
- }
3027
- if (add && thePlugin && isFunction(thePlugin[STR_PROCESS_TELEMETRY ])) {
3028
- var newProxy = createTelemetryPluginProxy(thePlugin, config, core);
3029
- if (!firstProxy) {
3030
- firstProxy = newProxy;
3031
- }
3032
- if (lastProxy_1) {
3033
- lastProxy_1._setNext(newProxy);
3034
- }
3035
- lastProxy_1 = newProxy;
3036
- }
3037
- });
3006
+ if (!value || !isString(value) || value[_DYN_LENGTH ] > 8192) {
3007
+ return null;
3038
3008
  }
3039
- if (startAt && !firstProxy) {
3040
- return createTelemetryProxyChain([startAt], config, core);
3009
+ var match = TRACE_PARENT_REGEX.exec(strTrim(value));
3010
+ if (!match ||
3011
+ match[1] === INVALID_VERSION ||
3012
+ match[2] === INVALID_TRACE_ID ||
3013
+ match[3] === INVALID_SPAN_ID) {
3014
+ return null;
3041
3015
  }
3042
- return firstProxy;
3016
+ return _a = {},
3017
+ _a[_DYN_VERSION ] = (match[1] || STR_EMPTY)[_DYN_TO_LOWER_CASE ](),
3018
+ _a.traceId = (match[2] || STR_EMPTY)[_DYN_TO_LOWER_CASE ](),
3019
+ _a.spanId = (match[3] || STR_EMPTY)[_DYN_TO_LOWER_CASE ](),
3020
+ _a[_DYN_TRACE_FLAGS ] = parseInt(match[4], 16),
3021
+ _a;
3043
3022
  }
3044
- function createTelemetryPluginProxy(plugin, config, core) {
3045
- var nextProxy = null;
3046
- var hasProcessTelemetry = isFunction(plugin[STR_PROCESS_TELEMETRY ]);
3047
- var hasSetNext = isFunction(plugin[_DYN_SET_NEXT_PLUGIN ]);
3048
- var chainId;
3049
- if (plugin) {
3050
- chainId = plugin[_DYN_IDENTIFIER ] + "-" + plugin[STR_PRIORITY ] + "-" + _chainId++;
3023
+ function isValidTraceId(value) {
3024
+ return _isValid(value, 32, INVALID_TRACE_ID);
3025
+ }
3026
+ function isValidSpanId(value) {
3027
+ return _isValid(value, 16, INVALID_SPAN_ID);
3028
+ }
3029
+ function isValidTraceParent(value) {
3030
+ if (!value ||
3031
+ !_isValid(value[_DYN_VERSION ], 2, INVALID_VERSION) ||
3032
+ !_isValid(value[_DYN_TRACE_ID ], 32, INVALID_TRACE_ID) ||
3033
+ !_isValid(value[_DYN_SPAN_ID ], 16, INVALID_SPAN_ID) ||
3034
+ !_isValid(_formatFlags(value[_DYN_TRACE_FLAGS ]), 2)) {
3035
+ return false;
3051
3036
  }
3052
- else {
3053
- chainId = "Unknown-0-" + _chainId++;
3037
+ return true;
3038
+ }
3039
+ function isSampledFlag(value) {
3040
+ if (isValidTraceParent(value)) {
3041
+ return (value[_DYN_TRACE_FLAGS ] & SAMPLED_FLAG) === SAMPLED_FLAG;
3054
3042
  }
3055
- var proxyChain = {
3056
- getPlugin: function () {
3057
- return plugin;
3058
- },
3059
- getNext: function () {
3060
- return nextProxy;
3061
- },
3062
- processTelemetry: _processTelemetry,
3063
- unload: _unloadPlugin,
3064
- update: _updatePlugin,
3065
- _id: chainId,
3066
- _setNext: function (nextPlugin) {
3067
- nextProxy = nextPlugin;
3068
- }
3069
- };
3070
- function _getTelCtx() {
3071
- var itemCtx;
3072
- if (plugin && isFunction(plugin[strGetTelCtx])) {
3073
- itemCtx = plugin[strGetTelCtx]();
3043
+ return false;
3044
+ }
3045
+ function formatTraceParent(value) {
3046
+ if (value) {
3047
+ var flags = _formatFlags(value[_DYN_TRACE_FLAGS ]);
3048
+ if (!_isValid(flags, 2)) {
3049
+ flags = "01";
3074
3050
  }
3075
- if (!itemCtx) {
3076
- itemCtx = createProcessTelemetryContext(proxyChain, config, core);
3051
+ var version = value[_DYN_VERSION ] || DEFAULT_VERSION;
3052
+ if (version !== "00" && version !== "ff") {
3053
+ version = DEFAULT_VERSION;
3077
3054
  }
3078
- return itemCtx;
3055
+ return "".concat(version.toLowerCase(), "-").concat(_formatValue(value.traceId, 32, INVALID_TRACE_ID).toLowerCase(), "-").concat(_formatValue(value.spanId, 16, INVALID_SPAN_ID).toLowerCase(), "-").concat(flags.toLowerCase());
3079
3056
  }
3080
- function _processChain(itemCtx, processPluginFn, name, details, isAsync) {
3081
- var hasRun = false;
3082
- var identifier = plugin ? plugin[_DYN_IDENTIFIER ] : strTelemetryPluginChain;
3083
- var hasRunContext = itemCtx[strHasRunFlags];
3084
- if (!hasRunContext) {
3085
- hasRunContext = itemCtx[strHasRunFlags] = {};
3086
- }
3087
- itemCtx.setNext(nextProxy);
3088
- if (plugin) {
3089
- doPerf(itemCtx[STR_CORE ](), function () { return identifier + ":" + name; }, function () {
3090
- hasRunContext[chainId] = true;
3091
- try {
3092
- var nextId = nextProxy ? nextProxy._id : STR_EMPTY;
3093
- if (nextId) {
3094
- hasRunContext[nextId] = false;
3095
- }
3096
- hasRun = processPluginFn(itemCtx);
3097
- }
3098
- catch (error) {
3099
- var hasNextRun = nextProxy ? hasRunContext[nextProxy._id] : true;
3100
- if (hasNextRun) {
3101
- hasRun = true;
3102
- }
3103
- if (!nextProxy || !hasNextRun) {
3104
- _throwInternal(itemCtx[_DYN_DIAG_LOG ](), 1 , 73 , "Plugin [" + identifier + "] failed during " + name + " - " + dumpObj(error) + ", run flags: " + dumpObj(hasRunContext));
3105
- }
3106
- }
3107
- }, details, isAsync);
3108
- }
3109
- return hasRun;
3057
+ return "";
3058
+ }
3059
+ function findW3cTraceParent() {
3060
+ var name = "traceparent";
3061
+ var traceParent = parseTraceParent(findMetaTag(name));
3062
+ if (!traceParent) {
3063
+ traceParent = parseTraceParent(findNamedServerTiming(name));
3110
3064
  }
3111
- function _processTelemetry(env, itemCtx) {
3112
- itemCtx = itemCtx || _getTelCtx();
3113
- function _callProcessTelemetry(itemCtx) {
3114
- if (!plugin || !hasProcessTelemetry) {
3115
- return false;
3065
+ return traceParent;
3066
+ }
3067
+
3068
+ var pluginStateData = createElmNodeData("plugin");
3069
+ function _getPluginState(plugin) {
3070
+ return pluginStateData.get(plugin, "state", {}, true);
3071
+ }
3072
+ function initializePlugins(processContext, extensions) {
3073
+ var initPlugins = [];
3074
+ var lastPlugin = null;
3075
+ var proxy = processContext[_DYN_GET_NEXT ]();
3076
+ var pluginState;
3077
+ while (proxy) {
3078
+ var thePlugin = proxy[_DYN_GET_PLUGIN ]();
3079
+ if (thePlugin) {
3080
+ if (lastPlugin && lastPlugin[_DYN_SET_NEXT_PLUGIN ] && thePlugin[STR_PROCESS_TELEMETRY ]) {
3081
+ lastPlugin[_DYN_SET_NEXT_PLUGIN ](thePlugin);
3116
3082
  }
3117
- var pluginState = _getPluginState(plugin);
3118
- if (pluginState[_DYN_TEARDOWN ] || pluginState[STR_DISABLED]) {
3119
- return false;
3083
+ var isInitialized = false;
3084
+ if (isFunction(thePlugin[_DYN_IS_INITIALIZED ])) {
3085
+ isInitialized = thePlugin[_DYN_IS_INITIALIZED ]();
3120
3086
  }
3121
- if (hasSetNext) {
3122
- plugin[_DYN_SET_NEXT_PLUGIN ](nextProxy);
3087
+ else {
3088
+ pluginState = _getPluginState(thePlugin);
3089
+ isInitialized = pluginState[_DYN_IS_INITIALIZED ];
3123
3090
  }
3124
- plugin[STR_PROCESS_TELEMETRY ](env, itemCtx);
3125
- return true;
3126
- }
3127
- if (!_processChain(itemCtx, _callProcessTelemetry, "processTelemetry", function () { return ({ item: env }); }, !(env.sync))) {
3128
- itemCtx[_DYN_PROCESS_NEXT ](env);
3129
- }
3130
- }
3131
- function _unloadPlugin(unloadCtx, unloadState) {
3132
- function _callTeardown() {
3133
- var hasRun = false;
3134
- if (plugin) {
3135
- var pluginState = _getPluginState(plugin);
3136
- var pluginCore = plugin[STR_CORE] || pluginState[STR_CORE ];
3137
- if (plugin && (!pluginCore || pluginCore === unloadCtx.core()) && !pluginState[_DYN_TEARDOWN ]) {
3138
- pluginState[STR_CORE ] = null;
3139
- pluginState[_DYN_TEARDOWN ] = true;
3140
- pluginState[_DYN_IS_INITIALIZED ] = false;
3141
- if (plugin[_DYN_TEARDOWN ] && plugin[_DYN_TEARDOWN ](unloadCtx, unloadState) === true) {
3142
- hasRun = true;
3143
- }
3144
- }
3091
+ if (!isInitialized) {
3092
+ initPlugins[_DYN_PUSH ](thePlugin);
3145
3093
  }
3146
- return hasRun;
3147
- }
3148
- if (!_processChain(unloadCtx, _callTeardown, "unload", function () { }, unloadState[_DYN_IS_ASYNC ])) {
3149
- unloadCtx[_DYN_PROCESS_NEXT ](unloadState);
3094
+ lastPlugin = thePlugin;
3095
+ proxy = proxy[_DYN_GET_NEXT ]();
3150
3096
  }
3151
3097
  }
3152
- function _updatePlugin(updateCtx, updateState) {
3153
- function _callUpdate() {
3154
- var hasRun = false;
3155
- if (plugin) {
3156
- var pluginState = _getPluginState(plugin);
3157
- var pluginCore = plugin[STR_CORE] || pluginState[STR_CORE ];
3158
- if (plugin && (!pluginCore || pluginCore === updateCtx.core()) && !pluginState[_DYN_TEARDOWN ]) {
3159
- if (plugin[_DYN_UPDATE ] && plugin[_DYN_UPDATE ](updateCtx, updateState) === true) {
3160
- hasRun = true;
3161
- }
3162
- }
3163
- }
3164
- return hasRun;
3165
- }
3166
- if (!_processChain(updateCtx, _callUpdate, "update", function () { }, false)) {
3167
- updateCtx[_DYN_PROCESS_NEXT ](updateState);
3098
+ arrForEach(initPlugins, function (thePlugin) {
3099
+ var core = processContext[STR_CORE ]();
3100
+ thePlugin[_DYN_INITIALIZE ](processContext.getCfg(), core, extensions, processContext[_DYN_GET_NEXT ]());
3101
+ pluginState = _getPluginState(thePlugin);
3102
+ if (!thePlugin[STR_CORE] && !pluginState[STR_CORE]) {
3103
+ pluginState[STR_CORE] = core;
3168
3104
  }
3169
- }
3170
- return objFreeze(proxyChain);
3171
- }
3172
- var ProcessTelemetryContext = /** @class */ (function () {
3173
- function ProcessTelemetryContext(pluginChain, config, core, startAt) {
3174
- var _self = this;
3175
- var context = createProcessTelemetryContext(pluginChain, config, core, startAt);
3176
- proxyFunctions(_self, context, objKeys(context));
3177
- }
3178
- return ProcessTelemetryContext;
3179
- }());
3180
-
3181
- var ChannelControllerPriority = 500;
3182
- var ChannelValidationMessage = "Channel has invalid priority - ";
3183
- function _addChannelQueue(channelQueue, queue, core) {
3184
- if (queue && isArray(queue) && queue[_DYN_LENGTH ] > 0) {
3185
- queue = queue.sort(function (a, b) {
3186
- return a[STR_PRIORITY ] - b[STR_PRIORITY ];
3187
- });
3188
- arrForEach(queue, function (queueItem) {
3189
- if (queueItem[STR_PRIORITY ] < ChannelControllerPriority) {
3190
- throwError(ChannelValidationMessage + queueItem[_DYN_IDENTIFIER ]);
3191
- }
3192
- });
3193
- channelQueue[_DYN_PUSH ]({
3194
- queue: objFreeze(queue),
3195
- chain: createTelemetryProxyChain(queue, core[_DYN_CONFIG ], core)
3196
- });
3197
- }
3105
+ pluginState[_DYN_IS_INITIALIZED ] = true;
3106
+ delete pluginState[_DYN_TEARDOWN ];
3107
+ });
3198
3108
  }
3199
- function createChannelControllerPlugin(channelQueue, core) {
3200
- function _getTelCtx() {
3201
- return createProcessTelemetryContext(null, core[_DYN_CONFIG ], core, null);
3202
- }
3203
- function _processChannelQueue(theChannels, itemCtx, processFn, onComplete) {
3204
- var waiting = theChannels ? (theChannels[_DYN_LENGTH ] + 1) : 1;
3205
- function _runChainOnComplete() {
3206
- waiting--;
3207
- if (waiting === 0) {
3208
- onComplete && onComplete();
3209
- onComplete = null;
3109
+ function sortPlugins(plugins) {
3110
+ return plugins.sort(function (extA, extB) {
3111
+ var result = 0;
3112
+ if (extB) {
3113
+ var bHasProcess = extB[STR_PROCESS_TELEMETRY];
3114
+ if (extA[STR_PROCESS_TELEMETRY]) {
3115
+ result = bHasProcess ? extA[STR_PRIORITY] - extB[STR_PRIORITY] : 1;
3116
+ }
3117
+ else if (bHasProcess) {
3118
+ result = -1;
3210
3119
  }
3211
3120
  }
3212
- if (waiting > 0) {
3213
- arrForEach(theChannels, function (channels) {
3214
- if (channels && channels.queue[_DYN_LENGTH ] > 0) {
3215
- var channelChain = channels.chain;
3216
- var chainCtx = itemCtx[_DYN_CREATE_NEW ](channelChain);
3217
- chainCtx[_DYN_ON_COMPLETE ](_runChainOnComplete);
3218
- processFn(chainCtx);
3219
- }
3220
- else {
3221
- waiting--;
3222
- }
3223
- });
3121
+ else {
3122
+ result = extA ? 1 : -1;
3224
3123
  }
3225
- _runChainOnComplete();
3226
- }
3227
- function _doUpdate(updateCtx, updateState) {
3228
- var theUpdateState = updateState || {
3229
- reason: 0
3230
- };
3231
- _processChannelQueue(channelQueue, updateCtx, function (chainCtx) {
3232
- chainCtx[_DYN_PROCESS_NEXT ](theUpdateState);
3233
- }, function () {
3234
- updateCtx[_DYN_PROCESS_NEXT ](theUpdateState);
3235
- });
3236
- return true;
3237
- }
3238
- function _doTeardown(unloadCtx, unloadState) {
3239
- var theUnloadState = unloadState || {
3240
- reason: 0 ,
3241
- isAsync: false
3242
- };
3243
- _processChannelQueue(channelQueue, unloadCtx, function (chainCtx) {
3244
- chainCtx[_DYN_PROCESS_NEXT ](theUnloadState);
3245
- }, function () {
3246
- unloadCtx[_DYN_PROCESS_NEXT ](theUnloadState);
3247
- isInitialized = false;
3248
- });
3249
- return true;
3250
- }
3251
- function _getChannel(pluginIdentifier) {
3252
- var thePlugin = null;
3253
- if (channelQueue && channelQueue[_DYN_LENGTH ] > 0) {
3254
- arrForEach(channelQueue, function (channels) {
3255
- if (channels && channels.queue[_DYN_LENGTH ] > 0) {
3256
- arrForEach(channels.queue, function (ext) {
3257
- if (ext[_DYN_IDENTIFIER ] === pluginIdentifier) {
3258
- thePlugin = ext;
3259
- return -1;
3260
- }
3261
- });
3262
- if (thePlugin) {
3263
- return -1;
3124
+ return result;
3125
+ });
3126
+ }
3127
+ function unloadComponents(components, unloadCtx, unloadState, asyncCallback) {
3128
+ var idx = 0;
3129
+ function _doUnload() {
3130
+ while (idx < components[_DYN_LENGTH ]) {
3131
+ var component = components[idx++];
3132
+ if (component) {
3133
+ var func = component._doUnload || component[_DYN__DO_TEARDOWN ];
3134
+ if (isFunction(func)) {
3135
+ if (func[_DYN_CALL ](component, unloadCtx, unloadState, _doUnload) === true) {
3136
+ return true;
3264
3137
  }
3265
3138
  }
3266
- });
3139
+ }
3267
3140
  }
3268
- return thePlugin;
3269
3141
  }
3270
- var isInitialized = false;
3271
- var channelController = {
3272
- identifier: "ChannelControllerPlugin",
3273
- priority: ChannelControllerPriority,
3274
- initialize: function (config, core, extensions, pluginChain) {
3275
- isInitialized = true;
3276
- arrForEach(channelQueue, function (channels) {
3277
- if (channels && channels.queue[_DYN_LENGTH ] > 0) {
3278
- initializePlugins(createProcessTelemetryContext(channels.chain, config, core), extensions);
3279
- }
3280
- });
3142
+ return _doUnload();
3143
+ }
3144
+ function createDistributedTraceContext(parentCtx) {
3145
+ var trace = {};
3146
+ return {
3147
+ getName: function () {
3148
+ return trace[_DYN_NAME ];
3281
3149
  },
3282
- isInitialized: function () {
3283
- return isInitialized;
3150
+ setName: function (newValue) {
3151
+ parentCtx && parentCtx.setName(newValue);
3152
+ trace[_DYN_NAME ] = newValue;
3284
3153
  },
3285
- processTelemetry: function (item, itemCtx) {
3286
- _processChannelQueue(channelQueue, itemCtx || _getTelCtx(), function (chainCtx) {
3287
- chainCtx[_DYN_PROCESS_NEXT ](item);
3288
- }, function () {
3289
- itemCtx[_DYN_PROCESS_NEXT ](item);
3290
- });
3154
+ getTraceId: function () {
3155
+ return trace[_DYN_TRACE_ID ];
3291
3156
  },
3292
- update: _doUpdate,
3293
- pause: function () {
3294
- _processChannelQueue(channelQueue, _getTelCtx(), function (chainCtx) {
3295
- chainCtx.iterate(function (plugin) {
3296
- plugin.pause && plugin.pause();
3297
- });
3298
- }, null);
3157
+ setTraceId: function (newValue) {
3158
+ parentCtx && parentCtx.setTraceId(newValue);
3159
+ if (isValidTraceId(newValue)) {
3160
+ trace[_DYN_TRACE_ID ] = newValue;
3161
+ }
3299
3162
  },
3300
- resume: function () {
3301
- _processChannelQueue(channelQueue, _getTelCtx(), function (chainCtx) {
3302
- chainCtx.iterate(function (plugin) {
3303
- plugin.resume && plugin.resume();
3304
- });
3305
- }, null);
3163
+ getSpanId: function () {
3164
+ return trace[_DYN_SPAN_ID ];
3306
3165
  },
3307
- teardown: _doTeardown,
3308
- getChannel: _getChannel,
3309
- flush: function (isAsync, callBack, sendReason, cbTimeout) {
3310
- var waiting = 1;
3311
- var doneIterating = false;
3312
- var cbTimer = null;
3313
- cbTimeout = cbTimeout || 5000;
3314
- function doCallback() {
3315
- waiting--;
3316
- if (doneIterating && waiting === 0) {
3317
- cbTimer && cbTimer.cancel();
3318
- cbTimer = null;
3319
- callBack && callBack(doneIterating);
3320
- callBack = null;
3321
- }
3322
- }
3323
- _processChannelQueue(channelQueue, _getTelCtx(), function (chainCtx) {
3324
- chainCtx.iterate(function (plugin) {
3325
- if (plugin[_DYN_FLUSH ]) {
3326
- waiting++;
3327
- var handled_1 = false;
3328
- if (!plugin[_DYN_FLUSH ](isAsync, function () {
3329
- handled_1 = true;
3330
- doCallback();
3331
- }, sendReason)) {
3332
- if (!handled_1) {
3333
- if (isAsync && cbTimer == null) {
3334
- cbTimer = scheduleTimeout(function () {
3335
- cbTimer = null;
3336
- doCallback();
3337
- }, cbTimeout);
3338
- }
3339
- else {
3340
- doCallback();
3341
- }
3342
- }
3343
- }
3344
- }
3345
- });
3346
- }, function () {
3347
- doneIterating = true;
3348
- doCallback();
3349
- });
3350
- return true;
3166
+ setSpanId: function (newValue) {
3167
+ parentCtx && parentCtx.setSpanId(newValue);
3168
+ if (isValidSpanId(newValue)) {
3169
+ trace[_DYN_SPAN_ID ] = newValue;
3170
+ }
3171
+ },
3172
+ getTraceFlags: function () {
3173
+ return trace[_DYN_TRACE_FLAGS ];
3351
3174
  },
3352
- _setQueue: function (queue) {
3353
- channelQueue = queue;
3175
+ setTraceFlags: function (newTraceFlags) {
3176
+ parentCtx && parentCtx.setTraceFlags(newTraceFlags);
3177
+ trace[_DYN_TRACE_FLAGS ] = newTraceFlags;
3354
3178
  }
3355
3179
  };
3356
- return channelController;
3357
- }
3358
- function createChannelQueues(channels, extensions, core) {
3359
- var channelQueue = [];
3360
- if (channels) {
3361
- arrForEach(channels, function (queue) { return _addChannelQueue(channelQueue, queue, core); });
3362
- }
3363
- if (extensions) {
3364
- var extensionQueue_1 = [];
3365
- arrForEach(extensions, function (plugin) {
3366
- if (plugin[STR_PRIORITY ] > ChannelControllerPriority) {
3367
- extensionQueue_1[_DYN_PUSH ](plugin);
3368
- }
3369
- });
3370
- _addChannelQueue(channelQueue, extensionQueue_1, core);
3371
- }
3372
- return channelQueue;
3373
3180
  }
3374
3181
 
3375
- var _a$2, _b;
3376
- var strToGMTString = "toGMTString";
3377
- var strToUTCString = "toUTCString";
3378
- var strCookie = "cookie";
3379
- var strExpires = "expires";
3380
- var strIsCookieUseDisabled = "isCookieUseDisabled";
3381
- var strDisableCookiesUsage = "disableCookiesUsage";
3382
- var strConfigCookieMgr = "_ckMgr";
3383
- var _supportsCookies = null;
3384
- var _allowUaSameSite = null;
3385
- var _parsedCookieValue = null;
3386
- var _doc = getDocument();
3387
- var _cookieCache = {};
3388
- var _globalCookieConfig = {};
3389
- var defaultConfig$1 = objDeepFreeze((_a$2 = {},
3390
- _a$2[STR_DOMAIN] = { fb: "cookieDomain", dfVal: isNotNullOrUndefined },
3391
- _a$2.path = { fb: "cookiePath", dfVal: isNotNullOrUndefined },
3392
- _a$2.enabled = UNDEFINED_VALUE,
3393
- _a$2));
3394
- var rootDefaultConfig = (_b = {
3395
- cookieCfg: {},
3396
- cookieDomain: UNDEFINED_VALUE,
3397
- cookiePath: UNDEFINED_VALUE
3398
- },
3399
- _b[strDisableCookiesUsage] = UNDEFINED_VALUE,
3400
- _b);
3401
- function _gblCookieMgr(config, logger) {
3402
- var inst = createCookieMgr[strConfigCookieMgr] || _globalCookieConfig[strConfigCookieMgr];
3403
- if (!inst) {
3404
- inst = createCookieMgr[strConfigCookieMgr] = createCookieMgr(config, logger);
3405
- _globalCookieConfig[strConfigCookieMgr] = inst;
3406
- }
3407
- return inst;
3408
- }
3409
- function _isMgrEnabled(cookieMgr) {
3410
- if (cookieMgr) {
3411
- return cookieMgr.isEnabled();
3412
- }
3413
- return true;
3414
- }
3415
- function _isIgnoredCookie(cookieMgrCfg, name) {
3416
- if (name && cookieMgrCfg && isArray(cookieMgrCfg.ignoreCookies)) {
3417
- return arrIndexOf(cookieMgrCfg.ignoreCookies, name) !== -1;
3418
- }
3419
- return false;
3420
- }
3421
- function _isBlockedCookie(cookieMgrCfg, name) {
3422
- if (name && cookieMgrCfg && isArray(cookieMgrCfg.blockedCookies)) {
3423
- if (arrIndexOf(cookieMgrCfg.blockedCookies, name) !== -1) {
3424
- return true;
3182
+ var strTelemetryPluginChain = "TelemetryPluginChain";
3183
+ var strHasRunFlags = "_hasRun";
3184
+ var strGetTelCtx = "_getTelCtx";
3185
+ var _chainId = 0;
3186
+ function _getNextProxyStart(proxy, core, startAt) {
3187
+ while (proxy) {
3188
+ if (proxy[_DYN_GET_PLUGIN ]() === startAt) {
3189
+ return proxy;
3425
3190
  }
3191
+ proxy = proxy[_DYN_GET_NEXT ]();
3426
3192
  }
3427
- return _isIgnoredCookie(cookieMgrCfg, name);
3193
+ return createTelemetryProxyChain([startAt], core.config || {}, core);
3428
3194
  }
3429
- function safeGetCookieMgr(core, config) {
3430
- var cookieMgr;
3431
- if (core) {
3432
- cookieMgr = core.getCookieMgr();
3433
- }
3434
- else if (config) {
3435
- var cookieCfg = config.cookieCfg;
3436
- if (cookieCfg && cookieCfg[strConfigCookieMgr]) {
3437
- cookieMgr = cookieCfg[strConfigCookieMgr];
3438
- }
3439
- else {
3440
- cookieMgr = createCookieMgr(config);
3441
- }
3195
+ function _createInternalContext(telemetryChain, dynamicHandler, core, startAt) {
3196
+ var _nextProxy = null;
3197
+ var _onComplete = [];
3198
+ if (!dynamicHandler) {
3199
+ dynamicHandler = createDynamicConfig({}, null, core[_DYN_LOGGER ]);
3442
3200
  }
3443
- if (!cookieMgr) {
3444
- cookieMgr = _gblCookieMgr(config, (core || {})[_DYN_LOGGER ]);
3201
+ if (startAt !== null) {
3202
+ _nextProxy = startAt ? _getNextProxyStart(telemetryChain, core, startAt) : telemetryChain;
3445
3203
  }
3446
- return cookieMgr;
3447
- }
3448
- function createCookieMgr(rootConfig, logger) {
3449
- var cookieMgrConfig;
3450
- var _path;
3451
- var _domain;
3452
- var _enabled;
3453
- var _getCookieFn;
3454
- var _setCookieFn;
3455
- var _delCookieFn;
3456
- rootConfig = createDynamicConfig(rootConfig || _globalCookieConfig, null, logger).cfg;
3457
- onConfigChange(rootConfig, function (details) {
3458
- details[_DYN_SET_DF ](details.cfg, rootDefaultConfig);
3459
- cookieMgrConfig = details[_DYN_SET_DF ](details.cfg.cookieCfg, defaultConfig$1);
3460
- var isEnabled = cookieMgrConfig.enabled;
3461
- if (isNullOrUndefined(isEnabled)) {
3462
- var cookieEnabled = void 0;
3463
- if (!isUndefined(rootConfig[strIsCookieUseDisabled])) {
3464
- cookieEnabled = !rootConfig[strIsCookieUseDisabled];
3465
- }
3466
- if (!isUndefined(rootConfig[strDisableCookiesUsage])) {
3467
- cookieEnabled = !rootConfig[strDisableCookiesUsage];
3468
- }
3469
- isEnabled = cookieEnabled;
3470
- }
3471
- _path = cookieMgrConfig[STR_PATH ] || "/";
3472
- _domain = cookieMgrConfig[STR_DOMAIN ];
3473
- _enabled = isEnabled !== false;
3474
- _getCookieFn = cookieMgrConfig.getCookie || _getCookieValue;
3475
- _setCookieFn = cookieMgrConfig.setCookie || _setCookieValue;
3476
- _delCookieFn = cookieMgrConfig.delCookie || _setCookieValue;
3477
- }, logger);
3478
- var cookieMgr = {
3479
- isEnabled: function () {
3480
- var enabled = _enabled && areCookiesSupported(logger);
3481
- var gblManager = _globalCookieConfig[strConfigCookieMgr];
3482
- if (enabled && gblManager && cookieMgr !== gblManager) {
3483
- enabled = _isMgrEnabled(gblManager);
3484
- }
3485
- return enabled;
3486
- },
3487
- setEnabled: function (value) {
3488
- _enabled = value !== false;
3489
- },
3490
- set: function (name, value, maxAgeSec, domain, path) {
3491
- var result = false;
3492
- if (_isMgrEnabled(cookieMgr) && !_isBlockedCookie(cookieMgrConfig, name)) {
3493
- var values = {};
3494
- var theValue = strTrim(value || STR_EMPTY);
3495
- var idx = strIndexOf(theValue, ";");
3496
- if (idx !== -1) {
3497
- theValue = strTrim(strLeft(value, idx));
3498
- values = _extractParts(strSubstring(value, idx + 1));
3499
- }
3500
- setValue(values, STR_DOMAIN, domain || _domain, isTruthy, isUndefined);
3501
- if (!isNullOrUndefined(maxAgeSec)) {
3502
- var _isIE = isIE();
3503
- if (isUndefined(values[strExpires])) {
3504
- var nowMs = utcNow();
3505
- var expireMs = nowMs + (maxAgeSec * 1000);
3506
- if (expireMs > 0) {
3507
- var expiry = new Date();
3508
- expiry.setTime(expireMs);
3509
- setValue(values, strExpires, _formatDate(expiry, !_isIE ? strToUTCString : strToGMTString) || _formatDate(expiry, _isIE ? strToGMTString : strToUTCString) || STR_EMPTY, isTruthy);
3510
- }
3511
- }
3512
- if (!_isIE) {
3513
- setValue(values, "max-age", STR_EMPTY + maxAgeSec, null, isUndefined);
3514
- }
3515
- }
3516
- var location_1 = getLocation();
3517
- if (location_1 && location_1.protocol === "https:") {
3518
- setValue(values, "secure", null, null, isUndefined);
3519
- if (_allowUaSameSite === null) {
3520
- _allowUaSameSite = !uaDisallowsSameSiteNone((getNavigator() || {})[_DYN_USER_AGENT ]);
3204
+ var context = {
3205
+ _next: _moveNext,
3206
+ ctx: {
3207
+ core: function () {
3208
+ return core;
3209
+ },
3210
+ diagLog: function () {
3211
+ return safeGetLogger(core, dynamicHandler.cfg);
3212
+ },
3213
+ getCfg: function () {
3214
+ return dynamicHandler.cfg;
3215
+ },
3216
+ getExtCfg: _resolveExtCfg,
3217
+ getConfig: _getConfig,
3218
+ hasNext: function () {
3219
+ return !!_nextProxy;
3220
+ },
3221
+ getNext: function () {
3222
+ return _nextProxy;
3223
+ },
3224
+ setNext: function (nextPlugin) {
3225
+ _nextProxy = nextPlugin;
3226
+ },
3227
+ iterate: _iterateChain,
3228
+ onComplete: _addOnComplete
3229
+ }
3230
+ };
3231
+ function _addOnComplete(onComplete, that) {
3232
+ var args = [];
3233
+ for (var _i = 2; _i < arguments.length; _i++) {
3234
+ args[_i - 2] = arguments[_i];
3235
+ }
3236
+ if (onComplete) {
3237
+ _onComplete[_DYN_PUSH ]({
3238
+ func: onComplete,
3239
+ self: !isUndefined(that) ? that : context.ctx,
3240
+ args: args
3241
+ });
3242
+ }
3243
+ }
3244
+ function _moveNext() {
3245
+ var nextProxy = _nextProxy;
3246
+ _nextProxy = nextProxy ? nextProxy[_DYN_GET_NEXT ]() : null;
3247
+ if (!nextProxy) {
3248
+ var onComplete = _onComplete;
3249
+ if (onComplete && onComplete[_DYN_LENGTH ] > 0) {
3250
+ arrForEach(onComplete, function (completeDetails) {
3251
+ try {
3252
+ completeDetails.func[_DYN_CALL ](completeDetails.self, completeDetails.args);
3521
3253
  }
3522
- if (_allowUaSameSite) {
3523
- setValue(values, "SameSite", "None", null, isUndefined);
3254
+ catch (e) {
3255
+ _throwInternal(core[_DYN_LOGGER ], 2 , 73 , "Unexpected Exception during onComplete - " + dumpObj(e));
3524
3256
  }
3525
- }
3526
- setValue(values, STR_PATH, path || _path, null, isUndefined);
3527
- _setCookieFn(name, _formatCookieValue(theValue, values));
3528
- result = true;
3257
+ });
3258
+ _onComplete = [];
3529
3259
  }
3530
- return result;
3531
- },
3532
- get: function (name) {
3533
- var value = STR_EMPTY;
3534
- if (_isMgrEnabled(cookieMgr) && !_isIgnoredCookie(cookieMgrConfig, name)) {
3535
- value = _getCookieFn(name);
3260
+ }
3261
+ return nextProxy;
3262
+ }
3263
+ function _getExtCfg(identifier, createIfMissing) {
3264
+ var idCfg = null;
3265
+ var cfg = dynamicHandler.cfg;
3266
+ if (cfg && identifier) {
3267
+ var extCfg = cfg[STR_EXTENSION_CONFIG ];
3268
+ if (!extCfg && createIfMissing) {
3269
+ extCfg = {};
3536
3270
  }
3537
- return value;
3538
- },
3539
- del: function (name, path) {
3540
- var result = false;
3541
- if (_isMgrEnabled(cookieMgr)) {
3542
- result = cookieMgr.purge(name, path);
3271
+ dynamicHandler.set(cfg, STR_EXTENSION_CONFIG, extCfg);
3272
+ extCfg = cfg[STR_EXTENSION_CONFIG ];
3273
+ if (extCfg) {
3274
+ idCfg = extCfg[identifier];
3275
+ if (!idCfg && createIfMissing) {
3276
+ idCfg = {};
3277
+ }
3278
+ dynamicHandler.set(extCfg, identifier, idCfg);
3279
+ idCfg = extCfg[identifier];
3543
3280
  }
3544
- return result;
3545
- },
3546
- purge: function (name, path) {
3547
- var _a;
3548
- var result = false;
3549
- if (areCookiesSupported(logger)) {
3550
- var values = (_a = {},
3551
- _a[STR_PATH] = path ? path : "/",
3552
- _a[strExpires] = "Thu, 01 Jan 1970 00:00:01 GMT",
3553
- _a);
3554
- if (!isIE()) {
3555
- values["max-age"] = "0";
3281
+ }
3282
+ return idCfg;
3283
+ }
3284
+ function _resolveExtCfg(identifier, defaultValues) {
3285
+ var newConfig = _getExtCfg(identifier, true);
3286
+ if (defaultValues) {
3287
+ objForEachKey(defaultValues, function (field, defaultValue) {
3288
+ if (isNullOrUndefined(newConfig[field])) {
3289
+ var cfgValue = dynamicHandler.cfg[field];
3290
+ if (cfgValue || !isNullOrUndefined(cfgValue)) {
3291
+ newConfig[field] = cfgValue;
3292
+ }
3556
3293
  }
3557
- _delCookieFn(name, _formatCookieValue(STR_EMPTY, values));
3558
- result = true;
3294
+ _applyDefaultValue(dynamicHandler, newConfig, field, defaultValue);
3295
+ });
3296
+ }
3297
+ return dynamicHandler[_DYN_SET_DF ](newConfig, defaultValues);
3298
+ }
3299
+ function _getConfig(identifier, field, defaultValue) {
3300
+ if (defaultValue === void 0) { defaultValue = false; }
3301
+ var theValue;
3302
+ var extConfig = _getExtCfg(identifier, false);
3303
+ var rootConfig = dynamicHandler.cfg;
3304
+ if (extConfig && (extConfig[field] || !isNullOrUndefined(extConfig[field]))) {
3305
+ theValue = extConfig[field];
3306
+ }
3307
+ else if (rootConfig[field] || !isNullOrUndefined(rootConfig[field])) {
3308
+ theValue = rootConfig[field];
3309
+ }
3310
+ return (theValue || !isNullOrUndefined(theValue)) ? theValue : defaultValue;
3311
+ }
3312
+ function _iterateChain(cb) {
3313
+ var nextPlugin;
3314
+ while (!!(nextPlugin = context._next())) {
3315
+ var plugin = nextPlugin[_DYN_GET_PLUGIN ]();
3316
+ if (plugin) {
3317
+ cb(plugin);
3559
3318
  }
3560
- return result;
3561
3319
  }
3562
- };
3563
- cookieMgr[strConfigCookieMgr] = cookieMgr;
3564
- return cookieMgr;
3320
+ }
3321
+ return context;
3565
3322
  }
3566
- function areCookiesSupported(logger) {
3567
- if (_supportsCookies === null) {
3568
- _supportsCookies = false;
3569
- try {
3570
- var doc = _doc || {};
3571
- _supportsCookies = doc[strCookie] !== undefined;
3323
+ function createProcessTelemetryContext(telemetryChain, cfg, core, startAt) {
3324
+ var config = createDynamicConfig(cfg);
3325
+ var internalContext = _createInternalContext(telemetryChain, config, core, startAt);
3326
+ var context = internalContext.ctx;
3327
+ function _processNext(env) {
3328
+ var nextPlugin = internalContext._next();
3329
+ if (nextPlugin) {
3330
+ nextPlugin[STR_PROCESS_TELEMETRY ](env, context);
3572
3331
  }
3573
- catch (e) {
3574
- _throwInternal(logger, 2 , 68 , "Cannot access document.cookie - " + getExceptionName(e), { exception: dumpObj(e) });
3332
+ return !nextPlugin;
3333
+ }
3334
+ function _createNew(plugins, startAt) {
3335
+ if (plugins === void 0) { plugins = null; }
3336
+ if (isArray(plugins)) {
3337
+ plugins = createTelemetryProxyChain(plugins, config.cfg, core, startAt);
3575
3338
  }
3339
+ return createProcessTelemetryContext(plugins || context[_DYN_GET_NEXT ](), config.cfg, core, startAt);
3576
3340
  }
3577
- return _supportsCookies;
3341
+ context[_DYN_PROCESS_NEXT ] = _processNext;
3342
+ context[_DYN_CREATE_NEW ] = _createNew;
3343
+ return context;
3578
3344
  }
3579
- function _extractParts(theValue) {
3580
- var values = {};
3581
- if (theValue && theValue[_DYN_LENGTH ]) {
3582
- var parts = strTrim(theValue)[_DYN_SPLIT ](";");
3583
- arrForEach(parts, function (thePart) {
3584
- thePart = strTrim(thePart || STR_EMPTY);
3585
- if (thePart) {
3586
- var idx = strIndexOf(thePart, "=");
3587
- if (idx === -1) {
3588
- values[thePart] = null;
3589
- }
3590
- else {
3591
- values[strTrim(strLeft(thePart, idx))] = strTrim(strSubstring(thePart, idx + 1));
3592
- }
3345
+ function createProcessTelemetryUnloadContext(telemetryChain, core, startAt) {
3346
+ var config = createDynamicConfig(core.config);
3347
+ var internalContext = _createInternalContext(telemetryChain, config, core, startAt);
3348
+ var context = internalContext.ctx;
3349
+ function _processNext(unloadState) {
3350
+ var nextPlugin = internalContext._next();
3351
+ nextPlugin && nextPlugin.unload(context, unloadState);
3352
+ return !nextPlugin;
3353
+ }
3354
+ function _createNew(plugins, startAt) {
3355
+ if (plugins === void 0) { plugins = null; }
3356
+ if (isArray(plugins)) {
3357
+ plugins = createTelemetryProxyChain(plugins, config.cfg, core, startAt);
3358
+ }
3359
+ return createProcessTelemetryUnloadContext(plugins || context[_DYN_GET_NEXT ](), core, startAt);
3360
+ }
3361
+ context[_DYN_PROCESS_NEXT ] = _processNext;
3362
+ context[_DYN_CREATE_NEW ] = _createNew;
3363
+ return context;
3364
+ }
3365
+ function createProcessTelemetryUpdateContext(telemetryChain, core, startAt) {
3366
+ var config = createDynamicConfig(core.config);
3367
+ var internalContext = _createInternalContext(telemetryChain, config, core, startAt);
3368
+ var context = internalContext.ctx;
3369
+ function _processNext(updateState) {
3370
+ return context.iterate(function (plugin) {
3371
+ if (isFunction(plugin[_DYN_UPDATE ])) {
3372
+ plugin[_DYN_UPDATE ](context, updateState);
3593
3373
  }
3594
3374
  });
3595
3375
  }
3596
- return values;
3597
- }
3598
- function _formatDate(theDate, func) {
3599
- if (isFunction(theDate[func])) {
3600
- return theDate[func]();
3376
+ function _createNew(plugins, startAt) {
3377
+ if (plugins === void 0) { plugins = null; }
3378
+ if (isArray(plugins)) {
3379
+ plugins = createTelemetryProxyChain(plugins, config.cfg, core, startAt);
3380
+ }
3381
+ return createProcessTelemetryUpdateContext(plugins || context[_DYN_GET_NEXT ](), core, startAt);
3601
3382
  }
3602
- return null;
3603
- }
3604
- function _formatCookieValue(value, values) {
3605
- var cookieValue = value || STR_EMPTY;
3606
- objForEachKey(values, function (name, theValue) {
3607
- cookieValue += "; " + name + (!isNullOrUndefined(theValue) ? "=" + theValue : STR_EMPTY);
3608
- });
3609
- return cookieValue;
3383
+ context[_DYN_PROCESS_NEXT ] = _processNext;
3384
+ context[_DYN_CREATE_NEW ] = _createNew;
3385
+ return context;
3610
3386
  }
3611
- function _getCookieValue(name) {
3612
- var cookieValue = STR_EMPTY;
3613
- if (_doc) {
3614
- var theCookie = _doc[strCookie] || STR_EMPTY;
3615
- if (_parsedCookieValue !== theCookie) {
3616
- _cookieCache = _extractParts(theCookie);
3617
- _parsedCookieValue = theCookie;
3618
- }
3619
- cookieValue = strTrim(_cookieCache[name] || STR_EMPTY);
3387
+ function createTelemetryProxyChain(plugins, config, core, startAt) {
3388
+ var firstProxy = null;
3389
+ var add = startAt ? false : true;
3390
+ if (isArray(plugins) && plugins[_DYN_LENGTH ] > 0) {
3391
+ var lastProxy_1 = null;
3392
+ arrForEach(plugins, function (thePlugin) {
3393
+ if (!add && startAt === thePlugin) {
3394
+ add = true;
3395
+ }
3396
+ if (add && thePlugin && isFunction(thePlugin[STR_PROCESS_TELEMETRY ])) {
3397
+ var newProxy = createTelemetryPluginProxy(thePlugin, config, core);
3398
+ if (!firstProxy) {
3399
+ firstProxy = newProxy;
3400
+ }
3401
+ if (lastProxy_1) {
3402
+ lastProxy_1._setNext(newProxy);
3403
+ }
3404
+ lastProxy_1 = newProxy;
3405
+ }
3406
+ });
3620
3407
  }
3621
- return cookieValue;
3622
- }
3623
- function _setCookieValue(name, cookieValue) {
3624
- if (_doc) {
3625
- _doc[strCookie] = name + "=" + cookieValue;
3408
+ if (startAt && !firstProxy) {
3409
+ return createTelemetryProxyChain([startAt], config, core);
3626
3410
  }
3411
+ return firstProxy;
3627
3412
  }
3628
- function uaDisallowsSameSiteNone(userAgent) {
3629
- if (!isString(userAgent)) {
3630
- return false;
3631
- }
3632
- if (strContains(userAgent, "CPU iPhone OS 12") || strContains(userAgent, "iPad; CPU OS 12")) {
3633
- return true;
3634
- }
3635
- if (strContains(userAgent, "Macintosh; Intel Mac OS X 10_14") && strContains(userAgent, "Version/") && strContains(userAgent, "Safari")) {
3636
- return true;
3637
- }
3638
- if (strContains(userAgent, "Macintosh; Intel Mac OS X 10_14") && strEndsWith(userAgent, "AppleWebKit/605.1.15 (KHTML, like Gecko)")) {
3639
- return true;
3640
- }
3641
- if (strContains(userAgent, "Chrome/5") || strContains(userAgent, "Chrome/6")) {
3642
- return true;
3413
+ function createTelemetryPluginProxy(plugin, config, core) {
3414
+ var nextProxy = null;
3415
+ var hasProcessTelemetry = isFunction(plugin[STR_PROCESS_TELEMETRY ]);
3416
+ var hasSetNext = isFunction(plugin[_DYN_SET_NEXT_PLUGIN ]);
3417
+ var chainId;
3418
+ if (plugin) {
3419
+ chainId = plugin[_DYN_IDENTIFIER ] + "-" + plugin[STR_PRIORITY ] + "-" + _chainId++;
3643
3420
  }
3644
- if (strContains(userAgent, "UnrealEngine") && !strContains(userAgent, "Chrome")) {
3645
- return true;
3421
+ else {
3422
+ chainId = "Unknown-0-" + _chainId++;
3646
3423
  }
3647
- if (strContains(userAgent, "UCBrowser/12") || strContains(userAgent, "UCBrowser/11")) {
3648
- return true;
3424
+ var proxyChain = {
3425
+ getPlugin: function () {
3426
+ return plugin;
3427
+ },
3428
+ getNext: function () {
3429
+ return nextProxy;
3430
+ },
3431
+ processTelemetry: _processTelemetry,
3432
+ unload: _unloadPlugin,
3433
+ update: _updatePlugin,
3434
+ _id: chainId,
3435
+ _setNext: function (nextPlugin) {
3436
+ nextProxy = nextPlugin;
3437
+ }
3438
+ };
3439
+ function _getTelCtx() {
3440
+ var itemCtx;
3441
+ if (plugin && isFunction(plugin[strGetTelCtx])) {
3442
+ itemCtx = plugin[strGetTelCtx]();
3443
+ }
3444
+ if (!itemCtx) {
3445
+ itemCtx = createProcessTelemetryContext(proxyChain, config, core);
3446
+ }
3447
+ return itemCtx;
3649
3448
  }
3650
- return false;
3651
- }
3652
-
3653
- var defaultValues$1 = {
3654
- perfEvtsSendAll: false
3655
- };
3656
- function _runListeners(listeners, name, isAsync, callback) {
3657
- arrForEach(listeners, function (listener) {
3658
- if (listener && listener[name]) {
3659
- if (isAsync) {
3660
- scheduleTimeout(function () { return callback(listener); }, 0);
3661
- }
3662
- else {
3449
+ function _processChain(itemCtx, processPluginFn, name, details, isAsync) {
3450
+ var hasRun = false;
3451
+ var identifier = plugin ? plugin[_DYN_IDENTIFIER ] : strTelemetryPluginChain;
3452
+ var hasRunContext = itemCtx[strHasRunFlags];
3453
+ if (!hasRunContext) {
3454
+ hasRunContext = itemCtx[strHasRunFlags] = {};
3455
+ }
3456
+ itemCtx.setNext(nextProxy);
3457
+ if (plugin) {
3458
+ doPerf(itemCtx[STR_CORE ](), function () { return identifier + ":" + name; }, function () {
3459
+ hasRunContext[chainId] = true;
3663
3460
  try {
3664
- callback(listener);
3461
+ var nextId = nextProxy ? nextProxy._id : STR_EMPTY;
3462
+ if (nextId) {
3463
+ hasRunContext[nextId] = false;
3464
+ }
3465
+ hasRun = processPluginFn(itemCtx);
3665
3466
  }
3666
- catch (e) {
3467
+ catch (error) {
3468
+ var hasNextRun = nextProxy ? hasRunContext[nextProxy._id] : true;
3469
+ if (hasNextRun) {
3470
+ hasRun = true;
3471
+ }
3472
+ if (!nextProxy || !hasNextRun) {
3473
+ _throwInternal(itemCtx[_DYN_DIAG_LOG ](), 1 , 73 , "Plugin [" + identifier + "] failed during " + name + " - " + dumpObj(error) + ", run flags: " + dumpObj(hasRunContext));
3474
+ }
3667
3475
  }
3476
+ }, details, isAsync);
3477
+ }
3478
+ return hasRun;
3479
+ }
3480
+ function _processTelemetry(env, itemCtx) {
3481
+ itemCtx = itemCtx || _getTelCtx();
3482
+ function _callProcessTelemetry(itemCtx) {
3483
+ if (!plugin || !hasProcessTelemetry) {
3484
+ return false;
3485
+ }
3486
+ var pluginState = _getPluginState(plugin);
3487
+ if (pluginState[_DYN_TEARDOWN ] || pluginState[STR_DISABLED]) {
3488
+ return false;
3489
+ }
3490
+ if (hasSetNext) {
3491
+ plugin[_DYN_SET_NEXT_PLUGIN ](nextProxy);
3668
3492
  }
3493
+ plugin[STR_PROCESS_TELEMETRY ](env, itemCtx);
3494
+ return true;
3669
3495
  }
3670
- });
3671
- }
3672
- var NotificationManager = /** @class */ (function () {
3673
- function NotificationManager(config) {
3674
- this.listeners = [];
3675
- var perfEvtsSendAll;
3676
- var cfgHandler = createDynamicConfig(config, defaultValues$1);
3677
- cfgHandler[_DYN_WATCH ](function (details) {
3678
- perfEvtsSendAll = !!details.cfg.perfEvtsSendAll;
3679
- });
3680
- dynamicProto(NotificationManager, this, function (_self) {
3681
- _self[_DYN_ADD_NOTIFICATION_LIS1 ] = function (listener) {
3682
- _self.listeners[_DYN_PUSH ](listener);
3683
- };
3684
- _self[_DYN_REMOVE_NOTIFICATION_2 ] = function (listener) {
3685
- var index = arrIndexOf(_self[_DYN_LISTENERS ], listener);
3686
- while (index > -1) {
3687
- _self.listeners[_DYN_SPLICE ](index, 1);
3688
- index = arrIndexOf(_self[_DYN_LISTENERS ], listener);
3496
+ if (!_processChain(itemCtx, _callProcessTelemetry, "processTelemetry", function () { return ({ item: env }); }, !(env.sync))) {
3497
+ itemCtx[_DYN_PROCESS_NEXT ](env);
3498
+ }
3499
+ }
3500
+ function _unloadPlugin(unloadCtx, unloadState) {
3501
+ function _callTeardown() {
3502
+ var hasRun = false;
3503
+ if (plugin) {
3504
+ var pluginState = _getPluginState(plugin);
3505
+ var pluginCore = plugin[STR_CORE] || pluginState[STR_CORE ];
3506
+ if (plugin && (!pluginCore || pluginCore === unloadCtx.core()) && !pluginState[_DYN_TEARDOWN ]) {
3507
+ pluginState[STR_CORE ] = null;
3508
+ pluginState[_DYN_TEARDOWN ] = true;
3509
+ pluginState[_DYN_IS_INITIALIZED ] = false;
3510
+ if (plugin[_DYN_TEARDOWN ] && plugin[_DYN_TEARDOWN ](unloadCtx, unloadState) === true) {
3511
+ hasRun = true;
3512
+ }
3689
3513
  }
3690
- };
3691
- _self[STR_EVENTS_SENT ] = function (events) {
3692
- _runListeners(_self[_DYN_LISTENERS ], STR_EVENTS_SENT, true, function (listener) {
3693
- listener[STR_EVENTS_SENT ](events);
3694
- });
3695
- };
3696
- _self[STR_EVENTS_DISCARDED ] = function (events, reason) {
3697
- _runListeners(_self[_DYN_LISTENERS ], STR_EVENTS_DISCARDED, true, function (listener) {
3698
- listener[STR_EVENTS_DISCARDED ](events, reason);
3699
- });
3700
- };
3701
- _self[STR_EVENTS_SEND_REQUEST ] = function (sendReason, isAsync) {
3702
- _runListeners(_self[_DYN_LISTENERS ], STR_EVENTS_SEND_REQUEST, isAsync, function (listener) {
3703
- listener[STR_EVENTS_SEND_REQUEST ](sendReason, isAsync);
3704
- });
3705
- };
3706
- _self[STR_PERF_EVENT ] = function (perfEvent) {
3707
- if (perfEvent) {
3708
- if (perfEvtsSendAll || !perfEvent[_DYN_IS_CHILD_EVT ]()) {
3709
- _runListeners(_self[_DYN_LISTENERS ], STR_PERF_EVENT, false, function (listener) {
3710
- if (perfEvent[_DYN_IS_ASYNC ]) {
3711
- scheduleTimeout(function () { return listener[STR_PERF_EVENT ](perfEvent); }, 0);
3712
- }
3713
- else {
3714
- listener[STR_PERF_EVENT ](perfEvent);
3715
- }
3716
- });
3514
+ }
3515
+ return hasRun;
3516
+ }
3517
+ if (!_processChain(unloadCtx, _callTeardown, "unload", function () { }, unloadState[_DYN_IS_ASYNC ])) {
3518
+ unloadCtx[_DYN_PROCESS_NEXT ](unloadState);
3519
+ }
3520
+ }
3521
+ function _updatePlugin(updateCtx, updateState) {
3522
+ function _callUpdate() {
3523
+ var hasRun = false;
3524
+ if (plugin) {
3525
+ var pluginState = _getPluginState(plugin);
3526
+ var pluginCore = plugin[STR_CORE] || pluginState[STR_CORE ];
3527
+ if (plugin && (!pluginCore || pluginCore === updateCtx.core()) && !pluginState[_DYN_TEARDOWN ]) {
3528
+ if (plugin[_DYN_UPDATE ] && plugin[_DYN_UPDATE ](updateCtx, updateState) === true) {
3529
+ hasRun = true;
3717
3530
  }
3718
3531
  }
3719
- };
3720
- });
3532
+ }
3533
+ return hasRun;
3534
+ }
3535
+ if (!_processChain(updateCtx, _callUpdate, "update", function () { }, false)) {
3536
+ updateCtx[_DYN_PROCESS_NEXT ](updateState);
3537
+ }
3721
3538
  }
3722
- NotificationManager.__ieDyn=1;
3723
- return NotificationManager;
3539
+ return objFreeze(proxyChain);
3540
+ }
3541
+ var ProcessTelemetryContext = /** @class */ (function () {
3542
+ function ProcessTelemetryContext(pluginChain, config, core, startAt) {
3543
+ var _self = this;
3544
+ var context = createProcessTelemetryContext(pluginChain, config, core, startAt);
3545
+ proxyFunctions(_self, context, objKeys(context));
3546
+ }
3547
+ return ProcessTelemetryContext;
3724
3548
  }());
3725
3549
 
3726
3550
  function createUnloadHandlerContainer() {
@@ -3984,6 +3808,7 @@
3984
3808
  function _validateExtensions(logger, channelPriority, allExtensions) {
3985
3809
  var _a;
3986
3810
  var coreExtensions = [];
3811
+ var channels = [];
3987
3812
  var extPriorities = {};
3988
3813
  arrForEach(allExtensions, function (ext) {
3989
3814
  if (isNullOrUndefined(ext) || isNullOrUndefined(ext[_DYN_INITIALIZE ])) {
@@ -4002,11 +3827,13 @@
4002
3827
  if (!extPriority || extPriority < channelPriority) {
4003
3828
  coreExtensions[_DYN_PUSH ](ext);
4004
3829
  }
3830
+ else {
3831
+ channels[_DYN_PUSH ](ext);
3832
+ }
4005
3833
  });
4006
- return _a = {
4007
- all: allExtensions
4008
- },
3834
+ return _a = {},
4009
3835
  _a[STR_CORE ] = coreExtensions,
3836
+ _a[STR_CHANNELS ] = channels,
4010
3837
  _a;
4011
3838
  }
4012
3839
  function _isPluginPresent(thePlugin, plugins) {
@@ -4084,10 +3911,8 @@
4084
3911
  var _cookieManager;
4085
3912
  var _pluginChain;
4086
3913
  var _configExtensions;
4087
- var _coreExtensions;
4088
- var _channelControl;
4089
3914
  var _channelConfig;
4090
- var _channelQueue;
3915
+ var _channels;
4091
3916
  var _isUnloading;
4092
3917
  var _telemetryInitializerPlugin;
4093
3918
  var _internalLogsEventName;
@@ -4101,7 +3926,8 @@
4101
3926
  var _extensions;
4102
3927
  var _pluginVersionStringArr;
4103
3928
  var _pluginVersionString;
4104
- var _internalLogPoller = 0;
3929
+ var _internalLogPoller;
3930
+ var _internalLogPollerListening;
4105
3931
  dynamicProto(AppInsightsCore, this, function (_self) {
4106
3932
  _initDefaults();
4107
3933
  _self["_getDbgPlgTargets"] = function () {
@@ -4133,19 +3959,26 @@
4133
3959
  _configExtensions[_DYN_PUSH ].apply(_configExtensions, __spreadArrayFn(__spreadArrayFn([], extensions, false), cfgExtensions));
4134
3960
  _channelConfig = config[STR_CHANNELS ];
4135
3961
  _initPluginChain(null);
4136
- if (!_channelQueue || _channelQueue[_DYN_LENGTH ] === 0) {
3962
+ if (!_channels || _channels[_DYN_LENGTH ] === 0) {
4137
3963
  throwError("No " + STR_CHANNELS + " available");
4138
3964
  }
3965
+ if (_channels[_DYN_LENGTH ] > 1) {
3966
+ var teeController = _self[_DYN_GET_PLUGIN ]("TeeChannelController");
3967
+ if (!teeController || !teeController.plugin) {
3968
+ _throwInternal(_self[_DYN_LOGGER ], 1 , 28 , "TeeChannel required");
3969
+ }
3970
+ }
4139
3971
  _registerDelayedCfgListener(config, _cfgListeners, _self[_DYN_LOGGER ]);
4140
3972
  _cfgListeners = null;
4141
3973
  _isInitialized = true;
4142
3974
  _self.releaseQueue();
3975
+ _self[_DYN_POLL_INTERNAL_LOGS ]();
4143
3976
  };
4144
- _self.getTransmissionControls = function () {
3977
+ _self.getChannels = function () {
4145
3978
  var controls = [];
4146
- if (_channelQueue) {
4147
- arrForEach(_channelQueue, function (channels) {
4148
- controls[_DYN_PUSH ](channels.queue);
3979
+ if (_channels) {
3980
+ arrForEach(_channels, function (channel) {
3981
+ controls[_DYN_PUSH ](channel);
4149
3982
  });
4150
3983
  }
4151
3984
  return objFreeze(controls);
@@ -4228,26 +4061,33 @@
4228
4061
  });
4229
4062
  }
4230
4063
  };
4231
- _self.pollInternalLogs = function (eventName) {
4064
+ _self[_DYN_POLL_INTERNAL_LOGS ] = function (eventName) {
4232
4065
  _internalLogsEventName = eventName || null;
4233
- _addUnloadHook(_configHandler[_DYN_WATCH ](function (details) {
4234
- var interval = details.cfg.diagnosticLogInterval;
4066
+ function _startLogPoller(config) {
4067
+ var interval = config.diagnosticLogInterval;
4235
4068
  if (!interval || !(interval > 0)) {
4236
4069
  interval = 10000;
4237
4070
  }
4238
- if (_internalLogPoller) {
4239
- clearInterval(_internalLogPoller);
4240
- }
4241
- _internalLogPoller = setInterval(function () {
4071
+ _internalLogPoller && _internalLogPoller[_DYN_CANCEL ]();
4072
+ _internalLogPoller = scheduleInterval(function () {
4242
4073
  _flushInternalLogs();
4243
4074
  }, interval);
4244
- }));
4075
+ }
4076
+ if (!_internalLogPollerListening) {
4077
+ _internalLogPollerListening = true;
4078
+ _addUnloadHook(_configHandler[_DYN_WATCH ](function (details) {
4079
+ _startLogPoller(details.cfg);
4080
+ }));
4081
+ }
4082
+ else {
4083
+ _startLogPoller(_configHandler.cfg);
4084
+ }
4245
4085
  return _internalLogPoller;
4246
4086
  };
4247
4087
  _self[_DYN_STOP_POLLING_INTERNA3 ] = function () {
4248
4088
  if (_internalLogPoller) {
4249
- clearInterval(_internalLogPoller);
4250
- _internalLogPoller = 0;
4089
+ _internalLogPoller[_DYN_CANCEL ]();
4090
+ _internalLogPoller = null;
4251
4091
  _flushInternalLogs();
4252
4092
  }
4253
4093
  };
@@ -4289,9 +4129,7 @@
4289
4129
  _self[_DYN_STOP_POLLING_INTERNA3 ]();
4290
4130
  processUnloadCtx[_DYN_PROCESS_NEXT ](unloadState);
4291
4131
  }
4292
- if (!_flushChannels(isAsync, _doUnload, 6 , cbTimeout)) {
4293
- _doUnload(false);
4294
- }
4132
+ if (!_flushChannels(isAsync, _doUnload, 6 , cbTimeout)) ;
4295
4133
  };
4296
4134
  _self[_DYN_GET_PLUGIN ] = _getPlugin;
4297
4135
  _self.addPlugin = function (plugin, replaceExisting, isAsync, addCb) {
@@ -4372,7 +4210,7 @@
4372
4210
  _self.evtNamespace = function () {
4373
4211
  return _evtNamespace;
4374
4212
  };
4375
- _self[_DYN_FLUSH ] = _flushChannels;
4213
+ _self.flush = _flushChannels;
4376
4214
  _self.getTraceCtx = function (createNew) {
4377
4215
  if (!_traceCtx) {
4378
4216
  _traceCtx = createDistributedTraceContext();
@@ -4469,11 +4307,9 @@
4469
4307
  _cfgPerfManager = null;
4470
4308
  _cookieManager = null;
4471
4309
  _pluginChain = null;
4472
- _coreExtensions = null;
4473
4310
  _configExtensions = [];
4474
- _channelControl = null;
4475
4311
  _channelConfig = null;
4476
- _channelQueue = null;
4312
+ _channels = null;
4477
4313
  _isUnloading = false;
4478
4314
  _internalLogsEventName = null;
4479
4315
  _evtNamespace = createUniqueNamespace("AIBaseCore", true);
@@ -4490,32 +4326,19 @@
4490
4326
  }
4491
4327
  function _initPluginChain(updateState) {
4492
4328
  var theExtensions = _validateExtensions(_self[_DYN_LOGGER ], ChannelControllerPriority, _configExtensions);
4493
- _coreExtensions = theExtensions[STR_CORE ];
4494
4329
  _pluginChain = null;
4495
4330
  _pluginVersionString = null;
4496
4331
  _pluginVersionStringArr = null;
4497
- var allExtensions = theExtensions.all;
4498
- _channelQueue = objFreeze(createChannelQueues(_channelConfig, allExtensions, _self));
4499
- if (_channelControl) {
4500
- var idx = arrIndexOf(allExtensions, _channelControl);
4501
- if (idx !== -1) {
4502
- allExtensions[_DYN_SPLICE ](idx, 1);
4503
- }
4504
- idx = arrIndexOf(_coreExtensions, _channelControl);
4505
- if (idx !== -1) {
4506
- _coreExtensions[_DYN_SPLICE ](idx, 1);
4507
- }
4508
- _channelControl._setQueue(_channelQueue);
4509
- }
4510
- else {
4511
- _channelControl = createChannelControllerPlugin(_channelQueue, _self);
4512
- }
4513
- allExtensions[_DYN_PUSH ](_channelControl);
4514
- _coreExtensions[_DYN_PUSH ](_channelControl);
4515
- _extensions = sortPlugins(allExtensions);
4516
- _channelControl[_DYN_INITIALIZE ](_configHandler.cfg, _self, allExtensions);
4517
- initializePlugins(_createTelCtx(), allExtensions);
4518
- _extensions = objFreeze(sortPlugins(_coreExtensions || [])).slice();
4332
+ _channels = (_channelConfig || [])[0] || [];
4333
+ _channels = sortPlugins(arrAppend(_channels, theExtensions[STR_CHANNELS ]));
4334
+ var allExtensions = sortPlugins(theExtensions[STR_CORE ]);
4335
+ arrAppend(allExtensions, _channels);
4336
+ _extensions = objFreeze(allExtensions);
4337
+ var rootCtx = _createTelCtx();
4338
+ if (_channels && _channels[_DYN_LENGTH ] > 0) {
4339
+ initializePlugins(rootCtx[_DYN_CREATE_NEW ](_channels), allExtensions);
4340
+ }
4341
+ initializePlugins(rootCtx, allExtensions);
4519
4342
  if (updateState) {
4520
4343
  _doUpdate(updateState);
4521
4344
  }
@@ -4524,14 +4347,11 @@
4524
4347
  var theExt = null;
4525
4348
  var thePlugin = null;
4526
4349
  arrForEach(_extensions, function (ext) {
4527
- if (ext[_DYN_IDENTIFIER ] === pluginIdentifier && ext !== _channelControl && ext !== _telemetryInitializerPlugin) {
4350
+ if (ext[_DYN_IDENTIFIER ] === pluginIdentifier && ext !== _telemetryInitializerPlugin) {
4528
4351
  thePlugin = ext;
4529
4352
  return -1;
4530
4353
  }
4531
4354
  });
4532
- if (!thePlugin && _channelControl) {
4533
- thePlugin = _channelControl.getChannel(pluginIdentifier);
4534
- }
4535
4355
  if (thePlugin) {
4536
4356
  theExt = {
4537
4357
  plugin: thePlugin,
@@ -4567,7 +4387,7 @@
4567
4387
  }
4568
4388
  function _getPluginChain() {
4569
4389
  if (!_pluginChain) {
4570
- var extensions = (_coreExtensions || []).slice();
4390
+ var extensions = (_extensions || []).slice();
4571
4391
  if (arrIndexOf(extensions, _telemetryInitializerPlugin) === -1) {
4572
4392
  extensions[_DYN_PUSH ](_telemetryInitializerPlugin);
4573
4393
  }
@@ -4635,10 +4455,46 @@
4635
4455
  }
4636
4456
  }
4637
4457
  function _flushChannels(isAsync, callBack, sendReason, cbTimeout) {
4638
- if (_channelControl) {
4639
- return _channelControl[_DYN_FLUSH ](isAsync, callBack, sendReason || 6 , cbTimeout);
4458
+ var waiting = 1;
4459
+ var doneIterating = false;
4460
+ var cbTimer = null;
4461
+ cbTimeout = cbTimeout || 5000;
4462
+ function doCallback() {
4463
+ waiting--;
4464
+ if (doneIterating && waiting === 0) {
4465
+ cbTimer && cbTimer[_DYN_CANCEL ]();
4466
+ cbTimer = null;
4467
+ callBack && callBack(doneIterating);
4468
+ callBack = null;
4469
+ }
4470
+ }
4471
+ if (_channels && _channels[_DYN_LENGTH ] > 0) {
4472
+ var flushCtx = _createTelCtx()[_DYN_CREATE_NEW ](_channels);
4473
+ flushCtx.iterate(function (plugin) {
4474
+ if (plugin.flush) {
4475
+ waiting++;
4476
+ var handled_1 = false;
4477
+ if (!plugin.flush(isAsync, function () {
4478
+ handled_1 = true;
4479
+ doCallback();
4480
+ }, sendReason)) {
4481
+ if (!handled_1) {
4482
+ if (isAsync && cbTimer == null) {
4483
+ cbTimer = scheduleTimeout(function () {
4484
+ cbTimer = null;
4485
+ doCallback();
4486
+ }, cbTimeout);
4487
+ }
4488
+ else {
4489
+ doCallback();
4490
+ }
4491
+ }
4492
+ }
4493
+ }
4494
+ });
4640
4495
  }
4641
- callBack && callBack(false);
4496
+ doneIterating = true;
4497
+ doCallback();
4642
4498
  return true;
4643
4499
  }
4644
4500
  function _initDebugListener() {