@microsoft/applicationinsights-clickanalytics-js 2.7.5-nightly.2204-03 → 2.7.5-nightly.2204-23

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 (79) hide show
  1. package/browser/ai.clck.2.7.5-nightly.2204-23.cjs.js +2011 -0
  2. package/browser/ai.clck.2.7.5-nightly.2204-23.cjs.js.map +1 -0
  3. package/browser/ai.clck.2.7.5-nightly.2204-23.cjs.min.js +6 -0
  4. package/browser/ai.clck.2.7.5-nightly.2204-23.cjs.min.js.map +1 -0
  5. package/browser/ai.clck.2.7.5-nightly.2204-23.gbl.js +2015 -0
  6. package/browser/ai.clck.2.7.5-nightly.2204-23.gbl.js.map +1 -0
  7. package/browser/ai.clck.2.7.5-nightly.2204-23.gbl.min.js +6 -0
  8. package/browser/ai.clck.2.7.5-nightly.2204-23.gbl.min.js.map +1 -0
  9. package/browser/ai.clck.2.7.5-nightly.2204-23.integrity.json +66 -0
  10. package/browser/ai.clck.2.7.5-nightly.2204-23.js +2017 -0
  11. package/browser/ai.clck.2.7.5-nightly.2204-23.js.map +1 -0
  12. package/browser/ai.clck.2.7.5-nightly.2204-23.min.js +6 -0
  13. package/browser/ai.clck.2.7.5-nightly.2204-23.min.js.map +1 -0
  14. package/browser/ai.clck.2.cjs.js +810 -1682
  15. package/browser/ai.clck.2.cjs.js.map +1 -1
  16. package/browser/ai.clck.2.cjs.min.js +2 -2
  17. package/browser/ai.clck.2.cjs.min.js.map +1 -1
  18. package/browser/ai.clck.2.gbl.js +810 -1682
  19. package/browser/ai.clck.2.gbl.js.map +1 -1
  20. package/browser/ai.clck.2.gbl.min.js +2 -2
  21. package/browser/ai.clck.2.gbl.min.js.map +1 -1
  22. package/browser/ai.clck.2.js +810 -1682
  23. package/browser/ai.clck.2.js.map +1 -1
  24. package/browser/ai.clck.2.min.js +2 -2
  25. package/browser/ai.clck.2.min.js.map +1 -1
  26. package/dist/applicationinsights-clickanalytics-js.api.json +27 -29
  27. package/dist/applicationinsights-clickanalytics-js.api.md +0 -1
  28. package/dist/applicationinsights-clickanalytics-js.d.ts +5 -2
  29. package/dist/applicationinsights-clickanalytics-js.js +810 -1682
  30. package/dist/applicationinsights-clickanalytics-js.js.map +1 -1
  31. package/dist/applicationinsights-clickanalytics-js.min.js +2 -2
  32. package/dist/applicationinsights-clickanalytics-js.min.js.map +1 -1
  33. package/dist/applicationinsights-clickanalytics-js.rollup.d.ts +5 -2
  34. package/dist-esm/Behaviours.js +1 -1
  35. package/dist-esm/ClickAnalyticsPlugin.js +50 -74
  36. package/dist-esm/ClickAnalyticsPlugin.js.map +1 -1
  37. package/dist-esm/DataCollector.js +2 -4
  38. package/dist-esm/DataCollector.js.map +1 -1
  39. package/dist-esm/Enums.js +1 -1
  40. package/dist-esm/Interfaces/Datamodel.js +1 -1
  41. package/dist-esm/applicationinsights-clickanalytics-js.js +1 -1
  42. package/dist-esm/common/Utils.js +1 -1
  43. package/dist-esm/events/PageAction.js +126 -128
  44. package/dist-esm/events/PageAction.js.map +1 -1
  45. package/dist-esm/events/WebEvent.js +94 -109
  46. package/dist-esm/events/WebEvent.js.map +1 -1
  47. package/dist-esm/handlers/AutoCaptureHandler.js +83 -85
  48. package/dist-esm/handlers/AutoCaptureHandler.js.map +1 -1
  49. package/dist-esm/handlers/DomContentHandler.js +276 -279
  50. package/dist-esm/handlers/DomContentHandler.js.map +1 -1
  51. package/package.json +6 -6
  52. package/src/ClickAnalyticsPlugin.ts +47 -92
  53. package/src/DataCollector.ts +22 -24
  54. package/src/Interfaces/Datamodel.ts +21 -20
  55. package/src/common/Utils.ts +8 -8
  56. package/src/events/PageAction.ts +131 -165
  57. package/src/events/WebEvent.ts +78 -147
  58. package/src/handlers/AutoCaptureHandler.ts +79 -89
  59. package/src/handlers/DomContentHandler.ts +303 -336
  60. package/types/ClickAnalyticsPlugin.d.ts +4 -1
  61. package/types/Interfaces/Datamodel.d.ts +2 -3
  62. package/types/events/PageAction.d.ts +6 -6
  63. package/types/events/WebEvent.d.ts +17 -17
  64. package/types/handlers/AutoCaptureHandler.d.ts +10 -2
  65. package/types/handlers/DomContentHandler.d.ts +50 -3
  66. package/types/tsdoc-metadata.json +1 -1
  67. package/browser/ai.clck.2.7.5-nightly.2204-03.cjs.js +0 -2883
  68. package/browser/ai.clck.2.7.5-nightly.2204-03.cjs.js.map +0 -1
  69. package/browser/ai.clck.2.7.5-nightly.2204-03.cjs.min.js +0 -6
  70. package/browser/ai.clck.2.7.5-nightly.2204-03.cjs.min.js.map +0 -1
  71. package/browser/ai.clck.2.7.5-nightly.2204-03.gbl.js +0 -2887
  72. package/browser/ai.clck.2.7.5-nightly.2204-03.gbl.js.map +0 -1
  73. package/browser/ai.clck.2.7.5-nightly.2204-03.gbl.min.js +0 -6
  74. package/browser/ai.clck.2.7.5-nightly.2204-03.gbl.min.js.map +0 -1
  75. package/browser/ai.clck.2.7.5-nightly.2204-03.integrity.json +0 -66
  76. package/browser/ai.clck.2.7.5-nightly.2204-03.js +0 -2889
  77. package/browser/ai.clck.2.7.5-nightly.2204-03.js.map +0 -1
  78. package/browser/ai.clck.2.7.5-nightly.2204-03.min.js +0 -6
  79. package/browser/ai.clck.2.7.5-nightly.2204-03.min.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Application Insights JavaScript SDK - Click Analytics, 2.7.5-nightly.2204-03
