@microsoft/applicationinsights-core-js 3.0.0-beta.2211-03 → 3.0.0-beta.2212-03

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 (102) hide show
  1. package/browser/applicationinsights-core-js.integrity.json +9 -9
  2. package/browser/applicationinsights-core-js.js +1156 -1345
  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 +1156 -1345
  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 -63
  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 +5 -8
  47. package/dist-esm/JavaScriptSDK/TelemetryHelpers.js.map +1 -1
  48. package/dist-esm/JavaScriptSDK/TelemetryInitializerPlugin.js +1 -1
  49. package/dist-esm/JavaScriptSDK/UnloadHandlerContainer.js +1 -1
  50. package/dist-esm/JavaScriptSDK/W3cTraceParent.js +1 -1
  51. package/dist-esm/JavaScriptSDK.Enums/EnumHelperFuncs.js +1 -1
  52. package/dist-esm/JavaScriptSDK.Enums/EventsDiscardedReason.js +1 -1
  53. package/dist-esm/JavaScriptSDK.Enums/LoggingEnums.js +1 -1
  54. package/dist-esm/JavaScriptSDK.Enums/SendRequestReason.js +1 -1
  55. package/dist-esm/JavaScriptSDK.Enums/TelemetryUnloadReason.js +1 -1
  56. package/dist-esm/JavaScriptSDK.Enums/TelemetryUpdateReason.js +1 -1
  57. package/dist-esm/JavaScriptSDK.Interfaces/IAppInsightsCore.js +1 -1
  58. package/dist-esm/JavaScriptSDK.Interfaces/IChannelControls.js +1 -1
  59. package/dist-esm/JavaScriptSDK.Interfaces/IConfiguration.js +1 -1
  60. package/dist-esm/JavaScriptSDK.Interfaces/ICookieMgr.js +1 -1
  61. package/dist-esm/JavaScriptSDK.Interfaces/IDbgExtension.js +1 -1
  62. package/dist-esm/JavaScriptSDK.Interfaces/IDiagnosticLogger.js +1 -1
  63. package/dist-esm/JavaScriptSDK.Interfaces/IDistributedTraceContext.js +1 -1
  64. package/dist-esm/JavaScriptSDK.Interfaces/IInstrumentHooks.js +1 -1
  65. package/dist-esm/JavaScriptSDK.Interfaces/INotificationListener.js +1 -1
  66. package/dist-esm/JavaScriptSDK.Interfaces/INotificationManager.js +1 -1
  67. package/dist-esm/JavaScriptSDK.Interfaces/IPerfEvent.js +1 -1
  68. package/dist-esm/JavaScriptSDK.Interfaces/IPerfManager.js +1 -1
  69. package/dist-esm/JavaScriptSDK.Interfaces/IProcessTelemetryContext.js +1 -1
  70. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryInitializers.js +1 -1
  71. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryItem.js +1 -1
  72. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryPlugin.js +1 -1
  73. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryPluginChain.js +1 -1
  74. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryUnloadState.js +1 -1
  75. package/dist-esm/JavaScriptSDK.Interfaces/ITelemetryUpdateState.js +1 -1
  76. package/dist-esm/JavaScriptSDK.Interfaces/ITraceParent.js +1 -1
  77. package/dist-esm/JavaScriptSDK.Interfaces/IUnloadHook.js +1 -1
  78. package/dist-esm/JavaScriptSDK.Interfaces/IUnloadableComponent.js +1 -1
  79. package/dist-esm/__DynamicConstants.js +15 -17
  80. package/dist-esm/__DynamicConstants.js.map +1 -1
  81. package/dist-esm/applicationinsights-core-js.js +1 -1
  82. package/package.json +2 -2
  83. package/src/JavaScriptSDK/AppInsightsCore.ts +98 -66
  84. package/src/JavaScriptSDK/Constants.ts +4 -0
  85. package/src/JavaScriptSDK/TelemetryHelpers.ts +5 -6
  86. package/src/JavaScriptSDK.Interfaces/IAppInsightsCore.ts +2 -2
  87. package/src/JavaScriptSDK.Interfaces/IChannelControls.ts +4 -4
  88. package/types/Config/IConfigDefaults.d.ts +3 -3
  89. package/types/Config/IDynamicWatcher.d.ts +1 -1
  90. package/types/JavaScriptSDK/AppInsightsCore.d.ts +1 -1
  91. package/types/JavaScriptSDK/Constants.d.ts +1 -0
  92. package/types/JavaScriptSDK/UnloadHandlerContainer.d.ts +1 -1
  93. package/types/JavaScriptSDK.Enums/EventsDiscardedReason.d.ts +1 -1
  94. package/types/JavaScriptSDK.Enums/LoggingEnums.d.ts +2 -2
  95. package/types/JavaScriptSDK.Interfaces/IAppInsightsCore.d.ts +1 -1
  96. package/types/JavaScriptSDK.Interfaces/IChannelControls.d.ts +4 -4
  97. package/types/JavaScriptSDK.Interfaces/IInstrumentHooks.d.ts +1 -1
  98. package/types/__DynamicConstants.d.ts +2 -4
  99. package/dist-esm/JavaScriptSDK/ChannelController.js +0 -217
  100. package/dist-esm/JavaScriptSDK/ChannelController.js.map +0 -1
  101. package/src/JavaScriptSDK/ChannelController.ts +0 -274
  102. 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.2212-03
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
  (function (global, factory) {
@@ -225,114 +225,39 @@
225
225
  return registry.k[key];
226
226
  }
227
227
 
228
- function objSetPrototypeOf(obj, proto) {
229
- var fn = ObjClass$1["setPrototypeOf"] ||
230
- ({ __proto__: [] } instanceof Array && function (d, b) {
231
- d.__proto__ = b;
232
- }) ||
233
- function (d, b) {
234
- objForEachKey(b, function (key, value) {
235
- d[key] = value;
236
- });
237
- };
238
- return fn(obj, proto);
239
- }
240
-
241
- function _createCustomError(name, d, b) {
242
- objSetPrototypeOf(d, b);
243
- function __() {
244
- this.constructor = d;
245
- }
246
- __[PROTOTYPE] = b[PROTOTYPE];
247
- __[PROTOTYPE].name = name;
248
- d[PROTOTYPE] = new __();
249
- return d;
250
- }
251
- function createCustomError(name, constructCb) {
252
- var baseClass = Error;
253
- var customError = _createCustomError(name, function () {
254
- var _this = this;
255
- _this = baseClass.apply(_this, arguments) || _this;
256
- constructCb && constructCb(_this, arguments);
257
- return _this;
258
- }, baseClass);
259
- return customError;
260
- }
261
- var _unsupportedError;
262
- function throwUnsupported(message) {
263
- if (!_unsupportedError) {
264
- _unsupportedError = createCustomError("UnsupportedError");
265
- }
266
- throw new _unsupportedError(message);
267
- }
268
-
269
- function dumpObj(object, format) {
270
- var objectTypeDump = objToString(object);
271
- var propertyValueDump = "";
272
- if (objectTypeDump === "[object Error]") {
273
- propertyValueDump = "{ stack: '" + object.stack + "', message: '" + object.message + "', name: '" + object.name + "'";
274
- }
275
- else {
276
- try {
277
- if (format) {
278
- if (isNumber(format)) {
279
- propertyValueDump = JSON.stringify(object, null, format);
280
- }
281
- else {
282
- propertyValueDump = JSON.stringify(object, null, 4);
283
- }
284
- }
285
- else {
286
- propertyValueDump = JSON.stringify(object);
287
- }
288
- }
289
- catch (e) {
290
- propertyValueDump = objToString(object) + " - " + dumpObj(e, format);
291
- }
292
- }
293
- return objectTypeDump + ": " + propertyValueDump;
294
- }
295
-
296
- var _objDefineProperty$1 = ObjClass$1["defineProperty"];
297
- function objDefineProp(target, key, descriptor) {
298
- if (_objDefineProperty$1) {
299
- _objDefineProperty$1(target, key, descriptor);
300
- return target;
301
- }
302
- throwUnsupported("Unable to define property [" + objToString(key) + "] on " + dumpObj(target));
228
+ var propMap = {
229
+ e: "enumerable",
230
+ c: "configurable",
231
+ v: VALUE,
232
+ w: "writable",
233
+ g: "get",
234
+ s: "set"
235
+ };
236
+ function _createProp(value) {
237
+ var prop = {};
238
+ prop[propMap["c"]] = true;
239
+ prop[propMap["e"]] = true;
240
+ objForEachKey(value, function (key, value) {
241
+ prop[propMap[key]] = isUndefined(value) ? prop[propMap[key]] : value;
242
+ });
243
+ return prop;
303
244
  }
304
- function objDefineGet(target, key, value, configurable) {
245
+ var objDefineProp = ObjClass$1.defineProperty;
246
+ function objDefineAccessors(target, prop, getProp, setProp, configurable, enumerable) {
305
247
  var desc = {
306
- enumerable: true,
307
- configurable: isUndefined(configurable) ? true : configurable
248
+ e: enumerable,
249
+ c: configurable
308
250
  };
309
- if (isFunction(value)) {
310
- desc.get = value;
251
+ if (getProp) {
252
+ desc.g = getProp;
311
253
  }
312
- else {
313
- desc[VALUE] = value;
254
+ if (setProp) {
255
+ desc.s = setProp;
314
256
  }
315
- return objDefineProp(target, key, desc);
257
+ return objDefineProp(target, prop, _createProp(desc));
316
258
  }
317
- function objDefineAccessors(target, prop, getProp, setProp, configurable) {
318
- if (_objDefineProperty$1) {
319
- try {
320
- var descriptor = {
321
- enumerable: true,
322
- configurable: isUndefined(configurable) ? true : configurable
323
- };
324
- if (getProp) {
325
- descriptor.get = getProp;
326
- }
327
- if (setProp) {
328
- descriptor.set = setProp;
329
- }
330
- return objDefineProp(target, prop, descriptor);
331
- }
332
- catch (e) {
333
- throwUnsupported("Unable to define accessors for [" + objToString(prop) + "] on " + dumpObj(target));
334
- }
335
- }
259
+ function objDefine(target, key, propDesc) {
260
+ return objDefineProp(target, key, _createProp(propDesc));
336
261
  }
337
262
 
338
263
  var _globalLazyTestHooks;
@@ -344,24 +269,21 @@
344
269
  var lazyValue = {};
345
270
  _fetchLazyTestHooks && _fetchLazyTestHooks();
346
271
  lazyValue.b = _globalLazyTestHooks.lzy;
347
- objDefineGet(lazyValue, "v", function () {
348
- var result = cb();
349
- if (!_globalLazyTestHooks.lzy) {
350
- objDefineProp(lazyValue, "v", {
351
- enumerable: true,
352
- configurable: true,
353
- writable: false,
354
- value: result
355
- });
356
- if (lazyValue.b) {
357
- delete lazyValue.b;
272
+ objDefine(lazyValue, "v", {
273
+ g: function () {
274
+ var result = cb();
275
+ if (!_globalLazyTestHooks.lzy) {
276
+ objDefine(lazyValue, "v", { v: result });
277
+ if (lazyValue.b) {
278
+ delete lazyValue.b;
279
+ }
358
280
  }
281
+ if (_globalLazyTestHooks.lzy && lazyValue.b !== _globalLazyTestHooks.lzy) {
282
+ lazyValue.b = _globalLazyTestHooks.lzy;
283
+ }
284
+ return result;
359
285
  }
360
- if (_globalLazyTestHooks.lzy && lazyValue.b !== _globalLazyTestHooks.lzy) {
361
- lazyValue.b = _globalLazyTestHooks.lzy;
362
- }
363
- return result;
364
- }, true);
286
+ });
365
287
  return lazyValue;
366
288
  }
367
289
 
@@ -477,6 +399,33 @@
477
399
  }
478
400
  }
479
401
 
402
+ function dumpObj(object, format) {
403
+ var objectTypeDump = objToString(object);
404
+ var propertyValueDump = "";
405
+ if (objectTypeDump === "[object Error]") {
406
+ propertyValueDump = "{ stack: '" + object.stack + "', message: '" + object.message + "', name: '" + object.name + "'";
407
+ }
408
+ else {
409
+ try {
410
+ if (format) {
411
+ if (isNumber(format)) {
412
+ propertyValueDump = JSON.stringify(object, null, format);
413
+ }
414
+ else {
415
+ propertyValueDump = JSON.stringify(object, null, 4);
416
+ }
417
+ }
418
+ else {
419
+ propertyValueDump = JSON.stringify(object);
420
+ }
421
+ }
422
+ catch (e) {
423
+ propertyValueDump = objToString(object) + " - " + dumpObj(e, format);
424
+ }
425
+ }
426
+ return objectTypeDump + ": " + propertyValueDump;
427
+ }
428
+
480
429
  function _unwrapFunction(funcName) {
481
430
  return function (thisArg) {
482
431
  var args = [];
@@ -496,6 +445,40 @@
496
445
 
497
446
  var arrReduce = _unwrapFunction("reduce");
498
447
 
448
+ function objSetPrototypeOf(obj, proto) {
449
+ var fn = ObjClass$1["setPrototypeOf"] ||
450
+ ({ __proto__: [] } instanceof Array && function (d, b) {
451
+ d.__proto__ = b;
452
+ }) ||
453
+ function (d, b) {
454
+ objForEachKey(b, function (key, value) {
455
+ d[key] = value;
456
+ });
457
+ };
458
+ return fn(obj, proto);
459
+ }
460
+
461
+ function _createCustomError(name, d, b) {
462
+ objSetPrototypeOf(d, b);
463
+ function __() {
464
+ this.constructor = d;
465
+ }
466
+ __[PROTOTYPE] = b[PROTOTYPE];
467
+ __[PROTOTYPE].name = name;
468
+ d[PROTOTYPE] = new __();
469
+ return d;
470
+ }
471
+ function createCustomError(name, constructCb) {
472
+ var baseClass = Error;
473
+ var customError = _createCustomError(name, function () {
474
+ var _this = this;
475
+ _this = baseClass.apply(_this, arguments) || _this;
476
+ constructCb && constructCb(_this, arguments);
477
+ return _this;
478
+ }, baseClass);
479
+ return customError;
480
+ }
481
+
499
482
  function utcNow() {
500
483
  return (Date.now || polyUtcNow)();
501
484
  }
@@ -585,11 +568,14 @@
585
568
  };
586
569
  if (!details.isPrim) {
587
570
  return _getSetVisited(visitMap, value, newPath, function (newEntry) {
588
- objDefineAccessors(details, "result", function () {
589
- return newEntry.v;
590
- }, function (newValue) {
591
- newEntry.v = newValue;
592
- }, true);
571
+ objDefine(details, "result", {
572
+ g: function () {
573
+ return newEntry.v;
574
+ },
575
+ s: function (newValue) {
576
+ newEntry.v = newValue;
577
+ }
578
+ });
593
579
  var idx = 0;
594
580
  var handler = userHandler;
595
581
  while (!(handler || (idx < defaultDeepCopyHandlers.length ? defaultDeepCopyHandlers[idx++] : _defaultDeepCopyHandler)).call(ctx, details)) {
@@ -825,6 +811,7 @@
825
811
  var _DYN_INITIALIZE = "initialize";
826
812
  var _DYN_IDENTIFIER = "identifier";
827
813
  var _DYN_IS_INITIALIZED = "isInitialized";
814
+ var _DYN_GET_PLUGIN = "getPlugin";
828
815
  var _DYN_POLL_INTERNAL_LOGS = "pollInternalLogs";
829
816
  var _DYN_NAME = "name";
830
817
  var _DYN_TIME = "time";
@@ -836,10 +823,9 @@
836
823
  var _DYN_STOP_POLLING_INTERNA3 = "stopPollingInternalLogs";
837
824
  var _DYN_ON_COMPLETE = "onComplete";
838
825
  var _DYN_CALL = "call";
839
- var _DYN_GET_PLUGIN = "getPlugin";
840
- var _DYN_FLUSH = "flush";
841
826
  var _DYN_VERSION = "version";
842
827
  var _DYN_LOGGING_LEVEL_CONSOL4 = "loggingLevelConsole";
828
+ var _DYN_CREATE_NEW = "createNew";
843
829
  var _DYN_TEARDOWN = "teardown";
844
830
  var _DYN_MESSAGE_ID = "messageId";
845
831
  var _DYN_MESSAGE = "message";
@@ -849,8 +835,6 @@
849
835
  var _DYN_UPDATE = "update";
850
836
  var _DYN_GET_NEXT = "getNext";
851
837
  var _DYN_SET_NEXT_PLUGIN = "setNextPlugin";
852
- var _DYN_CREATE_NEW = "createNew";
853
- var _DYN_CONFIG = "config";
854
838
  var _DYN_USER_AGENT = "userAgent";
855
839
  var _DYN_SPLIT = "split";
856
840
  var _DYN_NODE_TYPE = "nodeType";
@@ -1727,7 +1711,7 @@
1727
1711
  }
1728
1712
 
1729
1713
  var _objDefineProperty = ObjDefineProperty;
1730
- var version = "3.0.0-beta.2211-03";
1714
+ var version = "3.0.0-beta.2212-03";
1731
1715
  var instanceName = "." + newId(6);
1732
1716
  var _dataUid = 0;
1733
1717
  function _createAccessor(target, prop, value) {
@@ -2221,6 +2205,8 @@
2221
2205
  createDynamicConfig(config, null, logger)[_DYN_WATCH ](configHandler);
2222
2206
  }
2223
2207
 
2208
+ var ChannelControllerPriority = 500;
2209
+
2224
2210
  var listenerFuncs = [STR_EVENTS_SENT, STR_EVENTS_DISCARDED, STR_EVENTS_SEND_REQUEST, STR_PERF_EVENT];
2225
2211
  var _aiNamespace = null;
2226
2212
  var _debugListener;
@@ -2437,1308 +2423,1111 @@
2437
2423
  _getLogger(logger)[_DYN_LOG_INTERNAL_MESSAGE ](severity, message);
2438
2424
  }
2439
2425
 
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
- };
2426
+ var _a$2, _b;
2427
+ var strToGMTString = "toGMTString";
2428
+ var strToUTCString = "toUTCString";
2429
+ var strCookie = "cookie";
2430
+ var strExpires = "expires";
2431
+ var strIsCookieUseDisabled = "isCookieUseDisabled";
2432
+ var strDisableCookiesUsage = "disableCookiesUsage";
2433
+ var strConfigCookieMgr = "_ckMgr";
2434
+ var _supportsCookies = null;
2435
+ var _allowUaSameSite = null;
2436
+ var _parsedCookieValue = null;
2437
+ var _doc = getDocument();
2438
+ var _cookieCache = {};
2439
+ var _globalCookieConfig = {};
2440
+ var defaultConfig$1 = objDeepFreeze((_a$2 = {},
2441
+ _a$2[STR_DOMAIN] = { fb: "cookieDomain", dfVal: isNotNullOrUndefined },
2442
+ _a$2.path = { fb: "cookiePath", dfVal: isNotNullOrUndefined },
2443
+ _a$2.enabled = UNDEFINED_VALUE,
2444
+ _a$2));
2445
+ var rootDefaultConfig = (_b = {
2446
+ cookieCfg: {},
2447
+ cookieDomain: UNDEFINED_VALUE,
2448
+ cookiePath: UNDEFINED_VALUE
2449
+ },
2450
+ _b[strDisableCookiesUsage] = UNDEFINED_VALUE,
2451
+ _b);
2452
+ function _gblCookieMgr(config, logger) {
2453
+ var inst = createCookieMgr[strConfigCookieMgr] || _globalCookieConfig[strConfigCookieMgr];
2454
+ if (!inst) {
2455
+ inst = createCookieMgr[strConfigCookieMgr] = createCookieMgr(config, logger);
2456
+ _globalCookieConfig[strConfigCookieMgr] = inst;
2502
2457
  }
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
- }
2576
- }
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);
2458
+ return inst;
2590
2459
  }
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];
2460
+ function _isMgrEnabled(cookieMgr) {
2461
+ if (cookieMgr) {
2462
+ return cookieMgr.isEnabled();
2605
2463
  }
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);
2464
+ return true;
2608
2465
  }
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);
2466
+ function _isIgnoredCookie(cookieMgrCfg, name) {
2467
+ if (name && cookieMgrCfg && isArray(cookieMgrCfg.ignoreCookies)) {
2468
+ return arrIndexOf(cookieMgrCfg.ignoreCookies, name) !== -1;
2619
2469
  }
2620
2470
  return false;
2621
2471
  }
2622
- function _formatValue(value, len, defValue) {
2623
- if (_isValid(value, len)) {
2624
- return value;
2625
- }
2626
- return defValue;
2627
- }
2628
- function _formatFlags(value) {
2629
- if (isNaN(value) || value < 0 || value > 255) {
2630
- value = 0x01;
2631
- }
2632
- var result = value.toString(16);
2633
- while (result[_DYN_LENGTH ] < 2) {
2634
- result = "0" + result;
2635
- }
2636
- return result;
2637
- }
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;
2646
- }
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;
2657
- }
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;
2664
- }
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;
2671
- }
2672
- function isValidTraceId(value) {
2673
- return _isValid(value, 32, INVALID_TRACE_ID);
2674
- }
2675
- function isValidSpanId(value) {
2676
- return _isValid(value, 16, INVALID_SPAN_ID);
2677
- }
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;
2472
+ function _isBlockedCookie(cookieMgrCfg, name) {
2473
+ if (name && cookieMgrCfg && isArray(cookieMgrCfg.blockedCookies)) {
2474
+ if (arrIndexOf(cookieMgrCfg.blockedCookies, name) !== -1) {
2475
+ return true;
2476
+ }
2685
2477
  }
2686
- return true;
2478
+ return _isIgnoredCookie(cookieMgrCfg, name);
2687
2479
  }
