@microsoft/applicationinsights-clickanalytics-js 2.8.0-nightly.2202-06 → 2.8.0-nightly.2204-04

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/browser/ai.clck.2.8.0-nightly.2204-04.cjs.js +2883 -0
  2. package/browser/ai.clck.2.8.0-nightly.2204-04.cjs.js.map +1 -0
  3. package/browser/ai.clck.2.8.0-nightly.2204-04.cjs.min.js +6 -0
  4. package/browser/ai.clck.2.8.0-nightly.2204-04.cjs.min.js.map +1 -0
  5. package/browser/ai.clck.2.8.0-nightly.2204-04.gbl.js +2887 -0
  6. package/browser/ai.clck.2.8.0-nightly.2204-04.gbl.js.map +1 -0
  7. package/browser/ai.clck.2.8.0-nightly.2204-04.gbl.min.js +6 -0
  8. package/browser/ai.clck.2.8.0-nightly.2204-04.gbl.min.js.map +1 -0
  9. package/browser/ai.clck.2.8.0-nightly.2204-04.integrity.json +66 -0
  10. package/browser/ai.clck.2.8.0-nightly.2204-04.js +2889 -0
  11. package/browser/ai.clck.2.8.0-nightly.2204-04.js.map +1 -0
  12. package/browser/ai.clck.2.8.0-nightly.2204-04.min.js +6 -0
  13. package/browser/ai.clck.2.8.0-nightly.2204-04.min.js.map +1 -0
  14. package/browser/ai.clck.2.cjs.js +1685 -808
  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 +1685 -808
  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 +1685 -808
  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 +38 -13
  27. package/dist/applicationinsights-clickanalytics-js.api.md +1 -0
  28. package/dist/applicationinsights-clickanalytics-js.d.ts +2 -5
  29. package/dist/applicationinsights-clickanalytics-js.js +1685 -808
  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 +2 -5
  34. package/dist-esm/Behaviours.js +1 -1
  35. package/dist-esm/ClickAnalyticsPlugin.js +74 -50
  36. package/dist-esm/ClickAnalyticsPlugin.js.map +1 -1
  37. package/dist-esm/DataCollector.js +4 -2
  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 +128 -126
  44. package/dist-esm/events/PageAction.js.map +1 -1
  45. package/dist-esm/events/WebEvent.js +109 -94
  46. package/dist-esm/events/WebEvent.js.map +1 -1
  47. package/dist-esm/handlers/AutoCaptureHandler.js +85 -83
  48. package/dist-esm/handlers/AutoCaptureHandler.js.map +1 -1
  49. package/dist-esm/handlers/DomContentHandler.js +279 -276
  50. package/dist-esm/handlers/DomContentHandler.js.map +1 -1
  51. package/package.json +5 -5
  52. package/src/ClickAnalyticsPlugin.ts +92 -47
  53. package/src/DataCollector.ts +24 -22
  54. package/src/Interfaces/Datamodel.ts +20 -21
  55. package/src/common/Utils.ts +8 -8
  56. package/src/events/PageAction.ts +165 -131
  57. package/src/events/WebEvent.ts +147 -78
  58. package/src/handlers/AutoCaptureHandler.ts +89 -79
  59. package/src/handlers/DomContentHandler.ts +336 -303
  60. package/types/ClickAnalyticsPlugin.d.ts +1 -4
  61. package/types/Interfaces/Datamodel.d.ts +3 -2
  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 +2 -10
  65. package/types/handlers/DomContentHandler.d.ts +3 -50
  66. package/types/tsdoc-metadata.json +1 -1
  67. package/browser/ai.clck.2.8.0-nightly.2202-06.cjs.js +0 -2006
  68. package/browser/ai.clck.2.8.0-nightly.2202-06.cjs.js.map +0 -1
  69. package/browser/ai.clck.2.8.0-nightly.2202-06.cjs.min.js +0 -6
  70. package/browser/ai.clck.2.8.0-nightly.2202-06.cjs.min.js.map +0 -1
  71. package/browser/ai.clck.2.8.0-nightly.2202-06.gbl.js +0 -2010
  72. package/browser/ai.clck.2.8.0-nightly.2202-06.gbl.js.map +0 -1
  73. package/browser/ai.clck.2.8.0-nightly.2202-06.gbl.min.js +0 -6
  74. package/browser/ai.clck.2.8.0-nightly.2202-06.gbl.min.js.map +0 -1
  75. package/browser/ai.clck.2.8.0-nightly.2202-06.integrity.json +0 -66
  76. package/browser/ai.clck.2.8.0-nightly.2202-06.js +0 -2012
  77. package/browser/ai.clck.2.8.0-nightly.2202-06.js.map +0 -1
  78. package/browser/ai.clck.2.8.0-nightly.2202-06.min.js +0 -6
  79. package/browser/ai.clck.2.8.0-nightly.2202-06.min.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Application Insights JavaScript SDK - Click Analytics, 2.8.0-nightly.2202-06
