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