2688
- function isSampledFlag(value) {
2689
- if (isValidTraceParent(value)) {
2690
- return (value[_DYN_TRACE_FLAGS ] & SAMPLED_FLAG) === SAMPLED_FLAG;
2480
+ function safeGetCookieMgr(core, config) {
2481
+ var cookieMgr;
2482
+ if (core) {
2483
+ cookieMgr = core.getCookieMgr();
2691
2484
  }
2692
- return false;
2693
- }
2694
- function formatTraceParent(value) {
2695
- if (value) {
2696
- var flags = _formatFlags(value[_DYN_TRACE_FLAGS ]);
2697
- if (!_isValid(flags, 2)) {
2698
- flags = "01";
2485
+ else if (config) {
2486
+ var cookieCfg = config.cookieCfg;
2487
+ if (cookieCfg && cookieCfg[strConfigCookieMgr]) {
2488
+ cookieMgr = cookieCfg[strConfigCookieMgr];
2699
2489
  }
2700
- var version = value[_DYN_VERSION ] || DEFAULT_VERSION;
2701
- if (version !== "00" && version !== "ff") {
2702
- version = DEFAULT_VERSION;
2490
+ else {
2491
+ cookieMgr = createCookieMgr(config);
2703
2492
  }
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());
2705
2493
  }
2706
- return "";
2707
- }
2708
- function findW3cTraceParent() {
2709
- var name = "traceparent";
2710
- var traceParent = parseTraceParent(findMetaTag(name));
2711
- if (!traceParent) {
2712
- traceParent = parseTraceParent(findNamedServerTiming(name));
2494
+ if (!cookieMgr) {
2495
+ cookieMgr = _gblCookieMgr(config, (core || {})[_DYN_LOGGER ]);
2713
2496
  }
2714
- return traceParent;
2715
- }
2716
-
2717
- var pluginStateData = createElmNodeData("plugin");
2718
- function _getPluginState(plugin) {
2719
- return pluginStateData.get(plugin, "state", {}, true);
2497
+ return cookieMgr;
2720
2498
  }
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 ]();
2735
- }
2736
- else {
2737
- pluginState = _getPluginState(thePlugin);
2738
- isInitialized = pluginState[_DYN_IS_INITIALIZED ];
2499
+ function createCookieMgr(rootConfig, logger) {
2500
+ var cookieMgrConfig;
2501
+ var _path;
2502
+ var _domain;
2503
+ var _enabled;
2504
+ var _getCookieFn;
2505
+ var _setCookieFn;
2506
+ var _delCookieFn;
2507
+ rootConfig = createDynamicConfig(rootConfig || _globalCookieConfig, null, logger).cfg;
2508
+ onConfigChange(rootConfig, function (details) {
2509
+ details[_DYN_SET_DF ](details.cfg, rootDefaultConfig);
2510
+ cookieMgrConfig = details[_DYN_SET_DF ](details.cfg.cookieCfg, defaultConfig$1);
2511
+ var isEnabled = cookieMgrConfig.enabled;
2512
+ if (isNullOrUndefined(isEnabled)) {
2513
+ var cookieEnabled = void 0;
2514
+ if (!isUndefined(rootConfig[strIsCookieUseDisabled])) {
2515
+ cookieEnabled = !rootConfig[strIsCookieUseDisabled];
2739
2516
  }
2740
- if (!isInitialized) {
2741
- initPlugins[_DYN_PUSH ](thePlugin);
2517
+ if (!isUndefined(rootConfig[strDisableCookiesUsage])) {
2518
+ cookieEnabled = !rootConfig[strDisableCookiesUsage];
2742
2519
  }
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;
2520
+ isEnabled = cookieEnabled;
2753
2521
  }
2754
- pluginState[_DYN_IS_INITIALIZED ] = true;
2755
- delete pluginState[_DYN_TEARDOWN ];
2756
- });
2757
- }
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;
2522
+ _path = cookieMgrConfig[STR_PATH ] || "/";
2523
+ _domain = cookieMgrConfig[STR_DOMAIN ];
2524
+ _enabled = isEnabled !== false;
2525
+ _getCookieFn = cookieMgrConfig.getCookie || _getCookieValue;
2526
+ _setCookieFn = cookieMgrConfig.setCookie || _setCookieValue;
2527
+ _delCookieFn = cookieMgrConfig.delCookie || _setCookieValue;
2528
+ }, logger);
2529
+ var cookieMgr = {
2530
+ isEnabled: function () {
2531
+ var enabled = _enabled && areCookiesSupported(logger);
2532
+ var gblManager = _globalCookieConfig[strConfigCookieMgr];
2533
+ if (enabled && gblManager && cookieMgr !== gblManager) {
2534
+ enabled = _isMgrEnabled(gblManager);
2768
2535
  }
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;
2536
+ return enabled;
2537
+ },
2538
+ setEnabled: function (value) {
2539
+ _enabled = value !== false;
2540
+ },
2541
+ set: function (name, value, maxAgeSec, domain, path) {
2542
+ var result = false;
2543
+ if (_isMgrEnabled(cookieMgr) && !_isBlockedCookie(cookieMgrConfig, name)) {
2544
+ var values = {};
2545
+ var theValue = strTrim(value || STR_EMPTY);
2546
+ var idx = strIndexOf(theValue, ";");
2547
+ if (idx !== -1) {
2548
+ theValue = strTrim(strLeft(value, idx));
2549
+ values = _extractParts(strSubstring(value, idx + 1));
2550
+ }
2551
+ setValue(values, STR_DOMAIN, domain || _domain, isTruthy, isUndefined);
2552
+ if (!isNullOrUndefined(maxAgeSec)) {
2553
+ var _isIE = isIE();
2554
+ if (isUndefined(values[strExpires])) {
2555
+ var nowMs = utcNow();
2556
+ var expireMs = nowMs + (maxAgeSec * 1000);
2557
+ if (expireMs > 0) {
2558
+ var expiry = new Date();
2559
+ expiry.setTime(expireMs);
2560
+ setValue(values, strExpires, _formatDate(expiry, !_isIE ? strToUTCString : strToGMTString) || _formatDate(expiry, _isIE ? strToGMTString : strToUTCString) || STR_EMPTY, isTruthy);
2561
+ }
2562
+ }
2563
+ if (!_isIE) {
2564
+ setValue(values, "max-age", STR_EMPTY + maxAgeSec, null, isUndefined);
2786
2565
  }
2787
2566
  }
2567
+ var location_1 = getLocation();
2568
+ if (location_1 && location_1.protocol === "https:") {
2569
+ setValue(values, "secure", null, null, isUndefined);
2570
+ if (_allowUaSameSite === null) {
2571
+ _allowUaSameSite = !uaDisallowsSameSiteNone((getNavigator() || {})[_DYN_USER_AGENT ]);
2572
+ }
2573
+ if (_allowUaSameSite) {
2574
+ setValue(values, "SameSite", "None", null, isUndefined);
2575
+ }
2576
+ }
2577
+ setValue(values, STR_PATH, path || _path, null, isUndefined);
2578
+ _setCookieFn(name, _formatCookieValue(theValue, values));
2579
+ result = true;
2788
2580
  }
2789
- }
2790
- }
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 ];
2581
+ return result;
2805
2582
  },
2806
- setTraceId: function (newValue) {
2807
- parentCtx && parentCtx.setTraceId(newValue);
2808
- if (isValidTraceId(newValue)) {
2809
- trace[_DYN_TRACE_ID ] = newValue;
2583
+ get: function (name) {
2584
+ var value = STR_EMPTY;
2585
+ if (_isMgrEnabled(cookieMgr) && !_isIgnoredCookie(cookieMgrConfig, name)) {
2586
+ value = _getCookieFn(name);
2810
2587
  }
2588
+ return value;
2811
2589
  },
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;
2590
+ del: function (name, path) {
2591
+ var result = false;
2592
+ if (_isMgrEnabled(cookieMgr)) {
2593
+ result = cookieMgr.purge(name, path);
2819
2594
  }
2595
+ return result;
2820
2596
  },
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;
2597
+ purge: function (name, path) {
2598
+ var _a;
2599
+ var result = false;
2600
+ if (areCookiesSupported(logger)) {
2601
+ var values = (_a = {},
2602
+ _a[STR_PATH] = path ? path : "/",
2603
+ _a[strExpires] = "Thu, 01 Jan 1970 00:00:01 GMT",
2604
+ _a);
2605
+ if (!isIE()) {
2606
+ values["max-age"] = "0";
2607
+ }
2608
+ _delCookieFn(name, _formatCookieValue(STR_EMPTY, values));
2609
+ result = true;
2610
+ }
2611
+ return result;
2827
2612
  }
2828
2613
  };
2614
+ cookieMgr[strConfigCookieMgr] = cookieMgr;
2615
+ return cookieMgr;
2829
2616
  }
2830
-
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;
2617
+ function areCookiesSupported(logger) {
2618
+ if (_supportsCookies === null) {
2619
+ _supportsCookies = false;
2620
+ try {
2621
+ var doc = _doc || {};
2622
+ _supportsCookies = doc[strCookie] !== undefined;
2623
+ }
2624
+ catch (e) {
2625
+ _throwInternal(logger, 2 , 68 , "Cannot access document.cookie - " + getExceptionName(e), { exception: dumpObj(e) });
2839
2626
  }
2840
- proxy = proxy[_DYN_GET_NEXT ]();
2841
2627
  }
2842
- return createTelemetryProxyChain([startAt], core[_DYN_CONFIG ] || {}, core);
2628
+ return _supportsCookies;
2843
2629
  }
2844
- function _createInternalContext(telemetryChain, dynamicHandler, core, startAt) {
2845
- var _nextProxy = null;
2846
- var _onComplete = [];
2847
- if (!dynamicHandler) {
2848
- dynamicHandler = createDynamicConfig({}, null, core[_DYN_LOGGER ]);
2630
+ function _extractParts(theValue) {
2631
+ var values = {};
2632
+ if (theValue && theValue[_DYN_LENGTH ]) {
2633
+ var parts = strTrim(theValue)[_DYN_SPLIT ](";");
2634
+ arrForEach(parts, function (thePart) {
2635
+ thePart = strTrim(thePart || STR_EMPTY);
2636
+ if (thePart) {
2637
+ var idx = strIndexOf(thePart, "=");
2638
+ if (idx === -1) {
2639
+ values[thePart] = null;
2640
+ }
2641
+ else {
2642
+ values[strTrim(strLeft(thePart, idx))] = strTrim(strSubstring(thePart, idx + 1));
2643
+ }
2644
+ }
2645
+ });
2849
2646
  }
2850
- if (startAt !== null) {
2851
- _nextProxy = startAt ? _getNextProxyStart(telemetryChain, core, startAt) : telemetryChain;
2647
+ return values;
2648
+ }
2649
+ function _formatDate(theDate, func) {
2650
+ if (isFunction(theDate[func])) {
2651
+ return theDate[func]();
2852
2652
  }
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
2653
+ return null;
2654
+ }
2655
+ function _formatCookieValue(value, values) {
2656
+ var cookieValue = value || STR_EMPTY;
2657
+ objForEachKey(values, function (name, theValue) {
2658
+ cookieValue += "; " + name + (!isNullOrUndefined(theValue) ? "=" + theValue : STR_EMPTY);
2659
+ });
2660
+ return cookieValue;
2661
+ }
2662
+ function _getCookieValue(name) {
2663
+ var cookieValue = STR_EMPTY;
2664
+ if (_doc) {
2665
+ var theCookie = _doc[strCookie] || STR_EMPTY;
2666
+ if (_parsedCookieValue !== theCookie) {
2667
+ _cookieCache = _extractParts(theCookie);
2668
+ _parsedCookieValue = theCookie;
2878
2669
  }
2879
- };
2880
- function _addOnComplete(onComplete, that) {
2881
- var args = [];
2882
- for (var _i = 2; _i < arguments.length; _i++) {
2883
- args[_i - 2] = arguments[_i];
2670
+ cookieValue = strTrim(_cookieCache[name] || STR_EMPTY);
2671
+ }
2672
+ return cookieValue;
2673
+ }
2674
+ function _setCookieValue(name, cookieValue) {
2675
+ if (_doc) {
2676
+ _doc[strCookie] = name + "=" + cookieValue;
2677
+ }
2678
+ }
2679
+ function uaDisallowsSameSiteNone(userAgent) {
2680
+ if (!isString(userAgent)) {
2681
+ return false;
2682
+ }
2683
+ if (strContains(userAgent, "CPU iPhone OS 12") || strContains(userAgent, "iPad; CPU OS 12")) {
2684
+ return true;
2685
+ }
2686
+ if (strContains(userAgent, "Macintosh; Intel Mac OS X 10_14") && strContains(userAgent, "Version/") && strContains(userAgent, "Safari")) {
2687
+ return true;
2688
+ }
2689
+ if (strContains(userAgent, "Macintosh; Intel Mac OS X 10_14") && strEndsWith(userAgent, "AppleWebKit/605.1.15 (KHTML, like Gecko)")) {
2690
+ return true;
2691
+ }
2692
+ if (strContains(userAgent, "Chrome/5") || strContains(userAgent, "Chrome/6")) {
2693
+ return true;
2694
+ }
2695
+ if (strContains(userAgent, "UnrealEngine") && !strContains(userAgent, "Chrome")) {
2696
+ return true;
2697
+ }
2698
+ if (strContains(userAgent, "UCBrowser/12") || strContains(userAgent, "UCBrowser/11")) {
2699
+ return true;
2700
+ }
2701
+ return false;
2702
+ }
2703
+
2704
+ var defaultValues$1 = {
2705
+ perfEvtsSendAll: false
2706
+ };
2707
+ function _runListeners(listeners, name, isAsync, callback) {
2708
+ arrForEach(listeners, function (listener) {
2709
+ if (listener && listener[name]) {
2710
+ if (isAsync) {
2711
+ scheduleTimeout(function () { return callback(listener); }, 0);
2712
+ }
2713
+ else {
2714
+ try {
2715
+ callback(listener);
2716
+ }
2717
+ catch (e) {
2718
+ }
2719
+ }
2884
2720
  }
2885
- if (onComplete) {
2886
- _onComplete[_DYN_PUSH ]({
2887
- func: onComplete,
2888
- self: !isUndefined(that) ? that : context.ctx,
2889
- args: args
2721
+ });
2722
+ }
2723
+ var NotificationManager = /** @class */ (function () {
2724
+ function NotificationManager(config) {
2725
+ this.listeners = [];
2726
+ var perfEvtsSendAll;
2727
+ var cfgHandler = createDynamicConfig(config, defaultValues$1);
2728
+ cfgHandler[_DYN_WATCH ](function (details) {
2729
+ perfEvtsSendAll = !!details.cfg.perfEvtsSendAll;
2730
+ });
2731
+ dynamicProto(NotificationManager, this, function (_self) {
2732
+ _self[_DYN_ADD_NOTIFICATION_LIS1 ] = function (listener) {
2733
+ _self.listeners[_DYN_PUSH ](listener);
2734
+ };
2735
+ _self[_DYN_REMOVE_NOTIFICATION_2 ] = function (listener) {
2736
+ var index = arrIndexOf(_self[_DYN_LISTENERS ], listener);
2737
+ while (index > -1) {
2738
+ _self.listeners[_DYN_SPLICE ](index, 1);
2739
+ index = arrIndexOf(_self[_DYN_LISTENERS ], listener);
2740
+ }
2741
+ };
2742
+ _self[STR_EVENTS_SENT ] = function (events) {
2743
+ _runListeners(_self[_DYN_LISTENERS ], STR_EVENTS_SENT, true, function (listener) {
2744
+ listener[STR_EVENTS_SENT ](events);
2745
+ });
2746
+ };
2747
+ _self[STR_EVENTS_DISCARDED ] = function (events, reason) {
2748
+ _runListeners(_self[_DYN_LISTENERS ], STR_EVENTS_DISCARDED, true, function (listener) {
2749
+ listener[STR_EVENTS_DISCARDED ](events, reason);
2750
+ });
2751
+ };
2752
+ _self[STR_EVENTS_SEND_REQUEST ] = function (sendReason, isAsync) {
2753
+ _runListeners(_self[_DYN_LISTENERS ], STR_EVENTS_SEND_REQUEST, isAsync, function (listener) {
2754
+ listener[STR_EVENTS_SEND_REQUEST ](sendReason, isAsync);
2755
+ });
2756
+ };
2757
+ _self[STR_PERF_EVENT ] = function (perfEvent) {
2758
+ if (perfEvent) {
2759
+ if (perfEvtsSendAll || !perfEvent[_DYN_IS_CHILD_EVT ]()) {
2760
+ _runListeners(_self[_DYN_LISTENERS ], STR_PERF_EVENT, false, function (listener) {
2761
+ if (perfEvent[_DYN_IS_ASYNC ]) {
2762
+ scheduleTimeout(function () { return listener[STR_PERF_EVENT ](perfEvent); }, 0);
2763
+ }
2764
+ else {
2765
+ listener[STR_PERF_EVENT ](perfEvent);
2766
+ }
2767
+ });
2768
+ }
2769
+ }
2770
+ };
2771
+ });
2772
+ }
2773
+ NotificationManager.__ieDyn=1;
2774
+ return NotificationManager;
2775
+ }());
2776
+
2777
+ var strExecutionContextKey = "ctx";
2778
+ var strParentContextKey = "ParentContextKey";
2779
+ var strChildrenContextKey = "ChildrenContextKey";
2780
+ var _defaultPerfManager = null;
2781
+ var PerfEvent = /** @class */ (function () {
2782
+ function PerfEvent(name, payloadDetails, isAsync) {
2783
+ var _self = this;
2784
+ _self.start = utcNow();
2785
+ _self[_DYN_NAME ] = name;
2786
+ _self[_DYN_IS_ASYNC ] = isAsync;
2787
+ _self[_DYN_IS_CHILD_EVT ] = function () { return false; };
2788
+ if (isFunction(payloadDetails)) {
2789
+ var theDetails_1;
2790
+ objDefineAccessors(_self, "payload", function () {
2791
+ if (!theDetails_1 && isFunction(payloadDetails)) {
2792
+ theDetails_1 = payloadDetails();
2793
+ payloadDetails = null;
2794
+ }
2795
+ return theDetails_1;
2890
2796
  });
2891
2797
  }
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 = [];
2798
+ _self[_DYN_GET_CTX ] = function (key) {
2799
+ if (key) {
2800
+ if (key === PerfEvent[strParentContextKey] || key === PerfEvent[strChildrenContextKey]) {
2801
+ return _self[key];
2802
+ }
2803
+ return (_self[strExecutionContextKey] || {})[key];
2908
2804
  }
2909
- }
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 = {};
2805
+ return null;
2806
+ };
2807
+ _self[_DYN_SET_CTX ] = function (key, value) {
2808
+ if (key) {
2809
+ if (key === PerfEvent[strParentContextKey]) {
2810
+ if (!_self[key]) {
2811
+ _self[_DYN_IS_CHILD_EVT ] = function () { return true; };
2812
+ }
2813
+ _self[key] = value;
2814
+ }
2815
+ else if (key === PerfEvent[strChildrenContextKey]) {
2816
+ _self[key] = value;
2817
+ }
2818
+ else {
2819
+ var ctx = _self[strExecutionContextKey] = _self[strExecutionContextKey] || {};
2820
+ ctx[key] = value;
2821
+ }
2919
2822
  }
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 = {};
2823
+ };
2824
+ _self[_DYN_COMPLETE ] = function () {
2825
+ var childTime = 0;
2826
+ var childEvts = _self[_DYN_GET_CTX ](PerfEvent[strChildrenContextKey]);
2827
+ if (isArray(childEvts)) {
2828
+ for (var lp = 0; lp < childEvts[_DYN_LENGTH ]; lp++) {
2829
+ var childEvt = childEvts[lp];
2830
+ if (childEvt) {
2831
+ childTime += childEvt[_DYN_TIME ];
2832
+ }
2926
2833
  }
2927
- dynamicHandler.set(extCfg, identifier, idCfg);
2928
- idCfg = extCfg[identifier];
2929
2834
  }
2930
- }
2931
- return idCfg;
2835
+ _self[_DYN_TIME ] = utcNow() - _self.start;
2836
+ _self.exTime = _self[_DYN_TIME ] - childTime;
2837
+ _self[_DYN_COMPLETE ] = function () { };
2838
+ };
2932
2839
  }
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;
2840
+ PerfEvent.ParentContextKey = "parent";
2841
+ PerfEvent.ChildrenContextKey = "childEvts";
2842
+ return PerfEvent;
2843
+ }());
2844
+ var PerfManager = /** @class */ (function () {
2845
+ function PerfManager(manager) {
2846
+ this.ctx = {};
2847
+ dynamicProto(PerfManager, this, function (_self) {
2848
+ _self.create = function (src, payloadDetails, isAsync) {
2849
+ return new PerfEvent(src, payloadDetails, isAsync);
2850
+ };
2851
+ _self.fire = function (perfEvent) {
2852
+ if (perfEvent) {
2853
+ perfEvent[_DYN_COMPLETE ]();
2854
+ if (manager && isFunction(manager[STR_PERF_EVENT ])) {
2855
+ manager[STR_PERF_EVENT ](perfEvent);
2941
2856
  }
2942
2857
  }
2943
- _applyDefaultValue(dynamicHandler, newConfig, field, defaultValue);
2944
- });
2945
- }
2946
- return dynamicHandler[_DYN_SET_DF ](newConfig, defaultValues);
2858
+ };
2859
+ _self[_DYN_SET_CTX ] = function (key, value) {
2860
+ if (key) {
2861
+ var ctx = _self[strExecutionContextKey] = _self[strExecutionContextKey] || {};
2862
+ ctx[key] = value;
2863
+ }
2864
+ };
2865
+ _self[_DYN_GET_CTX ] = function (key) {
2866
+ return (_self[strExecutionContextKey] || {})[key];
2867
+ };
2868
+ });
2947
2869
  }
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];
2870
+ PerfManager.__ieDyn=1;
2871
+ return PerfManager;
2872
+ }());
2873
+ var doPerfActiveKey = "CoreUtils.doPerf";
2874
+ function doPerf(mgrSource, getSource, func, details, isAsync) {
2875
+ if (mgrSource) {
2876
+ var perfMgr = mgrSource;
2877
+ if (perfMgr[STR_GET_PERF_MGR]) {
2878
+ perfMgr = perfMgr[STR_GET_PERF_MGR]();
2958
2879
  }
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);
2880
+ if (perfMgr) {
2881
+ var perfEvt = void 0;
2882
+ var currentActive = perfMgr[_DYN_GET_CTX ](doPerfActiveKey);
2883
+ try {
2884
+ perfEvt = perfMgr.create(getSource(), details, isAsync);
2885
+ if (perfEvt) {
2886
+ if (currentActive && perfEvt[_DYN_SET_CTX ]) {
2887
+ perfEvt[_DYN_SET_CTX ](PerfEvent[strParentContextKey], currentActive);
2888
+ if (currentActive[_DYN_GET_CTX ] && currentActive[_DYN_SET_CTX ]) {
2889
+ var children = currentActive[_DYN_GET_CTX ](PerfEvent[strChildrenContextKey]);
2890
+ if (!children) {
2891
+ children = [];
2892
+ currentActive[_DYN_SET_CTX ](PerfEvent[strChildrenContextKey], children);
2893
+ }
2894
+ children[_DYN_PUSH ](perfEvt);
2895
+ }
2896
+ }
2897
+ perfMgr[_DYN_SET_CTX ](doPerfActiveKey, perfEvt);
2898
+ return func(perfEvt);
2899
+ }
2900
+ }
2901
+ catch (ex) {
2902
+ if (perfEvt && perfEvt[_DYN_SET_CTX ]) {
2903
+ perfEvt[_DYN_SET_CTX ]("exception", ex);
2904
+ }
2905
+ }
2906
+ finally {
2907
+ if (perfEvt) {
2908
+ perfMgr.fire(perfEvt);
2909
+ }
2910
+ perfMgr[_DYN_SET_CTX ](doPerfActiveKey, currentActive);
2967
2911
  }
2968
2912
  }
2969
2913
  }
2970
- return context;
2914
+ return func();
2971
2915
  }
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;
2916
+ function setGblPerfMgr(perfManager) {
2917
+ _defaultPerfManager = perfManager;
2993
2918
  }
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);
2919
+ function getGblPerfMgr() {
2920
+ return _defaultPerfManager;
2921
+ }
2922
+
2923
+ var Undefined = strShimUndefined;
2924
+ function newGuid() {
2925
+ var uuid = generateW3CId();
2926
+ return strSubstring(uuid, 0, 8) + "-" + strSubstring(uuid, 8, 12) + "-" + strSubstring(uuid, 12, 16) + "-" + strSubstring(uuid, 16, 20) + "-" + strSubstring(uuid, 20);
2927
+ }
2928
+ function generateW3CId() {
2929
+ var hexValues = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"];
2930
+ var oct = STR_EMPTY, tmp;
2931
+ for (var a = 0; a < 4; a++) {
2932
+ tmp = random32();
2933
+ oct +=
2934
+ hexValues[tmp & 0xF] +
2935
+ hexValues[tmp >> 4 & 0xF] +
2936
+ hexValues[tmp >> 8 & 0xF] +
2937
+ hexValues[tmp >> 12 & 0xF] +
2938
+ hexValues[tmp >> 16 & 0xF] +
2939
+ hexValues[tmp >> 20 & 0xF] +
2940
+ hexValues[tmp >> 24 & 0xF] +
2941
+ hexValues[tmp >> 28 & 0xF];
3009
2942
  }
3010
- context[_DYN_PROCESS_NEXT ] = _processNext;
3011
- context[_DYN_CREATE_NEW ] = _createNew;
3012
- return context;
2943
+ var clockSequenceHi = hexValues[8 + (random32() & 0x03) | 0];
2944
+ return strSubstr(oct, 0, 8) + strSubstr(oct, 9, 4) + "4" + strSubstr(oct, 13, 3) + clockSequenceHi + strSubstr(oct, 16, 3) + strSubstr(oct, 19, 12);
3013
2945
  }
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
- });
2946
+
2947
+ var TRACE_PARENT_REGEX = /^([\da-f]{2})-([\da-f]{32})-([\da-f]{16})-([\da-f]{2})(-[^\s]{1,64})?$/i;
2948
+ var DEFAULT_VERSION = "00";
2949
+ var INVALID_VERSION = "ff";
2950
+ var INVALID_TRACE_ID = "00000000000000000000000000000000";
2951
+ var INVALID_SPAN_ID = "0000000000000000";
2952
+ var SAMPLED_FLAG = 0x01;
2953
+ function _isValid(value, len, invalidValue) {
2954
+ if (value && value[_DYN_LENGTH ] === len && value !== invalidValue) {
2955
+ return !!value.match(/^[\da-f]*$/i);
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
+ return false;
2958
+ }
2959
+ function _formatValue(value, len, defValue) {
2960
+ if (_isValid(value, len)) {
2961
+ return value;
3031
2962
  }
3032
- context[_DYN_PROCESS_NEXT ] = _processNext;
3033
- context[_DYN_CREATE_NEW ] = _createNew;
3034
- return context;
2963
+ return defValue;
3035
2964
  }
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
- });
2965
+ function _formatFlags(value) {
2966
+ if (isNaN(value) || value < 0 || value > 255) {
2967
+ value = 0x01;
3056
2968
  }
3057
- if (startAt && !firstProxy) {
3058
- return createTelemetryProxyChain([startAt], config, core);
2969
+ var result = value.toString(16);
2970
+ while (result[_DYN_LENGTH ] < 2) {
2971
+ result = "0" + result;
3059
2972
  }
3060
- return firstProxy;
2973
+ return result;
3061
2974
  }
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++;
2975
+ function createTraceParent(traceId, spanId, flags, version) {
2976
+ var _a;
2977
+ return _a = {},
2978
+ _a[_DYN_VERSION ] = _isValid(version, 2, INVALID_VERSION) ? version : DEFAULT_VERSION,
2979
+ _a[_DYN_TRACE_ID ] = isValidTraceId(traceId) ? traceId : generateW3CId(),
2980
+ _a[_DYN_SPAN_ID ] = isValidSpanId(spanId) ? spanId : strLeft(generateW3CId(), 16),
2981
+ _a.traceFlags = flags >= 0 && flags <= 0xFF ? flags : 1,
2982
+ _a;
2983
+ }
2984
+ function parseTraceParent(value) {
2985
+ var _a;
2986
+ if (!value) {
2987
+ return null;
3069
2988
  }
3070
- else {
3071
- chainId = "Unknown-0-" + _chainId++;
2989
+ if (isArray(value)) {
2990
+ value = value[0] || "";
3072
2991
  }
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;
2992
+ if (!value || !isString(value) || value[_DYN_LENGTH ] > 8192) {
2993
+ return null;
3097
2994
  }
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;
2995
+ var match = TRACE_PARENT_REGEX.exec(strTrim(value));
2996
+ if (!match ||
2997
+ match[1] === INVALID_VERSION ||
2998
+ match[2] === INVALID_TRACE_ID ||
2999
+ match[3] === INVALID_SPAN_ID) {
3000
+ return null;
3128
3001
  }
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
- }
3002
+ return _a = {},
3003
+ _a[_DYN_VERSION ] = (match[1] || STR_EMPTY)[_DYN_TO_LOWER_CASE ](),
3004
+ _a.traceId = (match[2] || STR_EMPTY)[_DYN_TO_LOWER_CASE ](),
3005
+ _a.spanId = (match[3] || STR_EMPTY)[_DYN_TO_LOWER_CASE ](),
3006
+ _a[_DYN_TRACE_FLAGS ] = parseInt(match[4], 16),
3007
+ _a;
3008
+ }
3009
+ function isValidTraceId(value) {
3010
+ return _isValid(value, 32, INVALID_TRACE_ID);
3011
+ }
3012
+ function isValidSpanId(value) {
3013
+ return _isValid(value, 16, INVALID_SPAN_ID);
3014
+ }
3015
+ function isValidTraceParent(value) {
3016
+ if (!value ||
3017
+ !_isValid(value[_DYN_VERSION ], 2, INVALID_VERSION) ||
3018
+ !_isValid(value[_DYN_TRACE_ID ], 32, INVALID_TRACE_ID) ||
3019
+ !_isValid(value[_DYN_SPAN_ID ], 16, INVALID_SPAN_ID) ||
3020
+ !_isValid(_formatFlags(value[_DYN_TRACE_FLAGS ]), 2)) {
3021
+ return false;
3148
3022
  }
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
- }
3023
+ return true;
3024
+ }
3025
+ function isSampledFlag(value) {
3026
+ if (isValidTraceParent(value)) {
3027
+ return (value[_DYN_TRACE_FLAGS ] & SAMPLED_FLAG) === SAMPLED_FLAG;
3169
3028
  }
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;
3029
+ return false;
3030
+ }
3031
+ function formatTraceParent(value) {
3032
+ if (value) {
3033
+ var flags = _formatFlags(value[_DYN_TRACE_FLAGS ]);
3034
+ if (!_isValid(flags, 2)) {
3035
+ flags = "01";
3183
3036
  }
3184
- if (!_processChain(updateCtx, _callUpdate, "update", function () { }, false)) {
3185
- updateCtx[_DYN_PROCESS_NEXT ](updateState);
3037
+ var version = value[_DYN_VERSION ] || DEFAULT_VERSION;
3038
+ if (version !== "00" && version !== "ff") {
3039
+ version = DEFAULT_VERSION;
3186
3040
  }
3041
+ 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
3042
  }
3188
- return objFreeze(proxyChain);
3043
+ return "";
3189
3044
  }
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));
3045
+ function findW3cTraceParent() {
3046
+ var name = "traceparent";
3047
+ var traceParent = parseTraceParent(findMetaTag(name));
3048
+ if (!traceParent) {
3049
+ traceParent = parseTraceParent(findNamedServerTiming(name));
3195
3050
  }
3196
- return ProcessTelemetryContext;
3197
- }());
3051
+ return traceParent;
3052
+ }
3198
3053
 
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 ]);
3054
+ var pluginStateData = createElmNodeData("plugin");
3055
+ function _getPluginState(plugin) {
3056
+ return pluginStateData.get(plugin, "state", {}, true);
3057
+ }
3058
+ function initializePlugins(processContext, extensions) {
3059
+ var initPlugins = [];
3060
+ var lastPlugin = null;
3061
+ var proxy = processContext[_DYN_GET_NEXT ]();
3062
+ var pluginState;
3063
+ while (proxy) {
3064
+ var thePlugin = proxy[_DYN_GET_PLUGIN ]();
3065
+ if (thePlugin) {
3066
+ if (lastPlugin && lastPlugin[_DYN_SET_NEXT_PLUGIN ] && thePlugin[STR_PROCESS_TELEMETRY ]) {
3067
+ lastPlugin[_DYN_SET_NEXT_PLUGIN ](thePlugin);
3068
+ }
3069
+ pluginState = _getPluginState(thePlugin);
3070
+ var isInitialized = !!pluginState[_DYN_IS_INITIALIZED ];
3071
+ if (thePlugin[_DYN_IS_INITIALIZED ]) {
3072
+ isInitialized = thePlugin[_DYN_IS_INITIALIZED ]();
3209
3073
  }
3210
- });
3211
- channelQueue[_DYN_PUSH ]({
3212
- queue: objFreeze(queue),
3213
- chain: createTelemetryProxyChain(queue, core[_DYN_CONFIG ], core)
3214
- });
3074
+ if (!isInitialized) {
3075
+ initPlugins[_DYN_PUSH ](thePlugin);
3076
+ }
3077
+ lastPlugin = thePlugin;
3078
+ proxy = proxy[_DYN_GET_NEXT ]();
3079
+ }
3215
3080
  }