2
+ * Application Insights JavaScript SDK - Click Analytics, 2.8.0-nightly.2204-04
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
  (function (global, factory) {
@@ -75,7 +75,9 @@
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) { d.__proto__ = b; }) ||
78
+ ({ __proto__: [] } instanceof Array && function (d, b) {
79
+ d.__proto__ = b;
80
+ }) ||
79
81
  function (d, b) {
80
82
  for (var p in b) {
81
83
  if (b[strShimHasOwnProperty](p)) {
@@ -90,7 +92,9 @@
90
92
  throwTypeError("Class extends value " + String(b) + " is not a constructor or null");
91
93
  }
92
94
  extendStaticsFn(d, b);
93
- function __() { this.constructor = d; }
95
+ function __() {
96
+ this.constructor = d;
97
+ }
94
98
  d[strShimPrototype] = b === null ? objCreateFn(b) : (__[strShimPrototype] = b[strShimPrototype], new __());
95
99
  }
96
100
 
@@ -109,11 +113,11 @@
109
113
  var DynAllowInstChkTag = DynInstChkTag;
110
114
  var DynProtoDefaultOptions = '_dfOpts';
111
115
  var UnknownValue = '_unknown_';
112
- var str__Proto = "__proto__";
116
+ var str__Proto$1 = "__proto__";
113
117
  var strUseBaseInst = 'useBaseInst';
114
118
  var strSetInstFuncs = 'setInstFuncs';
115
119
  var Obj = Object;
116
- var _objGetPrototypeOf = Obj["getPrototypeOf"];
120
+ var _objGetPrototypeOf$1 = Obj["getPrototypeOf"];
117
121
  var _dynamicNames = 0;
118
122
  function _hasOwnProperty(obj, prop) {
119
123
  return obj && Obj[Prototype$1].hasOwnProperty.call(obj, prop);
@@ -124,12 +128,12 @@
124
128
  function _isObjectArrayOrFunctionPrototype(target) {
125
129
  return _isObjectOrArrayPrototype(target) || target === Function[Prototype$1];
126
130
  }
127
- function _getObjProto(target) {
131
+ function _getObjProto$1(target) {
128
132
  if (target) {
129
- if (_objGetPrototypeOf) {
130
- return _objGetPrototypeOf(target);
133
+ if (_objGetPrototypeOf$1) {
134
+ return _objGetPrototypeOf$1(target);
131
135
  }
132
- var newProto = target[str__Proto] || target[Prototype$1] || (target[Constructor] ? target[Constructor][Prototype$1] : null);
136
+ var newProto = target[str__Proto$1] || target[Prototype$1] || (target[Constructor] ? target[Constructor][Prototype$1] : null);
133
137
  if (newProto) {
134
138
  return newProto;
135
139
  }
@@ -195,16 +199,16 @@
195
199
  _forEachProp(instFuncs, function (name) {
196
200
  baseFuncs[name] = _instFuncProxy(thisTarget, instFuncs, name);
197
201
  });
198
- var baseProto = _getObjProto(classProto);
202
+ var baseProto = _getObjProto$1(classProto);
199
203
  var visited = [];
200
204
  while (baseProto && !_isObjectArrayOrFunctionPrototype(baseProto) && !_hasVisited(visited, baseProto)) {
201
205
  _forEachProp(baseProto, function (name) {
202
- if (!baseFuncs[name] && _isDynamicCandidate(baseProto, name, !_objGetPrototypeOf)) {
206
+ if (!baseFuncs[name] && _isDynamicCandidate(baseProto, name, !_objGetPrototypeOf$1)) {
203
207
  baseFuncs[name] = _instFuncProxy(thisTarget, baseProto, name);
204
208
  }
205
209
  });
206
210
  visited.push(baseProto);
207
- baseProto = _getObjProto(baseProto);
211
+ baseProto = _getObjProto$1(baseProto);
208
212
  }
209
213
  return baseFuncs;
210
214
  }
@@ -218,7 +222,7 @@
218
222
  }
219
223
  if (!instFunc[DynInstChkTag] && instFuncTable[DynAllowInstChkTag] !== false) {
220
224
  var canAddInst = !_hasOwnProperty(target, funcName);
221
- var objProto = _getObjProto(target);
225
+ var objProto = _getObjProto$1(target);
222
226
  var visited = [];
223
227
  while (canAddInst && objProto && !_isObjectArrayOrFunctionPrototype(objProto) && !_hasVisited(visited, objProto)) {
224
228
  var protoFunc = objProto[funcName];
@@ -227,7 +231,7 @@
227
231
  break;
228
232
  }
229
233
  visited.push(objProto);
230
- objProto = _getObjProto(objProto);
234
+ objProto = _getObjProto$1(objProto);
231
235
  }
232
236
  try {
233
237
  if (canAddInst) {
@@ -245,7 +249,7 @@
245
249
  function _getProtoFunc(funcName, proto, currentDynProtoProxy) {
246
250
  var protoFunc = proto[funcName];
247
251
  if (protoFunc === currentDynProtoProxy) {
248
- protoFunc = _getObjProto(proto)[funcName];
252
+ protoFunc = _getObjProto$1(proto)[funcName];
249
253
  }
250
254
  if (typeof protoFunc !== strFunction) {
251
255
  _throwTypeError("[" + funcName + "] is not a " + strFunction);
@@ -279,15 +283,15 @@
279
283
  }
280
284
  }
281
285
  function _checkPrototype(classProto, thisTarget) {
282
- if (_objGetPrototypeOf) {
286
+ if (_objGetPrototypeOf$1) {
283
287
  var visited = [];
284
- var thisProto = _getObjProto(thisTarget);
288
+ var thisProto = _getObjProto$1(thisTarget);
285
289
  while (thisProto && !_isObjectArrayOrFunctionPrototype(thisProto) && !_hasVisited(visited, thisProto)) {
286
290
  if (thisProto === classProto) {
287
291
  return true;
288
292
  }
289
293
  visited.push(thisProto);
290
- thisProto = _getObjProto(thisProto);
294
+ thisProto = _getObjProto$1(thisProto);
291
295
  }
292
296
  }
293
297
  return false;
@@ -323,7 +327,7 @@
323
327
  var instFuncs = _getInstanceFuncs(target);
324
328
  var baseFuncs = _getBaseFuncs(classProto, target, instFuncs, useBaseInst);
325
329
  delegateFunc(target, baseFuncs);
326
- var setInstanceFunc = !!_objGetPrototypeOf && !!perfOptions[strSetInstFuncs];
330
+ var setInstanceFunc = !!_objGetPrototypeOf$1 && !!perfOptions[strSetInstFuncs];
327
331
  if (setInstanceFunc && options) {
328
332
  setInstanceFunc = !!options[strSetInstFuncs];
329
333
  }
@@ -335,105 +339,52 @@
335
339
  };
336
340
  dynamicProto[DynProtoDefaultOptions] = perfDefaults;
337
341
 
338
- var LoggingSeverity;
339
- (function (LoggingSeverity) {
340
- LoggingSeverity[LoggingSeverity["CRITICAL"] = 1] = "CRITICAL";
341
- LoggingSeverity[LoggingSeverity["WARNING"] = 2] = "WARNING";
342
- })(LoggingSeverity || (LoggingSeverity = {}));
343
- var _InternalMessageId = {
344
- BrowserDoesNotSupportLocalStorage: 0,
345
- BrowserCannotReadLocalStorage: 1,
346
- BrowserCannotReadSessionStorage: 2,
347
- BrowserCannotWriteLocalStorage: 3,
348
- BrowserCannotWriteSessionStorage: 4,
349
- BrowserFailedRemovalFromLocalStorage: 5,
350
- BrowserFailedRemovalFromSessionStorage: 6,
351
- CannotSendEmptyTelemetry: 7,
352
- ClientPerformanceMathError: 8,
353
- ErrorParsingAISessionCookie: 9,
354
- ErrorPVCalc: 10,
355
- ExceptionWhileLoggingError: 11,
356
- FailedAddingTelemetryToBuffer: 12,
357
- FailedMonitorAjaxAbort: 13,
358
- FailedMonitorAjaxDur: 14,
359
- FailedMonitorAjaxOpen: 15,
360
- FailedMonitorAjaxRSC: 16,
361
- FailedMonitorAjaxSend: 17,
362
- FailedMonitorAjaxGetCorrelationHeader: 18,
363
- FailedToAddHandlerForOnBeforeUnload: 19,
364
- FailedToSendQueuedTelemetry: 20,
365
- FailedToReportDataLoss: 21,
366
- FlushFailed: 22,
367
- MessageLimitPerPVExceeded: 23,
368
- MissingRequiredFieldSpecification: 24,
369
- NavigationTimingNotSupported: 25,
370
- OnError: 26,
371
- SessionRenewalDateIsZero: 27,
372
- SenderNotInitialized: 28,
373
- StartTrackEventFailed: 29,
374
- StopTrackEventFailed: 30,
375
- StartTrackFailed: 31,
376
- StopTrackFailed: 32,
377
- TelemetrySampledAndNotSent: 33,
378
- TrackEventFailed: 34,
379
- TrackExceptionFailed: 35,
380
- TrackMetricFailed: 36,
381
- TrackPVFailed: 37,
382
- TrackPVFailedCalc: 38,
383
- TrackTraceFailed: 39,
384
- TransmissionFailed: 40,
385
- FailedToSetStorageBuffer: 41,
386
- FailedToRestoreStorageBuffer: 42,
387
- InvalidBackendResponse: 43,
388
- FailedToFixDepricatedValues: 44,
389
- InvalidDurationValue: 45,
390
- TelemetryEnvelopeInvalid: 46,
391
- CreateEnvelopeError: 47,
392
- CannotSerializeObject: 48,
393
- CannotSerializeObjectNonSerializable: 49,
394
- CircularReferenceDetected: 50,
395
- ClearAuthContextFailed: 51,
396
- ExceptionTruncated: 52,
397
- IllegalCharsInName: 53,
398
- ItemNotInArray: 54,
399
- MaxAjaxPerPVExceeded: 55,
400
- MessageTruncated: 56,
401
- NameTooLong: 57,
402
- SampleRateOutOfRange: 58,
403
- SetAuthContextFailed: 59,
404
- SetAuthContextFailedAccountName: 60,
405
- StringValueTooLong: 61,
406
- StartCalledMoreThanOnce: 62,
407
- StopCalledWithoutStart: 63,
408
- TelemetryInitializerFailed: 64,
409
- TrackArgumentsNotSpecified: 65,
410
- UrlTooLong: 66,
411
- SessionStorageBufferFull: 67,
412
- CannotAccessCookie: 68,
413
- IdTooLong: 69,
414
- InvalidEvent: 70,
415
- FailedMonitorAjaxSetRequestHeader: 71,
416
- SendBrowserInfoOnUserInit: 72,
417
- PluginException: 73,
418
- NotificationException: 74,
419
- SnippetScriptLoadFailure: 99,
420
- InvalidInstrumentationKey: 100,
421
- CannotParseAiBlobValue: 101,
422
- InvalidContentBlob: 102,
423
- TrackPageActionEventFailed: 103,
424
- FailedAddingCustomDefinedRequestContext: 104,
425
- InMemoryStorageBufferFull: 105
426
- };
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";
427
350
 
428
- var strOnPrefix = "on";
429
- var strAttachEvent = "attachEvent";
430
- var strAddEventHelper = "addEventListener";
351
+ var strToISOString = "toISOString";
352
+ var cStrEndsWith = "endsWith";
353
+ var cStrStartsWith = "startsWith";
354
+ var cStrTrim = "trim";
431
355
  var strToString = "toString";
432
- var _objDefineProperty = ObjDefineProperty;
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];
433
368
  var _isArray = Array.isArray;
434
369
  var _objToString = ObjProto[strToString];
435
370
  var _fnToString = ObjHasOwnProperty[strToString];
436
- _fnToString.call(ObjClass);
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
+ }
437
388
  function isUndefined(value) {
438
389
  return value === undefined || typeof value === strShimUndefined;
439
390
  }
@@ -443,27 +394,24 @@
443
394
  function hasOwnProperty(obj, prop) {
444
395
  return !!(obj && ObjHasOwnProperty.call(obj, prop));
445
396
  }
397
+ function isObject(value) {
398
+ return !!(value && typeof value === strShimObject);
399
+ }
446
400
  function isFunction(value) {
447
401
  return !!(value && typeof value === strShimFunction);
448
402
  }
449
- function attachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {
450
- if (useCapture === void 0) { useCapture = false; }
451
- var result = false;
452
- if (!isNullOrUndefined(obj)) {
453
- try {
454
- if (!isNullOrUndefined(obj[strAddEventHelper])) {
455
- obj[strAddEventHelper](eventNameWithoutOn, handlerRef, useCapture);
456
- result = true;
457
- }
458
- else if (!isNullOrUndefined(obj[strAttachEvent])) {
459
- obj[strAttachEvent](strOnPrefix + eventNameWithoutOn, handlerRef);
460
- result = true;
461
- }
462
- }
463
- catch (e) {
464
- }
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
+ });
465
413
  }
466
- return result;
414
+ return value;
467
415
  }
468
416
  function objForEachKey(target, callbackfn) {
469
417
  if (target) {
@@ -474,6 +422,12 @@
474
422
  }
475
423
  }
476
424
  }
425
+ function strContains(value, search) {
426
+ if (value && search) {
427
+ return value.indexOf(search) !== -1;
428
+ }
429
+ return false;
430
+ }
477
431
  var isArray = _isArray || _isArrayPoly;
478
432
  function _isArrayPoly(obj) {
479
433
  return !!(obj && _objToString.call(obj) === "[object Array]");
@@ -481,6 +435,28 @@
481
435
  function isError(obj) {
482
436
  return !!(obj && _objToString.call(obj) === "[object Error]");
483
437
  }
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
+ }
484
460
  function arrForEach(arr, callbackfn, thisArg) {
485
461
  var len = arr.length;
486
462
  try {
@@ -495,8 +471,42 @@
495
471
  catch (e) {
496
472
  }
497
473
  }
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
+ }
498
508
  function objDefineAccessors(target, prop, getProp, setProp) {
499
- if (_objDefineProperty) {
509
+ if (_objDefineProperty$1) {
500
510
  try {
501
511
  var descriptor = {
502
512
  enumerable: true,
@@ -508,7 +518,7 @@
508
518
  if (setProp) {
509
519
  descriptor.set = setProp;
510
520
  }
511
- _objDefineProperty(target, prop, descriptor);
521
+ _objDefineProperty$1(target, prop, descriptor);
512
522
  return true;
513
523
  }
514
524
  catch (e) {
@@ -516,6 +526,10 @@
516
526
  }
517
527
  return false;
518
528
  }
529
+ function _doNothing(value) {
530
+ return value;
531
+ }
532
+ var objFreeze = _objFreeze || _doNothing;
519
533
  function dateNow() {
520
534
  var dt = Date;
521
535
  return dt.now ? dt.now() : new dt().getTime();
@@ -524,7 +538,7 @@
524
538
  if (isError(object)) {
525
539
  return object.name;
526
540
  }
527
- return "";
541
+ return strEmpty;
528
542
  }
529
543
  function setValue(target, field, value, valChk, srcChk) {
530
544
  var theValue = value;
@@ -537,13 +551,105 @@
537
551
  }
538
552
  return theValue;
539
553
  }
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
+ }
540
639
 
541
640
  var strWindow = "window";
542
641
  var strDocument = "document";
642
+ var strNavigator = "navigator";
543
643
  var strLocation = "location";
544
644
  var strConsole = "console";
545
645
  var strPerformance = "performance";
546
646
  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;
547
653
  var _enableMocks = false;
548
654
  function getGlobalInst(name) {
549
655
  var gbl = getGlobal();
@@ -573,6 +679,15 @@
573
679
  }
574
680
  return getGlobalInst(strDocument);
575
681
  }
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
+ }
576
691
  function getLocation(checkForMock) {
577
692
  if (checkForMock && _enableMocks) {
578
693
  var mockLocation = getGlobalInst("__mockLocation");
@@ -603,9 +718,24 @@
603
718
  }
604
719
  return null;
605
720
  }
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
+ }
606
736
  function dumpObj(object) {
607
737
  var objectTypeDump = Object[strShimPrototype].toString.call(object);
608
- var propertyValueDump = "";
738
+ var propertyValueDump = strEmpty;
609
739
  if (objectTypeDump === "[object Error]") {
610
740
  propertyValueDump = "{ stack: '" + object.stack + "', message: '" + object.message + "', name: '" + object.name + "'";
611
741
  }
@@ -638,9 +768,9 @@
638
768
  var strWarnToConsole = "warnToConsole";
639
769
  function _sanitizeDiagnosticText(text) {
640
770
  if (text) {
641
- return "\"" + text.replace(/\"/g, "") + "\"";
771
+ return "\"" + text.replace(/\"/g, strEmpty) + "\"";
642
772
  }
643
- return "";
773
+ return strEmpty;
644
774
  }
645
775
  function _logToConsole(func, message) {
646
776
  var theConsole = getConsole();
@@ -662,12 +792,12 @@
662
792
  _self.message =
663
793
  (isUserAct ? AiUserActionablePrefix : AiNonUserActionablePrefix) +
664
794
  msgId;
665
- var strProps = "";
795
+ var strProps = strEmpty;
666
796
  if (hasJSON()) {
667
797
  strProps = getJSON().stringify(properties);
668
798
  }
669
- var diagnosticText = (msg ? " message:" + _sanitizeDiagnosticText(msg) : "") +
670
- (properties ? " props:" + _sanitizeDiagnosticText(strProps) : "");
799
+ var diagnosticText = (msg ? " message:" + _sanitizeDiagnosticText(msg) : strEmpty) +
800
+ (properties ? " props:" + _sanitizeDiagnosticText(strProps) : strEmpty);
671
801
  _self.message += diagnosticText;
672
802
  }
673
803
  _InternalLogMessage.dataType = "MessageData";
@@ -697,7 +827,7 @@
697
827
  throw message;
698
828
  }
699
829
  else {
700
- var logFunc = severity === LoggingSeverity.CRITICAL ? strErrorToConsole : strWarnToConsole;
830
+ var logFunc = severity === 1 ? strErrorToConsole : strWarnToConsole;
701
831
  if (!isUndefined(message.message)) {
702
832
  var logLevel = _self.consoleLoggingLevel();
703
833
  if (isUserAct) {
@@ -715,7 +845,7 @@
715
845
  _self.logInternalMessage(severity, message);
716
846
  }
717
847
  else {
718
- _debugExtMsg("throw" + (severity === LoggingSeverity.CRITICAL ? "Critical" : "Warning"), message);
848
+ _debugExtMsg("throw" + (severity === 1 ? "Critical" : "Warning"), message);
719
849
  }
720
850
  }
721
851
  };
@@ -747,13 +877,13 @@
747
877
  if (severity <= _self.telemetryLoggingLevel()) {
748
878
  _self.queue.push(message);
749
879
  _messageCount++;
750
- _debugExtMsg((severity === LoggingSeverity.CRITICAL ? "error" : "warn"), message);
880
+ _debugExtMsg((severity === 1 ? "error" : "warn"), message);
751
881
  }
752
882
  if (_messageCount === _self.maxInternalMessageLimit()) {
753
883
  var throttleLimitMessage = "Internal events throttle limit per PageView reached for this app.";
754
- var throttleMessage = new _InternalLogMessage(_InternalMessageId.MessageLimitPerPVExceeded, throttleLimitMessage, false);
884
+ var throttleMessage = new _InternalLogMessage(23 , throttleLimitMessage, false);
755
885
  _self.queue.push(throttleMessage);
756
- if (severity === LoggingSeverity.CRITICAL) {
886
+ if (severity === 1 ) {
757
887
  _self.errorToConsole(throttleLimitMessage);
758
888
  }
759
889
  else {
@@ -782,6 +912,10 @@
782
912
  }
783
913
  return DiagnosticLogger;
784
914
  }());
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
+ }
785
919
 
786
920
  var strExecutionContextKey = "ctx";
787
921
  var PerfEvent = /** @class */ (function () {
@@ -895,207 +1029,634 @@
895
1029
  return func();
896
1030
  }
897
1031
 
898
- var TelemetryPluginChain = /** @class */ (function () {
899
- function TelemetryPluginChain(plugin, defItemCtx) {
900
- var _self = this;
901
- var _nextProxy = null;
902
- var _hasProcessTelemetry = isFunction(plugin.processTelemetry);
903
- var _hasSetNext = isFunction(plugin.setNextPlugin);
904
- _self._hasRun = false;
905
- _self.getPlugin = function () {
906
- return plugin;
907
- };
908
- _self.getNext = function () {
909
- return _nextProxy;
910
- };
911
- _self.setNext = function (nextPlugin) {
912
- _nextProxy = nextPlugin;
913
- };
914
- _self.processTelemetry = function (env, itemCtx) {
915
- if (!itemCtx) {
916
- itemCtx = defItemCtx;
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.8.0-nightly.2204-04";
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
+ }
917
1131
  }
918
- var identifier = plugin ? plugin.identifier : "TelemetryPluginChain";
919
- doPerf(itemCtx ? itemCtx.core() : null, function () { return identifier + ":processTelemetry"; }, function () {
920
- if (plugin && _hasProcessTelemetry) {
921
- _self._hasRun = true;
922
- try {
923
- itemCtx.setNext(_nextProxy);
924
- if (_hasSetNext) {
925
- plugin.setNextPlugin(_nextProxy);
926
- }
927
- _nextProxy && (_nextProxy._hasRun = false);
928
- plugin.processTelemetry(env, itemCtx);
929
- }
930
- catch (error) {
931
- var hasRun = _nextProxy && _nextProxy._hasRun;
932
- if (!_nextProxy || !hasRun) {
933
- itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.PluginException, "Plugin [" + plugin.identifier + "] failed during processTelemetry - " + dumpObj(error));
934
- }
935
- if (_nextProxy && !hasRun) {
936
- _nextProxy.processTelemetry(env, itemCtx);
937
- }
938
- }
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];
939
1163
  }
940
- else if (_nextProxy) {
941
- _self._hasRun = true;
942
- _nextProxy.processTelemetry(env, itemCtx);
1164
+ catch (e) {
943
1165
  }
944
- }, function () { return ({ item: env }); }, !(env.sync));
945
- };
946
- }
947
- return TelemetryPluginChain;
948
- }());
1166
+ }
1167
+ }
1168
+ };
1169
+ return data;
1170
+ }
949
1171
 
