@microsoft/1ds-post-js 3.1.11 → 3.2.0
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/README.md +2 -2
- package/bundle/{ms.post-3.1.11.gbl.js → ms.post-3.2.0.gbl.js} +1486 -786
- package/bundle/ms.post-3.2.0.gbl.js.map +1 -0
- package/bundle/ms.post-3.2.0.gbl.min.js +7 -0
- package/bundle/ms.post-3.2.0.gbl.min.js.map +1 -0
- package/bundle/ms.post-3.2.0.integrity.json +46 -0
- package/bundle/{ms.post-3.1.11.js → ms.post-3.2.0.js} +1486 -786
- package/bundle/ms.post-3.2.0.js.map +1 -0
- package/bundle/ms.post-3.2.0.min.js +7 -0
- package/bundle/ms.post-3.2.0.min.js.map +1 -0
- package/bundle/ms.post.gbl.js +1485 -785
- package/bundle/ms.post.gbl.js.map +1 -1
- package/bundle/ms.post.gbl.min.js +2 -2
- package/bundle/ms.post.gbl.min.js.map +1 -1
- package/bundle/ms.post.integrity.json +17 -17
- package/bundle/ms.post.js +1485 -785
- package/bundle/ms.post.js.map +1 -1
- package/bundle/ms.post.min.js +2 -2
- package/bundle/ms.post.min.js.map +1 -1
- package/dist/ms.post.js +177 -116
- package/dist/ms.post.js.map +1 -1
- package/dist/ms.post.min.js +2 -2
- package/dist/ms.post.min.js.map +1 -1
- package/dist-esm/src/BatchNotificationActions.js +1 -1
- package/dist-esm/src/ClockSkewManager.js +1 -1
- package/dist-esm/src/Constants.js +1 -1
- package/dist-esm/src/DataModels.js +1 -1
- package/dist-esm/src/EventBatch.js +1 -1
- package/dist-esm/src/HttpManager.js +41 -36
- package/dist-esm/src/HttpManager.js.map +1 -1
- package/dist-esm/src/Index.js +1 -1
- package/dist-esm/src/KillSwitch.js +1 -1
- package/dist-esm/src/PostChannel.d.ts +0 -4
- package/dist-esm/src/PostChannel.js +136 -92
- package/dist-esm/src/PostChannel.js.map +1 -1
- package/dist-esm/src/RetryPolicy.d.ts +20 -25
- package/dist-esm/src/RetryPolicy.js +35 -44
- package/dist-esm/src/RetryPolicy.js.map +1 -1
- package/dist-esm/src/Serializer.js +1 -1
- package/dist-esm/src/typings/XDomainRequest.js +1 -1
- package/package.json +2 -2
- package/src/HttpManager.ts +43 -47
- package/src/PostChannel.ts +162 -114
- package/src/RetryPolicy.ts +33 -38
- package/bundle/ms.post-3.1.11.gbl.js.map +0 -1
- package/bundle/ms.post-3.1.11.gbl.min.js +0 -7
- package/bundle/ms.post-3.1.11.gbl.min.js.map +0 -1
- package/bundle/ms.post-3.1.11.integrity.json +0 -46
- package/bundle/ms.post-3.1.11.js.map +0 -1
- package/bundle/ms.post-3.1.11.min.js +0 -7
- package/bundle/ms.post-3.1.11.min.js.map +0 -1
package/dist/ms.post.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* 1DS JS SDK POST plugin, 3.
|
|
2
|
+
* 1DS JS SDK POST plugin, 3.2.0
|
|
3
3
|
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
4
|
* (Microsoft Internal Only)
|
|
5
5
|
*/
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
var strUploadTime = "upload-time";
|
|
39
39
|
var strApiKey = "apikey";
|
|
40
40
|
var strMsaDeviceTicket = "AuthMsaDeviceTicket";
|
|
41
|
+
var strAuthXToken = "AuthXToken";
|
|
41
42
|
var strNoResponseBody = "NoResponseBody";
|
|
42
43
|
var strMsfpc = "msfpc";
|
|
43
44
|
|
|
@@ -350,24 +351,19 @@
|
|
|
350
351
|
var RandomizationUpperThreshold = 1.2;
|
|
351
352
|
var BaseBackoff = 3000;
|
|
352
353
|
var MaxBackoff = 600000;
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
waitDuration = Math.pow(2, retriesSoFar) * randomBackoff;
|
|
367
|
-
return Math.min(waitDuration, MaxBackoff);
|
|
368
|
-
};
|
|
369
|
-
return RetryPolicy;
|
|
370
|
-
}());
|
|
354
|
+
function retryPolicyShouldRetryForStatus(httpStatusCode) {
|
|
355
|
+
return !((httpStatusCode >= 300 && httpStatusCode < 500 && httpStatusCode != 408 && httpStatusCode != 429)
|
|
356
|
+
|| (httpStatusCode == 501)
|
|
357
|
+
|| (httpStatusCode == 505));
|
|
358
|
+
}
|
|
359
|
+
function retryPolicyGetMillisToBackoffForRetry(retriesSoFar) {
|
|
360
|
+
var waitDuration = 0;
|
|
361
|
+
var minBackoff = BaseBackoff * RandomizationLowerThreshold;
|
|
362
|
+
var maxBackoff = BaseBackoff * RandomizationUpperThreshold;
|
|
363
|
+
var randomBackoff = Math.floor(Math.random() * (maxBackoff - minBackoff)) + minBackoff;
|
|
364
|
+
waitDuration = Math.pow(2, retriesSoFar) * randomBackoff;
|
|
365
|
+
return Math.min(waitDuration, MaxBackoff);
|
|
366
|
+
}
|
|
371
367
|
|
|
372
368
|
var SecToMsMultiplier = 1000;
|
|
373
369
|
var KillSwitch = /** @class */ (function () {
|
|
@@ -470,11 +466,19 @@
|
|
|
470
466
|
_a);
|
|
471
467
|
var _collectorQsHeaders = {};
|
|
472
468
|
var _collectorHeaderToQs = {};
|
|
473
|
-
function _addCollectorHeaderQsMapping(qsName, headerName) {
|
|
469
|
+
function _addCollectorHeaderQsMapping(qsName, headerName, allowQs) {
|
|
474
470
|
_collectorQsHeaders[qsName] = headerName;
|
|
475
|
-
|
|
471
|
+
if (allowQs !== false) {
|
|
472
|
+
_collectorHeaderToQs[headerName] = qsName;
|
|
473
|
+
}
|
|
476
474
|
}
|
|
477
|
-
_addCollectorHeaderQsMapping(strMsaDeviceTicket, strMsaDeviceTicket);
|
|
475
|
+
_addCollectorHeaderQsMapping(strMsaDeviceTicket, strMsaDeviceTicket, false);
|
|
476
|
+
_addCollectorHeaderQsMapping(strClientVersion, strClientVersion);
|
|
477
|
+
_addCollectorHeaderQsMapping(strClientId, "Client-Id");
|
|
478
|
+
_addCollectorHeaderQsMapping(strApiKey, strApiKey);
|
|
479
|
+
_addCollectorHeaderQsMapping(strTimeDeltaToApply, strTimeDeltaToApply);
|
|
480
|
+
_addCollectorHeaderQsMapping(strUploadTime, strUploadTime);
|
|
481
|
+
_addCollectorHeaderQsMapping(strAuthXToken, strAuthXToken);
|
|
478
482
|
function _getResponseText(xhr) {
|
|
479
483
|
try {
|
|
480
484
|
return xhr.responseText;
|
|
@@ -543,7 +547,7 @@
|
|
|
543
547
|
channelConfig = {};
|
|
544
548
|
}
|
|
545
549
|
_urlString = endpointUrl + _urlString;
|
|
546
|
-
_useHeaders = !_1dsCoreJs.isUndefined(channelConfig.avoidOptions) ? !channelConfig.avoidOptions :
|
|
550
|
+
_useHeaders = !_1dsCoreJs.isUndefined(channelConfig.avoidOptions) ? !channelConfig.avoidOptions : true;
|
|
547
551
|
_core = core;
|
|
548
552
|
_cookieMgr = core.getCookieMgr();
|
|
549
553
|
_enableEventTimings = !_core.config.disableEventTimings;
|
|
@@ -769,7 +773,7 @@
|
|
|
769
773
|
oncomplete(status, headers, response);
|
|
770
774
|
}
|
|
771
775
|
catch (e) {
|
|
772
|
-
_postManager.diagLog()
|
|
776
|
+
_1dsCoreJs._throwInternal(_postManager.diagLog(), 2 , 518 , _1dsCoreJs.dumpObj(e));
|
|
773
777
|
}
|
|
774
778
|
}
|
|
775
779
|
function _beaconSendPost(payload, oncomplete, sync) {
|
|
@@ -804,7 +808,7 @@
|
|
|
804
808
|
}
|
|
805
809
|
}
|
|
806
810
|
catch (ex) {
|
|
807
|
-
_postManager.diagLog().warnToConsole("Failed to send telemetry using sendBeacon API. Ex:" + ex);
|
|
811
|
+
_postManager.diagLog().warnToConsole("Failed to send telemetry using sendBeacon API. Ex:" + _1dsCoreJs.dumpObj(ex));
|
|
808
812
|
status = 0;
|
|
809
813
|
}
|
|
810
814
|
finally {
|
|
@@ -968,7 +972,7 @@
|
|
|
968
972
|
}, function () { return ({ batches: _createDebugBatches(orgBatches_1), retryCount: retryCount, isTeardown: isTeardown, isSynchronous: isSynchronous_1, sendReason: sendReason, useSendBeacon: _isBeaconPayload(sendType), sendType: sendType }); }, !isSynchronous_1);
|
|
969
973
|
}
|
|
970
974
|
catch (ex) {
|
|
971
|
-
_postManager.diagLog()
|
|
975
|
+
_1dsCoreJs._throwInternal(_postManager.diagLog(), 2 , 48 , "Unexpected Exception sending batch: " + _1dsCoreJs.dumpObj(ex));
|
|
972
976
|
}
|
|
973
977
|
}
|
|
974
978
|
function _buildRequestDetails(thePayload, useHeaders) {
|
|
@@ -977,8 +981,21 @@
|
|
|
977
981
|
hdrs: {},
|
|
978
982
|
useHdrs: false
|
|
979
983
|
};
|
|
980
|
-
|
|
981
|
-
|
|
984
|
+
if (!useHeaders) {
|
|
985
|
+
_1dsCoreJs.objForEachKey(_headers, function (name, value) {
|
|
986
|
+
if (_collectorHeaderToQs[name]) {
|
|
987
|
+
_addRequestDetails(requestDetails, _collectorHeaderToQs[name], value, false);
|
|
988
|
+
}
|
|
989
|
+
else {
|
|
990
|
+
requestDetails.hdrs[name] = value;
|
|
991
|
+
requestDetails.useHdrs = true;
|
|
992
|
+
}
|
|
993
|
+
});
|
|
994
|
+
}
|
|
995
|
+
else {
|
|
996
|
+
requestDetails.hdrs = _1dsCoreJs.extend(requestDetails.hdrs, _headers);
|
|
997
|
+
requestDetails.useHdrs = (_1dsCoreJs.objKeys(requestDetails.hdrs).length > 0);
|
|
998
|
+
}
|
|
982
999
|
_addRequestDetails(requestDetails, strClientId, "NO_AUTH", useHeaders);
|
|
983
1000
|
_addRequestDetails(requestDetails, strClientVersion, _1dsCoreJs.FullVersionString, useHeaders);
|
|
984
1001
|
var apiQsKeys = "";
|
|
@@ -1164,7 +1181,7 @@
|
|
|
1164
1181
|
reason = 200 ;
|
|
1165
1182
|
return;
|
|
1166
1183
|
}
|
|
1167
|
-
if (!
|
|
1184
|
+
if (!retryPolicyShouldRetryForStatus(status) || thePayload.numEvents <= 0) {
|
|
1168
1185
|
shouldRetry = false;
|
|
1169
1186
|
}
|
|
1170
1187
|
reason = 9000 + (status % 1000);
|
|
@@ -1180,7 +1197,7 @@
|
|
|
1180
1197
|
_outstandingRequests--;
|
|
1181
1198
|
}
|
|
1182
1199
|
_sendBatches(thePayload.batches, retryCount_1 + 1, thePayload.isTeardown, _isUnloading ? 2 : thePayload.sendType, 5 );
|
|
1183
|
-
}, _isUnloading,
|
|
1200
|
+
}, _isUnloading, retryPolicyGetMillisToBackoffForRetry(retryCount_1));
|
|
1184
1201
|
}
|
|
1185
1202
|
else {
|
|
1186
1203
|
backOffTrans = true;
|
|
@@ -1276,7 +1293,7 @@
|
|
|
1276
1293
|
responseHandlers[i](responseText);
|
|
1277
1294
|
}
|
|
1278
1295
|
catch (e) {
|
|
1279
|
-
_postManager.diagLog()
|
|
1296
|
+
_1dsCoreJs._throwInternal(_postManager.diagLog(), 1 , 519 , "Response handler failed: " + e);
|
|
1280
1297
|
}
|
|
1281
1298
|
}
|
|
1282
1299
|
if (responseText) {
|
|
@@ -1300,7 +1317,7 @@
|
|
|
1300
1317
|
theAction_1.call(actions, theBatches, batchReason, isSyncRequest_1, sendType);
|
|
1301
1318
|
}
|
|
1302
1319
|
catch (e) {
|
|
1303
|
-
_postManager.diagLog()
|
|
1320
|
+
_1dsCoreJs._throwInternal(_postManager.diagLog(), 1 , 74 , "send request notification failed: " + e);
|
|
1304
1321
|
}
|
|
1305
1322
|
}, sendSync || isSyncRequest_1, 0);
|
|
1306
1323
|
}, function () { return ({ batches: _createDebugBatches(theBatches), reason: batchReason, isSync: isSyncRequest_1, sendSync: sendSync, sendType: sendType }); }, !isSyncRequest_1);
|
|
@@ -1341,13 +1358,14 @@
|
|
|
1341
1358
|
var strOverrideInstrumentationKey = "overrideInstrumentationKey";
|
|
1342
1359
|
var strMaxEventRetryAttempts = "maxEventRetryAttempts";
|
|
1343
1360
|
var strMaxUnloadEventRetryAttempts = "maxUnloadEventRetryAttempts";
|
|
1361
|
+
var strAddUnloadCb = "addUnloadCb";
|
|
1344
1362
|
var PostChannel = /** @class */ (function (_super) {
|
|
1345
1363
|
applicationinsightsShims.__extendsFn(PostChannel, _super);
|
|
1346
1364
|
function PostChannel() {
|
|
1347
1365
|
var _this = _super.call(this) || this;
|
|
1348
1366
|
_this.identifier = "PostChannel";
|
|
1349
1367
|
_this.priority = 1011;
|
|
1350
|
-
_this.version = '3.
|
|
1368
|
+
_this.version = '3.2.0';
|
|
1351
1369
|
var _config;
|
|
1352
1370
|
var _isTeardownCalled = false;
|
|
1353
1371
|
var _flushCallbackQueue = [];
|
|
@@ -1372,20 +1390,12 @@
|
|
|
1372
1390
|
var _delayedBatchReason;
|
|
1373
1391
|
var _optimizeObject = true;
|
|
1374
1392
|
var _isPageUnloadTriggered = false;
|
|
1393
|
+
var _disableXhrSync = false;
|
|
1375
1394
|
var _maxEventSendAttempts = MaxSendAttempts;
|
|
1376
1395
|
var _maxUnloadEventSendAttempts = MaxSyncUnloadSendAttempts;
|
|
1396
|
+
var _evtNamespace;
|
|
1377
1397
|
dynamicProto__default(PostChannel, _this, function (_self, _base) {
|
|
1378
|
-
|
|
1379
|
-
_clearQueues();
|
|
1380
|
-
_setAutoLimits();
|
|
1381
|
-
_httpManager = new HttpManager(MaxNumberEventPerBatch, MaxConnections, MaxRequestRetriesBeforeBackoff, {
|
|
1382
|
-
requeue: _requeueEvents,
|
|
1383
|
-
send: _sendingEvent,
|
|
1384
|
-
sent: _eventsSentEvent,
|
|
1385
|
-
drop: _eventsDropped,
|
|
1386
|
-
rspFail: _eventsResponseFail,
|
|
1387
|
-
oth: _otherEvent
|
|
1388
|
-
});
|
|
1398
|
+
_initDefaults();
|
|
1389
1399
|
_self["_getDbgPlgTargets"] = function () {
|
|
1390
1400
|
return [_httpManager];
|
|
1391
1401
|
};
|
|
@@ -1393,46 +1403,53 @@
|
|
|
1393
1403
|
_1dsCoreJs.doPerf(core, function () { return "PostChannel:initialize"; }, function () {
|
|
1394
1404
|
var extendedCore = core;
|
|
1395
1405
|
_base.initialize(coreConfig, core, extensions);
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1406
|
+
try {
|
|
1407
|
+
var hasAddUnloadCb = !!core[strAddUnloadCb];
|
|
1408
|
+
_evtNamespace = _1dsCoreJs.mergeEvtNamespace(_1dsCoreJs.createUniqueNamespace(_self.identifier), core.evtNamespace && core.evtNamespace());
|
|
1409
|
+
var ctx = _self._getTelCtx();
|
|
1410
|
+
coreConfig.extensionConfig[_self.identifier] = coreConfig.extensionConfig[_self.identifier] || {};
|
|
1411
|
+
_config = ctx.getExtCfg(_self.identifier);
|
|
1412
|
+
_self._setTimeoutOverride = _config.setTimeoutOverride ? _config.setTimeoutOverride : setTimeout.bind(globalContext);
|
|
1413
|
+
_self._clearTimeoutOverride = _config.clearTimeoutOverride ? _config.clearTimeoutOverride : clearTimeout.bind(globalContext);
|
|
1414
|
+
_optimizeObject = !_config.disableOptimizeObj && _1dsCoreJs.isChromium();
|
|
1415
|
+
_hookWParam(extendedCore);
|
|
1416
|
+
if (_config.eventsLimitInMem > 0) {
|
|
1417
|
+
_queueSizeLimit = _config.eventsLimitInMem;
|
|
1418
|
+
}
|
|
1419
|
+
if (_config.immediateEventLimit > 0) {
|
|
1420
|
+
_immediateQueueSizeLimit = _config.immediateEventLimit;
|
|
1421
|
+
}
|
|
1422
|
+
if (_config.autoFlushEventsLimit > 0) {
|
|
1423
|
+
_autoFlushEventsLimit = _config.autoFlushEventsLimit;
|
|
1424
|
+
}
|
|
1425
|
+
_disableXhrSync = _config.disableXhrSync;
|
|
1426
|
+
if (_1dsCoreJs.isNumber(_config[strMaxEventRetryAttempts])) {
|
|
1427
|
+
_maxEventSendAttempts = _config[strMaxEventRetryAttempts];
|
|
1428
|
+
}
|
|
1429
|
+
if (_1dsCoreJs.isNumber(_config[strMaxUnloadEventRetryAttempts])) {
|
|
1430
|
+
_maxUnloadEventSendAttempts = _config[strMaxUnloadEventRetryAttempts];
|
|
1431
|
+
}
|
|
1432
|
+
_setAutoLimits();
|
|
1433
|
+
if (_config.httpXHROverride && _config.httpXHROverride.sendPOST) {
|
|
1434
|
+
_xhrOverride = _config.httpXHROverride;
|
|
1435
|
+
}
|
|
1436
|
+
if (_1dsCoreJs.isValueAssigned(coreConfig.anonCookieName)) {
|
|
1437
|
+
_httpManager.addQueryStringParameter("anoncknm", coreConfig.anonCookieName);
|
|
1438
|
+
}
|
|
1439
|
+
_httpManager.sendHook = _config.payloadPreprocessor;
|
|
1440
|
+
_httpManager.sendListener = _config.payloadListener;
|
|
1441
|
+
var endpointUrl = _config.overrideEndpointUrl ? _config.overrideEndpointUrl : coreConfig.endpointUrl;
|
|
1442
|
+
_self._notificationManager = coreConfig.extensionConfig.NotificationManager;
|
|
1443
|
+
_httpManager.initialize(endpointUrl, _self.core, _self, _xhrOverride, _config);
|
|
1444
|
+
var excludePageUnloadEvents = coreConfig.disablePageUnloadEvents || [];
|
|
1445
|
+
_1dsCoreJs.addPageUnloadEventListener(_handleUnloadEvents, excludePageUnloadEvents, _evtNamespace);
|
|
1446
|
+
_1dsCoreJs.addPageHideEventListener(_handleUnloadEvents, excludePageUnloadEvents, _evtNamespace);
|
|
1447
|
+
_1dsCoreJs.addPageShowEventListener(_handleShowEvents, coreConfig.disablePageShowEvents, _evtNamespace);
|
|
1448
|
+
}
|
|
1449
|
+
catch (e) {
|
|
1450
|
+
_self.setInitialized(false);
|
|
1451
|
+
throw e;
|
|
1452
|
+
}
|
|
1436
1453
|
}, function () { return ({ coreConfig: coreConfig, core: core, extensions: extensions }); });
|
|
1437
1454
|
};
|
|
1438
1455
|
_self.processTelemetry = function (ev, itemCtx) {
|
|
@@ -1461,6 +1478,15 @@
|
|
|
1461
1478
|
}
|
|
1462
1479
|
_self.processNext(event, itemCtx);
|
|
1463
1480
|
};
|
|
1481
|
+
_self._doTeardown = function (unloadCtx, unloadState) {
|
|
1482
|
+
_releaseAllQueues(2 , 2 );
|
|
1483
|
+
_isTeardownCalled = true;
|
|
1484
|
+
_httpManager.teardown();
|
|
1485
|
+
_1dsCoreJs.removePageUnloadEventListener(null, _evtNamespace);
|
|
1486
|
+
_1dsCoreJs.removePageHideEventListener(null, _evtNamespace);
|
|
1487
|
+
_1dsCoreJs.removePageShowEventListener(null, _evtNamespace);
|
|
1488
|
+
_initDefaults();
|
|
1489
|
+
};
|
|
1464
1490
|
function _hookWParam(extendedCore) {
|
|
1465
1491
|
var existingGetWParamMethod = extendedCore.getWParam;
|
|
1466
1492
|
extendedCore.getWParam = function () {
|
|
@@ -1488,7 +1514,7 @@
|
|
|
1488
1514
|
event.sendAttempt = 0;
|
|
1489
1515
|
}
|
|
1490
1516
|
if (!event.latency) {
|
|
1491
|
-
event.latency =
|
|
1517
|
+
event.latency = 1 ;
|
|
1492
1518
|
}
|
|
1493
1519
|
if (event.ext && event.ext["trace"]) {
|
|
1494
1520
|
delete (event.ext["trace"]);
|
|
@@ -1507,7 +1533,7 @@
|
|
|
1507
1533
|
}
|
|
1508
1534
|
if (event.sync) {
|
|
1509
1535
|
if (_currentBackoffCount || _paused) {
|
|
1510
|
-
event.latency =
|
|
1536
|
+
event.latency = 3 ;
|
|
1511
1537
|
event.sync = false;
|
|
1512
1538
|
}
|
|
1513
1539
|
else {
|
|
@@ -1523,7 +1549,7 @@
|
|
|
1523
1549
|
var evtLatency = event.latency;
|
|
1524
1550
|
var queueSize = _queueSize;
|
|
1525
1551
|
var queueLimit = _queueSizeLimit;
|
|
1526
|
-
if (evtLatency ===
|
|
1552
|
+
if (evtLatency === 4 ) {
|
|
1527
1553
|
queueSize = _immediateQueueSize;
|
|
1528
1554
|
queueLimit = _immediateQueueSizeLimit;
|
|
1529
1555
|
}
|
|
@@ -1532,10 +1558,10 @@
|
|
|
1532
1558
|
eventDropped = !_addEventToProperQueue(event, append);
|
|
1533
1559
|
}
|
|
1534
1560
|
else {
|
|
1535
|
-
var dropLatency =
|
|
1561
|
+
var dropLatency = 1 ;
|
|
1536
1562
|
var dropNumber = EventsDroppedAtOneTime;
|
|
1537
|
-
if (evtLatency ===
|
|
1538
|
-
dropLatency =
|
|
1563
|
+
if (evtLatency === 4 ) {
|
|
1564
|
+
dropLatency = 4 ;
|
|
1539
1565
|
dropNumber = 1;
|
|
1540
1566
|
}
|
|
1541
1567
|
eventDropped = true;
|
|
@@ -1553,7 +1579,7 @@
|
|
|
1553
1579
|
_setAutoLimits();
|
|
1554
1580
|
var doFlush = _queueSize > eventLimit;
|
|
1555
1581
|
if (!doFlush && _autoFlushBatchLimit > 0) {
|
|
1556
|
-
for (var latency =
|
|
1582
|
+
for (var latency = 1 ; !doFlush && latency <= 3 ; latency++) {
|
|
1557
1583
|
var batchQueue = _batchQueues[latency];
|
|
1558
1584
|
if (batchQueue && batchQueue.batches) {
|
|
1559
1585
|
_1dsCoreJs.arrForEach(batchQueue.batches, function (theBatch) {
|
|
@@ -1566,11 +1592,6 @@
|
|
|
1566
1592
|
}
|
|
1567
1593
|
_performAutoFlush(true, doFlush);
|
|
1568
1594
|
};
|
|
1569
|
-
_self.teardown = function () {
|
|
1570
|
-
_releaseAllQueues(2 , 2 );
|
|
1571
|
-
_isTeardownCalled = true;
|
|
1572
|
-
_httpManager.teardown();
|
|
1573
|
-
};
|
|
1574
1595
|
_self.pause = function () {
|
|
1575
1596
|
_clearScheduledTimer();
|
|
1576
1597
|
_paused = true;
|
|
@@ -1612,7 +1633,7 @@
|
|
|
1612
1633
|
_clearScheduledTimer();
|
|
1613
1634
|
sendReason = sendReason || 1 ;
|
|
1614
1635
|
if (async) {
|
|
1615
|
-
_queueBatches(
|
|
1636
|
+
_queueBatches(1 , 0 , sendReason);
|
|
1616
1637
|
_resetQueueCounts();
|
|
1617
1638
|
if (_flushCallbackTimerId == null) {
|
|
1618
1639
|
_flushCallbackTimerId = _createTimer(function () {
|
|
@@ -1624,7 +1645,7 @@
|
|
|
1624
1645
|
}
|
|
1625
1646
|
}
|
|
1626
1647
|
else {
|
|
1627
|
-
_sendEventsForLatencyAndAbove(
|
|
1648
|
+
_sendEventsForLatencyAndAbove(1 , 1 , sendReason);
|
|
1628
1649
|
if (callback !== null && callback !== undefined) {
|
|
1629
1650
|
callback();
|
|
1630
1651
|
}
|
|
@@ -1659,7 +1680,7 @@
|
|
|
1659
1680
|
if (immediateTimeOut >= 0) {
|
|
1660
1681
|
_immediateTimerId = _createTimer(function () {
|
|
1661
1682
|
_immediateTimerId = null;
|
|
1662
|
-
_sendEventsForLatencyAndAbove(
|
|
1683
|
+
_sendEventsForLatencyAndAbove(4 , 0 , 1 );
|
|
1663
1684
|
_scheduleTimer();
|
|
1664
1685
|
}, immediateTimeOut);
|
|
1665
1686
|
}
|
|
@@ -1669,7 +1690,7 @@
|
|
|
1669
1690
|
if (_hasEvents()) {
|
|
1670
1691
|
_scheduledTimerId = _createTimer(function () {
|
|
1671
1692
|
_scheduledTimerId = null;
|
|
1672
|
-
_sendEventsForLatencyAndAbove(_timerCount === 0 ?
|
|
1693
|
+
_sendEventsForLatencyAndAbove(_timerCount === 0 ? 3 : 1 , 0 , 1 );
|
|
1673
1694
|
_timerCount++;
|
|
1674
1695
|
_timerCount %= 2;
|
|
1675
1696
|
_scheduleTimer();
|
|
@@ -1694,13 +1715,53 @@
|
|
|
1694
1715
|
_scheduleTimer();
|
|
1695
1716
|
}
|
|
1696
1717
|
};
|
|
1718
|
+
function _initDefaults() {
|
|
1719
|
+
_config = null;
|
|
1720
|
+
_isTeardownCalled = false;
|
|
1721
|
+
_flushCallbackQueue = [];
|
|
1722
|
+
_flushCallbackTimerId = null;
|
|
1723
|
+
_paused = false;
|
|
1724
|
+
_immediateQueueSize = 0;
|
|
1725
|
+
_immediateQueueSizeLimit = 500;
|
|
1726
|
+
_queueSize = 0;
|
|
1727
|
+
_queueSizeLimit = 10000;
|
|
1728
|
+
_profiles = {};
|
|
1729
|
+
_currentProfile = RT_PROFILE;
|
|
1730
|
+
_scheduledTimerId = null;
|
|
1731
|
+
_immediateTimerId = null;
|
|
1732
|
+
_currentBackoffCount = 0;
|
|
1733
|
+
_timerCount = 0;
|
|
1734
|
+
_xhrOverride = null;
|
|
1735
|
+
_batchQueues = {};
|
|
1736
|
+
_autoFlushEventsLimit = undefined;
|
|
1737
|
+
_autoFlushBatchLimit = 0;
|
|
1738
|
+
_delayedBatchSendLatency = -1;
|
|
1739
|
+
_delayedBatchReason = null;
|
|
1740
|
+
_optimizeObject = true;
|
|
1741
|
+
_isPageUnloadTriggered = false;
|
|
1742
|
+
_disableXhrSync = false;
|
|
1743
|
+
_maxEventSendAttempts = MaxSendAttempts;
|
|
1744
|
+
_maxUnloadEventSendAttempts = MaxSyncUnloadSendAttempts;
|
|
1745
|
+
_evtNamespace = null;
|
|
1746
|
+
_httpManager = new HttpManager(MaxNumberEventPerBatch, MaxConnections, MaxRequestRetriesBeforeBackoff, {
|
|
1747
|
+
requeue: _requeueEvents,
|
|
1748
|
+
send: _sendingEvent,
|
|
1749
|
+
sent: _eventsSentEvent,
|
|
1750
|
+
drop: _eventsDropped,
|
|
1751
|
+
rspFail: _eventsResponseFail,
|
|
1752
|
+
oth: _otherEvent
|
|
1753
|
+
});
|
|
1754
|
+
_initializeProfiles();
|
|
1755
|
+
_clearQueues();
|
|
1756
|
+
_setAutoLimits();
|
|
1757
|
+
}
|
|
1697
1758
|
function _createTimer(theTimerFunc, timeOut) {
|
|
1698
1759
|
if (timeOut === 0 && _currentBackoffCount) {
|
|
1699
1760
|
timeOut = 1;
|
|
1700
1761
|
}
|
|
1701
1762
|
var timerMultiplier = 1000;
|
|
1702
1763
|
if (_currentBackoffCount) {
|
|
1703
|
-
timerMultiplier =
|
|
1764
|
+
timerMultiplier = retryPolicyGetMillisToBackoffForRetry(_currentBackoffCount - 1);
|
|
1704
1765
|
}
|
|
1705
1766
|
return _self._setTimeoutOverride(theTimerFunc, timeOut * timerMultiplier);
|
|
1706
1767
|
}
|
|
@@ -1718,23 +1779,23 @@
|
|
|
1718
1779
|
_flushCallbackTimerId = null;
|
|
1719
1780
|
}
|
|
1720
1781
|
if (!_paused) {
|
|
1721
|
-
_sendEventsForLatencyAndAbove(
|
|
1782
|
+
_sendEventsForLatencyAndAbove(1 , sendType, sendReason);
|
|
1722
1783
|
}
|
|
1723
1784
|
}
|
|
1724
1785
|
function _clearQueues() {
|
|
1725
|
-
_batchQueues[
|
|
1786
|
+
_batchQueues[4 ] = {
|
|
1726
1787
|
batches: [],
|
|
1727
1788
|
iKeyMap: {}
|
|
1728
1789
|
};
|
|
1729
|
-
_batchQueues[
|
|
1790
|
+
_batchQueues[3 ] = {
|
|
1730
1791
|
batches: [],
|
|
1731
1792
|
iKeyMap: {}
|
|
1732
1793
|
};
|
|
1733
|
-
_batchQueues[
|
|
1794
|
+
_batchQueues[2 ] = {
|
|
1734
1795
|
batches: [],
|
|
1735
1796
|
iKeyMap: {}
|
|
1736
1797
|
};
|
|
1737
|
-
_batchQueues[
|
|
1798
|
+
_batchQueues[1 ] = {
|
|
1738
1799
|
batches: [],
|
|
1739
1800
|
iKeyMap: {}
|
|
1740
1801
|
};
|
|
@@ -1742,7 +1803,7 @@
|
|
|
1742
1803
|
function _getEventBatch(iKey, latency, create) {
|
|
1743
1804
|
var batchQueue = _batchQueues[latency];
|
|
1744
1805
|
if (!batchQueue) {
|
|
1745
|
-
latency =
|
|
1806
|
+
latency = 1 ;
|
|
1746
1807
|
batchQueue = _batchQueues[latency];
|
|
1747
1808
|
}
|
|
1748
1809
|
var eventBatch = batchQueue.iKeyMap[iKey];
|
|
@@ -1770,7 +1831,7 @@
|
|
|
1770
1831
|
var latency = event.latency;
|
|
1771
1832
|
var eventBatch = _getEventBatch(event.iKey, latency, true);
|
|
1772
1833
|
if (eventBatch.addEvent(event)) {
|
|
1773
|
-
if (latency !==
|
|
1834
|
+
if (latency !== 4 ) {
|
|
1774
1835
|
_queueSize++;
|
|
1775
1836
|
if (append && event.sendAttempt === 0) {
|
|
1776
1837
|
_performAutoFlush(!event.sync, _autoFlushBatchLimit > 0 && eventBatch.count() >= _autoFlushBatchLimit);
|
|
@@ -1790,7 +1851,7 @@
|
|
|
1790
1851
|
var droppedEvents = eventBatch.split(0, dropNumber);
|
|
1791
1852
|
var droppedCount = droppedEvents.count();
|
|
1792
1853
|
if (droppedCount > 0) {
|
|
1793
|
-
if (currentLatency ===
|
|
1854
|
+
if (currentLatency === 4 ) {
|
|
1794
1855
|
_immediateQueueSize -= droppedCount;
|
|
1795
1856
|
}
|
|
1796
1857
|
else {
|
|
@@ -1812,7 +1873,7 @@
|
|
|
1812
1873
|
var batchQueue = _batchQueues[latency];
|
|
1813
1874
|
if (batchQueue && batchQueue.batches) {
|
|
1814
1875
|
_1dsCoreJs.arrForEach(batchQueue.batches, function (theBatch) {
|
|
1815
|
-
if (latency ===
|
|
1876
|
+
if (latency === 4 ) {
|
|
1816
1877
|
immediateQueue += theBatch.count();
|
|
1817
1878
|
}
|
|
1818
1879
|
else {
|
|
@@ -1821,7 +1882,7 @@
|
|
|
1821
1882
|
});
|
|
1822
1883
|
}
|
|
1823
1884
|
};
|
|
1824
|
-
for (var latency =
|
|
1885
|
+
for (var latency = 1 ; latency <= 4 ; latency++) {
|
|
1825
1886
|
_loop_1(latency);
|
|
1826
1887
|
}
|
|
1827
1888
|
_queueSize = normalQueue;
|
|
@@ -1833,7 +1894,7 @@
|
|
|
1833
1894
|
if (!isAsync || _httpManager.canSendRequest()) {
|
|
1834
1895
|
_1dsCoreJs.doPerf(_self.core, function () { return "PostChannel._queueBatches"; }, function () {
|
|
1835
1896
|
var droppedEvents = [];
|
|
1836
|
-
var latencyToProcess =
|
|
1897
|
+
var latencyToProcess = 4 ;
|
|
1837
1898
|
while (latencyToProcess >= latency) {
|
|
1838
1899
|
var batchQueue = _batchQueues[latencyToProcess];
|
|
1839
1900
|
if (batchQueue && batchQueue.batches && batchQueue.batches.length > 0) {
|
|
@@ -1844,7 +1905,7 @@
|
|
|
1844
1905
|
else {
|
|
1845
1906
|
eventsQueued = eventsQueued || (theBatch && theBatch.count() > 0);
|
|
1846
1907
|
}
|
|
1847
|
-
if (latencyToProcess ===
|
|
1908
|
+
if (latencyToProcess === 4 ) {
|
|
1848
1909
|
_immediateQueueSize -= theBatch.count();
|
|
1849
1910
|
}
|
|
1850
1911
|
else {
|
|
@@ -1872,7 +1933,7 @@
|
|
|
1872
1933
|
return eventsQueued;
|
|
1873
1934
|
}
|
|
1874
1935
|
function _flushImpl(callback, sendReason) {
|
|
1875
|
-
_sendEventsForLatencyAndAbove(
|
|
1936
|
+
_sendEventsForLatencyAndAbove(1 , 0 , sendReason);
|
|
1876
1937
|
_waitForIdleManager(function () {
|
|
1877
1938
|
if (callback) {
|
|
1878
1939
|
callback();
|
|
@@ -1921,7 +1982,7 @@
|
|
|
1921
1982
|
_1dsCoreJs.arrForEach(theBatch.events(), function (theEvent) {
|
|
1922
1983
|
if (theEvent) {
|
|
1923
1984
|
if (theEvent.sync) {
|
|
1924
|
-
theEvent.latency =
|
|
1985
|
+
theEvent.latency = 4 ;
|
|
1925
1986
|
theEvent.sync = false;
|
|
1926
1987
|
}
|
|
1927
1988
|
if (theEvent.sendAttempt < maxSendAttempts) {
|
|
@@ -1950,7 +2011,7 @@
|
|
|
1950
2011
|
notifyFunc.apply(manager, theArgs);
|
|
1951
2012
|
}
|
|
1952
2013
|
catch (e) {
|
|
1953
|
-
_self.diagLog()
|
|
2014
|
+
_1dsCoreJs._throwInternal(_self.diagLog(), 1 , 74 , evtName + " notification failed: " + e);
|
|
1954
2015
|
}
|
|
1955
2016
|
}
|
|
1956
2017
|
}
|