3081
+ arrForEach(initPlugins, function (thePlugin) {
3082
+ var core = processContext[STR_CORE ]();
3083
+ thePlugin[_DYN_INITIALIZE ](processContext.getCfg(), core, extensions, processContext[_DYN_GET_NEXT ]());
3084
+ pluginState = _getPluginState(thePlugin);
3085
+ if (!thePlugin[STR_CORE] && !pluginState[STR_CORE]) {
3086
+ pluginState[STR_CORE] = core;
3087
+ }
3088
+ pluginState[_DYN_IS_INITIALIZED ] = true;
3089
+ delete pluginState[_DYN_TEARDOWN ];
3090
+ });
3216
3091
  }
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;
3092
+ function sortPlugins(plugins) {
3093
+ return plugins.sort(function (extA, extB) {
3094
+ var result = 0;
3095
+ if (extB) {
3096
+ var bHasProcess = extB[STR_PROCESS_TELEMETRY];
3097
+ if (extA[STR_PROCESS_TELEMETRY]) {
3098
+ result = bHasProcess ? extA[STR_PRIORITY] - extB[STR_PRIORITY] : 1;
3099
+ }
3100
+ else if (bHasProcess) {
3101
+ result = -1;
3228
3102
  }
3229
3103
  }
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
- });
3104
+ else {
3105
+ result = extA ? 1 : -1;
3242
3106
  }
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;
3107
+ return result;
3108
+ });
3109
+ }
3110
+ function unloadComponents(components, unloadCtx, unloadState, asyncCallback) {
3111
+ var idx = 0;
3112
+ function _doUnload() {
3113
+ while (idx < components[_DYN_LENGTH ]) {
3114
+ var component = components[idx++];
3115
+ if (component) {
3116
+ var func = component._doUnload || component[_DYN__DO_TEARDOWN ];
3117
+ if (isFunction(func)) {
3118
+ if (func[_DYN_CALL ](component, unloadCtx, unloadState, _doUnload) === true) {
3119
+ return true;
3282
3120
  }
3283
3121
  }
3284
- });
3122
+ }
3285
3123
  }