950
- function _createProxyChain(plugins, itemCtx) {
951
- var proxies = [];
952
- if (plugins && plugins.length > 0) {
953
- var lastProxy = null;
954
- for (var idx = 0; idx < plugins.length; idx++) {
955
- var thePlugin = plugins[idx];
956
- if (thePlugin && isFunction(thePlugin.processTelemetry)) {
957
- var newProxy = new TelemetryPluginChain(thePlugin, itemCtx);
958
- proxies.push(newProxy);
959
- if (lastProxy) {
960
- lastProxy.setNext(newProxy);
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
+ }
961
1188
  }
962
- lastProxy = newProxy;
963
1189
  }
964
1190
  }
965
1191
  }
966
- return proxies.length > 0 ? proxies[0] : null;
1192
+ return _doUnload();
967
1193
  }
968
- function _copyProxyChain(proxy, itemCtx, startAt) {
969
- var plugins = [];
970
- var add = startAt ? false : true;
971
- if (proxy) {
972
- while (proxy) {
973
- var thePlugin = proxy.getPlugin();
974
- if (add || thePlugin === startAt) {
975
- add = true;
976
- plugins.push(thePlugin);
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) {
1261
+ 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));
1266
+ }
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
+ }
1296
+ }
1297
+ });
1298
+ }
977
1299
  }