2
+ * Application Insights JavaScript SDK - Click Analytics, 2.7.5-nightly.2204-23
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
  (function (global, factory) {
@@ -75,9 +75,7 @@
75
75
  var __assignFn = ObjAssign || __objAssignFnImpl;
76
76
  var extendStaticsFn = function (d, b) {
77
77
  extendStaticsFn = ObjClass["setPrototypeOf"] ||
78
- ({ __proto__: [] } instanceof Array && function (d, b) {
79
- d.__proto__ = b;
80
- }) ||
78
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
81
79
  function (d, b) {
82
80
  for (var p in b) {
83
81
  if (b[strShimHasOwnProperty](p)) {
@@ -92,14 +90,12 @@
92
90
  throwTypeError("Class extends value " + String(b) + " is not a constructor or null");
93
91
  }
94
92
  extendStaticsFn(d, b);
95
- function __() {
96
- this.constructor = d;
97
- }
93
+ function __() { this.constructor = d; }
98
94
  d[strShimPrototype] = b === null ? objCreateFn(b) : (__[strShimPrototype] = b[strShimPrototype], new __());
99
95
  }
100
96
 
101
97
  /*!
102
- * Microsoft Dynamic Proto Utility, 1.1.4
98
+ * Microsoft Dynamic Proto Utility, 1.1.5
103
99
  * Copyright (c) Microsoft and contributors. All rights reserved.
104
100
  */
105
101
  var Constructor = 'constructor';
@@ -112,12 +108,13 @@
112
108
  var DynInstChkTag = '_dynInstChk';
113
109
  var DynAllowInstChkTag = DynInstChkTag;
114
110
  var DynProtoDefaultOptions = '_dfOpts';
111
+ var DynProtoPolyProto = "_dynProto";
115
112
  var UnknownValue = '_unknown_';
116
- var str__Proto$1 = "__proto__";
113
+ var str__Proto = "__proto__";
117
114
  var strUseBaseInst = 'useBaseInst';
118
115
  var strSetInstFuncs = 'setInstFuncs';
119
116
  var Obj = Object;
120
- var _objGetPrototypeOf$1 = Obj["getPrototypeOf"];
117
+ var _objGetPrototypeOf = Obj["getPrototypeOf"];
121
118
  var _dynamicNames = 0;
122
119
  function _hasOwnProperty(obj, prop) {
123
120
  return obj && Obj[Prototype$1].hasOwnProperty.call(obj, prop);
@@ -128,13 +125,16 @@
128
125
  function _isObjectArrayOrFunctionPrototype(target) {
129
126
  return _isObjectOrArrayPrototype(target) || target === Function[Prototype$1];
130
127
  }
131
- function _getObjProto$1(target) {
128
+ function _getObjProto(target) {
132
129
  if (target) {
133
- if (_objGetPrototypeOf$1) {
134
- return _objGetPrototypeOf$1(target);
130
+ if (_objGetPrototypeOf) {
131
+ return _objGetPrototypeOf(target);
135
132
  }
136
- var newProto = target[str__Proto$1] || target[Prototype$1] || (target[Constructor] ? target[Constructor][Prototype$1] : null);
133
+ var newProto = target[DynProtoPolyProto] || target[str__Proto] || target[Prototype$1] || (target[Constructor] ? target[Constructor][Prototype$1] : null);
137
134
  if (newProto) {
135
+ if (!target[DynProtoPolyProto]) {
136
+ target[DynProtoPolyProto] = newProto;
137
+ }
138
138
  return newProto;
139
139
  }
140
140
  }
@@ -199,16 +199,16 @@
199
199
  _forEachProp(instFuncs, function (name) {
200
200
  baseFuncs[name] = _instFuncProxy(thisTarget, instFuncs, name);
201
201
  });
202
- var baseProto = _getObjProto$1(classProto);
202
+ var baseProto = _getObjProto(classProto);
203
203
  var visited = [];
204
204
  while (baseProto && !_isObjectArrayOrFunctionPrototype(baseProto) && !_hasVisited(visited, baseProto)) {
205
205
  _forEachProp(baseProto, function (name) {
206
- if (!baseFuncs[name] && _isDynamicCandidate(baseProto, name, !_objGetPrototypeOf$1)) {
206
+ if (!baseFuncs[name] && _isDynamicCandidate(baseProto, name, !_objGetPrototypeOf)) {
207
207
  baseFuncs[name] = _instFuncProxy(thisTarget, baseProto, name);
208
208
  }
209
209
  });
210
210
  visited.push(baseProto);
211
- baseProto = _getObjProto$1(baseProto);
211
+ baseProto = _getObjProto(baseProto);
212
212
  }
213
213
  return baseFuncs;
214
214
  }
@@ -222,7 +222,7 @@
222
222
  }
223
223
  if (!instFunc[DynInstChkTag] && instFuncTable[DynAllowInstChkTag] !== false) {
224
224
  var canAddInst = !_hasOwnProperty(target, funcName);
225
- var objProto = _getObjProto$1(target);
225
+ var objProto = _getObjProto(target);
226
226
  var visited = [];
227
227
  while (canAddInst && objProto && !_isObjectArrayOrFunctionPrototype(objProto) && !_hasVisited(visited, objProto)) {
228
228
  var protoFunc = objProto[funcName];
@@ -231,7 +231,7 @@
231
231
  break;
232
232
  }
233
233
  visited.push(objProto);
234
- objProto = _getObjProto$1(objProto);
234
+ objProto = _getObjProto(objProto);
235
235
  }
236
236
  try {
237
237
  if (canAddInst) {
@@ -249,7 +249,7 @@
249
249
  function _getProtoFunc(funcName, proto, currentDynProtoProxy) {
250
250
  var protoFunc = proto[funcName];
251
251
  if (protoFunc === currentDynProtoProxy) {
252
- protoFunc = _getObjProto$1(proto)[funcName];
252
+ protoFunc = _getObjProto(proto)[funcName];
253
253
  }
254
254
  if (typeof protoFunc !== strFunction) {
255
255
  _throwTypeError("[" + funcName + "] is not a " + strFunction);
@@ -283,18 +283,19 @@
283
283
  }
284
284
  }
285
285
  function _checkPrototype(classProto, thisTarget) {
286
- if (_objGetPrototypeOf$1) {
286
+ if (_objGetPrototypeOf) {
287
287
  var visited = [];
288
- var thisProto = _getObjProto$1(thisTarget);
288
+ var thisProto = _getObjProto(thisTarget);
289
289
  while (thisProto && !_isObjectArrayOrFunctionPrototype(thisProto) && !_hasVisited(visited, thisProto)) {
290
290
  if (thisProto === classProto) {
291
291
  return true;
292
292
  }
293
293
  visited.push(thisProto);
294
- thisProto = _getObjProto$1(thisProto);
294
+ thisProto = _getObjProto(thisProto);
295
295
  }
296
+ return false;
296
297
  }
297
- return false;
298
+ return true;
298
299
  }
299
300
  function _getObjName(target, unknownValue) {
300
301
  if (_hasOwnProperty(target, Prototype$1)) {
@@ -327,7 +328,7 @@
327
328
  var instFuncs = _getInstanceFuncs(target);
328
329
  var baseFuncs = _getBaseFuncs(classProto, target, instFuncs, useBaseInst);
329
330
  delegateFunc(target, baseFuncs);
330
- var setInstanceFunc = !!_objGetPrototypeOf$1 && !!perfOptions[strSetInstFuncs];
331
+ var setInstanceFunc = !!_objGetPrototypeOf && !!perfOptions[strSetInstFuncs];
331
332
  if (setInstanceFunc && options) {
332
333
  setInstanceFunc = !!options[strSetInstFuncs];
333
334
  }
@@ -339,52 +340,105 @@
339
340
  };
340
341
  dynamicProto[DynProtoDefaultOptions] = perfDefaults;
341
342
 
342
- var strEmpty = "";
343
- var strSetNextPlugin = "setNextPlugin";
344
- var strIsInitialized = "isInitialized";
345
- var strTeardown = "teardown";
346
- var strCore = "core";
347
- var strUpdate = "update";
348
- var strDisabled = "disabled";
349
- var strDoTeardown = "_doTeardown";
343
+ var LoggingSeverity;
344
+ (function (LoggingSeverity) {
345
+ LoggingSeverity[LoggingSeverity["CRITICAL"] = 1] = "CRITICAL";
346
+ LoggingSeverity[LoggingSeverity["WARNING"] = 2] = "WARNING";
347
+ })(LoggingSeverity || (LoggingSeverity = {}));
348
+ var _InternalMessageId = {
349
+ BrowserDoesNotSupportLocalStorage: 0,
350
+ BrowserCannotReadLocalStorage: 1,
351
+ BrowserCannotReadSessionStorage: 2,
352
+ BrowserCannotWriteLocalStorage: 3,
353
+ BrowserCannotWriteSessionStorage: 4,
354
+ BrowserFailedRemovalFromLocalStorage: 5,
355
+ BrowserFailedRemovalFromSessionStorage: 6,
356
+ CannotSendEmptyTelemetry: 7,
357
+ ClientPerformanceMathError: 8,
358
+ ErrorParsingAISessionCookie: 9,
359
+ ErrorPVCalc: 10,
360
+ ExceptionWhileLoggingError: 11,
361
+ FailedAddingTelemetryToBuffer: 12,
362
+ FailedMonitorAjaxAbort: 13,
363
+ FailedMonitorAjaxDur: 14,
364
+ FailedMonitorAjaxOpen: 15,
365
+ FailedMonitorAjaxRSC: 16,
366
+ FailedMonitorAjaxSend: 17,
367
+ FailedMonitorAjaxGetCorrelationHeader: 18,
368
+ FailedToAddHandlerForOnBeforeUnload: 19,
369
+ FailedToSendQueuedTelemetry: 20,
370
+ FailedToReportDataLoss: 21,
371
+ FlushFailed: 22,
372
+ MessageLimitPerPVExceeded: 23,
373
+ MissingRequiredFieldSpecification: 24,
374
+ NavigationTimingNotSupported: 25,
375
+ OnError: 26,
376
+ SessionRenewalDateIsZero: 27,
377
+ SenderNotInitialized: 28,
378
+ StartTrackEventFailed: 29,
379
+ StopTrackEventFailed: 30,
380
+ StartTrackFailed: 31,
381
+ StopTrackFailed: 32,
382
+ TelemetrySampledAndNotSent: 33,
383
+ TrackEventFailed: 34,
384
+ TrackExceptionFailed: 35,
385
+ TrackMetricFailed: 36,
386
+ TrackPVFailed: 37,
387
+ TrackPVFailedCalc: 38,
388
+ TrackTraceFailed: 39,
389
+ TransmissionFailed: 40,
390
+ FailedToSetStorageBuffer: 41,
391
+ FailedToRestoreStorageBuffer: 42,
392
+ InvalidBackendResponse: 43,
393
+ FailedToFixDepricatedValues: 44,
394
+ InvalidDurationValue: 45,
395
+ TelemetryEnvelopeInvalid: 46,
396
+ CreateEnvelopeError: 47,
397
+ CannotSerializeObject: 48,
398
+ CannotSerializeObjectNonSerializable: 49,
399
+ CircularReferenceDetected: 50,
400
+ ClearAuthContextFailed: 51,
401
+ ExceptionTruncated: 52,
402
+ IllegalCharsInName: 53,
403
+ ItemNotInArray: 54,
404
+ MaxAjaxPerPVExceeded: 55,
405
+ MessageTruncated: 56,
406
+ NameTooLong: 57,
407
+ SampleRateOutOfRange: 58,
408
+ SetAuthContextFailed: 59,
409
+ SetAuthContextFailedAccountName: 60,
410
+ StringValueTooLong: 61,
411
+ StartCalledMoreThanOnce: 62,
412
+ StopCalledWithoutStart: 63,
413
+ TelemetryInitializerFailed: 64,
414
+ TrackArgumentsNotSpecified: 65,
415
+ UrlTooLong: 66,
416
+ SessionStorageBufferFull: 67,
417
+ CannotAccessCookie: 68,
418
+ IdTooLong: 69,
419
+ InvalidEvent: 70,
420
+ FailedMonitorAjaxSetRequestHeader: 71,
421
+ SendBrowserInfoOnUserInit: 72,
422
+ PluginException: 73,
423
+ NotificationException: 74,
424
+ SnippetScriptLoadFailure: 99,
425
+ InvalidInstrumentationKey: 100,
426
+ CannotParseAiBlobValue: 101,
427
+ InvalidContentBlob: 102,
428
+ TrackPageActionEventFailed: 103,
429
+ FailedAddingCustomDefinedRequestContext: 104,
430
+ InMemoryStorageBufferFull: 105
431
+ };
350
432
 
351
- var strToISOString = "toISOString";
352
- var cStrEndsWith = "endsWith";
353
- var cStrStartsWith = "startsWith";
354
- var cStrTrim = "trim";
433
+ var strOnPrefix = "on";
434
+ var strAttachEvent = "attachEvent";
435
+ var strAddEventHelper = "addEventListener";
355
436
  var strToString = "toString";
356
- var str__Proto = "__proto__";
357
- var strConstructor = "constructor";
358
- var _objDefineProperty$1 = ObjDefineProperty;
359
- var _objFreeze = ObjClass.freeze;
360
- ObjClass.seal;
361
- var _objKeys = ObjClass.keys;
362
- var StringProto = String[strShimPrototype];
363
- StringProto[cStrTrim];
364
- StringProto[cStrEndsWith];
365
- StringProto[cStrStartsWith];
366
- var DateProto = Date[strShimPrototype];
367
- DateProto[strToISOString];
437
+ var _objDefineProperty = ObjDefineProperty;
368
438
  var _isArray = Array.isArray;
369
439
  var _objToString = ObjProto[strToString];
370
440
  var _fnToString = ObjHasOwnProperty[strToString];
371
- var _objFunctionString = _fnToString.call(ObjClass);
372
- var rCamelCase = /-([a-z])/g;
373
- var rNormalizeInvalid = /([^\w\d_$])/g;
374
- var rLeadingNumeric = /^(\d+[\w\d_$])/;
375
- var _objGetPrototypeOf = Object["getPrototypeOf"];
376
- function _getObjProto(target) {
377
- if (target) {
378
- if (_objGetPrototypeOf) {
379
- return _objGetPrototypeOf(target);
380
- }
381
- var newProto = target[str__Proto] || target[strShimPrototype] || target[strConstructor];
382
- if (newProto) {
383
- return newProto;
384
- }
385
- }
386
- return null;
387
- }
441
+ _fnToString.call(ObjClass);
388
442
  function isUndefined(value) {
389
443
  return value === undefined || typeof value === strShimUndefined;
390
444
  }
@@ -394,24 +448,27 @@
394
448
  function hasOwnProperty(obj, prop) {
395
449
  return !!(obj && ObjHasOwnProperty.call(obj, prop));
396
450
  }
397
- function isObject(value) {
398
- return !!(value && typeof value === strShimObject);
399
- }
400
451
  function isFunction(value) {
401
452
  return !!(value && typeof value === strShimFunction);
402
453
  }
403
- function normalizeJsName(name) {
404
- var value = name;
405
- if (value && isString(value)) {
406
- value = value.replace(rCamelCase, function (_all, letter) {
407
- return letter.toUpperCase();
408
- });
409
- value = value.replace(rNormalizeInvalid, "_");
410
- value = value.replace(rLeadingNumeric, function (_all, match) {
411
- return "_" + match;
412
- });
454
+ function attachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {
455
+ if (useCapture === void 0) { useCapture = false; }
456
+ var result = false;
457
+ if (!isNullOrUndefined(obj)) {
458
+ try {
459
+ if (!isNullOrUndefined(obj[strAddEventHelper])) {
460
+ obj[strAddEventHelper](eventNameWithoutOn, handlerRef, useCapture);
461
+ result = true;
462
+ }
463
+ else if (!isNullOrUndefined(obj[strAttachEvent])) {
464
+ obj[strAttachEvent](strOnPrefix + eventNameWithoutOn, handlerRef);
465
+ result = true;
466
+ }
467
+ }
468
+ catch (e) {
469
+ }
413
470
  }
414
- return value;
471
+ return result;
415
472
  }
416
473
  function objForEachKey(target, callbackfn) {
417
474
  if (target) {
@@ -422,12 +479,6 @@
422
479
  }
423
480
  }
424
481
  }
425
- function strContains(value, search) {
426
- if (value && search) {
427
- return value.indexOf(search) !== -1;
428
- }
429
- return false;
430
- }
431
482
  var isArray = _isArray || _isArrayPoly;
432
483
  function _isArrayPoly(obj) {
433
484
  return !!(obj && _objToString.call(obj) === "[object Array]");
@@ -435,28 +486,6 @@
435
486
  function isError(obj) {
436
487
  return !!(obj && _objToString.call(obj) === "[object Error]");
437
488
  }
438
- function isString(value) {
439
- return typeof value === "string";
440
- }
441
- function isBoolean(value) {
442
- return typeof value === "boolean";
443
- }
444
- function isPlainObject(value) {
445
- var result = false;
446
- if (value && typeof value === "object") {
447
- var proto = _objGetPrototypeOf ? _objGetPrototypeOf(value) : _getObjProto(value);
448
- if (!proto) {
449
- result = true;
450
- }
451
- else {
452
- if (proto[strConstructor] && ObjHasOwnProperty.call(proto, strConstructor)) {
453
- proto = proto[strConstructor];
454
- }
455
- result = typeof proto === strShimFunction && _fnToString.call(proto) === _objFunctionString;
456
- }
457
- }
458
- return result;
459
- }
460
489
  function arrForEach(arr, callbackfn, thisArg) {
461
490
  var len = arr.length;
462
491
  try {
@@ -471,42 +500,8 @@
471
500
  catch (e) {
472
501
  }
473
502
  }
474
- var _objKeysHasDontEnumBug = !({ toString: null }).propertyIsEnumerable("toString");
475
- var _objKeysDontEnums = [
476
- "toString",
477
- "toLocaleString",
478
- "valueOf",
479
- "hasOwnProperty",
480
- "isPrototypeOf",
481
- "propertyIsEnumerable",
482
- "constructor"
483
- ];
484
- function objKeys(obj) {
485
- var objType = typeof obj;
486
- if (objType !== strShimFunction && (objType !== strShimObject || obj === null)) {
487
- throwTypeError("objKeys called on non-object");
488
- }
489
- if (!_objKeysHasDontEnumBug && _objKeys) {
490
- return _objKeys(obj);
491
- }
492
- var result = [];
493
- for (var prop in obj) {
494
- if (obj && ObjHasOwnProperty.call(obj, prop)) {
495
- result.push(prop);
496
- }
497
- }
498
- if (_objKeysHasDontEnumBug) {
499
- var dontEnumsLength = _objKeysDontEnums.length;
500
- for (var lp = 0; lp < dontEnumsLength; lp++) {
501
- if (obj && ObjHasOwnProperty.call(obj, _objKeysDontEnums[lp])) {
502
- result.push(_objKeysDontEnums[lp]);
503
- }
504
- }
505
- }
506
- return result;
507
- }
508
503
  function objDefineAccessors(target, prop, getProp, setProp) {
509
- if (_objDefineProperty$1) {
504
+ if (_objDefineProperty) {
510
505
  try {
511
506
  var descriptor = {
512
507
  enumerable: true,
@@ -518,7 +513,7 @@
518
513
  if (setProp) {
519
514
  descriptor.set = setProp;
520
515
  }
521
- _objDefineProperty$1(target, prop, descriptor);
516
+ _objDefineProperty(target, prop, descriptor);
522
517
  return true;
523
518
  }
524
519
  catch (e) {
@@ -526,10 +521,6 @@
526
521
  }
527
522
  return false;
528
523
  }
529
- function _doNothing(value) {
530
- return value;
531
- }
532
- var objFreeze = _objFreeze || _doNothing;
533
524
  function dateNow() {
534
525
  var dt = Date;
535
526
  return dt.now ? dt.now() : new dt().getTime();
@@ -538,7 +529,7 @@
538
529
  if (isError(object)) {
539
530
  return object.name;
540
531
  }
541
- return strEmpty;
532
+ return "";
542
533
  }
543
534
  function setValue(target, field, value, valChk, srcChk) {
544
535
  var theValue = value;
@@ -551,105 +542,13 @@
551
542
  }
552
543
  return theValue;
553
544
  }
554
- function throwError(message) {
555
- throw new Error(message);
556
- }
557
- function _createProxyFunction(source, funcName) {
558
- var srcFunc = null;
559
- var src = null;
560
- if (isFunction(source)) {
561
- srcFunc = source;
562
- }
563
- else {
564
- src = source;
565
- }
566
- return function () {
567
- var originalArguments = arguments;
568
- if (srcFunc) {
569
- src = srcFunc();
570
- }
571
- if (src) {
572
- return src[funcName].apply(src, originalArguments);
573
- }
574
- };
575
- }
576
- function proxyFunctionAs(target, name, source, theFunc, overwriteTarget) {
577
- if (overwriteTarget === void 0) { overwriteTarget = true; }
578
- if (target && name && source) {
579
- if (overwriteTarget || isUndefined(target[name])) {
580
- target[name] = _createProxyFunction(source, theFunc);
581
- }
582
- }
583
- }
584
- function createEnumStyle(values) {
585
- var enumClass = {};
586
- objForEachKey(values, function (field, value) {
587
- enumClass[field] = value;
588
- if (!isUndefined(enumClass[value])) {
589
- throwError("[" + value + "] exists for " + field);
590
- }
591
- enumClass[value] = field;
592
- });
593
- return objFreeze(enumClass);
594
- }
595
- function objExtend(obj1, obj2, obj3, obj4, obj5, obj6) {
596
- var theArgs = arguments;
597
- var extended = theArgs[0] || {};
598
- var argLen = theArgs.length;
599
- var deep = false;
600
- var idx = 1;
601
- if (argLen > 0 && isBoolean(extended)) {
602
- deep = extended;
603
- extended = theArgs[idx] || {};
604
- idx++;
605
- }
606
- if (!isObject(extended)) {
607
- extended = {};
608
- }
609
- for (; idx < argLen; idx++) {
610
- var arg = theArgs[idx];
611
- var isArgArray = isArray(arg);
612
- var isArgObj = isObject(arg);
613
- for (var prop in arg) {
614
- var propOk = (isArgArray && (prop in arg)) || (isArgObj && (ObjHasOwnProperty.call(arg, prop)));
615
- if (!propOk) {
616
- continue;
617
- }
618
- var newValue = arg[prop];
619
- var isNewArray = void 0;
620
- if (deep && newValue && ((isNewArray = isArray(newValue)) || isPlainObject(newValue))) {
621
- var clone = extended[prop];
622
- if (isNewArray) {
623
- if (!isArray(clone)) {
624
- clone = [];
625
- }
626
- }
627
- else if (!isPlainObject(clone)) {
628
- clone = {};
629
- }
630
- newValue = objExtend(deep, clone, newValue);
631
- }
632
- if (newValue !== undefined) {
633
- extended[prop] = newValue;
634
- }
635
- }
636
- }
637
- return extended;
638
- }
639
545
 
640
546
  var strWindow = "window";
641
547
  var strDocument = "document";
642
- var strNavigator = "navigator";
643
548
  var strLocation = "location";
644
549
  var strConsole = "console";
645
550
  var strPerformance = "performance";
646
551
  var strJSON = "JSON";
647
- var strCrypto = "crypto";
648
- var strMsCrypto = "msCrypto";
649
- var strMsie = "msie";
650
- var strTrident = "trident/";
651
- var _isTrident = null;
652
- var _navUserAgentCheck = null;
653
552
  var _enableMocks = false;
654
553
  function getGlobalInst(name) {
655
554
  var gbl = getGlobal();
@@ -679,15 +578,6 @@
679
578
  }
680
579
  return getGlobalInst(strDocument);
681
580
  }
682
- function hasNavigator() {
683
- return Boolean(typeof navigator === strShimObject && navigator);
684
- }
685
- function getNavigator() {
686
- if (hasNavigator()) {
687
- return navigator;
688
- }
689
- return getGlobalInst(strNavigator);
690
- }
691
581
  function getLocation(checkForMock) {
692
582
  if (checkForMock && _enableMocks) {
693
583
  var mockLocation = getGlobalInst("__mockLocation");
@@ -718,24 +608,9 @@
718
608
  }
719
609
  return null;
720
610
  }
721
- function getCrypto() {
722
- return getGlobalInst(strCrypto);
723
- }
724
- function getMsCrypto() {
725
- return getGlobalInst(strMsCrypto);
726
- }
727
- function isIE() {
728
- var nav = getNavigator();
729
- if (nav && (nav.userAgent !== _navUserAgentCheck || _isTrident === null)) {
730
- _navUserAgentCheck = nav.userAgent;
731
- var userAgent = (_navUserAgentCheck || strEmpty).toLowerCase();
732
- _isTrident = (strContains(userAgent, strMsie) || strContains(userAgent, strTrident));
733
- }
734
- return _isTrident;
735
- }
736
611
  function dumpObj(object) {
737
612
  var objectTypeDump = Object[strShimPrototype].toString.call(object);
738
- var propertyValueDump = strEmpty;
613
+ var propertyValueDump = "";
739
614
  if (objectTypeDump === "[object Error]") {
740
615
  propertyValueDump = "{ stack: '" + object.stack + "', message: '" + object.message + "', name: '" + object.name + "'";
741
616
  }
@@ -768,9 +643,9 @@
768
643
  var strWarnToConsole = "warnToConsole";
769
644
  function _sanitizeDiagnosticText(text) {
770
645
  if (text) {
771
- return "\"" + text.replace(/\"/g, strEmpty) + "\"";
646
+ return "\"" + text.replace(/\"/g, "") + "\"";
772
647
  }
773
- return strEmpty;
648
+ return "";
774
649
  }
775
650
  function _logToConsole(func, message) {
776
651
  var theConsole = getConsole();
@@ -792,12 +667,12 @@
792
667
  _self.message =
793
668
  (isUserAct ? AiUserActionablePrefix : AiNonUserActionablePrefix) +
794
669
  msgId;
795
- var strProps = strEmpty;
670
+ var strProps = "";
796
671
  if (hasJSON()) {
797
672
  strProps = getJSON().stringify(properties);
798
673
  }
799
- var diagnosticText = (msg ? " message:" + _sanitizeDiagnosticText(msg) : strEmpty) +
800
- (properties ? " props:" + _sanitizeDiagnosticText(strProps) : strEmpty);
674
+ var diagnosticText = (msg ? " message:" + _sanitizeDiagnosticText(msg) : "") +
675
+ (properties ? " props:" + _sanitizeDiagnosticText(strProps) : "");
801
676
  _self.message += diagnosticText;
802
677
  }
803
678
  _InternalLogMessage.dataType = "MessageData";
@@ -824,10 +699,10 @@
824
699
  if (isUserAct === void 0) { isUserAct = false; }
825
700
  var message = new _InternalLogMessage(msgId, msg, isUserAct, properties);
826
701
  if (_self.enableDebugExceptions()) {
827
- throw message;
702
+ throw dumpObj(message);
828
703
  }
829
704
  else {
830
- var logFunc = severity === 1 ? strErrorToConsole : strWarnToConsole;
705
+ var logFunc = severity === LoggingSeverity.CRITICAL ? strErrorToConsole : strWarnToConsole;
831
706
  if (!isUndefined(message.message)) {
832
707
  var logLevel = _self.consoleLoggingLevel();
833
708
  if (isUserAct) {
@@ -845,7 +720,7 @@
845
720
  _self.logInternalMessage(severity, message);
846
721
  }
847
722
  else {
848
- _debugExtMsg("throw" + (severity === 1 ? "Critical" : "Warning"), message);
723
+ _debugExtMsg("throw" + (severity === LoggingSeverity.CRITICAL ? "Critical" : "Warning"), message);
849
724
  }
850
725
  }
851
726
  };
@@ -877,13 +752,13 @@
877
752
  if (severity <= _self.telemetryLoggingLevel()) {
878
753
  _self.queue.push(message);
879
754
  _messageCount++;
880
- _debugExtMsg((severity === 1 ? "error" : "warn"), message);
755
+ _debugExtMsg((severity === LoggingSeverity.CRITICAL ? "error" : "warn"), message);
881
756
  }
882
757
  if (_messageCount === _self.maxInternalMessageLimit()) {
883
758
  var throttleLimitMessage = "Internal events throttle limit per PageView reached for this app.";
884
- var throttleMessage = new _InternalLogMessage(23 , throttleLimitMessage, false);
759
+ var throttleMessage = new _InternalLogMessage(_InternalMessageId.MessageLimitPerPVExceeded, throttleLimitMessage, false);
885
760
  _self.queue.push(throttleMessage);
886
- if (severity === 1 ) {
761
+ if (severity === LoggingSeverity.CRITICAL) {
887
762
  _self.errorToConsole(throttleLimitMessage);
888
763
  }
889
764
  else {
@@ -912,10 +787,6 @@
912
787
  }
913
788
  return DiagnosticLogger;
914
789
  }());
915
- function _throwInternal(logger, severity, msgId, msg, properties, isUserAct) {
916
- if (isUserAct === void 0) { isUserAct = false; }
917
- (logger || new DiagnosticLogger()).throwInternal(severity, msgId, msg, properties, isUserAct);
918
- }
919
790
 
920
791
  var strExecutionContextKey = "ctx";
921
792
  var PerfEvent = /** @class */ (function () {
@@ -1029,634 +900,207 @@
1029
900
  return func();
1030
901
  }
1031
902
 
1032
- var UInt32Mask = 0x100000000;
1033
- var MaxUInt32 = 0xffffffff;
1034
- var _mwcSeeded = false;
1035
- var _mwcW = 123456789;
1036
- var _mwcZ = 987654321;
1037
- function _mwcSeed(seedValue) {
1038
- if (seedValue < 0) {
1039
- seedValue >>>= 0;
1040
- }
1041
- _mwcW = (123456789 + seedValue) & MaxUInt32;
1042
- _mwcZ = (987654321 - seedValue) & MaxUInt32;
1043
- _mwcSeeded = true;
1044
- }
1045
- function _autoSeedMwc() {
1046
- try {
1047
- var now = dateNow() & 0x7fffffff;
1048
- _mwcSeed(((Math.random() * UInt32Mask) ^ now) + now);
1049
- }
1050
- catch (e) {
1051
- }
1052
- }
1053
- function random32(signed) {
1054
- var value = 0;
1055
- var c = getCrypto() || getMsCrypto();
1056
- if (c && c.getRandomValues) {
1057
- value = c.getRandomValues(new Uint32Array(1))[0] & MaxUInt32;
1058
- }
1059
- if (value === 0 && isIE()) {
1060
- if (!_mwcSeeded) {
1061
- _autoSeedMwc();
1062
- }
1063
- value = mwcRandom32() & MaxUInt32;
1064
- }
1065
- if (value === 0) {
1066
- value = Math.floor((UInt32Mask * Math.random()) | 0);
1067
- }
1068
- if (!signed) {
1069
- value >>>= 0;
1070
- }
1071
- return value;
1072
- }
1073
- function mwcRandom32(signed) {
1074
- _mwcZ = (36969 * (_mwcZ & 0xFFFF) + (_mwcZ >> 16)) & MaxUInt32;
1075
- _mwcW = (18000 * (_mwcW & 0xFFFF) + (_mwcW >> 16)) & MaxUInt32;
1076
- var value = (((_mwcZ << 16) + (_mwcW & 0xFFFF)) >>> 0) & MaxUInt32 | 0;
1077
- if (!signed) {
1078
- value >>>= 0;
1079
- }
1080
- return value;
1081
- }
1082
- function newId(maxLength) {
1083
- if (maxLength === void 0) { maxLength = 22; }
1084
- var base64chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
1085
- var number = random32() >>> 0;
1086
- var chars = 0;
1087
- var result = strEmpty;
1088
- while (result.length < maxLength) {
1089
- chars++;
1090
- result += base64chars.charAt(number & 0x3F);
1091
- number >>>= 6;
1092
- if (chars === 5) {
1093
- number = (((random32() << 2) & 0xFFFFFFFF) | (number & 0x03)) >>> 0;
1094
- chars = 0;
1095
- }
1096
- }
1097
- return result;
1098
- }
1099
-
1100
- var _objDefineProperty = ObjDefineProperty;
1101
- var version = "2.7.5-nightly.2204-03";
1102
- var instanceName = "." + newId(6);
1103
- var _dataUid = 0;
1104
- function _createAccessor(target, prop, value) {
1105
- if (_objDefineProperty) {
1106
- try {
1107
- _objDefineProperty(target, prop, {
1108
- value: value,
1109
- enumerable: false,
1110
- configurable: true
1111
- });
1112
- return true;
1113
- }
1114
- catch (e) {
1115
- }
1116
- }
1117
- return false;
1118
- }
1119
- function _canAcceptData(target) {
1120
- return target.nodeType === 1 || target.nodeType === 9 || !(+target.nodeType);
1121
- }
1122
- function _getCache(data, target) {
1123
- var theCache = target[data.id];
1124
- if (!theCache) {
1125
- theCache = {};
1126
- try {
1127
- if (_canAcceptData(target)) {
1128
- if (!_createAccessor(target, data.id, theCache)) {
1129
- target[data.id] = theCache;
1130
- }
1131
- }
1132
- }
1133
- catch (e) {
1134
- }
1135
- }
1136
- return theCache;
1137
- }
1138
- function createUniqueNamespace(name, includeVersion) {
1139
- if (includeVersion === void 0) { includeVersion = false; }
1140
- return normalizeJsName(name + (_dataUid++) + (includeVersion ? "." + version : "") + instanceName);
1141
- }
1142
- function createElmNodeData(name) {
1143
- var data = {
1144
- id: createUniqueNamespace("_aiData-" + (name || "") + "." + version),
1145
- accept: function (target) {
1146
- return _canAcceptData(target);
1147
- },
1148
- get: function (target, name, defValue, addDefault) {
1149
- var theCache = target[data.id];
1150
- if (!theCache) {
1151
- if (addDefault) {
1152
- theCache = _getCache(data, target);
1153
- theCache[normalizeJsName(name)] = defValue;
1154
- }
1155
- return defValue;
1156
- }
1157
- return theCache[normalizeJsName(name)];
1158
- },
1159
- kill: function (target, name) {
1160
- if (target && target[name]) {
1161
- try {
1162
- delete target[name];
1163
- }
1164
- catch (e) {
1165
- }
1166
- }
1167
- }
1168
- };
1169
- return data;
1170
- }
1171
-
1172
- var strDoUnload = "_doUnload";
1173
- var pluginStateData = createElmNodeData("plugin");
1174
- function _getPluginState(plugin) {
1175
- return pluginStateData.get(plugin, "state", {}, true);
1176
- }
1177
- function unloadComponents(components, unloadCtx, unloadState, asyncCallback) {
1178
- var idx = 0;
1179
- function _doUnload() {
1180
- while (idx < components.length) {
1181
- var component = components[idx++];
1182
- if (component) {
1183
- var func = component[strDoUnload] || component[strDoTeardown];
1184
- if (isFunction(func)) {
1185
- if (func.call(component, unloadCtx, unloadState, _doUnload) === true) {
1186
- return true;
1187
- }
1188
- }
903
+ var TelemetryPluginChain = /** @class */ (function () {
904
+ function TelemetryPluginChain(plugin, defItemCtx) {
905
+ var _self = this;
906
+ var _nextProxy = null;
907
+ var _hasProcessTelemetry = isFunction(plugin.processTelemetry);
908
+ var _hasSetNext = isFunction(plugin.setNextPlugin);
909
+ _self._hasRun = false;
910
+ _self.getPlugin = function () {
911
+ return plugin;
912
+ };
913
+ _self.getNext = function () {
914
+ return _nextProxy;
915
+ };
916
+ _self.setNext = function (nextPlugin) {
917
+ _nextProxy = nextPlugin;
918
+ };
919
+ _self.processTelemetry = function (env, itemCtx) {
920
+ if (!itemCtx) {
921
+ itemCtx = defItemCtx;
1189
922
  }
1190
- }
1191
- }
1192
- return _doUnload();
1193
- }
1194
-
1195
- var strTelemetryPluginChain = "TelemetryPluginChain";
1196
- var strHasRunFlags = "_hasRun";
1197
- var strGetTelCtx = "_getTelCtx";
1198
- var _chainId = 0;
1199
- function _getNextProxyStart(proxy, config, core, startAt) {
1200
- while (proxy) {
1201
- if (proxy.getPlugin() === startAt) {
1202
- return proxy;
1203
- }
1204
- proxy = proxy.getNext();
1205
- }
1206
- return createTelemetryProxyChain([startAt], config, core);
1207
- }
1208
- function _createInternalContext(telemetryChain, config, core, startAt) {
1209
- var _nextProxy = null;
1210
- var _onComplete = [];
1211
- if (startAt !== null) {
1212
- _nextProxy = startAt ? _getNextProxyStart(telemetryChain, config, core, startAt) : telemetryChain;
1213
- }
1214
- var context = {
1215
- _next: _moveNext,
1216
- ctx: {
1217
- core: function () {
1218
- return core;
1219
- },
1220
- diagLog: function () {
1221
- return safeGetLogger(core, config);
1222
- },
1223
- getCfg: function () {
1224
- return config;
1225
- },
1226
- getExtCfg: _getExtCfg,
1227
- getConfig: _getConfig,
1228
- hasNext: function () {
1229
- return !!_nextProxy;
1230
- },
1231
- getNext: function () {
1232
- return _nextProxy;
1233
- },
1234
- setNext: function (nextPlugin) {
1235
- _nextProxy = nextPlugin;
1236
- },
1237
- iterate: _iterateChain,
1238
- onComplete: _addOnComplete
1239
- }
1240
- };
1241
- function _addOnComplete(onComplete, that) {
1242
- var args = [];
1243
- for (var _i = 2; _i < arguments.length; _i++) {
1244
- args[_i - 2] = arguments[_i];
1245
- }
1246
- if (onComplete) {
1247
- _onComplete.push({
1248
- func: onComplete,
1249
- self: !isUndefined(that) ? that : context.ctx,
1250
- args: args
1251
- });
1252
- }
1253
- }
1254
- function _moveNext() {
1255
- var nextProxy = _nextProxy;
1256
- _nextProxy = nextProxy ? nextProxy.getNext() : null;
1257
- if (!nextProxy) {
1258
- var onComplete = _onComplete;
1259
- if (onComplete && onComplete.length > 0) {
1260
- arrForEach(onComplete, function (completeDetails) {
923
+ var identifier = plugin ? plugin.identifier : "TelemetryPluginChain";
924
+ doPerf(itemCtx ? itemCtx.core() : null, function () { return identifier + ":processTelemetry"; }, function () {
925
+ if (plugin && _hasProcessTelemetry) {
926
+ _self._hasRun = true;
1261
927
  try {
1262
- completeDetails.func.call(completeDetails.self, completeDetails.args);
1263
- }
1264
- catch (e) {
1265
- _throwInternal(core.logger, 2 , 73 , "Unexpected Exception during onComplete - " + dumpObj(e));
928
+ itemCtx.setNext(_nextProxy);
929
+ if (_hasSetNext) {
930
+ plugin.setNextPlugin(_nextProxy);
931
+ }
932
+ _nextProxy && (_nextProxy._hasRun = false);
933
+ plugin.processTelemetry(env, itemCtx);
1266
934
  }
1267
- });
1268
- _onComplete = [];
1269
- }
1270
- }
1271
- return nextProxy;
1272
- }
1273
- function _getExtCfg(identifier, defaultValue, mergeDefault) {
1274
- if (defaultValue === void 0) { defaultValue = {}; }
1275
- if (mergeDefault === void 0) { mergeDefault = 0 ; }
1276
- var theConfig;
1277
- if (config) {
1278
- var extConfig = config.extensionConfig;
1279
- if (extConfig && identifier) {
1280
- theConfig = extConfig[identifier];
1281
- }
1282
- }
1283
- if (!theConfig) {
1284
- theConfig = defaultValue;
1285
- }
1286
- else if (isObject(defaultValue)) {
1287
- if (mergeDefault !== 0 ) {
1288
- var newConfig_1 = objExtend(true, defaultValue, theConfig);
1289
- if (config && mergeDefault === 2 ) {
1290
- objForEachKey(defaultValue, function (field) {
1291
- if (isNullOrUndefined(newConfig_1[field])) {
1292
- var cfgValue = config[field];
1293
- if (!isNullOrUndefined(cfgValue)) {
1294
- newConfig_1[field] = cfgValue;
1295
- }
935
+ catch (error) {
936
+ var hasRun = _nextProxy && _nextProxy._hasRun;
937
+ if (!_nextProxy || !hasRun) {
938
+ itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.PluginException, "Plugin [" + plugin.identifier + "] failed during processTelemetry - " + dumpObj(error));
1296
939
  }
1297
- });
940
+ if (_nextProxy && !hasRun) {
941
+ _nextProxy.processTelemetry(env, itemCtx);
942
+ }
943
+ }
1298
944
  }
1299
- }
1300
- }
1301
- return theConfig;
1302
- }
1303
- function _getConfig(identifier, field, defaultValue) {
1304
- if (defaultValue === void 0) { defaultValue = false; }
1305
- var theValue;
1306
- var extConfig = _getExtCfg(identifier, null);
1307
- if (extConfig && !isNullOrUndefined(extConfig[field])) {
1308
- theValue = extConfig[field];
1309
- }
1310
- else if (config && !isNullOrUndefined(config[field])) {
1311
- theValue = config[field];
1312
- }
1313
- return !isNullOrUndefined(theValue) ? theValue : defaultValue;
945
+ else if (_nextProxy) {
946
+ _self._hasRun = true;
947
+ _nextProxy.processTelemetry(env, itemCtx);
948
+ }
949
+ }, function () { return ({ item: env }); }, !(env.sync));
950
+ };
1314
951
  }
1315
- function _iterateChain(cb) {
1316
- var nextPlugin;
1317
- while (!!(nextPlugin = context._next())) {
1318
- var plugin = nextPlugin.getPlugin();
1319
- if (plugin) {
1320
- cb(plugin);
952
+ return TelemetryPluginChain;
953
+ }());
954
+
955
+ function _createProxyChain(plugins, itemCtx) {
956
+ var proxies = [];
957
+ if (plugins && plugins.length > 0) {
958
+ var lastProxy = null;
959
+ for (var idx = 0; idx < plugins.length; idx++) {
960
+ var thePlugin = plugins[idx];
961
+ if (thePlugin && isFunction(thePlugin.processTelemetry)) {
962
+ var newProxy = new TelemetryPluginChain(thePlugin, itemCtx);
963
+ proxies.push(newProxy);
964
+ if (lastProxy) {
965
+ lastProxy.setNext(newProxy);
966
+ }
967
+ lastProxy = newProxy;
1321
968
  }
1322
969
  }
1323
970
  }
1324
- return context;
971
+ return proxies.length > 0 ? proxies[0] : null;
1325
972
  }
1326
- function createProcessTelemetryContext(telemetryChain, config, core, startAt) {
1327
- var internalContext = _createInternalContext(telemetryChain, config, core, startAt);
1328
- var context = internalContext.ctx;
1329
- function _processNext(env) {
1330
- var nextPlugin = internalContext._next();
1331
- nextPlugin && nextPlugin.processTelemetry(env, context);
1332
- return !nextPlugin;
1333
- }
1334
- function _createNew(plugins, startAt) {
1335
- if (plugins === void 0) { plugins = null; }
1336
- if (isArray(plugins)) {
1337
- plugins = createTelemetryProxyChain(plugins, config, core, startAt);
973
+ function _copyProxyChain(proxy, itemCtx, startAt) {
974
+ var plugins = [];
975
+ var add = startAt ? false : true;
976
+ if (proxy) {
977
+ while (proxy) {
978
+ var thePlugin = proxy.getPlugin();
979
+ if (add || thePlugin === startAt) {
980
+ add = true;
981
+ plugins.push(thePlugin);
982
+ }
983
+ proxy = proxy.getNext();
1338
984
  }
1339
- return createProcessTelemetryContext(plugins || context.getNext(), config, core, startAt);
1340
- }
1341
- context.processNext = _processNext;
1342
- context.createNew = _createNew;
1343
- return context;
1344
- }
1345
- function createProcessTelemetryUnloadContext(telemetryChain, config, core, startAt) {
1346
- var internalContext = _createInternalContext(telemetryChain, config, core, startAt);
1347
- var context = internalContext.ctx;
1348
- function _processNext(unloadState) {
1349
- var nextPlugin = internalContext._next();
1350
- nextPlugin && nextPlugin.unload(context, unloadState);
1351
- return !nextPlugin;
1352
985
  }
1353
- function _createNew(plugins, startAt) {
1354
- if (plugins === void 0) { plugins = null; }
1355
- if (isArray(plugins)) {
1356
- plugins = createTelemetryProxyChain(plugins, config, core, startAt);
1357
- }
1358
- return createProcessTelemetryUnloadContext(plugins || context.getNext(), config, core, startAt);
986
+ if (!add) {
987
+ plugins.push(startAt);
1359
988
  }
1360
- context.processNext = _processNext;
1361
- context.createNew = _createNew;
1362
- return context;
989
+ return _createProxyChain(plugins, itemCtx);
1363
990
  }
1364
- function createProcessTelemetryUpdateContext(telemetryChain, config, core, startAt) {
1365
- var internalContext = _createInternalContext(telemetryChain, config, core, startAt);
1366
- var context = internalContext.ctx;
1367
- function _processNext(updateState) {
1368
- return context.iterate(function (plugin) {
1369
- if (isFunction(plugin[strUpdate])) {
1370
- plugin[strUpdate](context, updateState);
991
+ function _copyPluginChain(srcPlugins, itemCtx, startAt) {
992
+ var plugins = srcPlugins;
993
+ var add = false;
994
+ if (startAt && srcPlugins) {
995
+ plugins = [];
996
+ arrForEach(srcPlugins, function (thePlugin) {
997
+ if (add || thePlugin === startAt) {
998
+ add = true;
999
+ plugins.push(thePlugin);
1371
1000
  }
1372
1001
  });
1373
1002
  }
1374
- function _createNew(plugins, startAt) {
1375
- if (plugins === void 0) { plugins = null; }
1376
- if (isArray(plugins)) {
1377
- plugins = createTelemetryProxyChain(plugins, config, core, startAt);
1003
+ if (startAt && !add) {
1004
+ if (!plugins) {
1005
+ plugins = [];
1378
1006
  }
1379
- return createProcessTelemetryUpdateContext(plugins || context.getNext(), config, core, startAt);
1007
+ plugins.push(startAt);
1380
1008
  }
1381
- context.processNext = _processNext;
1382
- context.createNew = _createNew;
1383
- return context;
1009
+ return _createProxyChain(plugins, itemCtx);
1384
1010
  }
1385
- function createTelemetryProxyChain(plugins, config, core, startAt) {
1386
- var firstProxy = null;
1387
- var add = startAt ? false : true;
1388
- if (isArray(plugins) && plugins.length > 0) {
1389
- var lastProxy_1 = null;
1390
- arrForEach(plugins, function (thePlugin) {
1391
- if (!add && startAt === thePlugin) {
1392
- add = true;
1011
+ var ProcessTelemetryContext = /** @class */ (function () {
1012
+ function ProcessTelemetryContext(plugins, config, core, startAt) {
1013
+ var _self = this;
1014
+ var _nextProxy = null;
1015
+ if (startAt !== null) {
1016
+ if (plugins && isFunction(plugins.getPlugin)) {
1017
+ _nextProxy = _copyProxyChain(plugins, _self, startAt || plugins.getPlugin());
1393
1018
  }
1394
- if (add && thePlugin && isFunction(thePlugin.processTelemetry)) {
1395
- var newProxy = createTelemetryPluginProxy(thePlugin, config, core);
1396
- if (!firstProxy) {
1397
- firstProxy = newProxy;
1019
+ else {
1020
+ if (startAt) {
1021
+ _nextProxy = _copyPluginChain(plugins, _self, startAt);
1398
1022
  }
1399
- if (lastProxy_1) {
1400
- lastProxy_1._setNext(newProxy);
1023
+ else if (isUndefined(startAt)) {
1024
+ _nextProxy = _createProxyChain(plugins, _self);
1401
1025
  }
1402
- lastProxy_1 = newProxy;
1403
1026
  }
1404
- });
1405
- }
1406
- if (startAt && !firstProxy) {
1407
- return createTelemetryProxyChain([startAt], config, core);
1408
- }
1409
- return firstProxy;
1410
- }
1411
- function createTelemetryPluginProxy(plugin, config, core) {
1412
- var nextProxy = null;
1413
- var hasProcessTelemetry = isFunction(plugin.processTelemetry);
1414
- var hasSetNext = isFunction(plugin.setNextPlugin);
1415
- var chainId;
1416
- if (plugin) {
1417
- chainId = plugin.identifier + "-" + plugin.priority + "-" + _chainId++;
1418
- }
1419
- else {
1420
- chainId = "Unknown-0-" + _chainId++;
1421
- }
1422
- var proxyChain = {
1423
- getPlugin: function () {
1424
- return plugin;
1425
- },
1426
- getNext: function () {
1427
- return nextProxy;
1428
- },
1429
- processTelemetry: _processTelemetry,
1430
- unload: _unloadPlugin,
1431
- update: _updatePlugin,
1432
- _id: chainId,
1433
- _setNext: function (nextPlugin) {
1434
- nextProxy = nextPlugin;
1435
1027
  }
1436
- };
1437
- function _getTelCtx() {
1438
- var itemCtx;
1439
- if (plugin && isFunction(plugin[strGetTelCtx])) {
1440
- itemCtx = plugin[strGetTelCtx]();
1441
- }
1442
- if (!itemCtx) {
1443
- itemCtx = createProcessTelemetryContext(proxyChain, config, core);
1444
- }
1445
- return itemCtx;
1446
- }
1447
- function _processChain(itemCtx, processPluginFn, name, details, isAsync) {
1448
- var hasRun = false;
1449
- var identifier = plugin ? plugin.identifier : strTelemetryPluginChain;
1450
- var hasRunContext = itemCtx[strHasRunFlags];
1451
- if (!hasRunContext) {
1452
- hasRunContext = itemCtx[strHasRunFlags] = {};
1453
- }
1454
- itemCtx.setNext(nextProxy);
1455
- if (plugin) {
1456
- doPerf(itemCtx[strCore](), function () { return identifier + ":" + name; }, function () {
1457
- hasRunContext[chainId] = true;
1458
- try {
1459
- var nextId = nextProxy ? nextProxy._id : strEmpty;
1460
- if (nextId) {
1461
- hasRunContext[nextId] = false;
1462
- }
1463
- hasRun = processPluginFn(itemCtx);
1464
- }
1465
- catch (error) {
1466
- var hasNextRun = nextProxy ? hasRunContext[nextProxy._id] : true;
1467
- if (hasNextRun) {
1468
- hasRun = true;
1469
- }
1470
- if (!nextProxy || !hasNextRun) {
1471
- _throwInternal(itemCtx.diagLog(), 1 , 73 , "Plugin [" + plugin.identifier + "] failed during " + name + " - " + dumpObj(error) + ", run flags: " + dumpObj(hasRunContext));
1472
- }
1028
+ _self.core = function () {
1029
+ return core;
1030
+ };
1031
+ _self.diagLog = function () {
1032
+ return safeGetLogger(core, config);
1033
+ };
1034
+ _self.getCfg = function () {
1035
+ return config;
1036
+ };
1037
+ _self.getExtCfg = function (identifier, defaultValue) {
1038
+ if (defaultValue === void 0) { defaultValue = {}; }
1039
+ var theConfig;
1040
+ if (config) {
1041
+ var extConfig = config.extensionConfig;
1042
+ if (extConfig && identifier) {
1043
+ theConfig = extConfig[identifier];
1473
1044
  }
1474
- }, details, isAsync);
1475
- }
1476
- return hasRun;
1477
- }
1478
- function _processTelemetry(env, itemCtx) {
1479
- itemCtx = itemCtx || _getTelCtx();
1480
- function _callProcessTelemetry(itemCtx) {
1481
- if (!plugin || !hasProcessTelemetry) {
1482
- return false;
1483
- }
1484
- var pluginState = _getPluginState(plugin);
1485
- if (pluginState[strTeardown] || pluginState[strDisabled]) {
1486
- return false;
1487
1045
  }
1488
- if (hasSetNext) {
1489
- plugin.setNextPlugin(nextProxy);
1046
+ return (theConfig ? theConfig : defaultValue);
1047
+ };
1048
+ _self.getConfig = function (identifier, field, defaultValue) {
1049
+ if (defaultValue === void 0) { defaultValue = false; }
1050
+ var theValue;
1051
+ var extConfig = _self.getExtCfg(identifier, null);
1052
+ if (extConfig && !isNullOrUndefined(extConfig[field])) {
1053
+ theValue = extConfig[field];
1490
1054
  }
1491
- plugin.processTelemetry(env, itemCtx);
1492
- return true;
1493
- }
1494
- if (!_processChain(itemCtx, _callProcessTelemetry, "processTelemetry", function () { return ({ item: env }); }, !(env.sync))) {
1495
- itemCtx.processNext(env);
1496
- }
1497
- }
1498
- function _unloadPlugin(unloadCtx, unloadState) {
1499
- function _callTeardown() {
1500
- var hasRun = false;
1501
- if (plugin) {
1502
- var pluginState = _getPluginState(plugin);
1503
- var pluginCore = plugin[strCore] || pluginState.core;
1504
- if (plugin && (!pluginCore || pluginCore === unloadCtx[strCore]()) && !pluginState[strTeardown]) {
1505
- pluginState[strCore] = null;
1506
- pluginState[strTeardown] = true;
1507
- pluginState[strIsInitialized] = false;
1508
- if (plugin[strTeardown] && plugin[strTeardown](unloadCtx, unloadState) === true) {
1509
- hasRun = true;
1510
- }
1511
- }
1055
+ else if (config && !isNullOrUndefined(config[field])) {
1056
+ theValue = config[field];
1512
1057
  }
1513
- return hasRun;
1514
- }
1515
- if (!_processChain(unloadCtx, _callTeardown, "unload", function () { }, unloadState.isAsync)) {
1516
- unloadCtx.processNext(unloadState);
1517
- }
1518
- }
1519
- function _updatePlugin(updateCtx, updateState) {
1520
- function _callUpdate() {
1521
- var hasRun = false;
1522
- if (plugin) {
1523
- var pluginState = _getPluginState(plugin);
1524
- var pluginCore = plugin[strCore] || pluginState.core;
1525
- if (plugin && (!pluginCore || pluginCore === updateCtx[strCore]()) && !pluginState[strTeardown]) {
1526
- if (plugin[strUpdate] && plugin[strUpdate](updateCtx, updateState) === true) {
1527
- hasRun = true;
1528
- }
1529
- }
1058
+ return !isNullOrUndefined(theValue) ? theValue : defaultValue;
1059
+ };
1060
+ _self.hasNext = function () {
1061
+ return _nextProxy != null;
1062
+ };
1063
+ _self.getNext = function () {
1064
+ return _nextProxy;
1065
+ };
1066
+ _self.setNext = function (nextPlugin) {
1067
+ _nextProxy = nextPlugin;
1068
+ };
1069
+ _self.processNext = function (env) {
1070
+ var nextPlugin = _nextProxy;
1071
+ if (nextPlugin) {
1072
+ _nextProxy = nextPlugin.getNext();
1073
+ nextPlugin.processTelemetry(env, _self);
1530
1074
  }
1531
- return hasRun;
1532
- }
1533
- if (!_processChain(updateCtx, _callUpdate, "update", function () { }, false)) {
1534
- updateCtx.processNext(updateState);
1535
- }
1075
+ };
1076
+ _self.createNew = function (plugins, startAt) {
1077
+ if (plugins === void 0) { plugins = null; }
1078
+ return new ProcessTelemetryContext(plugins || _nextProxy, config, core, startAt);
1079
+ };
1536
1080
  }
1537
- return objFreeze(proxyChain);
1538
- }
1081
+ return ProcessTelemetryContext;
1082
+ }());
1539
1083
 
1540
1084
  var strExtensionConfig = "extensionConfig";
1541
1085
 
1542
- function createUnloadHandlerContainer() {
1543
- var handlers = [];
1544
- function _addHandler(handler) {
1545
- if (handler) {
1546
- handlers.push(handler);
1547
- }
1548
- }
1549
- function _runHandlers(unloadCtx, unloadState) {
1550
- arrForEach(handlers, function (handler) {
1551
- try {
1552
- handler(unloadCtx, unloadState);
1553
- }
1554
- catch (e) {
1555
- _throwInternal(unloadCtx.diagLog(), 2 , 73 , "Unexpected error calling unload handler - " + dumpObj(e));
1556
- }
1557
- });
1558
- handlers = [];
1559
- }
1560
- return {
1561
- add: _addHandler,
1562
- run: _runHandlers
1563
- };
1564
- }
1565
-
1566
1086
  var strGetPlugin = "getPlugin";
1567
1087
  var BaseTelemetryPlugin = /** @class */ (function () {
1568
1088
  function BaseTelemetryPlugin() {
1569
1089
  var _self = this;
1570
- var _isinitialized;
1571
- var _rootCtx;
1572
- var _nextPlugin;
1573
- var _unloadHandlerContainer;
1574
- var _hooks;
1575
- _initDefaults();
1576
- dynamicProto(BaseTelemetryPlugin, _self, function (_self) {
1577
- _self.initialize = function (config, core, extensions, pluginChain) {
1578
- _setDefaults(config, core, pluginChain);
1579
- _isinitialized = true;
1580
- };
1581
- _self.teardown = function (unloadCtx, unloadState) {
1582
- if (!_self.core || (unloadCtx && _self.core !== unloadCtx.core())) {
1583
- return;
1584
- }
1585
- var result;
1586
- var unloadDone = false;
1587
- var theUnloadCtx = unloadCtx || createProcessTelemetryUnloadContext(null, {}, _self.core, _nextPlugin && _nextPlugin[strGetPlugin] ? _nextPlugin[strGetPlugin]() : _nextPlugin);
1588
- var theUnloadState = unloadState || {
1589
- reason: 0 ,
1590
- isAsync: false
1591
- };
1592
- function _unloadCallback() {
1593
- if (!unloadDone) {
1594
- unloadDone = true;
1595
- _unloadHandlerContainer.run(theUnloadCtx, unloadState);
1596
- arrForEach(_hooks, function (fn) {
1597
- fn.rm();
1598
- });
1599
- _hooks = [];
1600
- if (result === true) {
1601
- theUnloadCtx.processNext(theUnloadState);
1602
- }
1603
- _initDefaults();
1604
- }
1605
- }
1606
- if (!_self[strDoTeardown] || _self[strDoTeardown](theUnloadCtx, theUnloadState, _unloadCallback) !== true) {
1607
- _unloadCallback();
1608
- }
1609
- else {
1610
- result = true;
1611
- }
1612
- return result;
1613
- };
1614
- _self.update = function (updateCtx, updateState) {
1615
- if (!_self.core || (updateCtx && _self.core !== updateCtx.core())) {
1616
- return;
1617
- }
1618
- var result;
1619
- var updateDone = false;
1620
- var theUpdateCtx = updateCtx || createProcessTelemetryUpdateContext(null, {}, _self.core, _nextPlugin && _nextPlugin[strGetPlugin] ? _nextPlugin[strGetPlugin]() : _nextPlugin);
1621
- var theUpdateState = updateState || {
1622
- reason: 0
1623
- };
1624
- function _updateCallback() {
1625
- if (!updateDone) {
1626
- updateDone = true;
1627
- _setDefaults(theUpdateCtx.getCfg(), theUpdateCtx.core(), theUpdateCtx.getNext());
1628
- }
1629
- }
1630
- if (!_self._doUpdate || _self._doUpdate(theUpdateCtx, theUpdateState, _updateCallback) !== true) {
1631
- _updateCallback();
1632
- }
1633
- else {
1634
- result = true;
1635
- }
1636
- return result;
1637
- };
1638
- _self._addHook = function (hooks) {
1639
- if (hooks) {
1640
- if (isArray(hooks)) {
1641
- _hooks = _hooks.concat(hooks);
1642
- }
1643
- else {
1644
- _hooks.push(hooks);
1645
- }
1646
- }
1647
- };
1648
- proxyFunctionAs(_self, "_addUnloadCb", function () { return _unloadHandlerContainer; }, "add");
1649
- });
1090
+ var _isinitialized = false;
1091
+ var _rootCtx = null;
1092
+ var _nextPlugin = null;
1093
+ _self.core = null;
1650
1094
  _self.diagLog = function (itemCtx) {
1651
- return _getTelCtx(itemCtx).diagLog();
1095
+ return _self._getTelCtx(itemCtx).diagLog();
1652
1096
  };
1653
- _self[strIsInitialized] = function () {
1097
+ _self.isInitialized = function () {
1654
1098
  return _isinitialized;
1655
1099
  };
1656
1100
  _self.setInitialized = function (isInitialized) {
1657
1101
  _isinitialized = isInitialized;
1658
1102
  };
1659
- _self[strSetNextPlugin] = function (next) {
1103
+ _self.setNextPlugin = function (next) {
1660
1104
  _nextPlugin = next;
1661
1105
  };
1662
1106
  _self.processNext = function (env, itemCtx) {
@@ -1667,12 +1111,11 @@
1667
1111
  _nextPlugin.processTelemetry(env, null);
1668
1112
  }
1669
1113
  };
1670
- _self._getTelCtx = _getTelCtx;
1671
- function _getTelCtx(currentCtx) {
1114
+ _self._getTelCtx = function (currentCtx) {
1672
1115
  if (currentCtx === void 0) { currentCtx = null; }
1673
1116
  var itemCtx = currentCtx;
1674
1117
  if (!itemCtx) {
1675
- var rootCtx = _rootCtx || createProcessTelemetryContext(null, {}, _self.core);
1118
+ var rootCtx = _rootCtx || new ProcessTelemetryContext(null, {}, _self.core);
1676
1119
  if (_nextPlugin && _nextPlugin[strGetPlugin]) {
1677
1120
  itemCtx = rootCtx.createNew(null, _nextPlugin[strGetPlugin]);
1678
1121
  }
@@ -1681,8 +1124,8 @@
1681
1124
  }
1682
1125
  }
1683
1126
  return itemCtx;
1684
- }
1685
- function _setDefaults(config, core, pluginChain) {
1127
+ };
1128
+ _self._baseTelInit = function (config, core, extensions, pluginChain) {
1686
1129
  if (config) {
1687
1130
  setValue(config, strExtensionConfig, [], null, isNullOrUndefined);
1688
1131
  }
@@ -1694,280 +1137,16 @@
1694
1137
  nextPlugin = _nextPlugin[strGetPlugin]();
1695
1138
  }
1696
1139
  _self.core = core;
1697
- _rootCtx = createProcessTelemetryContext(pluginChain, config, core, nextPlugin);
1698
- }
1699
- function _initDefaults() {
1700
- _isinitialized = false;
1701
- _self.core = null;
1702
- _rootCtx = null;
1703
- _nextPlugin = null;
1704
- _hooks = [];
1705
- _unloadHandlerContainer = createUnloadHandlerContainer();
1706
- }
1140
+ _rootCtx = new ProcessTelemetryContext(pluginChain, config, core, nextPlugin);
1141
+ _isinitialized = true;
1142
+ };
1707
1143
  }
1144
+ BaseTelemetryPlugin.prototype.initialize = function (config, core, extensions, pluginChain) {
1145
+ this._baseTelInit(config, core, extensions, pluginChain);
1146
+ };
1708
1147
  return BaseTelemetryPlugin;
1709
1148
  }());
1710
1149
 
1711
- var strOnPrefix = "on";
1712
- var strAttachEvent = "attachEvent";
1713
- var strAddEventHelper = "addEventListener";
1714
- var strDetachEvent = "detachEvent";
1715
- var strRemoveEventListener = "removeEventListener";
1716
- var strEvents = "events";
1717
- createUniqueNamespace("aiEvtPageHide");
1718
- createUniqueNamespace("aiEvtPageShow");
1719
- var rRemoveEmptyNs = /\.[\.]+/g;
1720
- var rRemoveTrailingEmptyNs = /[\.]+$/;
1721
- var _guid = 1;
1722
- var elmNodeData = createElmNodeData("events");
1723
- var eventNamespace = /^([^.]*)(?:\.(.+)|)/;
1724
- function _normalizeNamespace(name) {
1725
- if (name && name.replace) {
1726
- return name.replace(/^\s*\.*|\.*\s*$/g, "");
1727
- }
1728
- return name;
1729
- }
1730
- function _getEvtNamespace(eventName, evtNamespace) {
1731
- if (evtNamespace) {
1732
- var theNamespace_1 = "";
1733
- if (isArray(evtNamespace)) {
1734
- theNamespace_1 = "";
1735
- arrForEach(evtNamespace, function (name) {
1736
- name = _normalizeNamespace(name);
1737
- if (name) {
1738
- if (name[0] !== ".") {
1739
- name = "." + name;
1740
- }
1741
- theNamespace_1 += name;
1742
- }
1743
- });
1744
- }
1745
- else {
1746
- theNamespace_1 = _normalizeNamespace(evtNamespace);
1747
- }
1748
- if (theNamespace_1) {
1749
- if (theNamespace_1[0] !== ".") {
1750
- theNamespace_1 = "." + theNamespace_1;
1751
- }
1752
- eventName = (eventName || "") + theNamespace_1;
1753
- }
1754
- }
1755
- var parsedEvent = (eventNamespace.exec(eventName || "") || []);
1756
- return {
1757
- type: parsedEvent[1],
1758
- ns: ((parsedEvent[2] || "").replace(rRemoveEmptyNs, ".").replace(rRemoveTrailingEmptyNs, "").split(".").sort()).join(".")
1759
- };
1760
- }
1761
- function _getRegisteredEvents(target, evtName, addDefault) {
1762
- if (addDefault === void 0) { addDefault = true; }
1763
- var aiEvts = elmNodeData.get(target, strEvents, {}, addDefault);
1764
- var registeredEvents = aiEvts[evtName];
1765
- if (!registeredEvents) {
1766
- registeredEvents = aiEvts[evtName] = [];
1767
- }
1768
- return registeredEvents;
1769
- }
1770
- function _doDetach(obj, evtName, handlerRef, useCapture) {
1771
- if (obj && evtName && evtName.type) {
1772
- if (obj[strRemoveEventListener]) {
1773
- obj[strRemoveEventListener](evtName.type, handlerRef, useCapture);
1774
- }
1775
- else if (obj[strDetachEvent]) {
1776
- obj[strDetachEvent](strOnPrefix + evtName.type, handlerRef);
1777
- }
1778
- }
1779
- }
1780
- function _doAttach(obj, evtName, handlerRef, useCapture) {
1781
- var result = false;
1782
- if (obj && evtName && evtName.type && handlerRef) {
1783
- if (obj[strAddEventHelper]) {
1784
- obj[strAddEventHelper](evtName.type, handlerRef, useCapture);
1785
- result = true;
1786
- }
1787
- else if (obj[strAttachEvent]) {
1788
- obj[strAttachEvent](strOnPrefix + evtName.type, handlerRef);
1789
- result = true;
1790
- }
1791
- }
1792
- return result;
1793
- }
1794
- function _doUnregister(target, events, evtName, unRegFn) {
1795
- var idx = events.length;
1796
- while (idx--) {
1797
- var theEvent = events[idx];
1798
- if (theEvent) {
1799
- if (!evtName.ns || evtName.ns === theEvent.evtName.ns) {
1800
- if (!unRegFn || unRegFn(theEvent)) {
1801
- _doDetach(target, theEvent.evtName, theEvent.handler, theEvent.capture);
1802
- events.splice(idx, 1);
1803
- }
1804
- }
1805
- }
1806
- }
1807
- }
1808
- function _unregisterEvents(target, evtName, unRegFn) {
1809
- if (evtName.type) {
1810
- _doUnregister(target, _getRegisteredEvents(target, evtName.type), evtName, unRegFn);
1811
- }
1812
- else {
1813
- var eventCache = elmNodeData.get(target, strEvents, {});
1814
- objForEachKey(eventCache, function (evtType, events) {
1815
- _doUnregister(target, events, evtName, unRegFn);
1816
- });
1817
- if (objKeys(eventCache).length === 0) {
1818
- elmNodeData.kill(target, strEvents);
1819
- }
1820
- }
1821
- }
1822
- function mergeEvtNamespace(theNamespace, namespaces) {
1823
- var newNamespaces;
1824
- if (namespaces) {
1825
- if (isArray(namespaces)) {
1826
- newNamespaces = [theNamespace].concat(namespaces);
1827
- }
1828
- else {
1829
- newNamespaces = [theNamespace, namespaces];
1830
- }
1831
- newNamespaces = (_getEvtNamespace("xx", newNamespaces).ns).split(".");
1832
- }
1833
- else {
1834
- newNamespaces = theNamespace;
1835
- }
1836
- return newNamespaces;
1837
- }
1838
- function eventOn(target, eventName, handlerRef, evtNamespace, useCapture) {
1839
- if (useCapture === void 0) { useCapture = false; }
1840
- var result = false;
1841
- if (target) {
1842
- try {
1843
- var evtName = _getEvtNamespace(eventName, evtNamespace);
1844
- result = _doAttach(target, evtName, handlerRef, useCapture);
1845
- if (result && elmNodeData.accept(target)) {
1846
- var registeredEvent = {
1847
- guid: _guid++,
1848
- evtName: evtName,
1849
- handler: handlerRef,
1850
- capture: useCapture
1851
- };
1852
- _getRegisteredEvents(target, evtName.type).push(registeredEvent);
1853
- }
1854
- }
1855
- catch (e) {
1856
- }
1857
- }
1858
- return result;
1859
- }
1860
- function eventOff(target, eventName, handlerRef, evtNamespace, useCapture) {
1861
- if (useCapture === void 0) { useCapture = false; }
1862
- if (target) {
1863
- try {
1864
- var evtName_1 = _getEvtNamespace(eventName, evtNamespace);
1865
- var found_1 = false;
1866
- _unregisterEvents(target, evtName_1, function (regEvent) {
1867
- if ((evtName_1.ns && !handlerRef) || regEvent.handler === handlerRef) {
1868
- found_1 = true;
1869
- return true;
1870
- }
1871
- return false;
1872
- });
1873
- if (!found_1) {
1874
- _doDetach(target, evtName_1, handlerRef, useCapture);
1875
- }
1876
- }
1877
- catch (e) {
1878
- }
1879
- }
1880
- }
1881
-
1882
- var LoggingSeverity = createEnumStyle({
1883
- CRITICAL: 1 ,
1884
- WARNING: 2
1885
- });
1886
- var _InternalMessageId = createEnumStyle({
1887
- BrowserDoesNotSupportLocalStorage: 0 ,
1888
- BrowserCannotReadLocalStorage: 1 ,
1889
- BrowserCannotReadSessionStorage: 2 ,
1890
- BrowserCannotWriteLocalStorage: 3 ,
1891
- BrowserCannotWriteSessionStorage: 4 ,
1892
- BrowserFailedRemovalFromLocalStorage: 5 ,
1893
- BrowserFailedRemovalFromSessionStorage: 6 ,
1894
- CannotSendEmptyTelemetry: 7 ,
1895
- ClientPerformanceMathError: 8 ,
1896
- ErrorParsingAISessionCookie: 9 ,
1897
- ErrorPVCalc: 10 ,
1898
- ExceptionWhileLoggingError: 11 ,
1899
- FailedAddingTelemetryToBuffer: 12 ,
1900
- FailedMonitorAjaxAbort: 13 ,
1901
- FailedMonitorAjaxDur: 14 ,
1902
- FailedMonitorAjaxOpen: 15 ,
1903
- FailedMonitorAjaxRSC: 16 ,
1904
- FailedMonitorAjaxSend: 17 ,
1905
- FailedMonitorAjaxGetCorrelationHeader: 18 ,
1906
- FailedToAddHandlerForOnBeforeUnload: 19 ,
1907
- FailedToSendQueuedTelemetry: 20 ,
1908
- FailedToReportDataLoss: 21 ,
1909
- FlushFailed: 22 ,
1910
- MessageLimitPerPVExceeded: 23 ,
1911
- MissingRequiredFieldSpecification: 24 ,
1912
- NavigationTimingNotSupported: 25 ,
1913
- OnError: 26 ,
1914
- SessionRenewalDateIsZero: 27 ,
1915
- SenderNotInitialized: 28 ,
1916
- StartTrackEventFailed: 29 ,
1917
- StopTrackEventFailed: 30 ,
1918
- StartTrackFailed: 31 ,
1919
- StopTrackFailed: 32 ,
1920
- TelemetrySampledAndNotSent: 33 ,
1921
- TrackEventFailed: 34 ,
1922
- TrackExceptionFailed: 35 ,
1923
- TrackMetricFailed: 36 ,
1924
- TrackPVFailed: 37 ,
1925
- TrackPVFailedCalc: 38 ,
1926
- TrackTraceFailed: 39 ,
1927
- TransmissionFailed: 40 ,
1928
- FailedToSetStorageBuffer: 41 ,
1929
- FailedToRestoreStorageBuffer: 42 ,
1930
- InvalidBackendResponse: 43 ,
1931
- FailedToFixDepricatedValues: 44 ,
1932
- InvalidDurationValue: 45 ,
1933
- TelemetryEnvelopeInvalid: 46 ,
1934
- CreateEnvelopeError: 47 ,
1935
- CannotSerializeObject: 48 ,
1936
- CannotSerializeObjectNonSerializable: 49 ,
1937
- CircularReferenceDetected: 50 ,
1938
- ClearAuthContextFailed: 51 ,
1939
- ExceptionTruncated: 52 ,
1940
- IllegalCharsInName: 53 ,
1941
- ItemNotInArray: 54 ,
1942
- MaxAjaxPerPVExceeded: 55 ,
1943
- MessageTruncated: 56 ,
1944
- NameTooLong: 57 ,
1945
- SampleRateOutOfRange: 58 ,
1946
- SetAuthContextFailed: 59 ,
1947
- SetAuthContextFailedAccountName: 60 ,
1948
- StringValueTooLong: 61 ,
1949
- StartCalledMoreThanOnce: 62 ,
1950
- StopCalledWithoutStart: 63 ,
1951
- TelemetryInitializerFailed: 64 ,
1952
- TrackArgumentsNotSpecified: 65 ,
1953
- UrlTooLong: 66 ,
1954
- SessionStorageBufferFull: 67 ,
1955
- CannotAccessCookie: 68 ,
1956
- IdTooLong: 69 ,
1957
- InvalidEvent: 70 ,
1958
- FailedMonitorAjaxSetRequestHeader: 71 ,
1959
- SendBrowserInfoOnUserInit: 72 ,
1960
- PluginException: 73 ,
1961
- NotificationException: 74 ,
1962
- SnippetScriptLoadFailure: 99 ,
1963
- InvalidInstrumentationKey: 100 ,
1964
- CannotParseAiBlobValue: 101 ,
1965
- InvalidContentBlob: 102 ,
1966
- TrackPageActionEventFailed: 103 ,
1967
- FailedAddingCustomDefinedRequestContext: 104 ,
1968
- InMemoryStorageBufferFull: 105
1969
- });
1970
-
1971
1150
  var strNotSpecified = "not_specified";
1972
1151
 
1973
1152
  var PropertiesPluginIdentifier = "AppInsightsPropertiesPlugin";
@@ -2262,200 +1441,188 @@
2262
1441
  }
2263
1442
 
2264
1443
  var WebEvent = /** @class */ (function () {
2265
- function WebEvent(clickAnalyticsPlugin, config, contentHandler, pageTagsCallback, metaTags, traceLogger) {
2266
- dynamicProto(WebEvent, this, function (_self) {
2267
- _initDefaults();
2268
- function _initDefaults() {
2269
- _self._pageTags = {};
2270
- _self._clickAnalyticsPlugin = clickAnalyticsPlugin;
2271
- _self._config = config;
2272
- _self._contentHandler = contentHandler;
2273
- _self._pageTagsCallback = pageTagsCallback;
2274
- _self._metaTags = metaTags;
2275
- _self._traceLogger = traceLogger;
2276
- }
2277
- _self.setBasicProperties = function (event, overrideValues) {
2278
- if (!isValueAssigned(event.name)) {
2279
- event.pageName = getPageName(_self._config, overrideValues);
2280
- }
2281
- if (!isValueAssigned(event.uri) && hasWindow) {
2282
- event.uri = getUri(_self._config, getLocation());
2283
- }
2284
- };
2285
- _self.setCommonProperties = function (event, overrideValues) {
2286
- _self.setBasicProperties(event, overrideValues);
2287
- _self._setPageTags(event, overrideValues);
2288
- _self._pageTypeMetaTag = _getMetaData(_self._metaTags, _self._config.coreData, "pageType");
2289
- _self._behaviorMetaTag = _getMetaData(_self._metaTags, _self._config.coreData, "behavior");
2290
- if (isValueAssigned(overrideValues.pageType)) {
2291
- event.pageType = overrideValues.pageType;
2292
- }
2293
- if (isValueAssigned(_self._pageTypeMetaTag) && !isValueAssigned(event.pageType)) {
2294
- event.pageType = _self._pageTypeMetaTag;
2295
- }
2296
- };
2297
- _self._setPageTags = function (event, overrideValues) {
2298
- if (_self._pageTagsCallback) {
2299
- _self._pageTags = extend(true, _self._pageTags, _self._pageTagsCallback());
2300
- }
2301
- if (isValueAssigned(overrideValues.pageTags)) {
2302
- _self._pageTags = extend(true, _self._pageTags, overrideValues.pageTags);
2303
- }
2304
- if (_self._metaTags) {
2305
- _self._pageTags.metaTags = {};
2306
- for (var metaTag in _self._metaTags) {
2307
- if (metaTag != "behavior" && metaTag != "market" && metaTag != "pageType") {
2308
- _self._pageTags.metaTags[metaTag] = _self._metaTags[metaTag];
2309
- }
2310
- }
2311
- }
2312
- event.properties = event.properties || {};
2313
- event.properties["pageTags"] = _self._pageTags;
2314
- };
2315
- _self._getBehavior = function (overrideValues) {
2316
- var behavior;
2317
- if (overrideValues && isValueAssigned(overrideValues.behavior)) {
2318
- behavior = overrideValues.behavior;
2319
- }
2320
- else if (isValueAssigned(_self._behaviorMetaTag)) {
2321
- behavior = _self._behaviorMetaTag;
2322
- }
2323
- return _self._getValidBehavior(behavior);
2324
- };
2325
- _self._getValidBehavior = function (behavior) {
2326
- return _self._config.behaviorValidator(behavior);
2327
- };
2328
- _self._doUnload = function (unloadCtx, unloadState, asyncCallback) {
2329
- _initDefaults();
2330
- };
2331
- function _getMetaData(metaTags, coreData, metaTagName) {
2332
- if (coreData && coreData[metaTagName]) {
2333
- return coreData[metaTagName];
2334
- }
2335
- if (metaTags) {
2336
- return metaTags[metaTagName];
1444
+ function WebEvent(_clickAnalyticsPlugin, _config, _contentHandler, _pageTagsCallback, _metaTags, _traceLogger) {
1445
+ this._clickAnalyticsPlugin = _clickAnalyticsPlugin;
1446
+ this._config = _config;
1447
+ this._contentHandler = _contentHandler;
1448
+ this._pageTagsCallback = _pageTagsCallback;
1449
+ this._metaTags = _metaTags;
1450
+ this._traceLogger = _traceLogger;
1451
+ this._pageTags = {};
1452
+ }
1453
+ WebEvent.prototype.setBasicProperties = function (event, overrideValues) {
1454
+ if (!isValueAssigned(event.name)) {
1455
+ event.pageName = getPageName(this._config, overrideValues);
1456
+ }
1457
+ if (!isValueAssigned(event.uri) && hasWindow) {
1458
+ event.uri = getUri(this._config, getLocation());
1459
+ }
1460
+ };
1461
+ WebEvent.prototype.setCommonProperties = function (event, overrideValues) {
1462
+ this.setBasicProperties(event, overrideValues);
1463
+ this._setPageTags(event, overrideValues);
1464
+ this._pageTypeMetaTag = this._getMetaData(this._metaTags, this._config.coreData, "pageType");
1465
+ this._behaviorMetaTag = this._getMetaData(this._metaTags, this._config.coreData, "behavior");
1466
+ if (isValueAssigned(overrideValues.pageType)) {
1467
+ event.pageType = overrideValues.pageType;
1468
+ }
1469
+ if (isValueAssigned(this._pageTypeMetaTag) && !isValueAssigned(event.pageType)) {
1470
+ event.pageType = this._pageTypeMetaTag;
1471
+ }
1472
+ };
1473
+ WebEvent.prototype._setPageTags = function (event, overrideValues) {
1474
+ if (this._pageTagsCallback) {
1475
+ this._pageTags = extend(true, this._pageTags, this._pageTagsCallback());
1476
+ }
1477
+ if (isValueAssigned(overrideValues.pageTags)) {
1478
+ this._pageTags = extend(true, this._pageTags, overrideValues.pageTags);
1479
+ }
1480
+ if (this._metaTags) {
1481
+ this._pageTags.metaTags = {};
1482
+ for (var metaTag in this._metaTags) {
1483
+ if (metaTag != "behavior" && metaTag != "market" && metaTag != "pageType") {
1484
+ this._pageTags.metaTags[metaTag] = this._metaTags[metaTag];
2337
1485
  }
2338
- return "";
2339
1486
  }
2340
- });
2341
- }
1487
+ }
1488
+ event.properties = event.properties || {};
1489
+ event.properties["pageTags"] = this._pageTags;
1490
+ };
1491
+ WebEvent.prototype._getBehavior = function (overrideValues) {
1492
+ var behavior;
1493
+ if (overrideValues && isValueAssigned(overrideValues.behavior)) {
1494
+ behavior = overrideValues.behavior;
1495
+ }
1496
+ else if (isValueAssigned(this._behaviorMetaTag)) {
1497
+ behavior = this._behaviorMetaTag;
1498
+ }
1499
+ return this._getValidBehavior(behavior);
1500
+ };
1501
+ WebEvent.prototype._getValidBehavior = function (behavior) {
1502
+ return this._config.behaviorValidator(behavior);
1503
+ };
1504
+ WebEvent.prototype._getMetaData = function (metaTags, coreData, metaTagName) {
1505
+ if (coreData && coreData[metaTagName]) {
1506
+ return coreData[metaTagName];
1507
+ }
1508
+ else if (metaTags) {
1509
+ return metaTags[metaTagName];
1510
+ }
1511
+ return "";
1512
+ };
2342
1513
  return WebEvent;
2343
1514
  }());
2344
1515
 
2345
1516
  var PageAction = /** @class */ (function (_super) {
2346
1517
  __extendsFn(PageAction, _super);
2347
- function PageAction(clickAnalyticsPlugin, config, contentHandler, pageTagsCallback, metaTags, traceLogger) {
2348
- var _this = _super.call(this, clickAnalyticsPlugin, config, contentHandler, pageTagsCallback, metaTags, traceLogger) || this;
2349
- dynamicProto(PageAction, _this, function (_self, _base) {
2350
- _self.trackPageAction = function (pageActionEvent, properties) {
2351
- var ext = {};
2352
- ext["web"] = {};
2353
- var event = {
2354
- name: "Microsoft.ApplicationInsights.{0}.Event",
2355
- baseType: "EventData",
2356
- ext: ext,
2357
- data: {},
2358
- baseData: {}
2359
- };
2360
- _populateEventDataIfPresent(event.baseData, "name", pageActionEvent.name);
2361
- _populateEventDataIfPresent(event.data, "baseTypeSource", "ClickEvent");
2362
- _populateEventDataIfPresent(event.data, "uri", pageActionEvent.uri);
2363
- _populateEventDataIfPresent(event.data, "pageType", pageActionEvent.pageType);
2364
- _populateEventDataIfPresent(event.data, "properties", pageActionEvent.properties);
2365
- _populateEventDataIfPresent(event.data, "actionType", pageActionEvent.actionType);
2366
- _populateEventDataIfPresent(event.data, "behavior", pageActionEvent.behavior);
2367
- _populateEventDataIfPresent(event.data, "clickCoordinates", pageActionEvent.clickCoordinates);
2368
- _populateEventDataIfPresent(event.data, "content", pageActionEvent.content);
2369
- _populateEventDataIfPresent(event.data, "targetUri", pageActionEvent.targetUri);
2370
- _populateEventDataIfPresent(event.data, "timeToAction", pageActionEvent.timeToAction);
2371
- _populateEventDataIfPresent(event.data, "refUri", pageActionEvent.refUri);
2372
- _populateEventDataIfPresent(event.data, "pageName", pageActionEvent.pageName);
2373
- _populateEventDataIfPresent(event.data, "parentId", pageActionEvent.parentId);
2374
- if (properties) {
2375
- objForEachKey(properties, function (property, value) {
2376
- if (!event.data[property]) {
2377
- _populateEventDataIfPresent(event.data, property, value);
2378
- }
2379
- });
2380
- }
2381
- _self._clickAnalyticsPlugin.core.track(event);
2382
- };
2383
- _self.capturePageAction = function (element, overrideValues, customProperties, isRightClick) {
2384
- overrideValues = !isValueAssigned(overrideValues) ? {} : overrideValues;
2385
- var pageActionEvent = { name: "" };
2386
- var pageActionProperties = isValueAssigned(customProperties) ? customProperties : {};
2387
- _self.setCommonProperties(pageActionEvent, overrideValues);
2388
- pageActionEvent.behavior = _self._getBehavior(overrideValues);
2389
- var elementContent = {};
2390
- if (isRightClick) {
2391
- pageActionEvent.behavior = _self._config.defaultRightClickBhvr;
2392
- }
2393
- if (element) {
2394
- pageActionEvent.targetUri = getClickTarget(element);
2395
- elementContent = _self._contentHandler.getElementContent(element);
2396
- if (elementContent.bhvr && !isValueAssigned(overrideValues.behavior)) {
2397
- var currentBehavior = extractFieldFromObject(elementContent, "bhvr");
2398
- pageActionEvent.behavior = _self._getValidBehavior(currentBehavior);
2399
- }
2400
- if (!isValueAssigned(elementContent.id) && !isValueAssigned(elementContent.contentName)) {
2401
- _self._traceLogger.throwInternal(LoggingSeverity.WARNING, _ExtendedInternalMessageId.InvalidContentBlob, "Missing attributes id or contentName in click event. Click event information will still be collected!");
2402
- }
2403
- }
2404
- pageActionEvent.name = elementContent.id || elementContent.contentName || strNotSpecified;
2405
- pageActionEvent.parentId = elementContent.parentid || elementContent.parentName || strNotSpecified;
2406
- if (isValueAssigned(overrideValues.actionType)) {
2407
- pageActionEvent.actionType = overrideValues.actionType;
2408
- }
2409
- if (isValueAssigned(overrideValues.clickCoordinateX) && isValueAssigned(overrideValues.clickCoordinateY)) {
2410
- pageActionEvent.clickCoordinates = overrideValues.clickCoordinateX + "X" + overrideValues.clickCoordinateY;
2411
- }
2412
- _sanitizePageActionEventContent(elementContent);
2413
- pageActionEvent.content = bracketIt(JSON.stringify(extend(elementContent, overrideValues && overrideValues.contentTags ? overrideValues.contentTags : {})));
2414
- pageActionEvent.timeToAction = _getTimeToClick();
2415
- pageActionEvent.refUri = isValueAssigned(overrideValues.refUri) ? overrideValues.refUri : _self._config.coreData.referrerUri;
2416
- if (_isUndefinedEvent(pageActionEvent)) {
2417
- return;
2418
- }
2419
- _self.trackPageAction(pageActionEvent, pageActionProperties);
2420
- };
2421
- function _getTimeToClick() {
2422
- var perf = getPerformance();
2423
- if (perf && perf.timing) {
2424
- var isNavigationStart = perf.timing.navigationStart;
2425
- if (isNavigationStart && isNavigationStart !== 0) {
2426
- return new Date().getTime() - isNavigationStart;
2427
- }
2428
- }
2429
- return -1;
2430
- }
2431
- function _populateEventDataIfPresent(obj, property, value) {
2432
- if (isValueAssigned(value)) {
2433
- obj[property] = value;
2434
- }
2435
- }
2436
- function _sanitizePageActionEventContent(pageActionContent) {
2437
- if (pageActionContent) {
2438
- delete pageActionContent.id;
2439
- delete pageActionContent.parentid;
2440
- delete pageActionContent.parentname;
2441
- if (_self._config && _self._config.dataTags && isValueAssigned(_self._config.dataTags.parentDataTag)) {
2442
- delete pageActionContent[_self._config.dataTags.parentDataTag];
2443
- }
1518
+ function PageAction() {
1519
+ return _super !== null && _super.apply(this, arguments) || this;
1520
+ }
1521
+ PageAction.prototype.trackPageAction = function (pageActionEvent, properties) {
1522
+ var _this = this;
1523
+ var ext = {};
1524
+ ext["web"] = {};
1525
+ var event = {
1526
+ name: "Microsoft.ApplicationInsights.{0}.Event",
1527
+ baseType: "EventData",
1528
+ ext: ext,
1529
+ data: {},
1530
+ baseData: {}
1531
+ };
1532
+ this._populateEventDataIfPresent(event.baseData, "name", pageActionEvent.name);
1533
+ this._populateEventDataIfPresent(event.data, "baseTypeSource", "ClickEvent");
1534
+ this._populateEventDataIfPresent(event.data, "uri", pageActionEvent.uri);
1535
+ this._populateEventDataIfPresent(event.data, "pageType", pageActionEvent.pageType);
1536
+ this._populateEventDataIfPresent(event.data, "properties", pageActionEvent.properties);
1537
+ this._populateEventDataIfPresent(event.data, "actionType", pageActionEvent.actionType);
1538
+ this._populateEventDataIfPresent(event.data, "behavior", pageActionEvent.behavior);
1539
+ this._populateEventDataIfPresent(event.data, "clickCoordinates", pageActionEvent.clickCoordinates);
1540
+ this._populateEventDataIfPresent(event.data, "content", pageActionEvent.content);
1541
+ this._populateEventDataIfPresent(event.data, "targetUri", pageActionEvent.targetUri);
1542
+ this._populateEventDataIfPresent(event.data, "timeToAction", pageActionEvent.timeToAction);
1543
+ this._populateEventDataIfPresent(event.data, "refUri", pageActionEvent.refUri);
1544
+ this._populateEventDataIfPresent(event.data, "pageName", pageActionEvent.pageName);
1545
+ this._populateEventDataIfPresent(event.data, "parentId", pageActionEvent.parentId);
1546
+ if (properties) {
1547
+ objForEachKey(properties, function (property, value) {
1548
+ if (!event.data[property]) {
1549
+ _this._populateEventDataIfPresent(event.data, property, value);
2444
1550
  }
1551
+ });
1552
+ }
1553
+ this._clickAnalyticsPlugin.core.track(event);
1554
+ };
1555
+ PageAction.prototype.capturePageAction = function (element, overrideValues, customProperties, isRightClick) {
1556
+ overrideValues = !isValueAssigned(overrideValues) ? {} : overrideValues;
1557
+ var pageActionEvent = { name: "" };
1558
+ var pageActionProperties = isValueAssigned(customProperties) ? customProperties : {};
1559
+ this.setCommonProperties(pageActionEvent, overrideValues);
1560
+ pageActionEvent.behavior = this._getBehavior(overrideValues);
1561
+ var elementContent = {};
1562
+ if (isRightClick) {
1563
+ pageActionEvent.behavior = this._config.defaultRightClickBhvr;
1564
+ }
1565
+ if (element) {
1566
+ pageActionEvent.targetUri = getClickTarget(element);
1567
+ elementContent = this._contentHandler.getElementContent(element);
1568
+ if (elementContent.bhvr && !isValueAssigned(overrideValues.behavior)) {
1569
+ var currentBehavior = extractFieldFromObject(elementContent, "bhvr");
1570
+ pageActionEvent.behavior = this._getValidBehavior(currentBehavior);
1571
+ }
1572
+ if (!isValueAssigned(elementContent.id) && !isValueAssigned(elementContent.contentName)) {
1573
+ this._traceLogger.throwInternal(LoggingSeverity.WARNING, _ExtendedInternalMessageId.InvalidContentBlob, "Missing attributes id or contentName in click event. Click event information will still be collected!");
1574
+ }
1575
+ }
1576
+ pageActionEvent.name = elementContent.id || elementContent.contentName || strNotSpecified;
1577
+ pageActionEvent.parentId = elementContent.parentid || elementContent.parentName || strNotSpecified;
1578
+ if (isValueAssigned(overrideValues.actionType)) {
1579
+ pageActionEvent.actionType = overrideValues.actionType;
1580
+ }
1581
+ if (isValueAssigned(overrideValues.clickCoordinateX) && isValueAssigned(overrideValues.clickCoordinateY)) {
1582
+ pageActionEvent.clickCoordinates = overrideValues.clickCoordinateX + "X" + overrideValues.clickCoordinateY;
1583
+ }
1584
+ this._sanitizePageActionEventContent(elementContent);
1585
+ pageActionEvent.content = bracketIt(JSON.stringify(extend(elementContent, overrideValues && overrideValues.contentTags ? overrideValues.contentTags : {})));
1586
+ pageActionEvent.timeToAction = this._getTimeToClick();
1587
+ pageActionEvent.refUri = isValueAssigned(overrideValues.refUri) ? overrideValues.refUri : this._config.coreData.referrerUri;
1588
+ if (this._isUndefinedEvent(pageActionEvent))
1589
+ return;
1590
+ this.trackPageAction(pageActionEvent, pageActionProperties);
1591
+ };
1592
+ PageAction.prototype._getTimeToClick = function () {
1593
+ var perf = getPerformance();
1594
+ if (perf && perf.timing) {
1595
+ var isNavigationStart = perf.timing.navigationStart;
1596
+ if (isNavigationStart && isNavigationStart !== 0) {
1597
+ return new Date().getTime() - isNavigationStart;
2445
1598
  }
2446
- function _isUndefinedEvent(pageActionEvent) {
2447
- if (_self._config.dropInvalidEvents) {
2448
- if (pageActionEvent.name === strNotSpecified
2449
- && pageActionEvent.parentId === strNotSpecified
2450
- && pageActionEvent.content === "[{}]") {
2451
- return true;
2452
- }
2453
- }
2454
- return false;
1599
+ }
1600
+ return -1;
1601
+ };
1602
+ PageAction.prototype._populateEventDataIfPresent = function (obj, property, value) {
1603
+ if (isValueAssigned(value)) {
1604
+ obj[property] = value;
1605
+ }
1606
+ };
1607
+ PageAction.prototype._sanitizePageActionEventContent = function (pageActionContent) {
1608
+ if (pageActionContent) {
1609
+ delete pageActionContent.id;
1610
+ delete pageActionContent.parentid;
1611
+ delete pageActionContent.parentname;
1612
+ if (this._config && this._config.dataTags && isValueAssigned(this._config.dataTags.parentDataTag)) {
1613
+ delete pageActionContent[this._config.dataTags.parentDataTag];
2455
1614
  }
2456
- });
2457
- return _this;
2458
- }
1615
+ }
1616
+ };
1617
+ PageAction.prototype._isUndefinedEvent = function (pageActionEvent) {
1618
+ if (this._config.dropInvalidEvents) {
1619
+ if (pageActionEvent.name === strNotSpecified
1620
+ && pageActionEvent.parentId === strNotSpecified
1621
+ && pageActionEvent.content === "[{}]")
1622
+ return true;
1623
+ }
1624
+ return false;
1625
+ };
2459
1626
  return PageAction;
2460
1627
  }(WebEvent));
2461
1628
 
@@ -2478,83 +1645,77 @@
2478
1645
  this._config = _config;
2479
1646
  this._pageAction = _pageAction;
2480
1647
  this._traceLogger = _traceLogger;
2481
- var _evtNamespace = mergeEvtNamespace(createUniqueNamespace("AutoCaptureHandler"), _analyticsPlugin._evtNamespace);
2482
- dynamicProto(AutoCaptureHandler, this, function (_self) {
2483
- _self.click = function () {
2484
- var win = getWindow();
2485
- var doc = getDocument();
2486
- if (win) {
2487
- var event_1 = (navigator.appVersion.indexOf("MSIE") !== -1) ? "click" : "mousedown";
2488
- eventOn(win, event_1, _processClick, _evtNamespace);
2489
- eventOn(win, "keyup", _processClick, _evtNamespace);
2490
- }
2491
- else if (doc) {
2492
- eventOn(doc, "click", _processClick, _evtNamespace);
2493
- eventOn(doc, "keyup", _processClick, _evtNamespace);
2494
- }
2495
- };
2496
- _self._doUnload = function (unloadCtx, unloadState, asyncCallback) {
2497
- eventOff(getWindow(), null, null, _evtNamespace);
2498
- eventOff(getDocument(), null, null, _evtNamespace);
1648
+ }
1649
+ AutoCaptureHandler.prototype.click = function () {
1650
+ var _this = this;
1651
+ var win = getWindow();
1652
+ var doc = getDocument();
1653
+ if (win) {
1654
+ var event_1 = (navigator.appVersion.indexOf("MSIE") !== -1) ? "click" : "mousedown";
1655
+ attachEvent(win, event_1, function (evt) { _this._processClick(evt); });
1656
+ attachEvent(win, "keyup", function (evt) { _this._processClick(evt); });
1657
+ }
1658
+ else if (doc) {
1659
+ attachEvent(doc, "click", function (evt) { _this._processClick(evt); });
1660
+ attachEvent(doc, "keyup", function (evt) { _this._processClick(evt); });
1661
+ }
1662
+ };
1663
+ AutoCaptureHandler.prototype.capturePageAction = function (element, overrideValues, customProperties, isRightClick) {
1664
+ var donotTrackTag = this._config.dataTags.customDataPrefix + this._config.dataTags.dntDataTag;
1665
+ if (!isElementDnt(element, donotTrackTag)) {
1666
+ this._pageAction.capturePageAction(element, overrideValues, customProperties, isRightClick);
1667
+ }
1668
+ };
1669
+ AutoCaptureHandler.prototype._processClick = function (clickEvent) {
1670
+ var clickCaptureElements = { A: true, BUTTON: true, AREA: true, INPUT: true };
1671
+ var win = getWindow();
1672
+ if (isNullOrUndefined(clickEvent) && win) {
1673
+ clickEvent = win.event;
1674
+ }
1675
+ if (clickEvent) {
1676
+ var element = clickEvent.srcElement || clickEvent.target;
1677
+ var overrideValues = {
1678
+ clickCoordinateX: clickEvent.pageX,
1679
+ clickCoordinateY: clickEvent.pageY
2499
1680
  };
2500
- function _capturePageAction(element, overrideValues, customProperties, isRightClick) {
2501
- var donotTrackTag = _self._config.dataTags.customDataPrefix + _self._config.dataTags.dntDataTag;
2502
- if (!isElementDnt(element, donotTrackTag)) {
2503
- _self._pageAction.capturePageAction(element, overrideValues, customProperties, isRightClick);
2504
- }
1681
+ var isRightClickObj = isRightClick(clickEvent);
1682
+ if (isRightClickObj) {
1683
+ overrideValues.actionType = ActionType.CLICKRIGHT;
1684
+ }
1685
+ else if (isLeftClick(clickEvent)) {
1686
+ overrideValues.actionType = ActionType.CLICKLEFT;
1687
+ }
1688
+ else if (isKeyboardEnter(clickEvent)) {
1689
+ overrideValues.actionType = ActionType.KEYBOARDENTER;
1690
+ }
1691
+ else if (isKeyboardSpace(clickEvent)) {
1692
+ overrideValues.actionType = ActionType.KEYBOARDSPACE;
2505
1693
  }
2506
- function _processClick(clickEvent) {
2507
- var clickCaptureElements = { A: true, BUTTON: true, AREA: true, INPUT: true };
2508
- var win = getWindow();
2509
- if (isNullOrUndefined(clickEvent) && win) {
2510
- clickEvent = win.event;
1694
+ else if (isMiddleClick(clickEvent)) {
1695
+ overrideValues.actionType = ActionType.CLICKMIDDLE;
1696
+ }
1697
+ else {
1698
+ return;
1699
+ }
1700
+ while (element && element.tagName) {
1701
+ if (element.control && clickCaptureElements[element.control.tagName.toUpperCase()]) {
1702
+ element = element.control;
2511
1703
  }
2512
- if (clickEvent) {
2513
- var element = clickEvent.srcElement || clickEvent.target;
2514
- var overrideValues = {
2515
- clickCoordinateX: clickEvent.pageX,
2516
- clickCoordinateY: clickEvent.pageY
2517
- };
2518
- var isRightClickObj = isRightClick(clickEvent);
2519
- if (isRightClickObj) {
2520
- overrideValues.actionType = ActionType.CLICKRIGHT;
2521
- }
2522
- else if (isLeftClick(clickEvent)) {
2523
- overrideValues.actionType = ActionType.CLICKLEFT;
2524
- }
2525
- else if (isKeyboardEnter(clickEvent)) {
2526
- overrideValues.actionType = ActionType.KEYBOARDENTER;
2527
- }
2528
- else if (isKeyboardSpace(clickEvent)) {
2529
- overrideValues.actionType = ActionType.KEYBOARDSPACE;
2530
- }
2531
- else if (isMiddleClick(clickEvent)) {
2532
- overrideValues.actionType = ActionType.CLICKMIDDLE;
2533
- }
2534
- else {
2535
- return;
2536
- }
2537
- while (element && element.tagName) {
2538
- if (element.control && clickCaptureElements[element.control.tagName.toUpperCase()]) {
2539
- element = element.control;
2540
- }
2541
- var tagNameUpperCased = element.tagName.toUpperCase();
2542
- if (!clickCaptureElements[tagNameUpperCased]) {
2543
- element = element.parentElement || element.parentNode;
2544
- continue;
2545
- }
2546
- else {
2547
- var sendEvent = tagNameUpperCased === "INPUT" ? clickCaptureInputTypes[element.type.toUpperCase()] : true;
2548
- if (sendEvent) {
2549
- _capturePageAction(element, overrideValues, {}, isRightClickObj);
2550
- }
2551
- break;
2552
- }
1704
+ var tagNameUpperCased = element.tagName.toUpperCase();
1705
+ if (!clickCaptureElements[tagNameUpperCased]) {
1706
+ element = element.parentElement || element.parentNode;
1707
+ continue;
1708
+ }
1709
+ else {
1710
+ var sendEvent = tagNameUpperCased === "INPUT" ? clickCaptureInputTypes[element.type.toUpperCase()] : true;
1711
+ if (sendEvent) {
1712
+ this.capturePageAction(element, overrideValues, {}, isRightClickObj);
2553
1713
  }
1714
+ break;
2554
1715
  }
2555
1716
  }
2556
- });
2557
- }
1717
+ }
1718
+ };
2558
1719
  return AutoCaptureHandler;
2559
1720
  }());
2560
1721
 
@@ -2563,318 +1724,285 @@
2563
1724
  function DomContentHandler(_config, _traceLogger) {
2564
1725
  this._config = _config;
2565
1726
  this._traceLogger = _traceLogger;
2566
- dynamicProto(DomContentHandler, this, function (_self) {
2567
- _self.getMetadata = function () {
2568
- var dataTags = (_self._config || {}).dataTags;
2569
- var metaTags = {};
2570
- if (hasDocument) {
2571
- metaTags = isValueAssigned(dataTags.metaDataPrefix) ? _getMetaDataFromDOM(dataTags.captureAllMetaDataContent, dataTags.metaDataPrefix, false) :
2572
- _getMetaDataFromDOM(dataTags.captureAllMetaDataContent, "", false);
2573
- }
2574
- return metaTags;
2575
- };
2576
- _self.getElementContent = function (element) {
2577
- if (!element) {
2578
- return {};
2579
- }
2580
- var dataTags = (_self._config || {}).dataTags;
2581
- var elementContent = {};
2582
- var biBlobValue;
2583
- var parentDataTagPrefix;
2584
- var dataTagPrefix = dataTags.customDataPrefix;
2585
- var aiBlobAttributeTag = dataTagPrefix + dataTags.aiBlobAttributeTag;
2586
- if (isValueAssigned(dataTags.parentDataTag)) {
2587
- parentDataTagPrefix = dataTagPrefix + dataTags.parentDataTag;
2588
- }
2589
- if (!_isTracked(element, dataTagPrefix, aiBlobAttributeTag)) {
2590
- biBlobValue = element.getAttribute(aiBlobAttributeTag);
2591
- if (biBlobValue) {
2592
- try {
2593
- elementContent = JSON.parse(biBlobValue);
2594
- }
2595
- catch (e) {
2596
- _self._traceLogger.throwInternal(LoggingSeverity.CRITICAL, _ExtendedInternalMessageId.CannotParseAiBlobValue, "Can not parse " + biBlobValue);
2597
- }
2598
- }
2599
- else {
2600
- elementContent = extend(elementContent, _populateElementContent(element, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag));
2601
- }
2602
- }
2603
- else {
2604
- elementContent = extend(elementContent, _populateElementContentwithDataTag(element, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag));
1727
+ }
1728
+ DomContentHandler.prototype.getMetadata = function () {
1729
+ var metaTags = {};
1730
+ if (hasDocument) {
1731
+ metaTags = isValueAssigned(this._config.dataTags.metaDataPrefix) ? this._getMetaDataFromDOM(this._config.dataTags.captureAllMetaDataContent, this._config.dataTags.metaDataPrefix, false) :
1732
+ this._getMetaDataFromDOM(this._config.dataTags.captureAllMetaDataContent, "", false);
1733
+ }
1734
+ return metaTags;
1735
+ };
1736
+ DomContentHandler.prototype.getElementContent = function (element) {
1737
+ if (!element) {
1738
+ return {};
1739
+ }
1740
+ var elementContent = {};
1741
+ var biBlobValue;
1742
+ var parentDataTagPrefix;
1743
+ var dataTagPrefix = this._config.dataTags.customDataPrefix;
1744
+ var aiBlobAttributeTag = dataTagPrefix + this._config.dataTags.aiBlobAttributeTag;
1745
+ if (isValueAssigned(this._config.dataTags.parentDataTag)) {
1746
+ parentDataTagPrefix = dataTagPrefix + this._config.dataTags.parentDataTag;
1747
+ }
1748
+ if (!this._isTracked(element, dataTagPrefix, aiBlobAttributeTag)) {
1749
+ biBlobValue = element.getAttribute(aiBlobAttributeTag);
1750
+ if (biBlobValue) {
1751
+ try {
1752
+ elementContent = JSON.parse(biBlobValue);
2605
1753
  }
2606
- removeInvalidElements(elementContent);
2607
- if (parentDataTagPrefix) {
2608
- elementContent = extend(elementContent, _getParentDetails(element, elementContent, dataTagPrefix, aiBlobAttributeTag));
1754
+ catch (e) {
1755
+ this._traceLogger.throwInternal(LoggingSeverity.CRITICAL, _ExtendedInternalMessageId.CannotParseAiBlobValue, "Can not parse " + biBlobValue);
2609
1756
  }
2610
- return elementContent;
2611
- };
2612
- function _captureElementContentWithDataTag(contentElement, elementContent, dataTagPrefix) {
2613
- for (var i = 0, attrib; i < contentElement.attributes.length; i++) {
2614
- attrib = contentElement.attributes[i];
2615
- if (attrib.name.indexOf(dataTagPrefix) !== 0) {
2616
- continue;
2617
- }
2618
- var attribName = attrib.name.replace(dataTagPrefix, "");
1757
+ }
1758
+ else {
1759
+ elementContent = extend(elementContent, this._populateElementContent(element, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag));
1760
+ }
1761
+ }
1762
+ else {
1763
+ elementContent = extend(elementContent, this._populateElementContentwithDataTag(element, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag));
1764
+ }
1765
+ removeInvalidElements(elementContent);
1766
+ if (parentDataTagPrefix) {
1767
+ elementContent = extend(elementContent, this._getParentDetails(element, elementContent, dataTagPrefix, aiBlobAttributeTag));
1768
+ }
1769
+ return elementContent;
1770
+ };
1771
+ DomContentHandler.prototype._captureElementContentWithDataTag = function (contentElement, elementContent, dataTagPrefix) {
1772
+ for (var i = 0, attrib; i < contentElement.attributes.length; i++) {
1773
+ attrib = contentElement.attributes[i];
1774
+ if (attrib.name.indexOf(dataTagPrefix) !== 0) {
1775
+ continue;
1776
+ }
1777
+ var attribName = attrib.name.replace(dataTagPrefix, "");
1778
+ elementContent[attribName] = attrib.value;
1779
+ }
1780
+ };
1781
+ DomContentHandler.prototype._walkUpDomChainCaptureData = function (el, elementContent, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag) {
1782
+ var element = el;
1783
+ var parentDataTagFound = false;
1784
+ var elementLevelFlag = false;
1785
+ while (!isNullOrUndefined(element) && !isNullOrUndefined(element.attributes)) {
1786
+ var attributes = element.attributes;
1787
+ for (var i = 0; i < attributes.length; i++) {
1788
+ var attrib = attributes[i];
1789
+ if (attrib.name.indexOf(dataTagPrefix) !== 0) {
1790
+ continue;
1791
+ }
1792
+ if (attrib.name.indexOf(parentDataTagPrefix) === 0) {
1793
+ parentDataTagFound = true;
1794
+ }
1795
+ if (attrib.name.indexOf(aiBlobAttributeTag) === 0) {
1796
+ continue;
1797
+ }
1798
+ var attribName = attrib.name.replace(dataTagPrefix, "");
1799
+ if (elementLevelFlag && attribName === "id")
1800
+ continue;
1801
+ if (!isValueAssigned(elementContent[attribName])) {
2619
1802
  elementContent[attribName] = attrib.value;
2620
1803
  }
2621
1804
  }
2622
- function _walkUpDomChainCaptureData(el, elementContent, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag) {
2623
- var element = el;
2624
- var parentDataTagFound = false;
2625
- var elementLevelFlag = false;
2626
- while (!isNullOrUndefined(element) && !isNullOrUndefined(element.attributes)) {
2627
- var attributes = element.attributes;
2628
- for (var i = 0; i < attributes.length; i++) {
2629
- var attrib = attributes[i];
2630
- if (attrib.name.indexOf(dataTagPrefix) !== 0) {
2631
- continue;
2632
- }
2633
- if (attrib.name.indexOf(parentDataTagPrefix) === 0) {
2634
- parentDataTagFound = true;
2635
- }
2636
- if (attrib.name.indexOf(aiBlobAttributeTag) === 0) {
2637
- continue;
2638
- }
2639
- var attribName = attrib.name.replace(dataTagPrefix, "");
2640
- if (elementLevelFlag && attribName === "id") {
2641
- continue;
2642
- }
2643
- if (!isValueAssigned(elementContent[attribName])) {
2644
- elementContent[attribName] = attrib.value;
2645
- }
2646
- }
2647
- if (parentDataTagFound) {
2648
- break;
2649
- }
2650
- elementLevelFlag = true;
2651
- element = element.parentNode;
2652
- }
1805
+ if (parentDataTagFound) {
1806
+ break;
2653
1807
  }
2654
- function _populateElementContent(element, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag) {
2655
- var elementContent = {};
2656
- if (!element) {
2657
- return elementContent;
2658
- }
2659
- var htmlContent = _getHtmlIdAndContentName(element);
2660
- elementContent = {
2661
- id: htmlContent.id || "",
2662
- contentName: htmlContent.contentName || ""
2663
- };
2664
- if (isValueAssigned(parentDataTagPrefix)) {
2665
- _walkUpDomChainCaptureData(element, elementContent, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag);
2666
- }
2667
- if (!elementContent.id && !elementContent.contentName) {
2668
- _traceLogger.throwInternal(LoggingSeverity.WARNING, _ExtendedInternalMessageId.InvalidContentBlob, "Invalid content blob. Missing required attributes (id, contentName. " +
2669
- " Content information will still be collected!");
2670
- }
2671
- return elementContent;
1808
+ elementLevelFlag = true;
1809
+ element = element.parentNode;
1810
+ }
1811
+ };
1812
+ DomContentHandler.prototype._populateElementContent = function (element, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag) {
1813
+ var elementContent = {};
1814
+ if (!element)
1815
+ return elementContent;
1816
+ var htmlContent = this._getHtmlIdAndContentName(element);
1817
+ elementContent = {
1818
+ id: htmlContent.id || "",
1819
+ contentName: htmlContent.contentName || ""
1820
+ };
1821
+ if (isValueAssigned(parentDataTagPrefix)) {
1822
+ this._walkUpDomChainCaptureData(element, elementContent, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag);
1823
+ }
1824
+ if (!elementContent.id && !elementContent.contentName) {
1825
+ this._traceLogger.throwInternal(LoggingSeverity.WARNING, _ExtendedInternalMessageId.InvalidContentBlob, "Invalid content blob. Missing required attributes (id, contentName. " +
1826
+ " Content information will still be collected!");
1827
+ }
1828
+ return elementContent;
1829
+ };
1830
+ DomContentHandler.prototype._populateElementContentwithDataTag = function (element, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag) {
1831
+ var elementContent = {};
1832
+ if (!element)
1833
+ return elementContent;
1834
+ var htmlContent = this._getHtmlIdAndContentName(element);
1835
+ if (isValueAssigned(parentDataTagPrefix)) {
1836
+ this._walkUpDomChainCaptureData(element, elementContent, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag);
1837
+ }
1838
+ else {
1839
+ this._captureElementContentWithDataTag(element, elementContent, dataTagPrefix);
1840
+ }
1841
+ if (this._config.dataTags.useDefaultContentNameOrId) {
1842
+ if (!isValueAssigned(elementContent.id)) {
1843
+ elementContent.id = htmlContent.id || "";
2672
1844
  }
2673
- function _populateElementContentwithDataTag(element, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag) {
2674
- var dataTags = (_self._config || {}).dataTags;
2675
- var elementContent = {};
2676
- if (!element) {
2677
- return elementContent;
2678
- }
2679
- var htmlContent = _getHtmlIdAndContentName(element);
2680
- if (isValueAssigned(parentDataTagPrefix)) {
2681
- _walkUpDomChainCaptureData(element, elementContent, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag);
2682
- }
2683
- else {
2684
- _captureElementContentWithDataTag(element, elementContent, dataTagPrefix);
2685
- }
2686
- if (dataTags.useDefaultContentNameOrId) {
2687
- if (!isValueAssigned(elementContent.id)) {
2688
- elementContent.id = htmlContent.id || "";
2689
- }
2690
- elementContent.contentName = htmlContent.contentName || "";
2691
- }
2692
- if (!elementContent.id && !elementContent.contentName) {
2693
- _traceLogger.throwInternal(LoggingSeverity.WARNING, _ExtendedInternalMessageId.InvalidContentBlob, "Invalid content blob. Missing required attributes (id, contentName. " +
2694
- " Content information will still be collected!");
2695
- }
2696
- return elementContent;
2697
- }
2698
- function _getMetaDataFromDOM(captureAllMetaDataContent, prefix, removePrefix) {
2699
- var metaElements;
2700
- var metaData = {};
2701
- if (hasDocument) {
2702
- metaElements = document.querySelectorAll("meta");
2703
- for (var i = 0; i < metaElements.length; i++) {
2704
- var meta = metaElements[i];
2705
- if (meta.name) {
2706
- if (captureAllMetaDataContent || meta.name.indexOf(prefix) === 0) {
2707
- var name_1 = removePrefix ? meta.name.replace(prefix, "") : meta.name;
2708
- metaData[name_1] = meta.content;
2709
- }
2710
- }
1845
+ elementContent.contentName = htmlContent.contentName || "";
1846
+ }
1847
+ if (!elementContent.id && !elementContent.contentName) {
1848
+ this._traceLogger.throwInternal(LoggingSeverity.WARNING, _ExtendedInternalMessageId.InvalidContentBlob, "Invalid content blob. Missing required attributes (id, contentName. " +
1849
+ " Content information will still be collected!");
1850
+ }
1851
+ return elementContent;
1852
+ };
1853
+ DomContentHandler.prototype._getMetaDataFromDOM = function (captureAllMetaDataContent, prefix, removePrefix) {
1854
+ var metaElements;
1855
+ var metaData = {};
1856
+ if (hasDocument) {
1857
+ metaElements = document.querySelectorAll("meta");
1858
+ for (var i = 0; i < metaElements.length; i++) {
1859
+ var meta = metaElements[i];
1860
+ if (meta.name) {
1861
+ if (captureAllMetaDataContent || meta.name.indexOf(prefix) === 0) {
1862
+ var name_1 = removePrefix ? meta.name.replace(prefix, "") : meta.name;
1863
+ metaData[name_1] = meta.content;
2711
1864
  }
2712
1865
  }
2713
- return metaData;
2714
1866
  }
2715
- function _getDefaultContentName(element, useDefaultContentName) {
2716
- if (useDefaultContentName === false || !element.tagName) {
2717
- return "";
2718
- }
2719
- var doc = getDocument() || {};
2720
- var contentName;
2721
- switch (element.tagName) {
2722
- case "A":
2723
- contentName = doc.all ? element.innerText || element.innerHTML : element.text || element.innerHTML;
2724
- break;
2725
- case "IMG":
2726
- case "AREA":
2727
- contentName = element.alt;
2728
- break;
2729
- default:
2730
- contentName = element.value || element.name || element.alt || element.innerText || element.id;
2731
- }
2732
- return contentName.substring(0, MAX_CONTENTNAME_LENGTH);
2733
- }
2734
- function _isTracked(element, dataTag, aiBlobAttributeTag) {
2735
- var attrs = element.attributes;
2736
- var dataTagFound = false;
2737
- for (var i = 0; i < attrs.length; i++) {
2738
- var attributeName = attrs[i].name;
2739
- if (attributeName === aiBlobAttributeTag) {
2740
- return false;
2741
- }
2742
- else if (attributeName.indexOf(dataTag) === 0) {
2743
- dataTagFound = true;
2744
- }
2745
- }
2746
- return dataTagFound;
2747
- }
2748
- function _getHtmlIdAndContentName(element) {
2749
- var dataTags = (_self._config || {}).dataTags;
2750
- var callback = (_self._config || {}).callback;
2751
- var htmlContent = {};
2752
- if (!element) {
2753
- return htmlContent;
2754
- }
2755
- if (dataTags.useDefaultContentNameOrId) {
2756
- var customizedContentName = callback.contentName ? callback.contentName(element, dataTags.useDefaultContentNameOrId) : "";
2757
- var defaultContentName = _getDefaultContentName(element, dataTags.useDefaultContentNameOrId);
2758
- htmlContent = {
2759
- id: element.id,
2760
- contentName: customizedContentName || defaultContentName || element.getAttribute("alt")
2761
- };
2762
- }
2763
- return htmlContent;
2764
- }
2765
- function _getParentDetails(element, elementContent, dataTagPrefix, aiBlobAttributeTag) {
2766
- var parentId = elementContent["parentid"];
2767
- var parentName = elementContent["parentname"];
2768
- var parentInfo = {};
2769
- if (parentId || parentName || !element) {
2770
- return parentInfo;
2771
- }
2772
- return _populateParentInfo(element, dataTagPrefix, aiBlobAttributeTag);
2773
- }
2774
- function _populateParentInfo(element, dataTagPrefix, aiBlobAttributeTag) {
2775
- var parentInfo = {};
2776
- var parentId;
2777
- var closestParentElement = walkUpDomChainWithElementValidation(element.parentElement, _isTracked, dataTagPrefix);
2778
- if (closestParentElement) {
2779
- var dataAttr = closestParentElement.getAttribute(aiBlobAttributeTag) || element[aiBlobAttributeTag];
2780
- if (dataAttr) {
2781
- try {
2782
- var telemetryObject = JSON.parse(dataAttr);
2783
- }
2784
- catch (e) {
2785
- _traceLogger.throwInternal(LoggingSeverity.CRITICAL, _ExtendedInternalMessageId.CannotParseAiBlobValue, "Can not parse " + dataAttr);
2786
- }
2787
- if (telemetryObject) {
2788
- parentId = telemetryObject.id;
2789
- }
2790
- }
2791
- else {
2792
- parentId = closestParentElement.getAttribute(dataTagPrefix + "id");
2793
- }
1867
+ }
1868
+ return metaData;
1869
+ };
1870
+ DomContentHandler.prototype._getDefaultContentName = function (element, useDefaultContentName) {
1871
+ if (useDefaultContentName === false || !element.tagName) {
1872
+ return "";
1873
+ }
1874
+ var doc = getDocument() || {};
1875
+ var contentName;
1876
+ switch (element.tagName) {
1877
+ case "A":
1878
+ contentName = doc.all ? element.innerText || element.innerHTML : element.text || element.innerHTML;
1879
+ break;
1880
+ case "IMG":
1881
+ case "AREA":
1882
+ contentName = element.alt;
1883
+ break;
1884
+ default:
1885
+ contentName = element.value || element.name || element.alt || element.innerText || element.id;
1886
+ }
1887
+ return contentName.substring(0, MAX_CONTENTNAME_LENGTH);
1888
+ };
1889
+ DomContentHandler.prototype._isTracked = function (element, dataTag, aiBlobAttributeTag) {
1890
+ var attrs = element.attributes;
1891
+ var dataTagFound = false;
1892
+ for (var i = 0; i < attrs.length; i++) {
1893
+ var attributeName = attrs[i].name;
1894
+ if (attributeName === aiBlobAttributeTag) {
1895
+ return false;
1896
+ }
1897
+ else if (attributeName.indexOf(dataTag) === 0) {
1898
+ dataTagFound = true;
1899
+ }
1900
+ }
1901
+ return dataTagFound;
1902
+ };
1903
+ DomContentHandler.prototype._getHtmlIdAndContentName = function (element) {
1904
+ var htmlContent = {};
1905
+ if (!element)
1906
+ return htmlContent;
1907
+ if (this._config.dataTags.useDefaultContentNameOrId) {
1908
+ var customizedContentName = this._config.callback.contentName ? this._config.callback.contentName(element, this._config.dataTags.useDefaultContentNameOrId) : "";
1909
+ var defaultContentName = this._getDefaultContentName(element, this._config.dataTags.useDefaultContentNameOrId);
1910
+ htmlContent = {
1911
+ id: element.id,
1912
+ contentName: customizedContentName || defaultContentName || element.getAttribute("alt")
1913
+ };
1914
+ }
1915
+ return htmlContent;
1916
+ };
1917
+ DomContentHandler.prototype._getParentDetails = function (element, elementContent, dataTagPrefix, aiBlobAttributeTag) {
1918
+ var parentId = elementContent["parentid"];
1919
+ var parentName = elementContent["parentname"];
1920
+ var parentInfo = {};
1921
+ if (parentId || parentName || !element) {
1922
+ return parentInfo;
1923
+ }
1924
+ return this._populateParentInfo(element, dataTagPrefix, aiBlobAttributeTag);
1925
+ };
1926
+ DomContentHandler.prototype._populateParentInfo = function (element, dataTagPrefix, aiBlobAttributeTag) {
1927
+ var parentInfo = {};
1928
+ var parentId;
1929
+ var closestParentElement = walkUpDomChainWithElementValidation(element.parentElement, this._isTracked, dataTagPrefix);
1930
+ if (closestParentElement) {
1931
+ var dataAttr = closestParentElement.getAttribute(aiBlobAttributeTag) || element[aiBlobAttributeTag];
1932
+ if (dataAttr) {
1933
+ try {
1934
+ var telemetryObject = JSON.parse(dataAttr);
2794
1935
  }
2795
- if (parentId) {
2796
- parentInfo["parentid"] = parentId;
1936
+ catch (e) {
1937
+ this._traceLogger.throwInternal(LoggingSeverity.CRITICAL, _ExtendedInternalMessageId.CannotParseAiBlobValue, "Can not parse " + dataAttr);
2797
1938
  }
2798
- else {
2799
- var htmlContent = _getHtmlIdAndContentName(element.parentElement);
2800
- parentInfo["parentid"] = htmlContent.id;
2801
- parentInfo["parentname"] = htmlContent.contentName;
1939
+ if (telemetryObject) {
1940
+ parentId = telemetryObject.id;
2802
1941
  }
2803
- return parentInfo;
2804
1942
  }
2805
- });
2806
- }
1943
+ else {
1944
+ parentId = closestParentElement.getAttribute(dataTagPrefix + "id");
1945
+ }
1946
+ }
1947
+ if (parentId) {
1948
+ parentInfo["parentid"] = parentId;
1949
+ }
1950
+ else {
1951
+ var htmlContent = this._getHtmlIdAndContentName(element.parentElement);
1952
+ parentInfo["parentid"] = htmlContent.id;
1953
+ parentInfo["parentname"] = htmlContent.contentName;
1954
+ }
1955
+ return parentInfo;
1956
+ };
2807
1957
  return DomContentHandler;
2808
1958
  }());
2809
1959
 
2810
1960
  var ClickAnalyticsPlugin = /** @class */ (function (_super) {
2811
1961
  __extendsFn(ClickAnalyticsPlugin, _super);
2812
1962
  function ClickAnalyticsPlugin() {
2813
- var _this = _super.call(this) || this;
1963
+ var _this = _super !== null && _super.apply(this, arguments) || this;
2814
1964
  _this.identifier = "ClickAnalyticsPlugin";
2815
1965
  _this.priority = 181;
2816
- var _config;
2817
- var _pageAction;
2818
- var _autoCaptureHandler;
2819
- var _contentHandler;
2820
- dynamicProto(ClickAnalyticsPlugin, _this, function (_self, _base) {
2821
- var _identifier = _self.identifier;
2822
- _initDefaults();
2823
- _self.initialize = function (config, core, extensions, pluginChain) {
2824
- if (isNullOrUndefined(core)) {
2825
- throwError("Error initializing");
2826
- }
2827
- config.extensionConfig = config.extensionConfig || [];
2828
- config.extensionConfig[_identifier] = config.extensionConfig[_identifier] || {};
2829
- _config = mergeConfig(config.extensionConfig[_identifier]);
2830
- _super.prototype.initialize.call(_this, config, core, extensions, pluginChain);
2831
- var logger = _self.diagLog();
2832
- _contentHandler = _contentHandler ? _contentHandler : new DomContentHandler(_config, logger);
2833
- var metaTags = _contentHandler.getMetadata();
2834
- _pageAction = new PageAction(_this, _config, _contentHandler, _config.callback.pageActionPageTags, metaTags, logger);
2835
- _autoCaptureHandler = _autoCaptureHandler ? _autoCaptureHandler : new AutoCaptureHandler(_self, _config, _pageAction, logger);
2836
- if (_config.autoCapture) {
2837
- _autoCaptureHandler.click();
2838
- }
2839
- var _propertiesExtension;
2840
- arrForEach(extensions, function (extension) {
2841
- if (extension.identifier === PropertiesPluginIdentifier) {
2842
- _propertiesExtension = extension;
2843
- }
2844
- });
2845
- if (_propertiesExtension && _propertiesExtension.context &&
2846
- _propertiesExtension.context.internal && _propertiesExtension.context.internal.sdkVersion) {
2847
- _propertiesExtension.context.internal.sdkVersion += "_ClickPlugin" + ClickAnalyticsPlugin.Version;
2848
- }
2849
- };
2850
- _self.processTelemetry = function (env, itemCtx) {
2851
- _self.processNext(env, itemCtx);
2852
- };
2853
- _self.trackPageAction = function (pageAction, customProperties) {
2854
- try {
2855
- _pageAction.trackPageAction(pageAction, customProperties);
2856
- }
2857
- catch (e) {
2858
- _throwInternal(_self.diagLog(), LoggingSeverity.CRITICAL, _ExtendedInternalMessageId.TrackPageActionEventFailed, "trackPageAction failed, page action event will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
2859
- }
2860
- };
2861
- _self._doTeardown = function (unloadCtx, unloadState, asyncCallback) {
2862
- return unloadComponents([
2863
- _autoCaptureHandler,
2864
- _contentHandler,
2865
- _pageAction
2866
- ], unloadCtx, unloadState);
2867
- };
2868
- });
2869
- function _initDefaults() {
2870
- _config = null;
2871
- _pageAction = null;
2872
- _autoCaptureHandler = null;
2873
- _contentHandler = null;
2874
- }
2875
1966
  return _this;
2876
1967
  }
2877
- ClickAnalyticsPlugin.Version = "2.7.5-nightly.2204-03";
1968
+ ClickAnalyticsPlugin.prototype.initialize = function (config, core, extensions, pluginChain) {
1969
+ if (isNullOrUndefined(core)) {
1970
+ throw Error("Error initializing");
1971
+ }
1972
+ config.extensionConfig = config.extensionConfig || [];
1973
+ config.extensionConfig[this.identifier] = config.extensionConfig[this.identifier] || {};
1974
+ this._config = mergeConfig(config.extensionConfig[this.identifier]);
1975
+ _super.prototype.initialize.call(this, config, core, extensions, pluginChain);
1976
+ this._contentHandler = this._contentHandler ? this._contentHandler : new DomContentHandler(this._config, this.diagLog());
1977
+ var metaTags = this._contentHandler.getMetadata();
1978
+ this.pageAction = new PageAction(this, this._config, this._contentHandler, this._config.callback.pageActionPageTags, metaTags, this.diagLog());
1979
+ this._autoCaptureHandler = this._autoCaptureHandler ? this._autoCaptureHandler : new AutoCaptureHandler(this, this._config, this.pageAction, this.diagLog());
1980
+ if (this._config.autoCapture) {
1981
+ this._autoCaptureHandler.click();
1982
+ }
1983
+ var _propertiesExtension;
1984
+ arrForEach(extensions, function (extension) {
1985
+ if (extension.identifier === PropertiesPluginIdentifier) {
1986
+ _propertiesExtension = extension;
1987
+ }
1988
+ });
1989
+ if (_propertiesExtension && _propertiesExtension.context &&
1990
+ _propertiesExtension.context.internal && _propertiesExtension.context.internal.sdkVersion) {
1991
+ _propertiesExtension.context.internal.sdkVersion += "_ClickPlugin" + ClickAnalyticsPlugin.Version;
1992
+ }
1993
+ };
1994
+ ClickAnalyticsPlugin.prototype.processTelemetry = function (env, itemCtx) {
1995
+ this.processNext(env, itemCtx);
1996
+ };
1997
+ ClickAnalyticsPlugin.prototype.trackPageAction = function (pageAction, customProperties) {
1998
+ try {
1999
+ this.pageAction.trackPageAction(pageAction, customProperties);
2000
+ }
2001
+ catch (e) {
2002
+ this.diagLog().throwInternal(LoggingSeverity.CRITICAL, _ExtendedInternalMessageId.TrackPageActionEventFailed, "trackPageAction failed, page action event will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
2003
+ }
2004
+ };
2005
+ ClickAnalyticsPlugin.Version = "2.7.5-nightly.2204-23";
2878
2006
  return ClickAnalyticsPlugin;
2879
2007
  }(BaseTelemetryPlugin));
2880
2008