3286
- return thePlugin;
3287
3124
  }
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
- });
3125
+ return _doUnload();
3126
+ }
3127
+ function createDistributedTraceContext(parentCtx) {
3128
+ var trace = {};
3129
+ return {
3130
+ getName: function () {
3131
+ return trace[_DYN_NAME ];
3299
3132
  },
3300
- isInitialized: function () {
3301
- return isInitialized;
3133
+ setName: function (newValue) {
3134
+ parentCtx && parentCtx.setName(newValue);
3135
+ trace[_DYN_NAME ] = newValue;
3302
3136
  },
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
- });
3137
+ getTraceId: function () {
3138
+ return trace[_DYN_TRACE_ID ];
3309
3139
  },
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);
3140
+ setTraceId: function (newValue) {
3141
+ parentCtx && parentCtx.setTraceId(newValue);
3142
+ if (isValidTraceId(newValue)) {
3143
+ trace[_DYN_TRACE_ID ] = newValue;
3144
+ }
3317
3145
  },
3318
- resume: function () {
3319
- _processChannelQueue(channelQueue, _getTelCtx(), function (chainCtx) {
3320
- chainCtx.iterate(function (plugin) {
3321
- plugin.resume && plugin.resume();
3322
- });
3323
- }, null);
3146
+ getSpanId: function () {
3147
+ return trace[_DYN_SPAN_ID ];
3324
3148
  },
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;
3149
+ setSpanId: function (newValue) {
3150
+ parentCtx && parentCtx.setSpanId(newValue);
3151
+ if (isValidSpanId(newValue)) {
3152
+ trace[_DYN_SPAN_ID ] = newValue;
3153
+ }
3369
3154
  },
3370
- _setQueue: function (queue) {
3371
- channelQueue = queue;
3155
+ getTraceFlags: function () {
3156
+ return trace[_DYN_TRACE_FLAGS ];
3157
+ },
3158
+ setTraceFlags: function (newTraceFlags) {
3159
+ parentCtx && parentCtx.setTraceFlags(newTraceFlags);
3160
+ trace[_DYN_TRACE_FLAGS ] = newTraceFlags;
3372
3161
  }
3373
3162
  };
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
3163
  }