978
- proxy = proxy.getNext();
979
1300
  }
1301
+ return theConfig;
980
1302
  }
981
- if (!add) {
982
- plugins.push(startAt);
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;
1314
+ }
1315
+ function _iterateChain(cb) {
1316
+ var nextPlugin;
1317
+ while (!!(nextPlugin = context._next())) {
1318
+ var plugin = nextPlugin.getPlugin();
1319
+ if (plugin) {
1320
+ cb(plugin);
1321
+ }
1322
+ }
983
1323
  }
984
- return _createProxyChain(plugins, itemCtx);
1324
+ return context;
985
1325
  }
986
- function _copyPluginChain(srcPlugins, itemCtx, startAt) {
987
- var plugins = srcPlugins;
988
- var add = false;
989
- if (startAt && srcPlugins) {
990
- plugins = [];
991
- arrForEach(srcPlugins, function (thePlugin) {
992
- if (add || thePlugin === startAt) {
993
- add = true;
994
- plugins.push(thePlugin);
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);
1338
+ }
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
+ }
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);
1359
+ }
1360
+ context.processNext = _processNext;
1361
+ context.createNew = _createNew;
1362
+ return context;
1363
+ }
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);
995
1371
  }
996
1372
  });
997
1373
  }
998
- if (startAt && !add) {
999
- if (!plugins) {
1000
- plugins = [];
1374
+ function _createNew(plugins, startAt) {
1375
+ if (plugins === void 0) { plugins = null; }
1376
+ if (isArray(plugins)) {
1377
+ plugins = createTelemetryProxyChain(plugins, config, core, startAt);
1001
1378
  }
1002
- plugins.push(startAt);
1379
+ return createProcessTelemetryUpdateContext(plugins || context.getNext(), config, core, startAt);
1003
1380
  }
1004
- return _createProxyChain(plugins, itemCtx);
1381
+ context.processNext = _processNext;
1382
+ context.createNew = _createNew;
1383
+ return context;
1005
1384
  }
1006
- var ProcessTelemetryContext = /** @class */ (function () {
1007
- function ProcessTelemetryContext(plugins, config, core, startAt) {
1008
- var _self = this;
1009
- var _nextProxy = null;
1010
- if (startAt !== null) {
1011
- if (plugins && isFunction(plugins.getPlugin)) {
1012
- _nextProxy = _copyProxyChain(plugins, _self, startAt || plugins.getPlugin());
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;
1013
1393
  }
1014
- else {
1015
- if (startAt) {
1016
- _nextProxy = _copyPluginChain(plugins, _self, startAt);
1394
+ if (add && thePlugin && isFunction(thePlugin.processTelemetry)) {
1395
+ var newProxy = createTelemetryPluginProxy(thePlugin, config, core);
1396
+ if (!firstProxy) {
1397
+ firstProxy = newProxy;
1017
1398
  }
1018
- else if (isUndefined(startAt)) {
1019
- _nextProxy = _createProxyChain(plugins, _self);
1399
+ if (lastProxy_1) {
1400
+ lastProxy_1._setNext(newProxy);
1020
1401
  }
1402
+ lastProxy_1 = newProxy;
1021
1403
  }
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;
1022
1435
  }
1023
- _self.core = function () {
1024
- return core;
1025
- };
1026
- _self.diagLog = function () {
1027
- return safeGetLogger(core, config);
1028
- };
1029
- _self.getCfg = function () {
1030
- return config;
1031
- };
1032
- _self.getExtCfg = function (identifier, defaultValue) {
1033
- if (defaultValue === void 0) { defaultValue = {}; }
1034
- var theConfig;
1035
- if (config) {
1036
- var extConfig = config.extensionConfig;
1037
- if (extConfig && identifier) {
1038
- theConfig = extConfig[identifier];
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
+ }
1039
1473
  }
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;
1040
1483
  }
1041
- return (theConfig ? theConfig : defaultValue);
1042
- };
1043
- _self.getConfig = function (identifier, field, defaultValue) {
1044
- if (defaultValue === void 0) { defaultValue = false; }
1045
- var theValue;
1046
- var extConfig = _self.getExtCfg(identifier, null);
1047
- if (extConfig && !isNullOrUndefined(extConfig[field])) {
1048
- theValue = extConfig[field];
1484
+ var pluginState = _getPluginState(plugin);
1485
+ if (pluginState[strTeardown] || pluginState[strDisabled]) {
1486
+ return false;
1049
1487
  }
1050
- else if (config && !isNullOrUndefined(config[field])) {
1051
- theValue = config[field];
1488
+ if (hasSetNext) {
1489
+ plugin.setNextPlugin(nextProxy);
1052
1490
  }
1053
- return !isNullOrUndefined(theValue) ? theValue : defaultValue;
1054
- };
1055
- _self.hasNext = function () {
1056
- return _nextProxy != null;
1057
- };
1058
- _self.getNext = function () {
1059
- return _nextProxy;
1060
- };
1061
- _self.setNext = function (nextPlugin) {
1062
- _nextProxy = nextPlugin;
1063
- };
1064
- _self.processNext = function (env) {
1065
- var nextPlugin = _nextProxy;
1066
- if (nextPlugin) {
1067
- _nextProxy = nextPlugin.getNext();
1068
- nextPlugin.processTelemetry(env, _self);
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
+ }
1069
1512
  }
1070
- };
1071
- _self.createNew = function (plugins, startAt) {
1072
- if (plugins === void 0) { plugins = null; }
1073
- return new ProcessTelemetryContext(plugins || _nextProxy, config, core, startAt);
1074
- };
1513
+ return hasRun;
1514
+ }
1515
+ if (!_processChain(unloadCtx, _callTeardown, "unload", function () { }, unloadState.isAsync)) {
1516
+ unloadCtx.processNext(unloadState);
1517
+ }
1075
1518
  }
1076
- return ProcessTelemetryContext;
1077
- }());
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
+ }
1530
+ }
1531
+ return hasRun;
1532
+ }
1533
+ if (!_processChain(updateCtx, _callUpdate, "update", function () { }, false)) {
1534
+ updateCtx.processNext(updateState);
1535
+ }
1536
+ }
1537
+ return objFreeze(proxyChain);
1538
+ }
1078
1539
 
