Files
mol 263cb5ef03
Some checks failed
continuous-integration/drone/push Build is failing
test
2024-07-06 22:23:31 +08:00

2144 lines
110 KiB
JavaScript

/*!
* 1DS JS SDK POST plugin, 3.2.13
* Copyright (c) Microsoft and contributors. All rights reserved.
* (Microsoft Internal Only)
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@microsoft/applicationinsights-shims'), require('@microsoft/dynamicproto-js'), require('@microsoft/1ds-core-js')) :
typeof define === 'function' && define.amd ? define(['exports', '@microsoft/applicationinsights-shims', '@microsoft/dynamicproto-js', '@microsoft/1ds-core-js'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.oneDS = global.oneDS || {}, global.applicationinsightsShims, global.dynamicProto, global._1dsCoreJs));
})(this, (function (exports, applicationinsightsShims, dynamicProto, _1dsCoreJs) { 'use strict';
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; }
var dynamicProto__default = /*#__PURE__*/_interopDefaultLegacy(dynamicProto);
var RT_PROFILE = "REAL_TIME";
var NRT_PROFILE = "NEAR_REAL_TIME";
var BE_PROFILE = "BEST_EFFORT";
var STR_EMPTY = "";
var STR_POST_METHOD = "POST";
var STR_DISABLED_PROPERTY_NAME = "Microsoft_ApplicationInsights_BypassAjaxInstrumentation";
var STR_DROPPED = "drop";
var STR_SENDING = "send";
var STR_REQUEUE = "requeue";
var STR_RESPONSE_FAIL = "rspFail";
var STR_OTHER = "oth";
var DEFAULT_CACHE_CONTROL = "no-cache, no-store";
var DEFAULT_CONTENT_TYPE = "application/x-json-stream";
var STR_CACHE_CONTROL = "cache-control";
var STR_CONTENT_TYPE_HEADER = "content-type";
var STR_KILL_TOKENS_HEADER = "kill-tokens";
var STR_KILL_DURATION_HEADER = "kill-duration";
var STR_KILL_DURATION_SECONDS_HEADER = "kill-duration-seconds";
var STR_TIME_DELTA_HEADER = "time-delta-millis";
var STR_CLIENT_VERSION = "client-version";
var STR_CLIENT_ID = "client-id";
var STR_TIME_DELTA_TO_APPLY = "time-delta-to-apply-millis";
var STR_UPLOAD_TIME = "upload-time";
var STR_API_KEY = "apikey";
var STR_MSA_DEVICE_TICKET = "AuthMsaDeviceTicket";
var STR_AUTH_XTOKEN = "AuthXToken";
var STR_NO_RESPONSE_BODY = "NoResponseBody";
var STR_MSFPC = "msfpc";
var STR_TRACE = "trace";
var STR_USER = "user";
function _getEventMsfpc(theEvent) {
var intWeb = ((theEvent.ext || {})["intweb"]);
if (intWeb && _1dsCoreJs.isValueAssigned(intWeb[STR_MSFPC])) {
return intWeb[STR_MSFPC];
}
return null;
}
function _getMsfpc(theEvents) {
var msfpc = null;
for (var lp = 0; msfpc === null && lp < theEvents.length; lp++) {
msfpc = _getEventMsfpc(theEvents[lp]);
}
return msfpc;
}
var EventBatch = /** @class */ (function () {
function EventBatch(iKey, addEvents) {
var events = addEvents ? [].concat(addEvents) : [];
var _self = this;
var _msfpc = _getMsfpc(events);
_self.iKey = function () {
return iKey;
};
_self.Msfpc = function () {
return _msfpc || STR_EMPTY;
};
_self.count = function () {
return events.length;
};
_self.events = function () {
return events;
};
_self.addEvent = function (theEvent) {
if (theEvent) {
events.push(theEvent);
if (!_msfpc) {
_msfpc = _getEventMsfpc(theEvent);
}
return true;
}
return false;
};
_self.split = function (fromEvent, numEvents) {
var theEvents;
if (fromEvent < events.length) {
var cnt = events.length - fromEvent;
if (!_1dsCoreJs.isNullOrUndefined(numEvents)) {
cnt = numEvents < cnt ? numEvents : cnt;
}
theEvents = events.splice(fromEvent, cnt);
_msfpc = _getMsfpc(events);
}
return new EventBatch(iKey, theEvents);
};
}
EventBatch.create = function (iKey, theEvents) {
return new EventBatch(iKey, theEvents);
};
return EventBatch;
}());
var ClockSkewManager = /** @class */ (function () {
function ClockSkewManager() {
var _allowRequestSending = true;
var _shouldAddClockSkewHeaders = true;
var _isFirstRequest = true;
var _clockSkewHeaderValue = "use-collector-delta";
var _clockSkewSet = false;
dynamicProto__default(ClockSkewManager, this, function (_self) {
_self.allowRequestSending = function () {
return _allowRequestSending;
};
_self.firstRequestSent = function () {
if (_isFirstRequest) {
_isFirstRequest = false;
if (!_clockSkewSet) {
_allowRequestSending = false;
}
}
};
_self.shouldAddClockSkewHeaders = function () {
return _shouldAddClockSkewHeaders;
};
_self.getClockSkewHeaderValue = function () {
return _clockSkewHeaderValue;
};
_self.setClockSkew = function (timeDeltaInMillis) {
if (!_clockSkewSet) {
if (timeDeltaInMillis) {
_clockSkewHeaderValue = timeDeltaInMillis;
_shouldAddClockSkewHeaders = true;
_clockSkewSet = true;
}
else {
_shouldAddClockSkewHeaders = false;
}
_allowRequestSending = true;
}
};
});
}
ClockSkewManager.__ieDyn=1;
return ClockSkewManager;
}());
var SecToMsMultiplier = 1000;
var KillSwitch = /** @class */ (function () {
function KillSwitch() {
var _killedTokenDictionary = {};
function _normalizeTenants(values) {
var result = [];
if (values) {
_1dsCoreJs.arrForEach(values, function (value) {
result.push(_1dsCoreJs.strTrim(value));
});
}
return result;
}
dynamicProto__default(KillSwitch, this, function (_self) {
_self.setKillSwitchTenants = function (killTokens, killDuration) {
if (killTokens && killDuration) {
try {
var killedTokens = _normalizeTenants(killTokens.split(","));
if (killDuration === "this-request-only") {
return killedTokens;
}
var durationMs = parseInt(killDuration, 10) * SecToMsMultiplier;
for (var i = 0; i < killedTokens.length; ++i) {
_killedTokenDictionary[killedTokens[i]] = _1dsCoreJs.dateNow() + durationMs;
}
}
catch (ex) {
return [];
}
}
return [];
};
_self.isTenantKilled = function (tenantToken) {
var killDictionary = _killedTokenDictionary;
var name = _1dsCoreJs.strTrim(tenantToken);
if (killDictionary[name] !== undefined && killDictionary[name] > _1dsCoreJs.dateNow()) {
return true;
}
delete killDictionary[name];
return false;
};
});
}
KillSwitch.__ieDyn=1;
return KillSwitch;
}());
var RandomizationLowerThreshold = 0.8;
var RandomizationUpperThreshold = 1.2;
var BaseBackoff = 3000;
var MaxBackoff = 600000;
function retryPolicyShouldRetryForStatus(httpStatusCode) {
return !((httpStatusCode >= 300 && httpStatusCode < 500 && httpStatusCode != 408 && httpStatusCode != 429)
|| (httpStatusCode == 501)
|| (httpStatusCode == 505));
}
function retryPolicyGetMillisToBackoffForRetry(retriesSoFar) {
var waitDuration = 0;
var minBackoff = BaseBackoff * RandomizationLowerThreshold;
var maxBackoff = BaseBackoff * RandomizationUpperThreshold;
var randomBackoff = Math.floor(Math.random() * (maxBackoff - minBackoff)) + minBackoff;
waitDuration = Math.pow(2, retriesSoFar) * randomBackoff;
return Math.min(waitDuration, MaxBackoff);
}
var _MAX_STRING_JOINS = 20;
var RequestSizeLimitBytes = 3984588;
var BeaconRequestSizeLimitBytes = 65000;
var MaxRecordSize = 2000000;
var MaxBeaconRecordSize = Math.min(MaxRecordSize, BeaconRequestSizeLimitBytes);
var metadata = "metadata";
var f = "f";
var rCheckDot = /\./;
var Serializer = /** @class */ (function () {
function Serializer(perfManager, valueSanitizer, stringifyObjects, enableCompoundKey) {
var strData = "data";
var strBaseData = "baseData";
var strExt = "ext";
var _checkForCompoundkey = !!enableCompoundKey;
var _processSubMetaData = true;
var _theSanitizer = valueSanitizer;
var _isReservedCache = {};
dynamicProto__default(Serializer, this, function (_self) {
_self.createPayload = function (retryCnt, isTeardown, isSync, isReducedPayload, sendReason, sendType) {
return {
apiKeys: [],
payloadBlob: STR_EMPTY,
overflow: null,
sizeExceed: [],
failedEvts: [],
batches: [],
numEvents: 0,
retryCnt: retryCnt,
isTeardown: isTeardown,
isSync: isSync,
isBeacon: isReducedPayload,
sendType: sendType,
sendReason: sendReason
};
};
_self.appendPayload = function (payload, theBatch, maxEventsPerBatch) {
var canAddEvents = payload && theBatch && !payload.overflow;
if (canAddEvents) {
_1dsCoreJs.doPerf(perfManager, function () { return "Serializer:appendPayload"; }, function () {
var theEvents = theBatch.events();
var payloadBlob = payload.payloadBlob;
var payloadEvents = payload.numEvents;
var eventsAdded = false;
var sizeExceeded = [];
var failedEvts = [];
var isBeaconPayload = payload.isBeacon;
var requestMaxSize = isBeaconPayload ? BeaconRequestSizeLimitBytes : RequestSizeLimitBytes;
var recordMaxSize = isBeaconPayload ? MaxBeaconRecordSize : MaxRecordSize;
var lp = 0;
var joinCount = 0;
while (lp < theEvents.length) {
var theEvent = theEvents[lp];
if (theEvent) {
if (payloadEvents >= maxEventsPerBatch) {
payload.overflow = theBatch.split(lp);
break;
}
var eventBlob = _self.getEventBlob(theEvent);
if (eventBlob && eventBlob.length <= recordMaxSize) {
var blobLength = eventBlob.length;
var currentSize = payloadBlob.length;
if (currentSize + blobLength > requestMaxSize) {
payload.overflow = theBatch.split(lp);
break;
}
if (payloadBlob) {
payloadBlob += "\n";
}
payloadBlob += eventBlob;
joinCount++;
if (joinCount > _MAX_STRING_JOINS) {
payloadBlob.substr(0, 1);
joinCount = 0;
}
eventsAdded = true;
payloadEvents++;
}
else {
if (eventBlob) {
sizeExceeded.push(theEvent);
}
else {
failedEvts.push(theEvent);
}
theEvents.splice(lp, 1);
lp--;
}
}
lp++;
}
if (sizeExceeded && sizeExceeded.length > 0) {
payload.sizeExceed.push(EventBatch.create(theBatch.iKey(), sizeExceeded));
}
if (failedEvts && failedEvts.length > 0) {
payload.failedEvts.push(EventBatch.create(theBatch.iKey(), failedEvts));
}
if (eventsAdded) {
payload.batches.push(theBatch);
payload.payloadBlob = payloadBlob;
payload.numEvents = payloadEvents;
var apiKey = theBatch.iKey();
if (_1dsCoreJs.arrIndexOf(payload.apiKeys, apiKey) === -1) {
payload.apiKeys.push(apiKey);
}
}
}, function () { return ({ payload: payload, theBatch: { iKey: theBatch.iKey(), evts: theBatch.events() }, max: maxEventsPerBatch }); });
}
return canAddEvents;
};
_self.getEventBlob = function (eventData) {
try {
return _1dsCoreJs.doPerf(perfManager, function () { return "Serializer.getEventBlob"; }, function () {
var serializedEvent = {};
serializedEvent.name = eventData.name;
serializedEvent.time = eventData.time;
serializedEvent.ver = eventData.ver;
serializedEvent.iKey = "o:" + _1dsCoreJs.getTenantId(eventData.iKey);
var serializedExt = {};
var eventExt = eventData[strExt];
if (eventExt) {
serializedEvent[strExt] = serializedExt;
_1dsCoreJs.objForEachKey(eventExt, function (key, value) {
var data = serializedExt[key] = {};
_processPathKeys(value, data, "ext." + key, true, null, null, true);
});
}
var serializedData = serializedEvent[strData] = {};
serializedData.baseType = eventData.baseType;
var serializedBaseData = serializedData[strBaseData] = {};
_processPathKeys(eventData.baseData, serializedBaseData, strBaseData, false, [strBaseData], function (pathKeys, name, value) {
_addJSONPropertyMetaData(serializedExt, pathKeys, name, value);
}, _processSubMetaData);
_processPathKeys(eventData.data, serializedData, strData, false, [], function (pathKeys, name, value) {
_addJSONPropertyMetaData(serializedExt, pathKeys, name, value);
}, _processSubMetaData);
return JSON.stringify(serializedEvent);
}, function () { return ({ item: eventData }); });
}
catch (e) {
return null;
}
};
function _isReservedField(path, name) {
var result = _isReservedCache[path];
if (result === undefined) {
if (path.length >= 7) {
result = _1dsCoreJs.strStartsWith(path, "ext.metadata") || _1dsCoreJs.strStartsWith(path, "ext.web");
}
_isReservedCache[path] = result;
}
return result;
}
function _processPathKeys(srcObj, target, thePath, checkReserved, metadataPathKeys, metadataCallback, processSubKeys) {
_1dsCoreJs.objForEachKey(srcObj, function (key, srcValue) {
var prop = null;
if (srcValue || _1dsCoreJs.isValueAssigned(srcValue)) {
var path = thePath;
var name_1 = key;
var theMetaPathKeys = metadataPathKeys;
var destObj = target;
if (_checkForCompoundkey && !checkReserved && rCheckDot.test(key)) {
var subKeys = key.split(".");
var keyLen = subKeys.length;
if (keyLen > 1) {
if (theMetaPathKeys) {
theMetaPathKeys = theMetaPathKeys.slice();
}
for (var lp = 0; lp < keyLen - 1; lp++) {
var subKey = subKeys[lp];
destObj = destObj[subKey] = destObj[subKey] || {};
path += "." + subKey;
if (theMetaPathKeys) {
theMetaPathKeys.push(subKey);
}
}
name_1 = subKeys[keyLen - 1];
}
}
var isReserved = checkReserved && _isReservedField(path);
if (!isReserved && _theSanitizer && _theSanitizer.handleField(path, name_1)) {
prop = _theSanitizer.value(path, name_1, srcValue, stringifyObjects);
}
else {
prop = _1dsCoreJs.sanitizeProperty(name_1, srcValue, stringifyObjects);
}
if (prop) {
var newValue = prop.value;
destObj[name_1] = newValue;
if (metadataCallback) {
metadataCallback(theMetaPathKeys, name_1, prop);
}
if (processSubKeys && typeof newValue === "object" && !_1dsCoreJs.isArray(newValue)) {
var newPath = theMetaPathKeys;
if (newPath) {
newPath = newPath.slice();
newPath.push(name_1);
}
_processPathKeys(srcValue, newValue, path + "." + name_1, checkReserved, newPath, metadataCallback, processSubKeys);
}
}
}
});
}
});
}
Serializer.__ieDyn=1;
return Serializer;
}());
function _addJSONPropertyMetaData(json, propKeys, name, propertyValue) {
if (propertyValue && json) {
var encodedTypeValue = _1dsCoreJs.getCommonSchemaMetaData(propertyValue.value, propertyValue.kind, propertyValue.propertyType);
if (encodedTypeValue > -1) {
var metaData = json[metadata];
if (!metaData) {
metaData = json[metadata] = { f: {} };
}
var metaTarget = metaData[f];
if (!metaTarget) {
metaTarget = metaData[f] = {};
}
if (propKeys) {
for (var lp = 0; lp < propKeys.length; lp++) {
var key = propKeys[lp];
if (!metaTarget[key]) {
metaTarget[key] = { f: {} };
}
var newTarget = metaTarget[key][f];
if (!newTarget) {
newTarget = metaTarget[key][f] = {};
}
metaTarget = newTarget;
}
}
metaTarget = metaTarget[name] = {};
if (_1dsCoreJs.isArray(propertyValue.value)) {
metaTarget["a"] = {
t: encodedTypeValue
};
}
else {
metaTarget["t"] = encodedTypeValue;
}
}
}
}
var _a;
var strSendAttempt = "sendAttempt";
var _noResponseQs = "&" + STR_NO_RESPONSE_BODY + "=true";
var _eventActionMap = (_a = {},
_a[1 ] = STR_REQUEUE,
_a[100 ] = STR_REQUEUE,
_a[200 ] = "sent",
_a[8004 ] = STR_DROPPED,
_a[8003 ] = STR_DROPPED,
_a);
var _collectorQsHeaders = {};
var _collectorHeaderToQs = {};
function _addCollectorHeaderQsMapping(qsName, headerName, allowQs) {
_collectorQsHeaders[qsName] = headerName;
if (allowQs !== false) {
_collectorHeaderToQs[headerName] = qsName;
}
}
_addCollectorHeaderQsMapping(STR_MSA_DEVICE_TICKET, STR_MSA_DEVICE_TICKET, false);
_addCollectorHeaderQsMapping(STR_CLIENT_VERSION, STR_CLIENT_VERSION);
_addCollectorHeaderQsMapping(STR_CLIENT_ID, "Client-Id");
_addCollectorHeaderQsMapping(STR_API_KEY, STR_API_KEY);
_addCollectorHeaderQsMapping(STR_TIME_DELTA_TO_APPLY, STR_TIME_DELTA_TO_APPLY);
_addCollectorHeaderQsMapping(STR_UPLOAD_TIME, STR_UPLOAD_TIME);
_addCollectorHeaderQsMapping(STR_AUTH_XTOKEN, STR_AUTH_XTOKEN);
function _getResponseText(xhr) {
try {
return xhr.responseText;
}
catch (e) {
}
return STR_EMPTY;
}
function _hasHeader(headers, header) {
var hasHeader = false;
if (headers && header) {
var keys = _1dsCoreJs.objKeys(headers);
if (keys && keys.length > 0) {
var lowerHeader = header.toLowerCase();
for (var lp = 0; lp < keys.length; lp++) {
var value = keys[lp];
if (value && _1dsCoreJs.hasOwnProperty(header, value) &&
value.toLowerCase() === lowerHeader) {
hasHeader = true;
break;
}
}
}
}
return hasHeader;
}
function _addRequestDetails(details, name, value, useHeaders) {
if (name && value && value.length > 0) {
if (useHeaders && _collectorQsHeaders[name]) {
details.hdrs[_collectorQsHeaders[name]] = value;
details.useHdrs = true;
}
else {
details.url += "&" + name + "=" + value;
}
}
}
function _prependTransports(theTransports, newTransports) {
if (newTransports) {
if (_1dsCoreJs.isNumber(newTransports)) {
theTransports = [newTransports].concat(theTransports);
}
else if (_1dsCoreJs.isArray(newTransports)) {
theTransports = newTransports.concat(theTransports);
}
}
return theTransports;
}
var HttpManager = /** @class */ (function () {
function HttpManager(maxEventsPerBatch, maxConnections, maxRequestRetriesBeforeBackoff, actions, timeoutOverride) {
this._responseHandlers = [];
var _urlString = "?cors=true&" + STR_CONTENT_TYPE_HEADER.toLowerCase() + "=" + DEFAULT_CONTENT_TYPE;
var _killSwitch = new KillSwitch();
var _paused = false;
var _clockSkewManager = new ClockSkewManager();
var _useBeacons = false;
var _outstandingRequests = 0;
var _postManager;
var _logger;
var _sendInterfaces;
var _core;
var _customHttpInterface = true;
var _queryStringParameters = [];
var _headers = {};
var _batchQueue = [];
var _serializer = null;
var _enableEventTimings = false;
var _cookieMgr;
var _isUnloading = false;
var _useHeaders = false;
var _xhrTimeout;
var _disableXhrSync;
var _disableFetchKeepAlive;
var _canHaveReducedPayload;
var _addNoResponse;
dynamicProto__default(HttpManager, this, function (_self) {
var _sendCredentials = true;
_self.initialize = function (endpointUrl, core, postChannel, httpInterface, channelConfig) {
var _a;
if (!channelConfig) {
channelConfig = {};
}
_urlString = endpointUrl + _urlString;
_useHeaders = !_1dsCoreJs.isUndefined(channelConfig.avoidOptions) ? !channelConfig.avoidOptions : true;
_core = core;
_cookieMgr = core.getCookieMgr();
_enableEventTimings = !_core.config.disableEventTimings;
var enableCompoundKey = !!_core.config.enableCompoundKey;
_postManager = postChannel;
_logger = _postManager.diagLog();
var valueSanitizer = channelConfig.valueSanitizer;
var stringifyObjects = channelConfig.stringifyObjects;
if (!_1dsCoreJs.isUndefined(channelConfig.enableCompoundKey)) {
enableCompoundKey = !!channelConfig.enableCompoundKey;
}
_xhrTimeout = channelConfig.xhrTimeout;
_disableXhrSync = !!channelConfig.disableXhrSync;
_disableFetchKeepAlive = !!channelConfig.disableFetchKeepAlive;
_addNoResponse = channelConfig.addNoResponse !== false;
_useBeacons = !_1dsCoreJs.isReactNative();
_serializer = new Serializer(_core, valueSanitizer, stringifyObjects, enableCompoundKey);
if (!_1dsCoreJs.isNullOrUndefined(channelConfig.useSendBeacon)) {
_useBeacons = !!channelConfig.useSendBeacon;
}
var syncHttpInterface = httpInterface;
var beaconHttpInterface = channelConfig.alwaysUseXhrOverride ? httpInterface : null;
var fetchSyncHttpInterface = channelConfig.alwaysUseXhrOverride ? httpInterface : null;
var beaconUnloadTransports = [3 , 2 ];
if (!httpInterface) {
_customHttpInterface = false;
var location_1 = _1dsCoreJs.getLocation();
if (location_1 && location_1.protocol && location_1.protocol.toLowerCase() === "file:") {
_sendCredentials = false;
}
var theTransports = [];
if (_1dsCoreJs.isReactNative()) {
theTransports = [2 , 1 ];
beaconUnloadTransports = [2 , 1 , 3 ];
}
else {
theTransports = [1 , 2 , 3 ];
}
theTransports = _prependTransports(theTransports, channelConfig.transports);
httpInterface = _getSenderInterface(theTransports, false);
if (!httpInterface) {
_1dsCoreJs._warnToConsole(_logger, "No available transport to send events");
}
syncHttpInterface = _getSenderInterface(theTransports, true);
}
if (!beaconHttpInterface) {
beaconUnloadTransports = _prependTransports(beaconUnloadTransports, channelConfig.unloadTransports);
beaconHttpInterface = _getSenderInterface(beaconUnloadTransports, true);
}
_canHaveReducedPayload = !_customHttpInterface && ((_useBeacons && _1dsCoreJs.isBeaconsSupported()) || (!_disableFetchKeepAlive && _1dsCoreJs.isFetchSupported(true)));
_sendInterfaces = (_a = {},
_a[0 ] = httpInterface,
_a[1 ] = syncHttpInterface || _getSenderInterface([1 , 2 , 3 ], true),
_a[2 ] = beaconHttpInterface || syncHttpInterface || _getSenderInterface([1 ], true),
_a[3 ] = fetchSyncHttpInterface || _getSenderInterface([2 , 3 ], true) || syncHttpInterface || _getSenderInterface([1 ], true),
_a);
};
function _getSenderInterface(transports, syncSupport) {
var transportType = 0 ;
var sendPostFunc = null;
var lp = 0;
while (sendPostFunc == null && lp < transports.length) {
transportType = transports[lp];
if (transportType === 1 ) {
if (_1dsCoreJs.useXDomainRequest()) {
sendPostFunc = _xdrSendPost;
}
else if (_1dsCoreJs.isXhrSupported()) {
sendPostFunc = _xhrSendPost;
}
}
else if (transportType === 2 && _1dsCoreJs.isFetchSupported(syncSupport) && (!syncSupport || (syncSupport && !_disableFetchKeepAlive))) {
sendPostFunc = _fetchSendPost;
}
else if (_useBeacons && transportType === 3 && _1dsCoreJs.isBeaconsSupported()) {
sendPostFunc = _beaconSendPost;
}
lp++;
}
if (sendPostFunc) {
return {
_transport: transportType,
_isSync: syncSupport,
sendPOST: sendPostFunc
};
}
return null;
}
_self["_getDbgPlgTargets"] = function () {
return [_sendInterfaces[0 ], _killSwitch, _serializer, _sendInterfaces];
};
function _xdrSendPost(payload, oncomplete, sync) {
var xdr = new XDomainRequest();
xdr.open(STR_POST_METHOD, payload.urlString);
if (payload.timeout) {
xdr.timeout = payload.timeout;
}
xdr.onload = function () {
var response = _getResponseText(xdr);
_doOnComplete(oncomplete, 200, {}, response);
_handleCollectorResponse(response);
};
xdr.onerror = function () {
_doOnComplete(oncomplete, 400, {});
};
xdr.ontimeout = function () {
_doOnComplete(oncomplete, 500, {});
};
xdr.onprogress = function () { };
if (sync) {
xdr.send(payload.data);
}
else {
timeoutOverride.set(function () {
xdr.send(payload.data);
}, 0);
}
}
function _fetchSendPost(payload, oncomplete, sync) {
var _a;
var theUrl = payload.urlString;
var ignoreResponse = false;
var responseHandled = false;
var requestInit = (_a = {
body: payload.data,
method: STR_POST_METHOD
},
_a[STR_DISABLED_PROPERTY_NAME] = true,
_a);
if (sync) {
requestInit.keepalive = true;
if (payload._sendReason === 2 ) {
ignoreResponse = true;
if (_addNoResponse) {
theUrl += _noResponseQs;
}
}
}
if (_sendCredentials) {
requestInit.credentials = "include";
}
if (payload.headers && _1dsCoreJs.objKeys(payload.headers).length > 0) {
requestInit.headers = payload.headers;
}
fetch(theUrl, requestInit).then(function (response) {
var headerMap = {};
var responseText = STR_EMPTY;
var headers = response.headers;
if (headers) {
headers["forEach"](function (value, name) {
headerMap[name] = value;
});
}
if (response.body) {
response.text().then(function (text) {
responseText = text;
});
}
if (!responseHandled) {
responseHandled = true;
_doOnComplete(oncomplete, response.status, headerMap, responseText);
_handleCollectorResponse(responseText);
}
})["catch"](function (error) {
if (!responseHandled) {
responseHandled = true;
_doOnComplete(oncomplete, 0, {});
}
});
if (ignoreResponse && !responseHandled) {
responseHandled = true;
_doOnComplete(oncomplete, 200, {});
}
if (!responseHandled && payload.timeout > 0) {
timeoutOverride.set(function () {
if (!responseHandled) {
responseHandled = true;
_doOnComplete(oncomplete, 500, {});
}
}, payload.timeout);
}
}
function _xhrSendPost(payload, oncomplete, sync) {
var theUrl = payload.urlString;
function _appendHeader(theHeaders, xhr, name) {
if (!theHeaders[name] && xhr && xhr.getResponseHeader) {
var value = xhr.getResponseHeader(name);
if (value) {
theHeaders[name] = _1dsCoreJs.strTrim(value);
}
}
return theHeaders;
}
function _getAllResponseHeaders(xhr) {
var theHeaders = {};
if (!xhr.getAllResponseHeaders) {
theHeaders = _appendHeader(theHeaders, xhr, STR_TIME_DELTA_HEADER);
theHeaders = _appendHeader(theHeaders, xhr, STR_KILL_DURATION_HEADER);
theHeaders = _appendHeader(theHeaders, xhr, STR_KILL_DURATION_SECONDS_HEADER);
}
else {
theHeaders = _convertAllHeadersToMap(xhr.getAllResponseHeaders());
}
return theHeaders;
}
function xhrComplete(xhr, responseTxt) {
_doOnComplete(oncomplete, xhr.status, _getAllResponseHeaders(xhr), responseTxt);
}
if (sync && payload.disableXhrSync) {
sync = false;
}
var xhrRequest = _1dsCoreJs.openXhr(STR_POST_METHOD, theUrl, _sendCredentials, true, sync, payload.timeout);
_1dsCoreJs.objForEachKey(payload.headers, function (name, value) {
xhrRequest.setRequestHeader(name, value);
});
xhrRequest.onload = function () {
var response = _getResponseText(xhrRequest);
xhrComplete(xhrRequest, response);
_handleCollectorResponse(response);
};
xhrRequest.onerror = function () {
xhrComplete(xhrRequest);
};
xhrRequest.ontimeout = function () {
xhrComplete(xhrRequest);
};
xhrRequest.send(payload.data);
}
function _doOnComplete(oncomplete, status, headers, response) {
try {
oncomplete(status, headers, response);
}
catch (e) {
_1dsCoreJs._throwInternal(_logger, 2 , 518 , _1dsCoreJs.dumpObj(e));
}
}
function _beaconSendPost(payload, oncomplete, sync) {
var internalPayloadData = payload;
var status = 200;
var thePayload = internalPayloadData._thePayload;
var theUrl = payload.urlString + (_addNoResponse ? _noResponseQs : STR_EMPTY);
try {
var nav_1 = _1dsCoreJs.getNavigator();
if (!nav_1.sendBeacon(theUrl, payload.data)) {
if (thePayload) {
var droppedBatches_1 = [];
_1dsCoreJs.arrForEach(thePayload.batches, function (theBatch) {
if (droppedBatches_1 && theBatch && theBatch.count() > 0) {
var theEvents = theBatch.events();
for (var lp = 0; lp < theEvents.length; lp++) {
if (!nav_1.sendBeacon(theUrl, _serializer.getEventBlob(theEvents[lp]))) {
droppedBatches_1.push(theBatch.split(lp));
break;
}
}
}
else {
droppedBatches_1.push(theBatch.split(0));
}
});
_sendBatchesNotification(droppedBatches_1, 8003 , thePayload.sendType, true);
}
else {
status = 0;
}
}
}
catch (ex) {
_1dsCoreJs._warnToConsole(_logger, "Failed to send telemetry using sendBeacon API. Ex:" + _1dsCoreJs.dumpObj(ex));
status = 0;
}
finally {
_doOnComplete(oncomplete, status, {}, STR_EMPTY);
}
}
function _isBeaconPayload(sendType) {
return sendType === 2 || sendType === 3 ;
}
function _adjustSendType(sendType) {
if (_isUnloading && _isBeaconPayload(sendType)) {
sendType = 2 ;
}
return sendType;
}
_self.addQueryStringParameter = function (name, value) {
for (var i = 0; i < _queryStringParameters.length; i++) {
if (_queryStringParameters[i].name === name) {
_queryStringParameters[i].value = value;
return;
}
}
_queryStringParameters.push({ name: name, value: value });
};
_self.addHeader = function (name, value) {
_headers[name] = value;
};
_self.canSendRequest = function () {
return _hasIdleConnection() && _clockSkewManager.allowRequestSending();
};
_self.sendQueuedRequests = function (sendType, sendReason) {
if (_1dsCoreJs.isUndefined(sendType)) {
sendType = 0 ;
}
if (_isUnloading) {
sendType = _adjustSendType(sendType);
sendReason = 2 ;
}
if (_canSendPayload(_batchQueue, sendType, 0)) {
_sendBatches(_clearQueue(), 0, false, sendType, sendReason || 0 );
}
};
_self.isCompletelyIdle = function () {
return !_paused && _outstandingRequests === 0 && _batchQueue.length === 0;
};
_self.setUnloading = function (value) {
_isUnloading = value;
};
_self.addBatch = function (theBatch) {
if (theBatch && theBatch.count() > 0) {
if (_killSwitch.isTenantKilled(theBatch.iKey())) {
return false;
}
_batchQueue.push(theBatch);
}
return true;
};
_self.teardown = function () {
if (_batchQueue.length > 0) {
_sendBatches(_clearQueue(), 0, true, 2 , 2 );
}
};
_self.pause = function () {
_paused = true;
};
_self.resume = function () {
_paused = false;
_self.sendQueuedRequests(0 , 4 );
};
_self.sendSynchronousBatch = function (batch, sendType, sendReason) {
if (batch && batch.count() > 0) {
if (_1dsCoreJs.isNullOrUndefined(sendType)) {
sendType = 1 ;
}
if (_isUnloading) {
sendType = _adjustSendType(sendType);
sendReason = 2 ;
}
_sendBatches([batch], 0, false, sendType, sendReason || 0 );
}
};
function _hasIdleConnection() {
return !_paused && _outstandingRequests < maxConnections;
}
function _clearQueue() {
var theQueue = _batchQueue;
_batchQueue = [];
return theQueue;
}
function _canSendPayload(theBatches, sendType, retryCnt) {
var result = false;
if (theBatches && theBatches.length > 0 && !_paused && _sendInterfaces[sendType] && _serializer) {
result = (sendType !== 0 ) || (_hasIdleConnection() && (retryCnt > 0 || _clockSkewManager.allowRequestSending()));
}
return result;
}
function _createDebugBatches(theBatches) {
var values = {};
if (theBatches) {
_1dsCoreJs.arrForEach(theBatches, function (theBatch, idx) {
values[idx] = {
iKey: theBatch.iKey(),
evts: theBatch.events()
};
});
}
return values;
}
function _sendBatches(theBatches, retryCount, isTeardown, sendType, sendReason) {
if (!theBatches || theBatches.length === 0) {
return;
}
if (_paused) {
_sendBatchesNotification(theBatches, 1 , sendType);
return;
}
sendType = _adjustSendType(sendType);
try {
var orgBatches_1 = theBatches;
var isSynchronous_1 = sendType !== 0 ;
_1dsCoreJs.doPerf(_core, function () { return "HttpManager:_sendBatches"; }, function (perfEvt) {
if (perfEvt) {
theBatches = theBatches.slice(0);
}
var droppedBatches = [];
var thePayload = null;
var serializationStart = _1dsCoreJs.getTime();
var sendInterface = _sendInterfaces[sendType] || (isSynchronous_1 ? _sendInterfaces[1 ] : _sendInterfaces[0 ]);
var sendTransport = sendInterface && sendInterface._transport;
var isReducedPayload = _canHaveReducedPayload && (_isUnloading || _isBeaconPayload(sendType) || (sendTransport === 3 || (sendInterface._isSync && sendTransport === 2 )));
while (_canSendPayload(theBatches, sendType, retryCount)) {
var theBatch = theBatches.shift();
if (theBatch && theBatch.count() > 0) {
if (!_killSwitch.isTenantKilled(theBatch.iKey())) {
thePayload = thePayload || _serializer.createPayload(retryCount, isTeardown, isSynchronous_1, isReducedPayload, sendReason, sendType);
if (!_serializer.appendPayload(thePayload, theBatch, maxEventsPerBatch)) {
_doPayloadSend(thePayload, serializationStart, _1dsCoreJs.getTime(), sendReason);
serializationStart = _1dsCoreJs.getTime();
theBatches = [theBatch].concat(theBatches);
thePayload = null;
}
else if (thePayload.overflow !== null) {
theBatches = [thePayload.overflow].concat(theBatches);
thePayload.overflow = null;
_doPayloadSend(thePayload, serializationStart, _1dsCoreJs.getTime(), sendReason);
serializationStart = _1dsCoreJs.getTime();
thePayload = null;
}
}
else {
droppedBatches.push(theBatch);
}
}
}
if (thePayload) {
_doPayloadSend(thePayload, serializationStart, _1dsCoreJs.getTime(), sendReason);
}
if (theBatches.length > 0) {
_batchQueue = theBatches.concat(_batchQueue);
}
_sendBatchesNotification(droppedBatches, 8004 , sendType);
}, function () { return ({ batches: _createDebugBatches(orgBatches_1), retryCount: retryCount, isTeardown: isTeardown, isSynchronous: isSynchronous_1, sendReason: sendReason, useSendBeacon: _isBeaconPayload(sendType), sendType: sendType }); }, !isSynchronous_1);
}
catch (ex) {
_1dsCoreJs._throwInternal(_logger, 2 , 48 , "Unexpected Exception sending batch: " + _1dsCoreJs.dumpObj(ex));
}
}
function _buildRequestDetails(thePayload, useHeaders) {
var requestDetails = {
url: _urlString,
hdrs: {},
useHdrs: false
};
if (!useHeaders) {
_1dsCoreJs.objForEachKey(_headers, function (name, value) {
if (_collectorHeaderToQs[name]) {
_addRequestDetails(requestDetails, _collectorHeaderToQs[name], value, false);
}
else {
requestDetails.hdrs[name] = value;
requestDetails.useHdrs = true;
}
});
}
else {
requestDetails.hdrs = _1dsCoreJs.extend(requestDetails.hdrs, _headers);
requestDetails.useHdrs = (_1dsCoreJs.objKeys(requestDetails.hdrs).length > 0);
}
_addRequestDetails(requestDetails, STR_CLIENT_ID, "NO_AUTH", useHeaders);
_addRequestDetails(requestDetails, STR_CLIENT_VERSION, _1dsCoreJs.FullVersionString, useHeaders);
var apiQsKeys = STR_EMPTY;
_1dsCoreJs.arrForEach(thePayload.apiKeys, function (apiKey) {
if (apiQsKeys.length > 0) {
apiQsKeys += ",";
}
apiQsKeys += apiKey;
});
_addRequestDetails(requestDetails, STR_API_KEY, apiQsKeys, useHeaders);
_addRequestDetails(requestDetails, STR_UPLOAD_TIME, _1dsCoreJs.dateNow().toString(), useHeaders);
var msfpc = _getMsfpc(thePayload);
if (_1dsCoreJs.isValueAssigned(msfpc)) {
requestDetails.url += "&ext.intweb.msfpc=" + msfpc;
}
if (_clockSkewManager.shouldAddClockSkewHeaders()) {
_addRequestDetails(requestDetails, STR_TIME_DELTA_TO_APPLY, _clockSkewManager.getClockSkewHeaderValue(), useHeaders);
}
if (_core.getWParam) {
var wParam = _core.getWParam();
if (wParam >= 0) {
requestDetails.url += "&w=" + wParam;
}
}
for (var i = 0; i < _queryStringParameters.length; i++) {
requestDetails.url += "&" + _queryStringParameters[i].name + "=" + _queryStringParameters[i].value;
}
return requestDetails;
}
function _setTimingValue(timings, name, value) {
timings[name] = timings[name] || {};
timings[name][_postManager.identifier] = value;
}
function _doPayloadSend(thePayload, serializationStart, serializationCompleted, sendReason) {
if (thePayload && thePayload.payloadBlob && thePayload.payloadBlob.length > 0) {
var useSendHook_1 = !!_self.sendHook;
var sendInterface_1 = _sendInterfaces[thePayload.sendType];
if (!_isBeaconPayload(thePayload.sendType) && thePayload.isBeacon && thePayload.sendReason === 2 ) {
sendInterface_1 = _sendInterfaces[2 ] || _sendInterfaces[3 ] || sendInterface_1;
}
var useHeaders_1 = _useHeaders;
if (thePayload.isBeacon || sendInterface_1._transport === 3 ) {
useHeaders_1 = false;
}
var requestDetails_1 = _buildRequestDetails(thePayload, useHeaders_1);
useHeaders_1 = useHeaders_1 || requestDetails_1.useHdrs;
var sendEventStart_1 = _1dsCoreJs.getTime();
_1dsCoreJs.doPerf(_core, function () { return "HttpManager:_doPayloadSend"; }, function () {
for (var batchLp = 0; batchLp < thePayload.batches.length; batchLp++) {
var theBatch = thePayload.batches[batchLp];
var theEvents = theBatch.events();
for (var evtLp = 0; evtLp < theEvents.length; evtLp++) {
var telemetryItem = theEvents[evtLp];
if (_enableEventTimings) {
var timings = telemetryItem.timings = telemetryItem.timings || {};
_setTimingValue(timings, "sendEventStart", sendEventStart_1);
_setTimingValue(timings, "serializationStart", serializationStart);
_setTimingValue(timings, "serializationCompleted", serializationCompleted);
}
telemetryItem[strSendAttempt] > 0 ? telemetryItem[strSendAttempt]++ : telemetryItem[strSendAttempt] = 1;
}
}
_sendBatchesNotification(thePayload.batches, (1000 + (sendReason || 0 )), thePayload.sendType, true);
var orgPayloadData = {
data: thePayload.payloadBlob,
urlString: requestDetails_1.url,
headers: requestDetails_1.hdrs,
_thePayload: thePayload,
_sendReason: sendReason,
timeout: _xhrTimeout,
disableXhrSync: _disableXhrSync,
disableFetchKeepAlive: _disableFetchKeepAlive
};
if (useHeaders_1) {
if (!_hasHeader(orgPayloadData.headers, STR_CACHE_CONTROL)) {
orgPayloadData.headers[STR_CACHE_CONTROL] = DEFAULT_CACHE_CONTROL;
}
if (!_hasHeader(orgPayloadData.headers, STR_CONTENT_TYPE_HEADER)) {
orgPayloadData.headers[STR_CONTENT_TYPE_HEADER] = DEFAULT_CONTENT_TYPE;
}
}
var sender = null;
if (sendInterface_1) {
sender = function (payload) {
_clockSkewManager.firstRequestSent();
var onComplete = function (status, headers) {
_retryRequestIfNeeded(status, headers, thePayload, sendReason);
};
var isSync = thePayload.isTeardown || thePayload.isSync;
try {
sendInterface_1.sendPOST(payload, onComplete, isSync);
if (_self.sendListener) {
_self.sendListener(orgPayloadData, payload, isSync, thePayload.isBeacon);
}
}
catch (ex) {
_1dsCoreJs._warnToConsole(_logger, "Unexpected exception sending payload. Ex:" + _1dsCoreJs.dumpObj(ex));
_doOnComplete(onComplete, 0, {});
}
};
}
_1dsCoreJs.doPerf(_core, function () { return "HttpManager:_doPayloadSend.sender"; }, function () {
if (sender) {
if (thePayload.sendType === 0 ) {
_outstandingRequests++;
}
if (useSendHook_1 && !thePayload.isBeacon && sendInterface_1._transport !== 3 ) {
var hookData_1 = {
data: orgPayloadData.data,
urlString: orgPayloadData.urlString,
headers: _1dsCoreJs.extend({}, orgPayloadData.headers),
timeout: orgPayloadData.timeout,
disableXhrSync: orgPayloadData.disableXhrSync,
disableFetchKeepAlive: orgPayloadData.disableFetchKeepAlive
};
var senderCalled_1 = false;
_1dsCoreJs.doPerf(_core, function () { return "HttpManager:_doPayloadSend.sendHook"; }, function () {
try {
_self.sendHook(hookData_1, function (payload) {
senderCalled_1 = true;
if (!_customHttpInterface && !payload._thePayload) {
payload._thePayload = payload._thePayload || orgPayloadData._thePayload;
payload._sendReason = payload._sendReason || orgPayloadData._sendReason;
}
sender(payload);
}, thePayload.isSync || thePayload.isTeardown);
}
catch (ex) {
if (!senderCalled_1) {
sender(orgPayloadData);
}
}
});
}
else {
sender(orgPayloadData);
}
}
});
}, function () { return ({ thePayload: thePayload, serializationStart: serializationStart, serializationCompleted: serializationCompleted, sendReason: sendReason }); }, thePayload.isSync);
}
if (thePayload.sizeExceed && thePayload.sizeExceed.length > 0) {
_sendBatchesNotification(thePayload.sizeExceed, 8003 , thePayload.sendType);
}
if (thePayload.failedEvts && thePayload.failedEvts.length > 0) {
_sendBatchesNotification(thePayload.failedEvts, 8002 , thePayload.sendType);
}
}
function _addEventCompletedTimings(theEvents, sendEventCompleted) {
if (_enableEventTimings) {
_1dsCoreJs.arrForEach(theEvents, function (theEvent) {
var timings = theEvent.timings = theEvent.timings || {};
_setTimingValue(timings, "sendEventCompleted", sendEventCompleted);
});
}
}
function _retryRequestIfNeeded(status, headers, thePayload, sendReason) {
var reason = 9000 ;
var droppedBatches = null;
var isRetrying = false;
var backOffTrans = false;
try {
var shouldRetry = true;
if (typeof status !== _1dsCoreJs.strUndefined) {
if (headers) {
_clockSkewManager.setClockSkew(headers[STR_TIME_DELTA_HEADER]);
var killDuration = headers[STR_KILL_DURATION_HEADER] || headers["kill-duration-seconds"];
_1dsCoreJs.arrForEach(_killSwitch.setKillSwitchTenants(headers[STR_KILL_TOKENS_HEADER], killDuration), function (killToken) {
_1dsCoreJs.arrForEach(thePayload.batches, function (theBatch) {
if (theBatch.iKey() === killToken) {
droppedBatches = droppedBatches || [];
var removedEvents = theBatch.split(0);
thePayload.numEvents -= removedEvents.count();
droppedBatches.push(removedEvents);
}
});
});
}
if (status == 200 || status == 204) {
reason = 200 ;
return;
}
if (!retryPolicyShouldRetryForStatus(status) || thePayload.numEvents <= 0) {
shouldRetry = false;
}
reason = 9000 + (status % 1000);
}
if (shouldRetry) {
reason = 100 ;
var retryCount_1 = thePayload.retryCnt;
if (thePayload.sendType === 0 ) {
if (retryCount_1 < maxRequestRetriesBeforeBackoff) {
isRetrying = true;
_doAction(function () {
if (thePayload.sendType === 0 ) {
_outstandingRequests--;
}
_sendBatches(thePayload.batches, retryCount_1 + 1, thePayload.isTeardown, _isUnloading ? 2 : thePayload.sendType, 5 );
}, _isUnloading, retryPolicyGetMillisToBackoffForRetry(retryCount_1));
}
else {
backOffTrans = true;
if (_isUnloading) {
reason = 8001 ;
}
}
}
}
}
finally {
if (!isRetrying) {
_clockSkewManager.setClockSkew();
_handleRequestFinished(thePayload, reason, sendReason, backOffTrans);
}
_sendBatchesNotification(droppedBatches, 8004 , thePayload.sendType);
}
}
function _handleRequestFinished(thePayload, batchReason, sendReason, backOffTrans) {
try {
if (backOffTrans) {
_postManager._backOffTransmission();
}
if (batchReason === 200 ) {
if (!backOffTrans && !thePayload.isSync) {
_postManager._clearBackOff();
}
_addCompleteTimings(thePayload.batches);
}
_sendBatchesNotification(thePayload.batches, batchReason, thePayload.sendType, true);
}
finally {
if (thePayload.sendType === 0 ) {
_outstandingRequests--;
if (sendReason !== 5 ) {
_self.sendQueuedRequests(thePayload.sendType, sendReason);
}
}
}
}
function _addCompleteTimings(theBatches) {
if (_enableEventTimings) {
var sendEventCompleted_1 = _1dsCoreJs.getTime();
_1dsCoreJs.arrForEach(theBatches, function (theBatch) {
if (theBatch && theBatch.count() > 0) {
_addEventCompletedTimings(theBatch.events(), sendEventCompleted_1);
}
});
}
}
function _doAction(cb, isSync, interval) {
if (isSync) {
cb();
}
else {
timeoutOverride.set(cb, interval);
}
}
function _convertAllHeadersToMap(headersString) {
var headers = {};
if (_1dsCoreJs.isString(headersString)) {
var headersArray = _1dsCoreJs.strTrim(headersString).split(/[\r\n]+/);
_1dsCoreJs.arrForEach(headersArray, function (headerEntry) {
if (headerEntry) {
var idx = headerEntry.indexOf(": ");
if (idx !== -1) {
var header = _1dsCoreJs.strTrim(headerEntry.substring(0, idx)).toLowerCase();
var value = _1dsCoreJs.strTrim(headerEntry.substring(idx + 1));
headers[header] = value;
}
else {
headers[_1dsCoreJs.strTrim(headerEntry)] = 1;
}
}
});
}
return headers;
}
function _getMsfpc(thePayload) {
for (var lp = 0; lp < thePayload.batches.length; lp++) {
var msfpc = thePayload.batches[lp].Msfpc();
if (msfpc) {
return encodeURIComponent(msfpc);
}
}
return STR_EMPTY;
}
function _handleCollectorResponse(responseText) {
var responseHandlers = _self._responseHandlers;
try {
for (var i = 0; i < responseHandlers.length; i++) {
try {
responseHandlers[i](responseText);
}
catch (e) {
_1dsCoreJs._throwInternal(_logger, 1 , 519 , "Response handler failed: " + e);
}
}
if (responseText) {
var response = JSON.parse(responseText);
if (_1dsCoreJs.isValueAssigned(response.webResult) && _1dsCoreJs.isValueAssigned(response.webResult[STR_MSFPC])) {
_cookieMgr.set("MSFPC", response.webResult[STR_MSFPC], 365 * 86400);
}
}
}
catch (ex) {
}
}
function _sendBatchesNotification(theBatches, batchReason, sendType, sendSync) {
if (theBatches && theBatches.length > 0 && actions) {
var theAction_1 = actions[_getNotificationAction(batchReason)];
if (theAction_1) {
var isSyncRequest_1 = sendType !== 0 ;
_1dsCoreJs.doPerf(_core, function () { return "HttpManager:_sendBatchesNotification"; }, function () {
_doAction(function () {
try {
theAction_1.call(actions, theBatches, batchReason, isSyncRequest_1, sendType);
}
catch (e) {
_1dsCoreJs._throwInternal(_logger, 1 , 74 , "send request notification failed: " + e);
}
}, sendSync || isSyncRequest_1, 0);
}, function () { return ({ batches: _createDebugBatches(theBatches), reason: batchReason, isSync: isSyncRequest_1, sendSync: sendSync, sendType: sendType }); }, !isSyncRequest_1);
}
}
}
function _getNotificationAction(reason) {
var action = _eventActionMap[reason];
if (!_1dsCoreJs.isValueAssigned(action)) {
action = STR_OTHER;
if (reason >= 9000 && reason <= 9999 ) {
action = STR_RESPONSE_FAIL;
}
else if (reason >= 8000 && reason <= 8999 ) {
action = STR_DROPPED;
}
else if (reason >= 1000 && reason <= 1999 ) {
action = STR_SENDING;
}
}
return action;
}
});
}
HttpManager.__ieDyn=1;
return HttpManager;
}());
function defaultSetTimeout(callback, ms) {
var args = [];
for (var _i = 2; _i < arguments.length; _i++) {
args[_i - 2] = arguments[_i];
}
return setTimeout(callback, ms, args);
}
function defaultClearTimeout(timeoutId) {
clearTimeout(timeoutId);
}
function createTimeoutWrapper(argSetTimeout, argClearTimeout) {
return {
set: argSetTimeout || defaultSetTimeout,
clear: argClearTimeout || defaultClearTimeout
};
}
var FlushCheckTimer = 0.250;
var MaxNumberEventPerBatch = 500;
var EventsDroppedAtOneTime = 20;
var MaxSendAttempts = 6;
var MaxSyncUnloadSendAttempts = 2;
var MaxBackoffCount = 4;
var MaxConnections = 2;
var MaxRequestRetriesBeforeBackoff = 1;
var strEventsDiscarded = "eventsDiscarded";
var strOverrideInstrumentationKey = "overrideInstrumentationKey";
var strMaxEventRetryAttempts = "maxEventRetryAttempts";
var strMaxUnloadEventRetryAttempts = "maxUnloadEventRetryAttempts";
var strAddUnloadCb = "addUnloadCb";
var PostChannel = /** @class */ (function (_super) {
applicationinsightsShims.__extendsFn(PostChannel, _super);
function PostChannel() {
var _this = _super.call(this) || this;
_this.identifier = "PostChannel";
_this.priority = 1011;
_this.version = '3.2.13';
var _config;
var _isTeardownCalled = false;
var _flushCallbackQueue = [];
var _flushCallbackTimerId = null;
var _paused = false;
var _immediateQueueSize = 0;
var _immediateQueueSizeLimit = 500;
var _queueSize = 0;
var _queueSizeLimit = 10000;
var _profiles = {};
var _currentProfile = RT_PROFILE;
var _scheduledTimerId = null;
var _immediateTimerId = null;
var _currentBackoffCount = 0;
var _timerCount = 0;
var _xhrOverride;
var _httpManager;
var _batchQueues = {};
var _autoFlushEventsLimit;
var _autoFlushBatchLimit;
var _delayedBatchSendLatency = -1;
var _delayedBatchReason;
var _optimizeObject = true;
var _isPageUnloadTriggered = false;
var _maxEventSendAttempts = MaxSendAttempts;
var _maxUnloadEventSendAttempts = MaxSyncUnloadSendAttempts;
var _evtNamespace;
var _timeoutWrapper;
dynamicProto__default(PostChannel, _this, function (_self, _base) {
_initDefaults();
_self["_getDbgPlgTargets"] = function () {
return [_httpManager];
};
_self.initialize = function (coreConfig, core, extensions) {
_1dsCoreJs.doPerf(core, function () { return "PostChannel:initialize"; }, function () {
var extendedCore = core;
_base.initialize(coreConfig, core, extensions);
try {
var hasAddUnloadCb = !!core[strAddUnloadCb];
_evtNamespace = _1dsCoreJs.mergeEvtNamespace(_1dsCoreJs.createUniqueNamespace(_self.identifier), core.evtNamespace && core.evtNamespace());
var ctx = _self._getTelCtx();
coreConfig.extensionConfig[_self.identifier] = coreConfig.extensionConfig[_self.identifier] || {};
_config = ctx.getExtCfg(_self.identifier);
_timeoutWrapper = createTimeoutWrapper(_config.setTimeoutOverride, _config.clearTimeoutOverride);
_optimizeObject = !_config.disableOptimizeObj && _1dsCoreJs.isChromium();
_hookWParam(extendedCore);
if (_config.eventsLimitInMem > 0) {
_queueSizeLimit = _config.eventsLimitInMem;
}
if (_config.immediateEventLimit > 0) {
_immediateQueueSizeLimit = _config.immediateEventLimit;
}
if (_config.autoFlushEventsLimit > 0) {
_autoFlushEventsLimit = _config.autoFlushEventsLimit;
}
if (_1dsCoreJs.isNumber(_config[strMaxEventRetryAttempts])) {
_maxEventSendAttempts = _config[strMaxEventRetryAttempts];
}
if (_1dsCoreJs.isNumber(_config[strMaxUnloadEventRetryAttempts])) {
_maxUnloadEventSendAttempts = _config[strMaxUnloadEventRetryAttempts];
}
_setAutoLimits();
if (_config.httpXHROverride && _config.httpXHROverride.sendPOST) {
_xhrOverride = _config.httpXHROverride;
}
if (_1dsCoreJs.isValueAssigned(coreConfig.anonCookieName)) {
_httpManager.addQueryStringParameter("anoncknm", coreConfig.anonCookieName);
}
_httpManager.sendHook = _config.payloadPreprocessor;
_httpManager.sendListener = _config.payloadListener;
var endpointUrl = _config.overrideEndpointUrl ? _config.overrideEndpointUrl : coreConfig.endpointUrl;
_self._notificationManager = core.getNotifyMgr();
_httpManager.initialize(endpointUrl, _self.core, _self, _xhrOverride, _config);
var excludePageUnloadEvents = coreConfig.disablePageUnloadEvents || [];
_1dsCoreJs.addPageUnloadEventListener(_handleUnloadEvents, excludePageUnloadEvents, _evtNamespace);
_1dsCoreJs.addPageHideEventListener(_handleUnloadEvents, excludePageUnloadEvents, _evtNamespace);
_1dsCoreJs.addPageShowEventListener(_handleShowEvents, coreConfig.disablePageShowEvents, _evtNamespace);
}
catch (e) {
_self.setInitialized(false);
throw e;
}
}, function () { return ({ coreConfig: coreConfig, core: core, extensions: extensions }); });
};
_self.processTelemetry = function (ev, itemCtx) {
_1dsCoreJs.setProcessTelemetryTimings(ev, _self.identifier);
itemCtx = _self._getTelCtx(itemCtx);
var channelConfig = itemCtx.getExtCfg(_self.identifier);
var disableTelemetry = !!_config.disableTelemetry;
if (channelConfig) {
disableTelemetry = disableTelemetry || !!channelConfig.disableTelemetry;
}
var event = ev;
if (!disableTelemetry && !_isTeardownCalled) {
if (_config[strOverrideInstrumentationKey]) {
event.iKey = _config[strOverrideInstrumentationKey];
}
if (channelConfig && channelConfig[strOverrideInstrumentationKey]) {
event.iKey = channelConfig[strOverrideInstrumentationKey];
}
_addEventToQueues(event, true);
if (_isPageUnloadTriggered) {
_releaseAllQueues(2 , 2 );
}
else {
_scheduleTimer();
}
}
_self.processNext(event, itemCtx);
};
_self._doTeardown = function (unloadCtx, unloadState) {
_releaseAllQueues(2 , 2 );
_isTeardownCalled = true;
_httpManager.teardown();
_1dsCoreJs.removePageUnloadEventListener(null, _evtNamespace);
_1dsCoreJs.removePageHideEventListener(null, _evtNamespace);
_1dsCoreJs.removePageShowEventListener(null, _evtNamespace);
_initDefaults();
};
function _hookWParam(extendedCore) {
var existingGetWParamMethod = extendedCore.getWParam;
extendedCore.getWParam = function () {
var wparam = 0;
if (_config.ignoreMc1Ms0CookieProcessing) {
wparam = wparam | 2;
}
return wparam | existingGetWParamMethod();
};
}
function _handleUnloadEvents(evt) {
var theEvt = evt || _1dsCoreJs.getWindow().event;
if (theEvt.type !== "beforeunload") {
_isPageUnloadTriggered = true;
_httpManager.setUnloading(_isPageUnloadTriggered);
}
_releaseAllQueues(2 , 2 );
}
function _handleShowEvents(evt) {
_isPageUnloadTriggered = false;
_httpManager.setUnloading(_isPageUnloadTriggered);
}
function _addEventToQueues(event, append) {
if (!event.sendAttempt) {
event.sendAttempt = 0;
}
if (!event.latency) {
event.latency = 1 ;
}
if (event.ext && event.ext[STR_TRACE]) {
delete (event.ext[STR_TRACE]);
}
if (event.ext && event.ext[STR_USER] && event.ext[STR_USER]["id"]) {
delete (event.ext[STR_USER]["id"]);
}
if (_optimizeObject) {
event.ext = _1dsCoreJs.optimizeObject(event.ext);
if (event.baseData) {
event.baseData = _1dsCoreJs.optimizeObject(event.baseData);
}
if (event.data) {
event.data = _1dsCoreJs.optimizeObject(event.data);
}
}
if (event.sync) {
if (_currentBackoffCount || _paused) {
event.latency = 3 ;
event.sync = false;
}
else {
if (_httpManager) {
if (_optimizeObject) {
event = _1dsCoreJs.optimizeObject(event);
}
_httpManager.sendSynchronousBatch(EventBatch.create(event.iKey, [event]), event.sync === true ? 1 : event.sync, 3 );
return;
}
}
}
var evtLatency = event.latency;
var queueSize = _queueSize;
var queueLimit = _queueSizeLimit;
if (evtLatency === 4 ) {
queueSize = _immediateQueueSize;
queueLimit = _immediateQueueSizeLimit;
}
var eventDropped = false;
if (queueSize < queueLimit) {
eventDropped = !_addEventToProperQueue(event, append);
}
else {
var dropLatency = 1 ;
var dropNumber = EventsDroppedAtOneTime;
if (evtLatency === 4 ) {
dropLatency = 4 ;
dropNumber = 1;
}
eventDropped = true;
if (_dropEventWithLatencyOrLess(event.iKey, event.latency, dropLatency, dropNumber)) {
eventDropped = !_addEventToProperQueue(event, append);
}
}
if (eventDropped) {
_notifyEvents(strEventsDiscarded, [event], _1dsCoreJs.EventsDiscardedReason.QueueFull);
}
}
_self.setEventQueueLimits = function (eventLimit, autoFlushLimit) {
_queueSizeLimit = eventLimit > 0 ? eventLimit : 10000;
_autoFlushEventsLimit = autoFlushLimit > 0 ? autoFlushLimit : 0;
_setAutoLimits();
var doFlush = _queueSize > eventLimit;
if (!doFlush && _autoFlushBatchLimit > 0) {
for (var latency = 1 ; !doFlush && latency <= 3 ; latency++) {
var batchQueue = _batchQueues[latency];
if (batchQueue && batchQueue.batches) {
_1dsCoreJs.arrForEach(batchQueue.batches, function (theBatch) {
if (theBatch && theBatch.count() >= _autoFlushBatchLimit) {
doFlush = true;
}
});
}
}
}
_performAutoFlush(true, doFlush);
};
_self.pause = function () {
_clearScheduledTimer();
_paused = true;
_httpManager.pause();
};
_self.resume = function () {
_paused = false;
_httpManager.resume();
_scheduleTimer();
};
_self.addResponseHandler = function (responseHandler) {
_httpManager._responseHandlers.push(responseHandler);
};
_self._loadTransmitProfiles = function (profiles) {
_resetTransmitProfiles();
_1dsCoreJs.objForEachKey(profiles, function (profileName, profileValue) {
var profLen = profileValue.length;
if (profLen >= 2) {
var directValue = (profLen > 2 ? profileValue[2] : 0);
profileValue.splice(0, profLen - 2);
if (profileValue[1] < 0) {
profileValue[0] = -1;
}
if (profileValue[1] > 0 && profileValue[0] > 0) {
var timerMultiplier = profileValue[0] / profileValue[1];
profileValue[0] = Math.ceil(timerMultiplier) * profileValue[1];
}
if (directValue >= 0 && profileValue[1] >= 0 && directValue > profileValue[1]) {
directValue = profileValue[1];
}
profileValue.push(directValue);
_profiles[profileName] = profileValue;
}
});
};
_self.flush = function (async, callback, sendReason) {
if (async === void 0) { async = true; }
if (!_paused) {
sendReason = sendReason || 1 ;
if (async) {
if (_flushCallbackTimerId == null) {
_clearScheduledTimer();
_queueBatches(1 , 0 , sendReason);
_flushCallbackTimerId = _createTimer(function () {
_flushCallbackTimerId = null;
_flushImpl(callback, sendReason);
}, 0);
}
else {
_flushCallbackQueue.push(callback);
}
}
else {
var cleared = _clearScheduledTimer();
_sendEventsForLatencyAndAbove(1 , 1 , sendReason);
if (callback !== null && callback !== undefined) {
callback();
}
if (cleared) {
_scheduleTimer();
}
}
}
};
_self.setMsaAuthTicket = function (ticket) {
_httpManager.addHeader(STR_MSA_DEVICE_TICKET, ticket);
};
_self.hasEvents = _hasEvents;
_self._setTransmitProfile = function (profileName) {
if (_currentProfile !== profileName && _profiles[profileName] !== undefined) {
_clearScheduledTimer();
_currentProfile = profileName;
_scheduleTimer();
}
};
function _sendEventsForLatencyAndAbove(latency, sendType, sendReason) {
var queued = _queueBatches(latency, sendType, sendReason);
_httpManager.sendQueuedRequests(sendType, sendReason);
return queued;
}
function _hasEvents() {
return _queueSize > 0;
}
function _scheduleTimer() {
if (_delayedBatchSendLatency >= 0 && _queueBatches(_delayedBatchSendLatency, 0 , _delayedBatchReason)) {
_httpManager.sendQueuedRequests(0 , _delayedBatchReason);
}
if (_immediateQueueSize > 0 && !_immediateTimerId && !_paused) {
var immediateTimeOut = _profiles[_currentProfile][2];
if (immediateTimeOut >= 0) {
_immediateTimerId = _createTimer(function () {
_immediateTimerId = null;
_sendEventsForLatencyAndAbove(4 , 0 , 1 );
_scheduleTimer();
}, immediateTimeOut);
}
}
var timeOut = _profiles[_currentProfile][1];
if (!_scheduledTimerId && !_flushCallbackTimerId && timeOut >= 0 && !_paused) {
if (_hasEvents()) {
_scheduledTimerId = _createTimer(function () {
_scheduledTimerId = null;
_sendEventsForLatencyAndAbove(_timerCount === 0 ? 3 : 1 , 0 , 1 );
_timerCount++;
_timerCount %= 2;
_scheduleTimer();
}, timeOut);
}
else {
_timerCount = 0;
}
}
}
_self._backOffTransmission = function () {
if (_currentBackoffCount < MaxBackoffCount) {
_currentBackoffCount++;
_clearScheduledTimer();
_scheduleTimer();
}
};
_self._clearBackOff = function () {
if (_currentBackoffCount) {
_currentBackoffCount = 0;
_clearScheduledTimer();
_scheduleTimer();
}
};
function _initDefaults() {
_config = null;
_isTeardownCalled = false;
_flushCallbackQueue = [];
_flushCallbackTimerId = null;
_paused = false;
_immediateQueueSize = 0;
_immediateQueueSizeLimit = 500;
_queueSize = 0;
_queueSizeLimit = 10000;
_profiles = {};
_currentProfile = RT_PROFILE;
_scheduledTimerId = null;
_immediateTimerId = null;
_currentBackoffCount = 0;
_timerCount = 0;
_xhrOverride = null;
_batchQueues = {};
_autoFlushEventsLimit = undefined;
_autoFlushBatchLimit = 0;
_delayedBatchSendLatency = -1;
_delayedBatchReason = null;
_optimizeObject = true;
_isPageUnloadTriggered = false;
_maxEventSendAttempts = MaxSendAttempts;
_maxUnloadEventSendAttempts = MaxSyncUnloadSendAttempts;
_evtNamespace = null;
_timeoutWrapper = createTimeoutWrapper();
_httpManager = new HttpManager(MaxNumberEventPerBatch, MaxConnections, MaxRequestRetriesBeforeBackoff, {
requeue: _requeueEvents,
send: _sendingEvent,
sent: _eventsSentEvent,
drop: _eventsDropped,
rspFail: _eventsResponseFail,
oth: _otherEvent
}, _timeoutWrapper);
_initializeProfiles();
_clearQueues();
_setAutoLimits();
}
function _createTimer(theTimerFunc, timeOut) {
if (timeOut === 0 && _currentBackoffCount) {
timeOut = 1;
}
var timerMultiplier = 1000;
if (_currentBackoffCount) {
timerMultiplier = retryPolicyGetMillisToBackoffForRetry(_currentBackoffCount - 1);
}
return _timeoutWrapper.set(theTimerFunc, timeOut * timerMultiplier);
}
function _clearScheduledTimer() {
if (_scheduledTimerId !== null) {
_timeoutWrapper.clear(_scheduledTimerId);
_scheduledTimerId = null;
_timerCount = 0;
return true;
}
return false;
}
function _releaseAllQueues(sendType, sendReason) {
_clearScheduledTimer();
if (_flushCallbackTimerId) {
_timeoutWrapper.clear(_flushCallbackTimerId);
_flushCallbackTimerId = null;
}
if (!_paused) {
_sendEventsForLatencyAndAbove(1 , sendType, sendReason);
}
}
function _clearQueues() {
_batchQueues[4 ] = {
batches: [],
iKeyMap: {}
};
_batchQueues[3 ] = {
batches: [],
iKeyMap: {}
};
_batchQueues[2 ] = {
batches: [],
iKeyMap: {}
};
_batchQueues[1 ] = {
batches: [],
iKeyMap: {}
};
}
function _getEventBatch(iKey, latency, create) {
var batchQueue = _batchQueues[latency];
if (!batchQueue) {
latency = 1 ;
batchQueue = _batchQueues[latency];
}
var eventBatch = batchQueue.iKeyMap[iKey];
if (!eventBatch && create) {
eventBatch = EventBatch.create(iKey);
batchQueue.batches.push(eventBatch);
batchQueue.iKeyMap[iKey] = eventBatch;
}
return eventBatch;
}
function _performAutoFlush(isAsync, doFlush) {
if (_httpManager.canSendRequest() && !_currentBackoffCount) {
if (_autoFlushEventsLimit > 0 && _queueSize > _autoFlushEventsLimit) {
doFlush = true;
}
if (doFlush && _flushCallbackTimerId == null) {
_self.flush(isAsync, null, 20 );
}
}
}
function _addEventToProperQueue(event, append) {
if (_optimizeObject) {
event = _1dsCoreJs.optimizeObject(event);
}
var latency = event.latency;
var eventBatch = _getEventBatch(event.iKey, latency, true);
if (eventBatch.addEvent(event)) {
if (latency !== 4 ) {
_queueSize++;
if (append && event.sendAttempt === 0) {
_performAutoFlush(!event.sync, _autoFlushBatchLimit > 0 && eventBatch.count() >= _autoFlushBatchLimit);
}
}
else {
_immediateQueueSize++;
}
return true;
}
return false;
}
function _dropEventWithLatencyOrLess(iKey, latency, currentLatency, dropNumber) {
while (currentLatency <= latency) {
var eventBatch = _getEventBatch(iKey, latency, true);
if (eventBatch && eventBatch.count() > 0) {
var droppedEvents = eventBatch.split(0, dropNumber);
var droppedCount = droppedEvents.count();
if (droppedCount > 0) {
if (currentLatency === 4 ) {
_immediateQueueSize -= droppedCount;
}
else {
_queueSize -= droppedCount;
}
_notifyBatchEvents(strEventsDiscarded, [droppedEvents], _1dsCoreJs.EventsDiscardedReason.QueueFull);
return true;
}
}
currentLatency++;
}
_resetQueueCounts();
return false;
}
function _resetQueueCounts() {
var immediateQueue = 0;
var normalQueue = 0;
var _loop_1 = function (latency) {
var batchQueue = _batchQueues[latency];
if (batchQueue && batchQueue.batches) {
_1dsCoreJs.arrForEach(batchQueue.batches, function (theBatch) {
if (latency === 4 ) {
immediateQueue += theBatch.count();
}
else {
normalQueue += theBatch.count();
}
});
}
};
for (var latency = 1 ; latency <= 4 ; latency++) {
_loop_1(latency);
}
_queueSize = normalQueue;
_immediateQueueSize = immediateQueue;
}
function _queueBatches(latency, sendType, sendReason) {
var eventsQueued = false;
var isAsync = sendType === 0 ;
if (!isAsync || _httpManager.canSendRequest()) {
_1dsCoreJs.doPerf(_self.core, function () { return "PostChannel._queueBatches"; }, function () {
var droppedEvents = [];
var latencyToProcess = 4 ;
while (latencyToProcess >= latency) {
var batchQueue = _batchQueues[latencyToProcess];
if (batchQueue && batchQueue.batches && batchQueue.batches.length > 0) {
_1dsCoreJs.arrForEach(batchQueue.batches, function (theBatch) {
if (!_httpManager.addBatch(theBatch)) {
droppedEvents = droppedEvents.concat(theBatch.events());
}
else {
eventsQueued = eventsQueued || (theBatch && theBatch.count() > 0);
}
if (latencyToProcess === 4 ) {
_immediateQueueSize -= theBatch.count();
}
else {
_queueSize -= theBatch.count();
}
});
batchQueue.batches = [];
batchQueue.iKeyMap = {};
}
latencyToProcess--;
}
if (droppedEvents.length > 0) {
_notifyEvents(strEventsDiscarded, droppedEvents, _1dsCoreJs.EventsDiscardedReason.KillSwitch);
}
if (eventsQueued && _delayedBatchSendLatency >= latency) {
_delayedBatchSendLatency = -1;
_delayedBatchReason = 0 ;
}
}, function () { return ({ latency: latency, sendType: sendType, sendReason: sendReason }); }, !isAsync);
}
else {
_delayedBatchSendLatency = _delayedBatchSendLatency >= 0 ? Math.min(_delayedBatchSendLatency, latency) : latency;
_delayedBatchReason = Math.max(_delayedBatchReason, sendReason);
}
return eventsQueued;
}
function _flushImpl(callback, sendReason) {
_sendEventsForLatencyAndAbove(1 , 0 , sendReason);
_resetQueueCounts();
_waitForIdleManager(function () {
if (callback) {
callback();
}
if (_flushCallbackQueue.length > 0) {
_flushCallbackTimerId = _createTimer(function () {
_flushCallbackTimerId = null;
_flushImpl(_flushCallbackQueue.shift(), sendReason);
}, 0);
}
else {
_flushCallbackTimerId = null;
_scheduleTimer();
}
});
}
function _waitForIdleManager(callback) {
if (_httpManager.isCompletelyIdle()) {
callback();
}
else {
_flushCallbackTimerId = _createTimer(function () {
_flushCallbackTimerId = null;
_waitForIdleManager(callback);
}, FlushCheckTimer);
}
}
function _resetTransmitProfiles() {
_clearScheduledTimer();
_initializeProfiles();
_currentProfile = RT_PROFILE;
_scheduleTimer();
}
function _initializeProfiles() {
_profiles = {};
_profiles[RT_PROFILE] = [2, 1, 0];
_profiles[NRT_PROFILE] = [6, 3, 0];
_profiles[BE_PROFILE] = [18, 9, 0];
}
function _requeueEvents(batches, reason) {
var droppedEvents = [];
var maxSendAttempts = _maxEventSendAttempts;
if (_isPageUnloadTriggered) {
maxSendAttempts = _maxUnloadEventSendAttempts;
}
_1dsCoreJs.arrForEach(batches, function (theBatch) {
if (theBatch && theBatch.count() > 0) {
_1dsCoreJs.arrForEach(theBatch.events(), function (theEvent) {
if (theEvent) {
if (theEvent.sync) {
theEvent.latency = 4 ;
theEvent.sync = false;
}
if (theEvent.sendAttempt < maxSendAttempts) {
_1dsCoreJs.setProcessTelemetryTimings(theEvent, _self.identifier);
_addEventToQueues(theEvent, false);
}
else {
droppedEvents.push(theEvent);
}
}
});
}
});
if (droppedEvents.length > 0) {
_notifyEvents(strEventsDiscarded, droppedEvents, _1dsCoreJs.EventsDiscardedReason.NonRetryableStatus);
}
if (_isPageUnloadTriggered) {
_releaseAllQueues(2 , 2 );
}
}
function _callNotification(evtName, theArgs) {
var manager = (_self._notificationManager || {});
var notifyFunc = manager[evtName];
if (notifyFunc) {
try {
notifyFunc.apply(manager, theArgs);
}
catch (e) {
_1dsCoreJs._throwInternal(_self.diagLog(), 1 , 74 , evtName + " notification failed: " + e);
}
}
}
function _notifyEvents(evtName, theEvents) {
var extraArgs = [];
for (var _i = 2; _i < arguments.length; _i++) {
extraArgs[_i - 2] = arguments[_i];
}
if (theEvents && theEvents.length > 0) {
_callNotification(evtName, [theEvents].concat(extraArgs));
}
}
function _notifyBatchEvents(evtName, batches) {
var extraArgs = [];
for (var _i = 2; _i < arguments.length; _i++) {
extraArgs[_i - 2] = arguments[_i];
}
if (batches && batches.length > 0) {
_1dsCoreJs.arrForEach(batches, function (theBatch) {
if (theBatch && theBatch.count() > 0) {
_callNotification(evtName, [theBatch.events()].concat(extraArgs));
}
});
}
}
function _sendingEvent(batches, reason, isSyncRequest) {
if (batches && batches.length > 0) {
_callNotification("eventsSendRequest", [(reason >= 1000 && reason <= 1999 ?
reason - 1000 :
0 ), isSyncRequest !== true]);
}
}
function _eventsSentEvent(batches, reason) {
_notifyBatchEvents("eventsSent", batches, reason);
_scheduleTimer();
}
function _eventsDropped(batches, reason) {
_notifyBatchEvents(strEventsDiscarded, batches, (reason >= 8000 && reason <= 8999 ?
reason - 8000 :
_1dsCoreJs.EventsDiscardedReason.Unknown));
}
function _eventsResponseFail(batches) {
_notifyBatchEvents(strEventsDiscarded, batches, _1dsCoreJs.EventsDiscardedReason.NonRetryableStatus);
_scheduleTimer();
}
function _otherEvent(batches, reason) {
_notifyBatchEvents(strEventsDiscarded, batches, _1dsCoreJs.EventsDiscardedReason.Unknown);
_scheduleTimer();
}
function _setAutoLimits() {
if (!_config || !_config.disableAutoBatchFlushLimit) {
_autoFlushBatchLimit = Math.max(MaxNumberEventPerBatch * (MaxConnections + 1), _queueSizeLimit / 6);
}
else {
_autoFlushBatchLimit = 0;
}
}
_1dsCoreJs.objDefineAccessors(_self, "_setTimeoutOverride", function () { return _timeoutWrapper.set; }, function (value) {
_timeoutWrapper = createTimeoutWrapper(value, _timeoutWrapper.clear);
});
_1dsCoreJs.objDefineAccessors(_self, "_clearTimeoutOverride", function () { return _timeoutWrapper.clear; }, function (value) {
_timeoutWrapper = createTimeoutWrapper(_timeoutWrapper.set, value);
});
});
return _this;
}
PostChannel.__ieDyn=1;
return PostChannel;
}(_1dsCoreJs.BaseTelemetryPlugin));
exports.BE_PROFILE = BE_PROFILE;
exports.NRT_PROFILE = NRT_PROFILE;
exports.PostChannel = PostChannel;
exports.RT_PROFILE = RT_PROFILE;
(function(obj, prop, descriptor) { /* ai_es3_polyfil defineProperty */ var func = Object["defineProperty"]; if (func) { try { return func(obj, prop, descriptor); } catch(e) { /* IE8 defines defineProperty, but will throw */ } } if (descriptor && typeof descriptor.value !== undefined) { obj[prop] = descriptor.value; } return obj; })(exports, '__esModule', { value: true });
}));