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