1079
1540
  var strExtensionConfig = "extensionConfig";
1080
1541
 
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
+
1081
1566
  var strGetPlugin = "getPlugin";
1082
1567
  var BaseTelemetryPlugin = /** @class */ (function () {
1083
1568
  function BaseTelemetryPlugin() {
1084
1569
  var _self = this;
1085
- var _isinitialized = false;
1086
- var _rootCtx = null;
1087
- var _nextPlugin = null;
1088
- _self.core = null;
1089
- _self.diagLog = function (itemCtx) {
1090
- return _self._getTelCtx(itemCtx).diagLog();
1091
- };
1092
- _self.isInitialized = function () {
1093
- return _isinitialized;
1094
- };
1095
- _self.setInitialized = function (isInitialized) {
1096
- _isinitialized = isInitialized;
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
+ });
1650
+ _self.diagLog = function (itemCtx) {
1651
+ return _getTelCtx(itemCtx).diagLog();
1097
1652
  };
1098
- _self.setNextPlugin = function (next) {
1653
+ _self[strIsInitialized] = function () {
1654
+ return _isinitialized;
1655
+ };
1656
+ _self.setInitialized = function (isInitialized) {
1657
+ _isinitialized = isInitialized;
1658
+ };
1659
+ _self[strSetNextPlugin] = function (next) {
1099
1660
  _nextPlugin = next;
1100
1661
  };
1101
1662
  _self.processNext = function (env, itemCtx) {
@@ -1106,11 +1667,12 @@
1106
1667
  _nextPlugin.processTelemetry(env, null);
1107
1668
  }
1108
1669
  };
1109
- _self._getTelCtx = function (currentCtx) {
1670
+ _self._getTelCtx = _getTelCtx;
1671
+ function _getTelCtx(currentCtx) {
1110
1672
  if (currentCtx === void 0) { currentCtx = null; }
1111
1673
  var itemCtx = currentCtx;
1112
1674
  if (!itemCtx) {
1113
- var rootCtx = _rootCtx || new ProcessTelemetryContext(null, {}, _self.core);
1675
+ var rootCtx = _rootCtx || createProcessTelemetryContext(null, {}, _self.core);
1114
1676
  if (_nextPlugin && _nextPlugin[strGetPlugin]) {
1115
1677
  itemCtx = rootCtx.createNew(null, _nextPlugin[strGetPlugin]);
1116
1678
  }
@@ -1119,8 +1681,8 @@
1119
1681
  }
1120
1682
  }
1121
1683
  return itemCtx;
1122
- };
1123
- _self._baseTelInit = function (config, core, extensions, pluginChain) {
1684
+ }
1685
+ function _setDefaults(config, core, pluginChain) {
1124
1686
  if (config) {
1125
1687
  setValue(config, strExtensionConfig, [], null, isNullOrUndefined);
1126
1688
  }
@@ -1132,16 +1694,280 @@
1132
1694
  nextPlugin = _nextPlugin[strGetPlugin]();
1133
1695
  }
1134
1696
  _self.core = core;
1135
- _rootCtx = new ProcessTelemetryContext(pluginChain, config, core, nextPlugin);
1136
- _isinitialized = true;
1137
- };
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
+ }
1138
1707
  }
1139
- BaseTelemetryPlugin.prototype.initialize = function (config, core, extensions, pluginChain) {
1140
- this._baseTelInit(config, core, extensions, pluginChain);
1141
- };
1142
1708
  return BaseTelemetryPlugin;
1143
1709
  }());
1144
1710
 
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
+
1145
1971
  var strNotSpecified = "not_specified";
1146
1972
 
1147
1973
  var PropertiesPluginIdentifier = "AppInsightsPropertiesPlugin";
@@ -1436,188 +2262,200 @@
1436
2262
  }
1437
2263
 
1438
2264
  var WebEvent = /** @class */ (function () {
1439
- function WebEvent(_clickAnalyticsPlugin, _config, _contentHandler, _pageTagsCallback, _metaTags, _traceLogger) {
1440
- this._clickAnalyticsPlugin = _clickAnalyticsPlugin;
1441
- this._config = _config;
1442
- this._contentHandler = _contentHandler;
1443
- this._pageTagsCallback = _pageTagsCallback;
1444
- this._metaTags = _metaTags;
1445
- this._traceLogger = _traceLogger;
1446
- this._pageTags = {};
1447
- }
1448
- WebEvent.prototype.setBasicProperties = function (event, overrideValues) {
1449
- if (!isValueAssigned(event.name)) {
1450
- event.pageName = getPageName(this._config, overrideValues);
1451
- }
1452
- if (!isValueAssigned(event.uri) && hasWindow) {
1453
- event.uri = getUri(this._config, getLocation());
1454
- }
1455
- };
1456
- WebEvent.prototype.setCommonProperties = function (event, overrideValues) {
1457
- this.setBasicProperties(event, overrideValues);
1458
- this._setPageTags(event, overrideValues);
1459
- this._pageTypeMetaTag = this._getMetaData(this._metaTags, this._config.coreData, "pageType");
1460
- this._behaviorMetaTag = this._getMetaData(this._metaTags, this._config.coreData, "behavior");
1461
- if (isValueAssigned(overrideValues.pageType)) {
1462
- event.pageType = overrideValues.pageType;
1463
- }
1464
- if (isValueAssigned(this._pageTypeMetaTag) && !isValueAssigned(event.pageType)) {
1465
- event.pageType = this._pageTypeMetaTag;
1466
- }
1467
- };
1468
- WebEvent.prototype._setPageTags = function (event, overrideValues) {
1469
- if (this._pageTagsCallback) {
1470
- this._pageTags = extend(true, this._pageTags, this._pageTagsCallback());
1471
- }
1472
- if (isValueAssigned(overrideValues.pageTags)) {
1473
- this._pageTags = extend(true, this._pageTags, overrideValues.pageTags);
1474
- }
1475
- if (this._metaTags) {
1476
- this._pageTags.metaTags = {};
1477
- for (var metaTag in this._metaTags) {
1478
- if (metaTag != "behavior" && metaTag != "market" && metaTag != "pageType") {
1479
- this._pageTags.metaTags[metaTag] = this._metaTags[metaTag];
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;
1480
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];
2337
+ }
2338
+ return "";
1481
2339
  }
1482
- }
1483
- event.properties = event.properties || {};
1484
- event.properties["pageTags"] = this._pageTags;
1485
- };
1486
- WebEvent.prototype._getBehavior = function (overrideValues) {
1487
- var behavior;
1488
- if (overrideValues && isValueAssigned(overrideValues.behavior)) {
1489
- behavior = overrideValues.behavior;
1490
- }
1491
- else if (isValueAssigned(this._behaviorMetaTag)) {
1492
- behavior = this._behaviorMetaTag;
1493
- }
1494
- return this._getValidBehavior(behavior);
1495
- };
1496
- WebEvent.prototype._getValidBehavior = function (behavior) {
1497
- return this._config.behaviorValidator(behavior);
1498
- };
1499
- WebEvent.prototype._getMetaData = function (metaTags, coreData, metaTagName) {
1500
- if (coreData && coreData[metaTagName]) {
1501
- return coreData[metaTagName];
1502
- }
1503
- else if (metaTags) {
1504
- return metaTags[metaTagName];
1505
- }
1506
- return "";
1507
- };
2340
+ });
2341
+ }
1508
2342
  return WebEvent;
1509
2343
  }());
1510
2344
 