3392
3164
 
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;
3165
+ var strTelemetryPluginChain = "TelemetryPluginChain";
3166
+ var strHasRunFlags = "_hasRun";
3167
+ var strGetTelCtx = "_getTelCtx";
3168
+ var _chainId = 0;
3169
+ function _getNextProxyStart(proxy, core, startAt) {
3170
+ while (proxy) {
3171
+ if (proxy[_DYN_GET_PLUGIN ]() === startAt) {
3172
+ return proxy;
3443
3173
  }
3174
+ proxy = proxy[_DYN_GET_NEXT ]();
3444
3175
  }
3445
- return _isIgnoredCookie(cookieMgrCfg, name);
3176
+ return createTelemetryProxyChain([startAt], core.config || {}, core);
3446
3177
  }
3447
- function safeGetCookieMgr(core, config) {
3448
- var cookieMgr;
3449
- if (core) {
3450
- cookieMgr = core.getCookieMgr();
3178
+ function _createInternalContext(telemetryChain, dynamicHandler, core, startAt) {
3179
+ var _nextProxy = null;
3180
+ var _onComplete = [];
3181
+ if (!dynamicHandler) {
3182
+ dynamicHandler = createDynamicConfig({}, null, core[_DYN_LOGGER ]);
3451
3183
  }
3452
- else if (config) {
3453
- var cookieCfg = config.cookieCfg;
3454
- if (cookieCfg && cookieCfg[strConfigCookieMgr]) {
3455
- cookieMgr = cookieCfg[strConfigCookieMgr];
3184
+ if (startAt !== null) {
3185
+ _nextProxy = startAt ? _getNextProxyStart(telemetryChain, core, startAt) : telemetryChain;
3186
+ }
3187
+ var context = {
3188
+ _next: _moveNext,
3189
+ ctx: {
3190
+ core: function () {
3191
+ return core;
3192
+ },
3193
+ diagLog: function () {
3194
+ return safeGetLogger(core, dynamicHandler.cfg);
3195
+ },
3196
+ getCfg: function () {
3197
+ return dynamicHandler.cfg;
3198
+ },
3199
+ getExtCfg: _resolveExtCfg,
3200
+ getConfig: _getConfig,
3201
+ hasNext: function () {
3202
+ return !!_nextProxy;
3203
+ },
3204
+ getNext: function () {
3205
+ return _nextProxy;
3206
+ },
3207
+ setNext: function (nextPlugin) {
3208
+ _nextProxy = nextPlugin;
3209
+ },
3210
+ iterate: _iterateChain,
3211
+ onComplete: _addOnComplete
3456
3212
  }
3457
- else {
3458
- cookieMgr = createCookieMgr(config);
3213
+ };
3214
+ function _addOnComplete(onComplete, that) {
3215
+ var args = [];
3216
+ for (var _i = 2; _i < arguments.length; _i++) {
3217
+ args[_i - 2] = arguments[_i];
3459
3218
  }
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;
3219
+ if (onComplete) {
3220
+ _onComplete[_DYN_PUSH ]({
3221
+ func: onComplete,
3222
+ self: !isUndefined(that) ? that : context.ctx,
3223
+ args: args
3224
+ });
3488
3225
  }
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 ]);
3226
+ }
3227
+ function _moveNext() {
3228
+ var nextProxy = _nextProxy;
3229
+ _nextProxy = nextProxy ? nextProxy[_DYN_GET_NEXT ]() : null;
3230
+ if (!nextProxy) {
3231
+ var onComplete = _onComplete;
3232
+ if (onComplete && onComplete[_DYN_LENGTH ] > 0) {
3233
+ arrForEach(onComplete, function (completeDetails) {
3234
+ try {
3235
+ completeDetails.func[_DYN_CALL ](completeDetails.self, completeDetails.args);
3539
3236
  }
3540
- if (_allowUaSameSite) {
3541
- setValue(values, "SameSite", "None", null, isUndefined);
3237
+ catch (e) {
3238
+ _throwInternal(core[_DYN_LOGGER ], 2 , 73 , "Unexpected Exception during onComplete - " + dumpObj(e));
3542
3239
  }
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);
3240
+ });
3241
+ _onComplete = [];
3554
3242
  }
3555
- return value;
3556
- },
3557
- del: function (name, path) {
3558
- var result = false;
3559
- if (_isMgrEnabled(cookieMgr)) {
3560
- result = cookieMgr.purge(name, path);
3243
+ }
3244
+ return nextProxy;
3245
+ }
3246
+ function _getExtCfg(identifier, createIfMissing) {
3247
+ var idCfg = null;
3248
+ var cfg = dynamicHandler.cfg;
3249
+ if (cfg && identifier) {
3250
+ var extCfg = cfg[STR_EXTENSION_CONFIG ];
3251
+ if (!extCfg && createIfMissing) {
3252
+ extCfg = {};
3561
3253
  }
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";
3254
+ dynamicHandler.set(cfg, STR_EXTENSION_CONFIG, extCfg);
3255
+ extCfg = cfg[STR_EXTENSION_CONFIG ];
3256
+ if (extCfg) {
3257
+ idCfg = extCfg[identifier];
3258
+ if (!idCfg && createIfMissing) {
3259
+ idCfg = {};
3574
3260
  }
3575
- _delCookieFn(name, _formatCookieValue(STR_EMPTY, values));
3576
- result = true;
3261
+ dynamicHandler.set(extCfg, identifier, idCfg);
3262
+ idCfg = extCfg[identifier];
3577
3263
  }
3578
- return result;
3579
3264
  }
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;
3265
+ return idCfg;
3266
+ }
3267
+ function _resolveExtCfg(identifier, defaultValues) {
3268
+ var newConfig = _getExtCfg(identifier, true);
3269
+ if (defaultValues) {
3270
+ objForEachKey(defaultValues, function (field, defaultValue) {
3271
+ if (isNullOrUndefined(newConfig[field])) {
3272
+ var cfgValue = dynamicHandler.cfg[field];
3273
+ if (cfgValue || !isNullOrUndefined(cfgValue)) {
3274
+ newConfig[field] = cfgValue;
3275
+ }
3276
+ }
3277
+ _applyDefaultValue(dynamicHandler, newConfig, field, defaultValue);
3278
+ });
3590
3279
  }
3591
- catch (e) {
3592
- _throwInternal(logger, 2 , 68 , "Cannot access document.cookie - " + getExceptionName(e), { exception: dumpObj(e) });
3280
+ return dynamicHandler[_DYN_SET_DF ](newConfig, defaultValues);
3281
+ }
3282
+ function _getConfig(identifier, field, defaultValue) {
3283
+ if (defaultValue === void 0) { defaultValue = false; }
3284
+ var theValue;
3285
+ var extConfig = _getExtCfg(identifier, false);
3286
+ var rootConfig = dynamicHandler.cfg;
3287
+ if (extConfig && (extConfig[field] || !isNullOrUndefined(extConfig[field]))) {
3288
+ theValue = extConfig[field];
3593
3289
  }
3290
+ else if (rootConfig[field] || !isNullOrUndefined(rootConfig[field])) {
3291
+ theValue = rootConfig[field];
3292
+ }
3293
+ return (theValue || !isNullOrUndefined(theValue)) ? theValue : defaultValue;
3594
3294
  }
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
- }
3295
+ function _iterateChain(cb) {
3296
+ var nextPlugin;
3297
+ while (!!(nextPlugin = context._next())) {
3298
+ var plugin = nextPlugin[_DYN_GET_PLUGIN ]();
3299
+ if (plugin) {
3300
+ cb(plugin);
3611
3301
  }
3612
- });
3302
+ }
3613
3303
  }
3614
- return values;
3304
+ return context;
3615
3305
  }
3616
- function _formatDate(theDate, func) {
3617
- if (isFunction(theDate[func])) {
3618
- return theDate[func]();
3306
+ function createProcessTelemetryContext(telemetryChain, cfg, core, startAt) {
3307
+ var config = createDynamicConfig(cfg);
3308
+ var internalContext = _createInternalContext(telemetryChain, config, core, startAt);
3309
+ var context = internalContext.ctx;
3310
+ function _processNext(env) {
3311
+ var nextPlugin = internalContext._next();
3312
+ if (nextPlugin) {
3313
+ nextPlugin[STR_PROCESS_TELEMETRY ](env, context);
3314
+ }
3315
+ return !nextPlugin;
3619
3316
  }
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;
3317
+ function _createNew(plugins, startAt) {
3318
+ if (plugins === void 0) { plugins = null; }
3319
+ if (isArray(plugins)) {
3320
+ plugins = createTelemetryProxyChain(plugins, config.cfg, core, startAt);
3636
3321
  }
3637
- cookieValue = strTrim(_cookieCache[name] || STR_EMPTY);
3322
+ return createProcessTelemetryContext(plugins || context[_DYN_GET_NEXT ](), config.cfg, core, startAt);
3638
3323
  }
3639
- return cookieValue;
3324
+ context[_DYN_PROCESS_NEXT ] = _processNext;
3325
+ context[_DYN_CREATE_NEW ] = _createNew;
3326
+ return context;
3640
3327
  }
3641
- function _setCookieValue(name, cookieValue) {
3642
- if (_doc) {
3643
- _doc[strCookie] = name + "=" + cookieValue;
3328
+ function createProcessTelemetryUnloadContext(telemetryChain, core, startAt) {
3329
+ var config = createDynamicConfig(core.config);
3330
+ var internalContext = _createInternalContext(telemetryChain, config, core, startAt);
3331
+ var context = internalContext.ctx;
3332
+ function _processNext(unloadState) {
3333
+ var nextPlugin = internalContext._next();
3334
+ nextPlugin && nextPlugin.unload(context, unloadState);
3335
+ return !nextPlugin;
3336
+ }
3337
+ function _createNew(plugins, startAt) {
3338
+ if (plugins === void 0) { plugins = null; }
3339
+ if (isArray(plugins)) {
3340
+ plugins = createTelemetryProxyChain(plugins, config.cfg, core, startAt);
3341
+ }
3342
+ return createProcessTelemetryUnloadContext(plugins || context[_DYN_GET_NEXT ](), core, startAt);
3644
3343
  }
3344
+ context[_DYN_PROCESS_NEXT ] = _processNext;
3345
+ context[_DYN_CREATE_NEW ] = _createNew;
3346
+ return context;
3645
3347
  }
3646
- function uaDisallowsSameSiteNone(userAgent) {
3647
- if (!isString(userAgent)) {
3648
- return false;
3348
+ function createProcessTelemetryUpdateContext(telemetryChain, core, startAt) {
3349
+ var config = createDynamicConfig(core.config);
3350
+ var internalContext = _createInternalContext(telemetryChain, config, core, startAt);
3351
+ var context = internalContext.ctx;
3352
+ function _processNext(updateState) {
3353
+ return context.iterate(function (plugin) {
3354
+ if (isFunction(plugin[_DYN_UPDATE ])) {
3355
+ plugin[_DYN_UPDATE ](context, updateState);
3356
+ }
3357
+ });
3649
3358
  }
3650
- if (strContains(userAgent, "CPU iPhone OS 12") || strContains(userAgent, "iPad; CPU OS 12")) {
3651
- return true;
3359
+ function _createNew(plugins, startAt) {
3360
+ if (plugins === void 0) { plugins = null; }
3361
+ if (isArray(plugins)) {
3362
+ plugins = createTelemetryProxyChain(plugins, config.cfg, core, startAt);
3363
+ }
3364
+ return createProcessTelemetryUpdateContext(plugins || context[_DYN_GET_NEXT ](), core, startAt);
3652
3365
  }
3653
- if (strContains(userAgent, "Macintosh; Intel Mac OS X 10_14") && strContains(userAgent, "Version/") && strContains(userAgent, "Safari")) {
3654
- return true;
3366
+ context[_DYN_PROCESS_NEXT ] = _processNext;
3367
+ context[_DYN_CREATE_NEW ] = _createNew;
3368
+ return context;
3369
+ }
3370
+ function createTelemetryProxyChain(plugins, config, core, startAt) {
3371
+ var firstProxy = null;
3372
+ var add = startAt ? false : true;
3373
+ if (isArray(plugins) && plugins[_DYN_LENGTH ] > 0) {
3374
+ var lastProxy_1 = null;
3375
+ arrForEach(plugins, function (thePlugin) {
3376
+ if (!add && startAt === thePlugin) {
3377
+ add = true;
3378
+ }
3379
+ if (add && thePlugin && isFunction(thePlugin[STR_PROCESS_TELEMETRY ])) {
3380
+ var newProxy = createTelemetryPluginProxy(thePlugin, config, core);
3381
+ if (!firstProxy) {
3382
+ firstProxy = newProxy;
3383
+ }
3384
+ if (lastProxy_1) {
3385
+ lastProxy_1._setNext(newProxy);
3386
+ }
3387
+ lastProxy_1 = newProxy;
3388
+ }
3389
+ });
3655
3390
  }
3656
- if (strContains(userAgent, "Macintosh; Intel Mac OS X 10_14") && strEndsWith(userAgent, "AppleWebKit/605.1.15 (KHTML, like Gecko)")) {
3657
- return true;
3391
+ if (startAt && !firstProxy) {
3392
+ return createTelemetryProxyChain([startAt], config, core);
3658
3393
  }
3659
- if (strContains(userAgent, "Chrome/5") || strContains(userAgent, "Chrome/6")) {
3660
- return true;
3394
+ return firstProxy;
3395
+ }
3396
+ function createTelemetryPluginProxy(plugin, config, core) {
3397
+ var nextProxy = null;
3398
+ var hasProcessTelemetry = isFunction(plugin[STR_PROCESS_TELEMETRY ]);
3399
+ var hasSetNext = isFunction(plugin[_DYN_SET_NEXT_PLUGIN ]);
3400
+ var chainId;
3401
+ if (plugin) {
3402
+ chainId = plugin[_DYN_IDENTIFIER ] + "-" + plugin[STR_PRIORITY ] + "-" + _chainId++;
3661
3403
  }
3662
- if (strContains(userAgent, "UnrealEngine") && !strContains(userAgent, "Chrome")) {
3663
- return true;
3404
+ else {
3405
+ chainId = "Unknown-0-" + _chainId++;
3664
3406
  }
3665
- if (strContains(userAgent, "UCBrowser/12") || strContains(userAgent, "UCBrowser/11")) {
3666
- return true;
3407
+ var proxyChain = {
3408
+ getPlugin: function () {
3409
+ return plugin;
3410
+ },
3411
+ getNext: function () {
3412
+ return nextProxy;
3413
+ },
3414
+ processTelemetry: _processTelemetry,
3415
+ unload: _unloadPlugin,
3416
+ update: _updatePlugin,
3417
+ _id: chainId,
3418
+ _setNext: function (nextPlugin) {
3419
+ nextProxy = nextPlugin;
3420
+ }
3421
+ };
3422
+ function _getTelCtx() {
3423
+ var itemCtx;
3424
+ if (plugin && isFunction(plugin[strGetTelCtx])) {
3425
+ itemCtx = plugin[strGetTelCtx]();
3426
+ }
3427
+ if (!itemCtx) {
3428
+ itemCtx = createProcessTelemetryContext(proxyChain, config, core);
3429
+ }
3430
+ return itemCtx;
3667
3431
  }
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 {
3432
+ function _processChain(itemCtx, processPluginFn, name, details, isAsync) {
3433
+ var hasRun = false;
3434
+ var identifier = plugin ? plugin[_DYN_IDENTIFIER ] : strTelemetryPluginChain;
3435
+ var hasRunContext = itemCtx[strHasRunFlags];
3436
+ if (!hasRunContext) {
3437
+ hasRunContext = itemCtx[strHasRunFlags] = {};
3438
+ }
3439
+ itemCtx.setNext(nextProxy);
3440
+ if (plugin) {
3441
+ doPerf(itemCtx[STR_CORE ](), function () { return identifier + ":" + name; }, function () {
3442
+ hasRunContext[chainId] = true;
3681
3443
  try {
3682
- callback(listener);
3444
+ var nextId = nextProxy ? nextProxy._id : STR_EMPTY;
3445
+ if (nextId) {
3446
+ hasRunContext[nextId] = false;
3447
+ }
3448
+ hasRun = processPluginFn(itemCtx);
3683
3449
  }
3684
- catch (e) {
3450
+ catch (error) {
3451
+ var hasNextRun = nextProxy ? hasRunContext[nextProxy._id] : true;
3452
+ if (hasNextRun) {
3453
+ hasRun = true;
3454
+ }
3455
+ if (!nextProxy || !hasNextRun) {
3456
+ _throwInternal(itemCtx[_DYN_DIAG_LOG ](), 1 , 73 , "Plugin [" + identifier + "] failed during " + name + " - " + dumpObj(error) + ", run flags: " + dumpObj(hasRunContext));
3457
+ }
3685
3458
  }
3459
+ }, details, isAsync);
3460
+ }
3461
+ return hasRun;
3462
+ }
3463
+ function _processTelemetry(env, itemCtx) {
3464
+ itemCtx = itemCtx || _getTelCtx();
3465
+ function _callProcessTelemetry(itemCtx) {
3466
+ if (!plugin || !hasProcessTelemetry) {
3467
+ return false;
3468
+ }
3469
+ var pluginState = _getPluginState(plugin);
3470
+ if (pluginState[_DYN_TEARDOWN ] || pluginState[STR_DISABLED]) {
3471
+ return false;
3686
3472
  }
3473
+ if (hasSetNext) {
3474
+ plugin[_DYN_SET_NEXT_PLUGIN ](nextProxy);
3475
+ }
3476
+ plugin[STR_PROCESS_TELEMETRY ](env, itemCtx);
3477
+ return true;
3687
3478
  }
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);
3479
+ if (!_processChain(itemCtx, _callProcessTelemetry, "processTelemetry", function () { return ({ item: env }); }, !(env.sync))) {
3480
+ itemCtx[_DYN_PROCESS_NEXT ](env);
3481
+ }
3482
+ }
3483
+ function _unloadPlugin(unloadCtx, unloadState) {
3484
+ function _callTeardown() {
3485
+ var hasRun = false;
3486
+ if (plugin) {
3487
+ var pluginState = _getPluginState(plugin);
3488
+ var pluginCore = plugin[STR_CORE] || pluginState[STR_CORE ];
3489
+ if (plugin && (!pluginCore || pluginCore === unloadCtx.core()) && !pluginState[_DYN_TEARDOWN ]) {
3490
+ pluginState[STR_CORE ] = null;
3491
+ pluginState[_DYN_TEARDOWN ] = true;
3492
+ pluginState[_DYN_IS_INITIALIZED ] = false;
3493
+ if (plugin[_DYN_TEARDOWN ] && plugin[_DYN_TEARDOWN ](unloadCtx, unloadState) === true) {
3494
+ hasRun = true;
3495
+ }
3707
3496
  }
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
- });
3497
+ }
3498
+ return hasRun;
3499
+ }
3500
+ if (!_processChain(unloadCtx, _callTeardown, "unload", function () { }, unloadState[_DYN_IS_ASYNC ])) {
3501
+ unloadCtx[_DYN_PROCESS_NEXT ](unloadState);
3502
+ }
3503
+ }
3504
+ function _updatePlugin(updateCtx, updateState) {
3505
+ function _callUpdate() {
3506
+ var hasRun = false;
3507
+ if (plugin) {
3508
+ var pluginState = _getPluginState(plugin);
3509
+ var pluginCore = plugin[STR_CORE] || pluginState[STR_CORE ];
3510
+ if (plugin && (!pluginCore || pluginCore === updateCtx.core()) && !pluginState[_DYN_TEARDOWN ]) {
3511
+ if (plugin[_DYN_UPDATE ] && plugin[_DYN_UPDATE ](updateCtx, updateState) === true) {
3512
+ hasRun = true;
3735
3513
  }
3736
3514
  }
3737
- };
3738
- });
3515
+ }
3516
+ return hasRun;
3517
+ }
3518
+ if (!_processChain(updateCtx, _callUpdate, "update", function () { }, false)) {
3519
+ updateCtx[_DYN_PROCESS_NEXT ](updateState);
3520
+ }
3739
3521
  }
3740
- NotificationManager.__ieDyn=1;
3741
- return NotificationManager;
3522
+ return objFreeze(proxyChain);
3523
+ }
3524
+ var ProcessTelemetryContext = /** @class */ (function () {
3525
+ function ProcessTelemetryContext(pluginChain, config, core, startAt) {
3526
+ var _self = this;
3527
+ var context = createProcessTelemetryContext(pluginChain, config, core, startAt);
3528
+ proxyFunctions(_self, context, objKeys(context));
3529
+ }
3530
+ return ProcessTelemetryContext;
3742
3531
  }());
3743
3532
 
3744
3533
  function createUnloadHandlerContainer() {
@@ -4002,6 +3791,7 @@
4002
3791
  function _validateExtensions(logger, channelPriority, allExtensions) {
4003
3792
  var _a;
4004
3793
  var coreExtensions = [];
3794
+ var channels = [];
4005
3795
  var extPriorities = {};
4006
3796
  arrForEach(allExtensions, function (ext) {
4007
3797
  if (isNullOrUndefined(ext) || isNullOrUndefined(ext[_DYN_INITIALIZE ])) {
@@ -4020,11 +3810,13 @@
4020
3810
  if (!extPriority || extPriority < channelPriority) {
4021
3811
  coreExtensions[_DYN_PUSH ](ext);
4022
3812
  }
3813
+ else {
3814
+ channels[_DYN_PUSH ](ext);
3815
+ }
4023
3816
  });
4024
- return _a = {
4025
- all: allExtensions
4026
- },
3817
+ return _a = {},
4027
3818
  _a[STR_CORE ] = coreExtensions,
3819
+ _a[STR_CHANNELS ] = channels,
4028
3820
  _a;
4029
3821
  }
4030
3822
  function _isPluginPresent(thePlugin, plugins) {
@@ -4102,10 +3894,8 @@
4102
3894
  var _cookieManager;
4103
3895
  var _pluginChain;
4104
3896
  var _configExtensions;
4105
- var _coreExtensions;
4106
- var _channelControl;
4107
3897
  var _channelConfig;
4108
- var _channelQueue;
3898
+ var _channels;
4109
3899
  var _isUnloading;
4110
3900
  var _telemetryInitializerPlugin;
4111
3901
  var _internalLogsEventName;
@@ -4152,20 +3942,26 @@
4152
3942
  _configExtensions[_DYN_PUSH ].apply(_configExtensions, __spreadArrayFn(__spreadArrayFn([], extensions, false), cfgExtensions));
4153
3943
  _channelConfig = config[STR_CHANNELS ];
4154
3944
  _initPluginChain(null);
4155
- if (!_channelQueue || _channelQueue[_DYN_LENGTH ] === 0) {
3945
+ if (!_channels || _channels[_DYN_LENGTH ] === 0) {
4156
3946
  throwError("No " + STR_CHANNELS + " available");
4157
3947
  }
3948
+ if (_channels[_DYN_LENGTH ] > 1) {
3949
+ var teeController = _self[_DYN_GET_PLUGIN ]("TeeChannelController");
3950
+ if (!teeController || !teeController.plugin) {
3951
+ _throwInternal(_self[_DYN_LOGGER ], 1 , 28 , "TeeChannel required");
3952
+ }
3953
+ }
4158
3954
  _registerDelayedCfgListener(config, _cfgListeners, _self[_DYN_LOGGER ]);
4159
3955
  _cfgListeners = null;
4160
3956
  _isInitialized = true;
4161
3957
  _self.releaseQueue();
4162
3958
  _self[_DYN_POLL_INTERNAL_LOGS ]();
4163
3959
  };
4164
- _self.getTransmissionControls = function () {
3960
+ _self.getChannels = function () {
4165
3961
  var controls = [];
4166
- if (_channelQueue) {
4167
- arrForEach(_channelQueue, function (channels) {
4168
- controls[_DYN_PUSH ](channels.queue);
3962
+ if (_channels) {
3963
+ arrForEach(_channels, function (channel) {
3964
+ controls[_DYN_PUSH ](channel);
4169
3965
  });
4170
3966
  }
4171
3967
  return objFreeze(controls);
@@ -4316,9 +4112,7 @@
4316
4112
  _self[_DYN_STOP_POLLING_INTERNA3 ]();
4317
4113
  processUnloadCtx[_DYN_PROCESS_NEXT ](unloadState);
4318
4114
  }
4319
- if (!_flushChannels(isAsync, _doUnload, 6 , cbTimeout)) {
4320
- _doUnload(false);
4321
- }
4115
+ if (!_flushChannels(isAsync, _doUnload, 6 , cbTimeout)) ;
4322
4116
  };
4323
4117
  _self[_DYN_GET_PLUGIN ] = _getPlugin;
4324
4118
  _self.addPlugin = function (plugin, replaceExisting, isAsync, addCb) {
@@ -4399,7 +4193,7 @@
4399
4193
  _self.evtNamespace = function () {
4400
4194
  return _evtNamespace;
4401
4195
  };
4402
- _self[_DYN_FLUSH ] = _flushChannels;
4196
+ _self.flush = _flushChannels;
4403
4197
  _self.getTraceCtx = function (createNew) {
4404
4198
  if (!_traceCtx) {
4405
4199
  _traceCtx = createDistributedTraceContext();
@@ -4496,11 +4290,9 @@
4496
4290
  _cfgPerfManager = null;
4497
4291
  _cookieManager = null;
4498
4292
  _pluginChain = null;
4499
- _coreExtensions = null;
4500
4293
  _configExtensions = [];
4501
- _channelControl = null;
4502
4294
  _channelConfig = null;
4503
- _channelQueue = null;
4295
+ _channels = null;
4504
4296
  _isUnloading = false;
4505
4297
  _internalLogsEventName = null;
4506
4298
  _evtNamespace = createUniqueNamespace("AIBaseCore", true);
@@ -4517,32 +4309,18 @@
4517
4309
  }
4518
4310
  function _initPluginChain(updateState) {
4519
4311
  var theExtensions = _validateExtensions(_self[_DYN_LOGGER ], ChannelControllerPriority, _configExtensions);
4520
- _coreExtensions = theExtensions[STR_CORE ];
4521
4312
  _pluginChain = null;
4522
4313
  _pluginVersionString = null;
4523
4314
  _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();
4315
+ _channels = (_channelConfig || [])[0] || [];
4316
+ _channels = sortPlugins(arrAppend(_channels, theExtensions[STR_CHANNELS ]));
4317
+ var allExtensions = arrAppend(sortPlugins(theExtensions[STR_CORE ]), _channels);
4318
+ _extensions = objFreeze(allExtensions);
4319
+ var rootCtx = _createTelCtx();
4320
+ if (_channels && _channels[_DYN_LENGTH ] > 0) {
4321
+ initializePlugins(rootCtx[_DYN_CREATE_NEW ](_channels), allExtensions);
4322
+ }
4323
+ initializePlugins(rootCtx, allExtensions);
4546
4324
  if (updateState) {
4547
4325
  _doUpdate(updateState);
4548
4326
  }
@@ -4551,14 +4329,11 @@
4551
4329
  var theExt = null;
4552
4330
  var thePlugin = null;
4553
4331
  arrForEach(_extensions, function (ext) {
4554
- if (ext[_DYN_IDENTIFIER ] === pluginIdentifier && ext !== _channelControl && ext !== _telemetryInitializerPlugin) {
4332
+ if (ext[_DYN_IDENTIFIER ] === pluginIdentifier && ext !== _telemetryInitializerPlugin) {
4555
4333
  thePlugin = ext;
4556
4334
  return -1;
4557
4335
  }
4558
4336
  });
4559
- if (!thePlugin && _channelControl) {
4560
- thePlugin = _channelControl.getChannel(pluginIdentifier);
4561
- }
4562
4337
  if (thePlugin) {
4563
4338
  theExt = {
4564
4339
  plugin: thePlugin,
@@ -4594,7 +4369,7 @@
4594
4369
  }
4595
4370
  function _getPluginChain() {
4596
4371
  if (!_pluginChain) {
4597
- var extensions = (_coreExtensions || []).slice();
4372
+ var extensions = (_extensions || []).slice();
4598
4373
  if (arrIndexOf(extensions, _telemetryInitializerPlugin) === -1) {
4599
4374
  extensions[_DYN_PUSH ](_telemetryInitializerPlugin);
4600
4375
  }
@@ -4662,10 +4437,46 @@
4662
4437
  }
4663
4438
  }
4664
4439
  function _flushChannels(isAsync, callBack, sendReason, cbTimeout) {
4665
- if (_channelControl) {
4666
- return _channelControl[_DYN_FLUSH ](isAsync, callBack, sendReason || 6 , cbTimeout);
4440
+ var waiting = 1;
4441
+ var doneIterating = false;
4442
+ var cbTimer = null;
4443
+ cbTimeout = cbTimeout || 5000;
4444
+ function doCallback() {
4445
+ waiting--;
4446
+ if (doneIterating && waiting === 0) {
4447
+ cbTimer && cbTimer[_DYN_CANCEL ]();
4448
+ cbTimer = null;
4449
+ callBack && callBack(doneIterating);
4450
+ callBack = null;
4451
+ }
4452
+ }
4453
+ if (_channels && _channels[_DYN_LENGTH ] > 0) {
4454
+ var flushCtx = _createTelCtx()[_DYN_CREATE_NEW ](_channels);
4455
+ flushCtx.iterate(function (plugin) {
4456
+ if (plugin.flush) {
4457
+ waiting++;
4458
+ var handled_1 = false;
4459
+ if (!plugin.flush(isAsync, function () {
4460
+ handled_1 = true;
4461
+ doCallback();
4462
+ }, sendReason)) {
4463
+ if (!handled_1) {
4464
+ if (isAsync && cbTimer == null) {
4465
+ cbTimer = scheduleTimeout(function () {
4466
+ cbTimer = null;
4467
+ doCallback();
4468
+ }, cbTimeout);
4469
+ }
4470
+ else {
4471
+ doCallback();
4472
+ }
4473
+ }
4474
+ }
4475
+ }
4476
+ });
4667
4477
  }
4668
- callBack && callBack(false);
4478
+ doneIterating = true;
4479
+ doCallback();
4669
4480
  return true;
4670
4481
  }
4671
4482
  function _initDebugListener() {