1511
2345
  var PageAction = /** @class */ (function (_super) {
1512
2346
  __extendsFn(PageAction, _super);
1513
- function PageAction() {
1514
- return _super !== null && _super.apply(this, arguments) || this;
1515
- }
1516
- PageAction.prototype.trackPageAction = function (pageActionEvent, properties) {
1517
- var _this = this;
1518
- var ext = {};
1519
- ext["web"] = {};
1520
- var event = {
1521
- name: "Microsoft.ApplicationInsights.{0}.Event",
1522
- baseType: "EventData",
1523
- ext: ext,
1524
- data: {},
1525
- baseData: {}
1526
- };
1527
- this._populateEventDataIfPresent(event.baseData, "name", pageActionEvent.name);
1528
- this._populateEventDataIfPresent(event.data, "baseTypeSource", "ClickEvent");
1529
- this._populateEventDataIfPresent(event.data, "uri", pageActionEvent.uri);
1530
- this._populateEventDataIfPresent(event.data, "pageType", pageActionEvent.pageType);
1531
- this._populateEventDataIfPresent(event.data, "properties", pageActionEvent.properties);
1532
- this._populateEventDataIfPresent(event.data, "actionType", pageActionEvent.actionType);
1533
- this._populateEventDataIfPresent(event.data, "behavior", pageActionEvent.behavior);
1534
- this._populateEventDataIfPresent(event.data, "clickCoordinates", pageActionEvent.clickCoordinates);
1535
- this._populateEventDataIfPresent(event.data, "content", pageActionEvent.content);
1536
- this._populateEventDataIfPresent(event.data, "targetUri", pageActionEvent.targetUri);
1537
- this._populateEventDataIfPresent(event.data, "timeToAction", pageActionEvent.timeToAction);
1538
- this._populateEventDataIfPresent(event.data, "refUri", pageActionEvent.refUri);
1539
- this._populateEventDataIfPresent(event.data, "pageName", pageActionEvent.pageName);
1540
- this._populateEventDataIfPresent(event.data, "parentId", pageActionEvent.parentId);
1541
- if (properties) {
1542
- objForEachKey(properties, function (property, value) {
1543
- if (!event.data[property]) {
1544
- _this._populateEventDataIfPresent(event.data, property, value);
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
+ });
1545
2380
  }
1546
- });
1547
- }
1548
- this._clickAnalyticsPlugin.core.track(event);
1549
- };
1550
- PageAction.prototype.capturePageAction = function (element, overrideValues, customProperties, isRightClick) {
1551
- overrideValues = !isValueAssigned(overrideValues) ? {} : overrideValues;
1552
- var pageActionEvent = { name: "" };
1553
- var pageActionProperties = isValueAssigned(customProperties) ? customProperties : {};
1554
- this.setCommonProperties(pageActionEvent, overrideValues);
1555
- pageActionEvent.behavior = this._getBehavior(overrideValues);
1556
- var elementContent = {};
1557
- if (isRightClick) {
1558
- pageActionEvent.behavior = this._config.defaultRightClickBhvr;
1559
- }
1560
- if (element) {
1561
- pageActionEvent.targetUri = getClickTarget(element);
1562
- elementContent = this._contentHandler.getElementContent(element);
1563
- if (elementContent.bhvr && !isValueAssigned(overrideValues.behavior)) {
1564
- var currentBehavior = extractFieldFromObject(elementContent, "bhvr");
1565
- pageActionEvent.behavior = this._getValidBehavior(currentBehavior);
1566
- }
1567
- if (!isValueAssigned(elementContent.id) && !isValueAssigned(elementContent.contentName)) {
1568
- this._traceLogger.throwInternal(LoggingSeverity.WARNING, _ExtendedInternalMessageId.InvalidContentBlob, "Missing attributes id or contentName in click event. Click event information will still be collected!");
1569
- }
1570
- }
1571
- pageActionEvent.name = elementContent.id || elementContent.contentName || strNotSpecified;
1572
- pageActionEvent.parentId = elementContent.parentid || elementContent.parentName || strNotSpecified;
1573
- if (isValueAssigned(overrideValues.actionType)) {
1574
- pageActionEvent.actionType = overrideValues.actionType;
1575
- }
1576
- if (isValueAssigned(overrideValues.clickCoordinateX) && isValueAssigned(overrideValues.clickCoordinateY)) {
1577
- pageActionEvent.clickCoordinates = overrideValues.clickCoordinateX + "X" + overrideValues.clickCoordinateY;
1578
- }
1579
- this._sanitizePageActionEventContent(elementContent);
1580
- pageActionEvent.content = bracketIt(JSON.stringify(extend(elementContent, overrideValues && overrideValues.contentTags ? overrideValues.contentTags : {})));
1581
- pageActionEvent.timeToAction = this._getTimeToClick();
1582
- pageActionEvent.refUri = isValueAssigned(overrideValues.refUri) ? overrideValues.refUri : this._config.coreData.referrerUri;
1583
- if (this._isUndefinedEvent(pageActionEvent))
1584
- return;
1585
- this.trackPageAction(pageActionEvent, pageActionProperties);
1586
- };
1587
- PageAction.prototype._getTimeToClick = function () {
1588
- var perf = getPerformance();
1589
- if (perf && perf.timing) {
1590
- var isNavigationStart = perf.timing.navigationStart;
1591
- if (isNavigationStart && isNavigationStart !== 0) {
1592
- return new Date().getTime() - isNavigationStart;
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;
1593
2430
  }
1594
- }
1595
- return -1;
1596
- };
1597
- PageAction.prototype._populateEventDataIfPresent = function (obj, property, value) {
1598
- if (isValueAssigned(value)) {
1599
- obj[property] = value;
1600
- }
1601
- };
1602
- PageAction.prototype._sanitizePageActionEventContent = function (pageActionContent) {
1603
- if (pageActionContent) {
1604
- delete pageActionContent.id;
1605
- delete pageActionContent.parentid;
1606
- delete pageActionContent.parentname;
1607
- if (this._config && this._config.dataTags && isValueAssigned(this._config.dataTags.parentDataTag)) {
1608
- delete pageActionContent[this._config.dataTags.parentDataTag];
2431
+ function _populateEventDataIfPresent(obj, property, value) {
2432
+ if (isValueAssigned(value)) {
2433
+ obj[property] = value;
2434
+ }
1609
2435
  }
1610
- }
1611
- };
1612
- PageAction.prototype._isUndefinedEvent = function (pageActionEvent) {
1613
- if (this._config.dropInvalidEvents) {
1614
- if (pageActionEvent.name === strNotSpecified
1615
- && pageActionEvent.parentId === strNotSpecified
1616
- && pageActionEvent.content === "[{}]")
1617
- return true;
1618
- }
1619
- return false;
1620
- };
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
+ }
2444
+ }
2445
+ }
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;
2455
+ }
2456
+ });
2457
+ return _this;
2458
+ }
1621
2459
  return PageAction;
1622
2460
  }(WebEvent));
1623
2461
 
@@ -1640,77 +2478,83 @@
1640
2478
  this._config = _config;
1641
2479
  this._pageAction = _pageAction;
1642
2480
  this._traceLogger = _traceLogger;
1643
- }
1644
- AutoCaptureHandler.prototype.click = function () {
1645
- var _this = this;
1646
- var win = getWindow();
1647
- var doc = getDocument();
1648
- if (win) {
1649
- var event_1 = (navigator.appVersion.indexOf("MSIE") !== -1) ? "click" : "mousedown";
1650
- attachEvent(win, event_1, function (evt) { _this._processClick(evt); });
1651
- attachEvent(win, "keyup", function (evt) { _this._processClick(evt); });
1652
- }
1653
- else if (doc) {
1654
- attachEvent(doc, "click", function (evt) { _this._processClick(evt); });
1655
- attachEvent(doc, "keyup", function (evt) { _this._processClick(evt); });
1656
- }
1657
- };
1658
- AutoCaptureHandler.prototype.capturePageAction = function (element, overrideValues, customProperties, isRightClick) {
1659
- var donotTrackTag = this._config.dataTags.customDataPrefix + this._config.dataTags.dntDataTag;
1660
- if (!isElementDnt(element, donotTrackTag)) {
1661
- this._pageAction.capturePageAction(element, overrideValues, customProperties, isRightClick);
1662
- }
1663
- };
1664
- AutoCaptureHandler.prototype._processClick = function (clickEvent) {
1665
- var clickCaptureElements = { A: true, BUTTON: true, AREA: true, INPUT: true };
1666
- var win = getWindow();
1667
- if (isNullOrUndefined(clickEvent) && win) {
1668
- clickEvent = win.event;
1669
- }
1670
- if (clickEvent) {
1671
- var element = clickEvent.srcElement || clickEvent.target;
1672
- var overrideValues = {
1673
- clickCoordinateX: clickEvent.pageX,
1674
- clickCoordinateY: clickEvent.pageY
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
+ }
1675
2495
  };
1676
- var isRightClickObj = isRightClick(clickEvent);
1677
- if (isRightClickObj) {
1678
- overrideValues.actionType = ActionType.CLICKRIGHT;
1679
- }
1680
- else if (isLeftClick(clickEvent)) {
1681
- overrideValues.actionType = ActionType.CLICKLEFT;
1682
- }
1683
- else if (isKeyboardEnter(clickEvent)) {
1684
- overrideValues.actionType = ActionType.KEYBOARDENTER;
1685
- }
1686
- else if (isKeyboardSpace(clickEvent)) {
1687
- overrideValues.actionType = ActionType.KEYBOARDSPACE;
1688
- }
1689
- else if (isMiddleClick(clickEvent)) {
1690
- overrideValues.actionType = ActionType.CLICKMIDDLE;
1691
- }
1692
- else {
1693
- return;
1694
- }
1695
- while (element && element.tagName) {
1696
- if (element.control && clickCaptureElements[element.control.tagName.toUpperCase()]) {
1697
- element = element.control;
2496
+ _self._doUnload = function (unloadCtx, unloadState, asyncCallback) {
2497
+ eventOff(getWindow(), null, null, _evtNamespace);
2498
+ eventOff(getDocument(), null, null, _evtNamespace);
2499
+ };
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);
1698
2504
  }
1699
- var tagNameUpperCased = element.tagName.toUpperCase();
1700
- if (!clickCaptureElements[tagNameUpperCased]) {
1701
- element = element.parentElement || element.parentNode;
1702
- continue;
2505
+ }
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;
1703
2511
  }
1704
- else {
1705
- var sendEvent = tagNameUpperCased === "INPUT" ? clickCaptureInputTypes[element.type.toUpperCase()] : true;
1706
- if (sendEvent) {
1707
- this.capturePageAction(element, overrideValues, {}, isRightClickObj);
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
+ }
1708
2553
  }
1709
- break;
1710
2554
  }
1711
2555
  }
1712
- }
1713
- };
2556
+ });
2557
+ }
1714
2558
  return AutoCaptureHandler;
1715
2559
  }());
1716
2560
 
@@ -1719,285 +2563,318 @@
1719
2563
  function DomContentHandler(_config, _traceLogger) {
1720
2564
  this._config = _config;
1721
2565
  this._traceLogger = _traceLogger;
1722
- }
1723
- DomContentHandler.prototype.getMetadata = function () {
1724
- var metaTags = {};
1725
- if (hasDocument) {
1726
- metaTags = isValueAssigned(this._config.dataTags.metaDataPrefix) ? this._getMetaDataFromDOM(this._config.dataTags.captureAllMetaDataContent, this._config.dataTags.metaDataPrefix, false) :
1727
- this._getMetaDataFromDOM(this._config.dataTags.captureAllMetaDataContent, "", false);
1728
- }
1729
- return metaTags;
1730
- };
1731
- DomContentHandler.prototype.getElementContent = function (element) {
1732
- if (!element) {
1733
- return {};
1734
- }
1735
- var elementContent = {};
1736
- var biBlobValue;
1737
- var parentDataTagPrefix;
1738
- var dataTagPrefix = this._config.dataTags.customDataPrefix;
1739
- var aiBlobAttributeTag = dataTagPrefix + this._config.dataTags.aiBlobAttributeTag;
1740
- if (isValueAssigned(this._config.dataTags.parentDataTag)) {
1741
- parentDataTagPrefix = dataTagPrefix + this._config.dataTags.parentDataTag;
1742
- }
1743
- if (!this._isTracked(element, dataTagPrefix, aiBlobAttributeTag)) {
1744
- biBlobValue = element.getAttribute(aiBlobAttributeTag);
1745
- if (biBlobValue) {
1746
- try {
1747
- elementContent = JSON.parse(biBlobValue);
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);
1748
2573
  }
1749
- catch (e) {
1750
- this._traceLogger.throwInternal(LoggingSeverity.CRITICAL, _ExtendedInternalMessageId.CannotParseAiBlobValue, "Can not parse " + biBlobValue);
2574
+ return metaTags;
2575
+ };
2576
+ _self.getElementContent = function (element) {
2577
+ if (!element) {
2578
+ return {};
1751
2579
  }
1752
- }
1753
- else {
1754
- elementContent = extend(elementContent, this._populateElementContent(element, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag));
1755
- }
1756
- }
1757
- else {
1758
- elementContent = extend(elementContent, this._populateElementContentwithDataTag(element, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag));
1759
- }
1760
- removeInvalidElements(elementContent);
1761
- if (parentDataTagPrefix) {
1762
- elementContent = extend(elementContent, this._getParentDetails(element, elementContent, dataTagPrefix, aiBlobAttributeTag));
1763
- }
1764
- return elementContent;
1765
- };
1766
- DomContentHandler.prototype._captureElementContentWithDataTag = function (contentElement, elementContent, dataTagPrefix) {
1767
- for (var i = 0, attrib; i < contentElement.attributes.length; i++) {
1768
- attrib = contentElement.attributes[i];
1769
- if (attrib.name.indexOf(dataTagPrefix) !== 0) {
1770
- continue;
1771
- }
1772
- var attribName = attrib.name.replace(dataTagPrefix, "");
1773
- elementContent[attribName] = attrib.value;
1774
- }
1775
- };
1776
- DomContentHandler.prototype._walkUpDomChainCaptureData = function (el, elementContent, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag) {
1777
- var element = el;
1778
- var parentDataTagFound = false;
1779
- var elementLevelFlag = false;
1780
- while (!isNullOrUndefined(element) && !isNullOrUndefined(element.attributes)) {
1781
- var attributes = element.attributes;
1782
- for (var i = 0; i < attributes.length; i++) {
1783
- var attrib = attributes[i];
1784
- if (attrib.name.indexOf(dataTagPrefix) !== 0) {
1785
- continue;
1786
- }
1787
- if (attrib.name.indexOf(parentDataTagPrefix) === 0) {
1788
- parentDataTagFound = true;
1789
- }
1790
- if (attrib.name.indexOf(aiBlobAttributeTag) === 0) {
1791
- continue;
1792
- }
1793
- var attribName = attrib.name.replace(dataTagPrefix, "");
1794
- if (elementLevelFlag && attribName === "id")
1795
- continue;
1796
- if (!isValueAssigned(elementContent[attribName])) {
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));
2605
+ }
2606
+ removeInvalidElements(elementContent);
2607
+ if (parentDataTagPrefix) {
2608
+ elementContent = extend(elementContent, _getParentDetails(element, elementContent, dataTagPrefix, aiBlobAttributeTag));
2609
+ }
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, "");
1797
2619
  elementContent[attribName] = attrib.value;
1798
2620
  }
1799
2621
  }
1800
- if (parentDataTagFound) {
1801
- break;
1802
- }
1803
- elementLevelFlag = true;
1804
- element = element.parentNode;
1805
- }
1806
- };
1807
- DomContentHandler.prototype._populateElementContent = function (element, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag) {
1808
- var elementContent = {};
1809
- if (!element)
1810
- return elementContent;
1811
- var htmlContent = this._getHtmlIdAndContentName(element);
1812
- elementContent = {
1813
- id: htmlContent.id || "",
1814
- contentName: htmlContent.contentName || ""
1815
- };
1816
- if (isValueAssigned(parentDataTagPrefix)) {
1817
- this._walkUpDomChainCaptureData(element, elementContent, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag);
1818
- }
1819
- if (!elementContent.id && !elementContent.contentName) {
1820
- this._traceLogger.throwInternal(LoggingSeverity.WARNING, _ExtendedInternalMessageId.InvalidContentBlob, "Invalid content blob. Missing required attributes (id, contentName. " +
1821
- " Content information will still be collected!");
1822
- }
1823
- return elementContent;
1824
- };
1825
- DomContentHandler.prototype._populateElementContentwithDataTag = function (element, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag) {
1826
- var elementContent = {};
1827
- if (!element)
1828
- return elementContent;
1829
- var htmlContent = this._getHtmlIdAndContentName(element);
1830
- if (isValueAssigned(parentDataTagPrefix)) {
1831
- this._walkUpDomChainCaptureData(element, elementContent, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag);
1832
- }
1833
- else {
1834
- this._captureElementContentWithDataTag(element, elementContent, dataTagPrefix);
1835
- }
1836
- if (this._config.dataTags.useDefaultContentNameOrId) {
1837
- if (!isValueAssigned(elementContent.id)) {
1838
- elementContent.id = htmlContent.id || "";
1839
- }
1840
- elementContent.contentName = htmlContent.contentName || "";
1841
- }
1842
- if (!elementContent.id && !elementContent.contentName) {
1843
- this._traceLogger.throwInternal(LoggingSeverity.WARNING, _ExtendedInternalMessageId.InvalidContentBlob, "Invalid content blob. Missing required attributes (id, contentName. " +
1844
- " Content information will still be collected!");
1845
- }
1846
- return elementContent;
1847
- };
1848
- DomContentHandler.prototype._getMetaDataFromDOM = function (captureAllMetaDataContent, prefix, removePrefix) {
1849
- var metaElements;
1850
- var metaData = {};
1851
- if (hasDocument) {
1852
- metaElements = document.querySelectorAll("meta");
1853
- for (var i = 0; i < metaElements.length; i++) {
1854
- var meta = metaElements[i];
1855
- if (meta.name) {
1856
- if (captureAllMetaDataContent || meta.name.indexOf(prefix) === 0) {
1857
- var name_1 = removePrefix ? meta.name.replace(prefix, "") : meta.name;
1858
- metaData[name_1] = meta.content;
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
+ }
1859
2646
  }
2647
+ if (parentDataTagFound) {
2648
+ break;
2649
+ }
2650
+ elementLevelFlag = true;
2651
+ element = element.parentNode;
1860
2652
  }
1861
2653
  }
1862
- }
1863
- return metaData;
1864
- };
1865
- DomContentHandler.prototype._getDefaultContentName = function (element, useDefaultContentName) {
1866
- if (useDefaultContentName === false || !element.tagName) {
1867
- return "";
1868
- }
1869
- var doc = getDocument() || {};
1870
- var contentName;
1871
- switch (element.tagName) {
1872
- case "A":
1873
- contentName = doc.all ? element.innerText || element.innerHTML : element.text || element.innerHTML;
1874
- break;
1875
- case "IMG":
1876
- case "AREA":
1877
- contentName = element.alt;
1878
- break;
1879
- default:
1880
- contentName = element.value || element.name || element.alt || element.innerText || element.id;
1881
- }
1882
- return contentName.substring(0, MAX_CONTENTNAME_LENGTH);
1883
- };
1884
- DomContentHandler.prototype._isTracked = function (element, dataTag, aiBlobAttributeTag) {
1885
- var attrs = element.attributes;
1886
- var dataTagFound = false;
1887
- for (var i = 0; i < attrs.length; i++) {
1888
- var attributeName = attrs[i].name;
1889
- if (attributeName === aiBlobAttributeTag) {
1890
- return false;
1891
- }
1892
- else if (attributeName.indexOf(dataTag) === 0) {
1893
- dataTagFound = true;
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;
1894
2672
  }
1895
- }
1896
- return dataTagFound;
1897
- };
1898
- DomContentHandler.prototype._getHtmlIdAndContentName = function (element) {
1899
- var htmlContent = {};
1900
- if (!element)
1901
- return htmlContent;
1902
- if (this._config.dataTags.useDefaultContentNameOrId) {
1903
- var customizedContentName = this._config.callback.contentName ? this._config.callback.contentName(element, this._config.dataTags.useDefaultContentNameOrId) : "";
1904
- var defaultContentName = this._getDefaultContentName(element, this._config.dataTags.useDefaultContentNameOrId);
1905
- htmlContent = {
1906
- id: element.id,
1907
- contentName: customizedContentName || defaultContentName || element.getAttribute("alt")
1908
- };
1909
- }
1910
- return htmlContent;
1911
- };
1912
- DomContentHandler.prototype._getParentDetails = function (element, elementContent, dataTagPrefix, aiBlobAttributeTag) {
1913
- var parentId = elementContent["parentid"];
1914
- var parentName = elementContent["parentname"];
1915
- var parentInfo = {};
1916
- if (parentId || parentName || !element) {
1917
- return parentInfo;
1918
- }
1919
- return this._populateParentInfo(element, dataTagPrefix, aiBlobAttributeTag);
1920
- };
1921
- DomContentHandler.prototype._populateParentInfo = function (element, dataTagPrefix, aiBlobAttributeTag) {
1922
- var parentInfo = {};
1923
- var parentId;
1924
- var closestParentElement = walkUpDomChainWithElementValidation(element.parentElement, this._isTracked, dataTagPrefix);
1925
- if (closestParentElement) {
1926
- var dataAttr = closestParentElement.getAttribute(aiBlobAttributeTag) || element[aiBlobAttributeTag];
1927
- if (dataAttr) {
1928
- try {
1929
- var telemetryObject = JSON.parse(dataAttr);
2673
+ function _populateElementContentwithDataTag(element, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag) {
2674
+ var dataTags = (_self._config || {}).dataTags;
2675
+ var elementContent = {};
2676
+ if (!element) {
2677
+ return elementContent;
1930
2678
  }
1931
- catch (e) {
1932
- this._traceLogger.throwInternal(LoggingSeverity.CRITICAL, _ExtendedInternalMessageId.CannotParseAiBlobValue, "Can not parse " + dataAttr);
2679
+ var htmlContent = _getHtmlIdAndContentName(element);
2680
+ if (isValueAssigned(parentDataTagPrefix)) {
2681
+ _walkUpDomChainCaptureData(element, elementContent, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag);
1933
2682
  }
1934
- if (telemetryObject) {
1935
- parentId = telemetryObject.id;
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 || "";
1936
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
+ }
2711
+ }
2712
+ }
2713
+ return metaData;
1937
2714
  }
1938
- else {
1939
- parentId = closestParentElement.getAttribute(dataTagPrefix + "id");
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
+ }
2794
+ }
2795
+ if (parentId) {
2796
+ parentInfo["parentid"] = parentId;
2797
+ }
2798
+ else {
2799
+ var htmlContent = _getHtmlIdAndContentName(element.parentElement);
2800
+ parentInfo["parentid"] = htmlContent.id;
2801
+ parentInfo["parentname"] = htmlContent.contentName;
2802
+ }
2803
+ return parentInfo;
1940
2804
  }
1941
- }
1942
- if (parentId) {
1943
- parentInfo["parentid"] = parentId;
1944
- }
1945
- else {
1946
- var htmlContent = this._getHtmlIdAndContentName(element.parentElement);
1947
- parentInfo["parentid"] = htmlContent.id;
1948
- parentInfo["parentname"] = htmlContent.contentName;
1949
- }
1950
- return parentInfo;
1951
- };
2805
+ });
2806
+ }
1952
2807
  return DomContentHandler;
1953
2808
  }());
1954
2809
 
1955
2810
  var ClickAnalyticsPlugin = /** @class */ (function (_super) {
1956
2811
  __extendsFn(ClickAnalyticsPlugin, _super);
1957
2812
  function ClickAnalyticsPlugin() {
1958
- var _this = _super !== null && _super.apply(this, arguments) || this;
2813
+ var _this = _super.call(this) || this;
1959
2814
  _this.identifier = "ClickAnalyticsPlugin";
1960
2815
  _this.priority = 181;
1961
- return _this;
1962
- }
1963
- ClickAnalyticsPlugin.prototype.initialize = function (config, core, extensions, pluginChain) {
1964
- if (isNullOrUndefined(core)) {
1965
- throw Error("Error initializing");
1966
- }
1967
- config.extensionConfig = config.extensionConfig || [];
1968
- config.extensionConfig[this.identifier] = config.extensionConfig[this.identifier] || {};
1969
- this._config = mergeConfig(config.extensionConfig[this.identifier]);
1970
- _super.prototype.initialize.call(this, config, core, extensions, pluginChain);
1971
- this._contentHandler = this._contentHandler ? this._contentHandler : new DomContentHandler(this._config, this.diagLog());
1972
- var metaTags = this._contentHandler.getMetadata();
1973
- this.pageAction = new PageAction(this, this._config, this._contentHandler, this._config.callback.pageActionPageTags, metaTags, this.diagLog());
1974
- this._autoCaptureHandler = this._autoCaptureHandler ? this._autoCaptureHandler : new AutoCaptureHandler(this, this._config, this.pageAction, this.diagLog());
1975
- if (this._config.autoCapture) {
1976
- this._autoCaptureHandler.click();
1977
- }
1978
- var _propertiesExtension;
1979
- arrForEach(extensions, function (extension) {
1980
- if (extension.identifier === PropertiesPluginIdentifier) {
1981
- _propertiesExtension = extension;
1982
- }
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
+ };
1983
2868
  });
1984
- if (_propertiesExtension && _propertiesExtension.context &&
1985
- _propertiesExtension.context.internal && _propertiesExtension.context.internal.sdkVersion) {
1986
- _propertiesExtension.context.internal.sdkVersion += "_ClickPlugin" + ClickAnalyticsPlugin.Version;
1987
- }
1988
- };
1989
- ClickAnalyticsPlugin.prototype.processTelemetry = function (env, itemCtx) {
1990
- this.processNext(env, itemCtx);
1991
- };
1992
- ClickAnalyticsPlugin.prototype.trackPageAction = function (pageAction, customProperties) {
1993
- try {
1994
- this.pageAction.trackPageAction(pageAction, customProperties);
2869
+ function _initDefaults() {
2870
+ _config = null;
2871
+ _pageAction = null;
2872
+ _autoCaptureHandler = null;
2873
+ _contentHandler = null;
1995
2874
  }
1996
- catch (e) {
1997
- this.diagLog().throwInternal(LoggingSeverity.CRITICAL, _ExtendedInternalMessageId.TrackPageActionEventFailed, "trackPageAction failed, page action event will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
1998
- }
1999
- };
2000
- ClickAnalyticsPlugin.Version = "2.8.0-nightly.2202-06";
2875
+ return _this;
2876
+ }
2877
+ ClickAnalyticsPlugin.Version = "2.8.0-nightly.2204-04";
2001
2878
  return ClickAnalyticsPlugin;
2002
2879
  }(BaseTelemetryPlugin));
2003
2880