@microsoft/1ds-post-js 3.1.8 → 3.1.11
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 +124 -5
- package/bundle/{ms.post-3.1.8.gbl.js → ms.post-3.1.11.gbl.js} +353 -172
- package/bundle/ms.post-3.1.11.gbl.js.map +1 -0
- package/bundle/ms.post-3.1.11.gbl.min.js +7 -0
- package/bundle/ms.post-3.1.11.gbl.min.js.map +1 -0
- package/bundle/ms.post-3.1.11.integrity.json +46 -0
- package/bundle/{ms.post-3.1.8.js → ms.post-3.1.11.js} +353 -172
- package/bundle/ms.post-3.1.11.js.map +1 -0
- package/bundle/ms.post-3.1.11.min.js +7 -0
- package/bundle/ms.post-3.1.11.min.js.map +1 -0
- package/bundle/ms.post.gbl.js +352 -171
- 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 +352 -171
- 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 +238 -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.d.ts +25 -0
- package/dist-esm/src/Constants.js +31 -0
- package/dist-esm/src/Constants.js.map +1 -0
- package/dist-esm/src/DataModels.d.ts +55 -0
- package/dist-esm/src/DataModels.js +1 -1
- package/dist-esm/src/EventBatch.d.ts +5 -2
- package/dist-esm/src/EventBatch.js +35 -15
- package/dist-esm/src/EventBatch.js.map +1 -1
- package/dist-esm/src/HttpManager.d.ts +2 -2
- package/dist-esm/src/HttpManager.js +172 -85
- 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.js +55 -31
- package/dist-esm/src/PostChannel.js.map +1 -1
- package/dist-esm/src/RetryPolicy.js +1 -1
- package/dist-esm/src/Serializer.js +1 -1
- package/dist-esm/src/typings/XDomainRequest.js +1 -1
- package/package.json +3 -3
- package/src/Constants.ts +28 -0
- package/src/DataModels.ts +68 -0
- package/src/EventBatch.ts +47 -14
- package/src/HttpManager.ts +206 -84
- package/src/PostChannel.ts +60 -31
- package/bundle/ms.post-3.1.8.gbl.js.map +0 -1
- package/bundle/ms.post-3.1.8.gbl.min.js +0 -7
- package/bundle/ms.post-3.1.8.gbl.min.js.map +0 -1
- package/bundle/ms.post-3.1.8.integrity.json +0 -46
- package/bundle/ms.post-3.1.8.js.map +0 -1
- package/bundle/ms.post-3.1.8.min.js +0 -7
- package/bundle/ms.post-3.1.8.min.js.map +0 -1
package/dist/ms.post.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* 1DS JS SDK POST plugin, 3.1.
|
|
2
|
+
* 1DS JS SDK POST plugin, 3.1.11
|
|
3
3
|
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
4
|
* (Microsoft Internal Only)
|
|
5
5
|
*/
|
|
@@ -17,42 +17,82 @@
|
|
|
17
17
|
var NRT_PROFILE = "NEAR_REAL_TIME";
|
|
18
18
|
var BE_PROFILE = "BEST_EFFORT";
|
|
19
19
|
|
|
20
|
+
var Method = "POST";
|
|
21
|
+
var DisabledPropertyName = "Microsoft_ApplicationInsights_BypassAjaxInstrumentation";
|
|
22
|
+
var strDropped = "drop";
|
|
23
|
+
var strSending = "send";
|
|
24
|
+
var strRequeue = "requeue";
|
|
25
|
+
var strResponseFail = "rspFail";
|
|
26
|
+
var strOther = "oth";
|
|
27
|
+
var defaultCacheControl = "no-cache, no-store";
|
|
28
|
+
var defaultContentType = "application/x-json-stream";
|
|
29
|
+
var strCacheControl = "cache-control";
|
|
30
|
+
var strContentTypeHeader = "content-type";
|
|
31
|
+
var strKillTokensHeader = "kill-tokens";
|
|
32
|
+
var strKillDurationHeader = "kill-duration";
|
|
33
|
+
var strKillDurationSecondsHeader = "kill-duration-seconds";
|
|
34
|
+
var strTimeDeltaHeader = "time-delta-millis";
|
|
35
|
+
var strClientVersion = "client-version";
|
|
36
|
+
var strClientId = "client-id";
|
|
37
|
+
var strTimeDeltaToApply = "time-delta-to-apply-millis";
|
|
38
|
+
var strUploadTime = "upload-time";
|
|
39
|
+
var strApiKey = "apikey";
|
|
40
|
+
var strMsaDeviceTicket = "AuthMsaDeviceTicket";
|
|
41
|
+
var strNoResponseBody = "NoResponseBody";
|
|
42
|
+
var strMsfpc = "msfpc";
|
|
43
|
+
|
|
44
|
+
function _getEventMsfpc(theEvent) {
|
|
45
|
+
var intWeb = ((theEvent.ext || {})["intweb"]);
|
|
46
|
+
if (intWeb && _1dsCoreJs.isValueAssigned(intWeb[strMsfpc])) {
|
|
47
|
+
return intWeb[strMsfpc];
|
|
48
|
+
}
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
function _getMsfpc(theEvents) {
|
|
52
|
+
var msfpc = null;
|
|
53
|
+
for (var lp = 0; msfpc === null && lp < theEvents.length; lp++) {
|
|
54
|
+
msfpc = _getEventMsfpc(theEvents[lp]);
|
|
55
|
+
}
|
|
56
|
+
return msfpc;
|
|
57
|
+
}
|
|
20
58
|
var EventBatch = /** @class */ (function () {
|
|
21
59
|
function EventBatch(iKey, addEvents) {
|
|
22
60
|
var events = addEvents ? [].concat(addEvents) : [];
|
|
23
61
|
var _self = this;
|
|
62
|
+
var _msfpc = _getMsfpc(events);
|
|
24
63
|
_self.iKey = function () {
|
|
25
64
|
return iKey;
|
|
26
65
|
};
|
|
66
|
+
_self.Msfpc = function () {
|
|
67
|
+
return _msfpc || "";
|
|
68
|
+
};
|
|
27
69
|
_self.count = function () {
|
|
28
70
|
return events.length;
|
|
29
71
|
};
|
|
30
72
|
_self.events = function () {
|
|
31
73
|
return events;
|
|
32
74
|
};
|
|
33
|
-
_self.
|
|
34
|
-
if (
|
|
35
|
-
|
|
36
|
-
if (
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
events = theEvents.concat(events);
|
|
75
|
+
_self.addEvent = function (theEvent) {
|
|
76
|
+
if (theEvent) {
|
|
77
|
+
events.push(theEvent);
|
|
78
|
+
if (!_msfpc) {
|
|
79
|
+
_msfpc = _getEventMsfpc(theEvent);
|
|
41
80
|
}
|
|
42
|
-
return
|
|
81
|
+
return true;
|
|
43
82
|
}
|
|
44
|
-
return
|
|
83
|
+
return false;
|
|
45
84
|
};
|
|
46
85
|
_self.split = function (fromEvent, numEvents) {
|
|
47
|
-
var
|
|
86
|
+
var theEvents;
|
|
48
87
|
if (fromEvent < events.length) {
|
|
49
88
|
var cnt = events.length - fromEvent;
|
|
50
89
|
if (!_1dsCoreJs.isNullOrUndefined(numEvents)) {
|
|
51
90
|
cnt = numEvents < cnt ? numEvents : cnt;
|
|
52
91
|
}
|
|
53
|
-
|
|
92
|
+
theEvents = events.splice(fromEvent, cnt);
|
|
93
|
+
_msfpc = _getMsfpc(events);
|
|
54
94
|
}
|
|
55
|
-
return
|
|
95
|
+
return new EventBatch(iKey, theEvents);
|
|
56
96
|
};
|
|
57
97
|
}
|
|
58
98
|
EventBatch.create = function (iKey, theEvents) {
|
|
@@ -419,21 +459,8 @@
|
|
|
419
459
|
}());
|
|
420
460
|
|
|
421
461
|
var _a;
|
|
422
|
-
var
|
|
423
|
-
var
|
|
424
|
-
var strDropped = "drop";
|
|
425
|
-
var strSending = "send";
|
|
426
|
-
var strRequeue = "requeue";
|
|
427
|
-
var strResponseFail = "rspFail";
|
|
428
|
-
var strOther = "oth";
|
|
429
|
-
var defaultCacheControl = "no-cache, no-store";
|
|
430
|
-
var defaultContentType = "application/x-json-stream";
|
|
431
|
-
var strCacheControl = "cache-control";
|
|
432
|
-
var strContentTypeHeader = "content-type";
|
|
433
|
-
var strKillTokensHeader = "kill-tokens";
|
|
434
|
-
var strKillDurationHeader = "kill-duration";
|
|
435
|
-
var strKillDurationSecondsHeader = "kill-duration-seconds";
|
|
436
|
-
var strTimeDeltaHeader = "time-delta-millis";
|
|
462
|
+
var strSendAttempt = "sendAttempt";
|
|
463
|
+
var _noResponseQs = "&" + strNoResponseBody + "=true";
|
|
437
464
|
var _eventActionMap = (_a = {},
|
|
438
465
|
_a[1 ] = strRequeue,
|
|
439
466
|
_a[100 ] = strRequeue,
|
|
@@ -441,6 +468,13 @@
|
|
|
441
468
|
_a[8004 ] = strDropped,
|
|
442
469
|
_a[8003 ] = strDropped,
|
|
443
470
|
_a);
|
|
471
|
+
var _collectorQsHeaders = {};
|
|
472
|
+
var _collectorHeaderToQs = {};
|
|
473
|
+
function _addCollectorHeaderQsMapping(qsName, headerName) {
|
|
474
|
+
_collectorQsHeaders[qsName] = headerName;
|
|
475
|
+
_collectorHeaderToQs[headerName] = qsName;
|
|
476
|
+
}
|
|
477
|
+
_addCollectorHeaderQsMapping(strMsaDeviceTicket, strMsaDeviceTicket);
|
|
444
478
|
function _getResponseText(xhr) {
|
|
445
479
|
try {
|
|
446
480
|
return xhr.responseText;
|
|
@@ -467,11 +501,21 @@
|
|
|
467
501
|
}
|
|
468
502
|
return hasHeader;
|
|
469
503
|
}
|
|
504
|
+
function _addRequestDetails(details, name, value, useHeaders) {
|
|
505
|
+
if (name && value && value.length > 0) {
|
|
506
|
+
if (useHeaders && _collectorQsHeaders[name]) {
|
|
507
|
+
details.hdrs[_collectorQsHeaders[name]] = value;
|
|
508
|
+
details.useHdrs = true;
|
|
509
|
+
}
|
|
510
|
+
else {
|
|
511
|
+
details.url += "&" + name + "=" + value;
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
}
|
|
470
515
|
var HttpManager = /** @class */ (function () {
|
|
471
|
-
function HttpManager(maxEventsPerBatch, maxConnections,
|
|
516
|
+
function HttpManager(maxEventsPerBatch, maxConnections, maxRequestRetriesBeforeBackoff, actions) {
|
|
472
517
|
this._responseHandlers = [];
|
|
473
|
-
var _urlString = "?cors=true&" + strContentTypeHeader.toLowerCase() + "=" + defaultContentType
|
|
474
|
-
+ _1dsCoreJs.FullVersionString;
|
|
518
|
+
var _urlString = "?cors=true&" + strContentTypeHeader.toLowerCase() + "=" + defaultContentType;
|
|
475
519
|
var _killSwitch = new KillSwitch();
|
|
476
520
|
var _paused = false;
|
|
477
521
|
var _clockSkewManager = new ClockSkewManager();
|
|
@@ -488,6 +532,9 @@
|
|
|
488
532
|
var _enableEventTimings = false;
|
|
489
533
|
var _cookieMgr;
|
|
490
534
|
var _isUnloading = false;
|
|
535
|
+
var _useHeaders = false;
|
|
536
|
+
var _xhrTimeout;
|
|
537
|
+
var _disableXhrSync;
|
|
491
538
|
dynamicProto__default(HttpManager, this, function (_self) {
|
|
492
539
|
var _sendCredentials = true;
|
|
493
540
|
_self.initialize = function (endpointUrl, core, postChannel, httpInterface, channelConfig) {
|
|
@@ -496,6 +543,7 @@
|
|
|
496
543
|
channelConfig = {};
|
|
497
544
|
}
|
|
498
545
|
_urlString = endpointUrl + _urlString;
|
|
546
|
+
_useHeaders = !_1dsCoreJs.isUndefined(channelConfig.avoidOptions) ? !channelConfig.avoidOptions : false;
|
|
499
547
|
_core = core;
|
|
500
548
|
_cookieMgr = core.getCookieMgr();
|
|
501
549
|
_enableEventTimings = !_core.config.disableEventTimings;
|
|
@@ -506,9 +554,13 @@
|
|
|
506
554
|
if (!_1dsCoreJs.isUndefined(channelConfig.enableCompoundKey)) {
|
|
507
555
|
enableCompoundKey = !!channelConfig.enableCompoundKey;
|
|
508
556
|
}
|
|
557
|
+
_xhrTimeout = channelConfig.xhrTimeout;
|
|
558
|
+
_disableXhrSync = channelConfig.disableXhrSync;
|
|
509
559
|
_useBeacons = !_1dsCoreJs.isReactNative();
|
|
510
560
|
_serializer = new Serializer(_core, valueSanitizer, stringifyObjects, enableCompoundKey);
|
|
511
561
|
var syncHttpInterface = httpInterface;
|
|
562
|
+
var beaconHttpInterface = channelConfig.alwaysUseXhrOverride ? httpInterface : null;
|
|
563
|
+
var fetchSyncHttpInterface = channelConfig.alwaysUseXhrOverride ? httpInterface : null;
|
|
512
564
|
if (!httpInterface) {
|
|
513
565
|
_customHttpInterface = false;
|
|
514
566
|
var location_1 = _1dsCoreJs.getLocation();
|
|
@@ -540,8 +592,8 @@
|
|
|
540
592
|
_sendInterfaces = (_a = {},
|
|
541
593
|
_a[0 ] = httpInterface,
|
|
542
594
|
_a[1 ] = syncHttpInterface || _getSenderInterface([1 , 2 , 3 ], true),
|
|
543
|
-
_a[2 ] = _getSenderInterface([3 , 2
|
|
544
|
-
_a[3 ] = _getSenderInterface([2 , 3
|
|
595
|
+
_a[2 ] = beaconHttpInterface || _getSenderInterface([3 , 2 ], true) || syncHttpInterface || _getSenderInterface([1 ], true),
|
|
596
|
+
_a[3 ] = fetchSyncHttpInterface || _getSenderInterface([2 , 3 ], true) || syncHttpInterface || _getSenderInterface([1 ], true),
|
|
545
597
|
_a);
|
|
546
598
|
};
|
|
547
599
|
function _getSenderInterface(transports, syncSupport) {
|
|
@@ -581,6 +633,9 @@
|
|
|
581
633
|
function _xdrSendPost(payload, oncomplete, sync) {
|
|
582
634
|
var xdr = new XDomainRequest();
|
|
583
635
|
xdr.open(Method, payload.urlString);
|
|
636
|
+
if (payload.timeout) {
|
|
637
|
+
xdr.timeout = payload.timeout;
|
|
638
|
+
}
|
|
584
639
|
xdr.onload = function () {
|
|
585
640
|
var response = _getResponseText(xdr);
|
|
586
641
|
_doOnComplete(oncomplete, 200, {}, response);
|
|
@@ -604,6 +659,9 @@
|
|
|
604
659
|
}
|
|
605
660
|
function _fetchSendPost(payload, oncomplete, sync) {
|
|
606
661
|
var _a;
|
|
662
|
+
var theUrl = payload.urlString;
|
|
663
|
+
var ignoreResponse = false;
|
|
664
|
+
var responseHandled = false;
|
|
607
665
|
var requestInit = (_a = {
|
|
608
666
|
body: payload.data,
|
|
609
667
|
method: Method
|
|
@@ -612,6 +670,10 @@
|
|
|
612
670
|
_a);
|
|
613
671
|
if (sync) {
|
|
614
672
|
requestInit.keepalive = true;
|
|
673
|
+
if (payload._sendReason === 2 ) {
|
|
674
|
+
ignoreResponse = true;
|
|
675
|
+
theUrl += _noResponseQs;
|
|
676
|
+
}
|
|
615
677
|
}
|
|
616
678
|
if (_sendCredentials) {
|
|
617
679
|
requestInit.credentials = "include";
|
|
@@ -619,7 +681,7 @@
|
|
|
619
681
|
if (payload.headers && _1dsCoreJs.objKeys(payload.headers).length > 0) {
|
|
620
682
|
requestInit.headers = payload.headers;
|
|
621
683
|
}
|
|
622
|
-
fetch(
|
|
684
|
+
fetch(theUrl, requestInit).then(function (response) {
|
|
623
685
|
var headerMap = {};
|
|
624
686
|
var responseText = "";
|
|
625
687
|
if (response.headers) {
|
|
@@ -632,13 +694,32 @@
|
|
|
632
694
|
responseText = text;
|
|
633
695
|
});
|
|
634
696
|
}
|
|
635
|
-
|
|
636
|
-
|
|
697
|
+
if (!responseHandled) {
|
|
698
|
+
responseHandled = true;
|
|
699
|
+
_doOnComplete(oncomplete, response.status, headerMap, responseText);
|
|
700
|
+
_handleCollectorResponse(responseText);
|
|
701
|
+
}
|
|
637
702
|
})["catch"](function (error) {
|
|
638
|
-
|
|
703
|
+
if (!responseHandled) {
|
|
704
|
+
responseHandled = true;
|
|
705
|
+
_doOnComplete(oncomplete, 0, {});
|
|
706
|
+
}
|
|
639
707
|
});
|
|
708
|
+
if (ignoreResponse && !responseHandled) {
|
|
709
|
+
responseHandled = true;
|
|
710
|
+
_doOnComplete(oncomplete, 200, {});
|
|
711
|
+
}
|
|
712
|
+
if (!responseHandled && payload.timeout > 0) {
|
|
713
|
+
_postManager._setTimeoutOverride(function () {
|
|
714
|
+
if (!responseHandled) {
|
|
715
|
+
responseHandled = true;
|
|
716
|
+
_doOnComplete(oncomplete, 500, {});
|
|
717
|
+
}
|
|
718
|
+
}, payload.timeout);
|
|
719
|
+
}
|
|
640
720
|
}
|
|
641
721
|
function _xhrSendPost(payload, oncomplete, sync) {
|
|
722
|
+
var theUrl = payload.urlString;
|
|
642
723
|
function _appendHeader(theHeaders, xhr, name) {
|
|
643
724
|
if (!theHeaders[name] && xhr && xhr.getResponseHeader) {
|
|
644
725
|
var value = xhr.getResponseHeader(name);
|
|
@@ -663,22 +744,25 @@
|
|
|
663
744
|
function xhrComplete(xhr, responseTxt) {
|
|
664
745
|
_doOnComplete(oncomplete, xhr.status, _getAllResponseHeaders(xhr), responseTxt);
|
|
665
746
|
}
|
|
666
|
-
|
|
747
|
+
if (sync && payload.disableXhrSync) {
|
|
748
|
+
sync = false;
|
|
749
|
+
}
|
|
750
|
+
var xhrRequest = _1dsCoreJs.openXhr(Method, theUrl, _sendCredentials, true, sync, payload.timeout);
|
|
667
751
|
_1dsCoreJs.objForEachKey(payload.headers, function (name, value) {
|
|
668
|
-
|
|
752
|
+
xhrRequest.setRequestHeader(name, value);
|
|
669
753
|
});
|
|
670
|
-
|
|
671
|
-
var response = _getResponseText(
|
|
672
|
-
xhrComplete(
|
|
754
|
+
xhrRequest.onload = function () {
|
|
755
|
+
var response = _getResponseText(xhrRequest);
|
|
756
|
+
xhrComplete(xhrRequest, response);
|
|
673
757
|
_handleCollectorResponse(response);
|
|
674
758
|
};
|
|
675
|
-
|
|
676
|
-
xhrComplete(
|
|
759
|
+
xhrRequest.onerror = function () {
|
|
760
|
+
xhrComplete(xhrRequest);
|
|
677
761
|
};
|
|
678
|
-
|
|
679
|
-
xhrComplete(
|
|
762
|
+
xhrRequest.ontimeout = function () {
|
|
763
|
+
xhrComplete(xhrRequest);
|
|
680
764
|
};
|
|
681
|
-
|
|
765
|
+
xhrRequest.send(payload.data);
|
|
682
766
|
}
|
|
683
767
|
function _doOnComplete(oncomplete, status, headers, response) {
|
|
684
768
|
try {
|
|
@@ -692,16 +776,17 @@
|
|
|
692
776
|
var internalPayloadData = payload;
|
|
693
777
|
var status = 200;
|
|
694
778
|
var thePayload = internalPayloadData._thePayload;
|
|
779
|
+
var theUrl = payload.urlString + _noResponseQs;
|
|
695
780
|
try {
|
|
696
781
|
var nav_1 = _1dsCoreJs.getNavigator();
|
|
697
|
-
if (!nav_1.sendBeacon(
|
|
782
|
+
if (!nav_1.sendBeacon(theUrl, payload.data)) {
|
|
698
783
|
if (thePayload) {
|
|
699
784
|
var droppedBatches_1 = [];
|
|
700
785
|
_1dsCoreJs.arrForEach(thePayload.batches, function (theBatch) {
|
|
701
786
|
if (droppedBatches_1 && theBatch && theBatch.count() > 0) {
|
|
702
787
|
var theEvents = theBatch.events();
|
|
703
788
|
for (var lp = 0; lp < theEvents.length; lp++) {
|
|
704
|
-
if (!nav_1.sendBeacon(
|
|
789
|
+
if (!nav_1.sendBeacon(theUrl, _serializer.getEventBlob(theEvents[lp]))) {
|
|
705
790
|
droppedBatches_1.push(theBatch.split(lp));
|
|
706
791
|
break;
|
|
707
792
|
}
|
|
@@ -886,8 +971,16 @@
|
|
|
886
971
|
_postManager.diagLog().throwInternal(_1dsCoreJs.LoggingSeverity.WARNING, _1dsCoreJs._ExtendedInternalMessageId.CannotSerializeObject, "Unexpected Exception sending batch: " + _1dsCoreJs.dumpObj(ex));
|
|
887
972
|
}
|
|
888
973
|
}
|
|
889
|
-
function
|
|
890
|
-
var
|
|
974
|
+
function _buildRequestDetails(thePayload, useHeaders) {
|
|
975
|
+
var requestDetails = {
|
|
976
|
+
url: _urlString,
|
|
977
|
+
hdrs: {},
|
|
978
|
+
useHdrs: false
|
|
979
|
+
};
|
|
980
|
+
requestDetails.hdrs = _1dsCoreJs.extend(requestDetails.hdrs, _headers);
|
|
981
|
+
requestDetails.useHdrs = (_1dsCoreJs.objKeys(requestDetails.hdrs).length > 0);
|
|
982
|
+
_addRequestDetails(requestDetails, strClientId, "NO_AUTH", useHeaders);
|
|
983
|
+
_addRequestDetails(requestDetails, strClientVersion, _1dsCoreJs.FullVersionString, useHeaders);
|
|
891
984
|
var apiQsKeys = "";
|
|
892
985
|
_1dsCoreJs.arrForEach(thePayload.apiKeys, function (apiKey) {
|
|
893
986
|
if (apiQsKeys.length > 0) {
|
|
@@ -895,27 +988,25 @@
|
|
|
895
988
|
}
|
|
896
989
|
apiQsKeys += apiKey;
|
|
897
990
|
});
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
}
|
|
901
|
-
urlString += "&upload-time=" + _1dsCoreJs.dateNow().toString();
|
|
991
|
+
_addRequestDetails(requestDetails, strApiKey, apiQsKeys, useHeaders);
|
|
992
|
+
_addRequestDetails(requestDetails, strUploadTime, _1dsCoreJs.dateNow().toString(), useHeaders);
|
|
902
993
|
var msfpc = _getMsfpc(thePayload);
|
|
903
994
|
if (_1dsCoreJs.isValueAssigned(msfpc)) {
|
|
904
|
-
|
|
995
|
+
requestDetails.url += "&ext.intweb.msfpc=" + msfpc;
|
|
905
996
|
}
|
|
906
997
|
if (_clockSkewManager.shouldAddClockSkewHeaders()) {
|
|
907
|
-
|
|
998
|
+
_addRequestDetails(requestDetails, strTimeDeltaToApply, _clockSkewManager.getClockSkewHeaderValue(), useHeaders);
|
|
908
999
|
}
|
|
909
1000
|
if (_core.getWParam) {
|
|
910
1001
|
var wParam = _core.getWParam();
|
|
911
1002
|
if (wParam >= 0) {
|
|
912
|
-
|
|
1003
|
+
requestDetails.url += "&w=" + wParam;
|
|
913
1004
|
}
|
|
914
1005
|
}
|
|
915
1006
|
for (var i = 0; i < _queryStringParameters.length; i++) {
|
|
916
|
-
|
|
1007
|
+
requestDetails.url += "&" + _queryStringParameters[i].name + "=" + _queryStringParameters[i].value;
|
|
917
1008
|
}
|
|
918
|
-
return
|
|
1009
|
+
return requestDetails;
|
|
919
1010
|
}
|
|
920
1011
|
function _canUseSendBeaconApi() {
|
|
921
1012
|
return !_customHttpInterface && _useBeacons && _1dsCoreJs.isBeaconsSupported();
|
|
@@ -926,9 +1017,18 @@
|
|
|
926
1017
|
}
|
|
927
1018
|
function _doPayloadSend(thePayload, serializationStart, serializationCompleted, sendReason) {
|
|
928
1019
|
if (thePayload && thePayload.payloadBlob && thePayload.payloadBlob.length > 0) {
|
|
929
|
-
var
|
|
1020
|
+
var useSendHook_1 = !!_self.sendHook;
|
|
1021
|
+
var sendInterface_1 = _sendInterfaces[thePayload.sendType];
|
|
1022
|
+
if (!_isBeaconPayload(thePayload.sendType) && thePayload.isBeacon && thePayload.sendReason === 2 ) {
|
|
1023
|
+
sendInterface_1 = _sendInterfaces[2 ] || _sendInterfaces[3 ] || sendInterface_1;
|
|
1024
|
+
}
|
|
1025
|
+
var useHeaders_1 = _useHeaders;
|
|
1026
|
+
if (thePayload.isBeacon || sendInterface_1._transport === 3 ) {
|
|
1027
|
+
useHeaders_1 = false;
|
|
1028
|
+
}
|
|
1029
|
+
var requestDetails_1 = _buildRequestDetails(thePayload, useHeaders_1);
|
|
1030
|
+
useHeaders_1 = useHeaders_1 || requestDetails_1.useHdrs;
|
|
930
1031
|
var sendEventStart_1 = _1dsCoreJs.getTime();
|
|
931
|
-
var strSendAttempt_1 = "sendAttempt";
|
|
932
1032
|
_1dsCoreJs.doPerf(_core, function () { return "HttpManager:_doPayloadSend"; }, function () {
|
|
933
1033
|
for (var batchLp = 0; batchLp < thePayload.batches.length; batchLp++) {
|
|
934
1034
|
var theBatch = thePayload.batches[batchLp];
|
|
@@ -941,30 +1041,31 @@
|
|
|
941
1041
|
_setTimingValue(timings, "serializationStart", serializationStart);
|
|
942
1042
|
_setTimingValue(timings, "serializationCompleted", serializationCompleted);
|
|
943
1043
|
}
|
|
944
|
-
telemetryItem[
|
|
1044
|
+
telemetryItem[strSendAttempt] > 0 ? telemetryItem[strSendAttempt]++ : telemetryItem[strSendAttempt] = 1;
|
|
945
1045
|
}
|
|
946
1046
|
}
|
|
947
1047
|
_sendBatchesNotification(thePayload.batches, (1000 + (sendReason || 0 )), thePayload.sendType, true);
|
|
948
1048
|
var orgPayloadData = {
|
|
949
1049
|
data: thePayload.payloadBlob,
|
|
950
|
-
urlString:
|
|
951
|
-
headers:
|
|
1050
|
+
urlString: requestDetails_1.url,
|
|
1051
|
+
headers: requestDetails_1.hdrs,
|
|
952
1052
|
_thePayload: thePayload,
|
|
953
|
-
_sendReason: sendReason
|
|
1053
|
+
_sendReason: sendReason,
|
|
1054
|
+
timeout: _xhrTimeout
|
|
954
1055
|
};
|
|
955
|
-
if (!
|
|
956
|
-
orgPayloadData.
|
|
1056
|
+
if (!_1dsCoreJs.isUndefined(_disableXhrSync)) {
|
|
1057
|
+
orgPayloadData.disableXhrSync = !!_disableXhrSync;
|
|
957
1058
|
}
|
|
958
|
-
if (
|
|
959
|
-
orgPayloadData.headers
|
|
1059
|
+
if (useHeaders_1) {
|
|
1060
|
+
if (!_hasHeader(orgPayloadData.headers, strCacheControl)) {
|
|
1061
|
+
orgPayloadData.headers[strCacheControl] = defaultCacheControl;
|
|
1062
|
+
}
|
|
1063
|
+
if (!_hasHeader(orgPayloadData.headers, strContentTypeHeader)) {
|
|
1064
|
+
orgPayloadData.headers[strContentTypeHeader] = defaultContentType;
|
|
1065
|
+
}
|
|
960
1066
|
}
|
|
961
1067
|
var sender = null;
|
|
962
|
-
|
|
963
|
-
var sendInterface = _sendInterfaces[thePayload.sendType];
|
|
964
|
-
if (!_isBeaconPayload(thePayload.sendType) && thePayload.isBeacon && thePayload.sendReason === 2 ) {
|
|
965
|
-
sendInterface = _sendInterfaces[2 ] || _sendInterfaces[3 ] || sendInterface;
|
|
966
|
-
}
|
|
967
|
-
if (sendInterface) {
|
|
1068
|
+
if (sendInterface_1) {
|
|
968
1069
|
sender = function (payload) {
|
|
969
1070
|
_clockSkewManager.firstRequestSent();
|
|
970
1071
|
var onComplete = function (status, headers) {
|
|
@@ -972,7 +1073,7 @@
|
|
|
972
1073
|
};
|
|
973
1074
|
var isSync = thePayload.isTeardown || thePayload.isSync;
|
|
974
1075
|
try {
|
|
975
|
-
|
|
1076
|
+
sendInterface_1.sendPOST(payload, onComplete, isSync);
|
|
976
1077
|
if (_self.sendListener) {
|
|
977
1078
|
_self.sendListener(orgPayloadData, payload, isSync, thePayload.isBeacon);
|
|
978
1079
|
}
|
|
@@ -988,11 +1089,13 @@
|
|
|
988
1089
|
if (thePayload.sendType === 0 ) {
|
|
989
1090
|
_outstandingRequests++;
|
|
990
1091
|
}
|
|
991
|
-
if (
|
|
1092
|
+
if (useSendHook_1 && !thePayload.isBeacon && sendInterface_1._transport !== 3 ) {
|
|
992
1093
|
var hookData_1 = {
|
|
993
1094
|
data: orgPayloadData.data,
|
|
994
1095
|
urlString: orgPayloadData.urlString,
|
|
995
|
-
headers: _1dsCoreJs.extend({}, orgPayloadData.headers)
|
|
1096
|
+
headers: _1dsCoreJs.extend({}, orgPayloadData.headers),
|
|
1097
|
+
timeout: orgPayloadData.timeout,
|
|
1098
|
+
disableXhrSync: orgPayloadData.disableXhrSync
|
|
996
1099
|
};
|
|
997
1100
|
var senderCalled_1 = false;
|
|
998
1101
|
_1dsCoreJs.doPerf(_core, function () { return "HttpManager:_doPayloadSend.sendHook"; }, function () {
|
|
@@ -1057,7 +1160,7 @@
|
|
|
1057
1160
|
});
|
|
1058
1161
|
});
|
|
1059
1162
|
}
|
|
1060
|
-
if (status == 200) {
|
|
1163
|
+
if (status == 200 || status == 204) {
|
|
1061
1164
|
reason = 200 ;
|
|
1062
1165
|
return;
|
|
1063
1166
|
}
|
|
@@ -1070,7 +1173,7 @@
|
|
|
1070
1173
|
reason = 100 ;
|
|
1071
1174
|
var retryCount_1 = thePayload.retryCnt;
|
|
1072
1175
|
if (thePayload.sendType === 0 ) {
|
|
1073
|
-
if (retryCount_1 <
|
|
1176
|
+
if (retryCount_1 < maxRequestRetriesBeforeBackoff) {
|
|
1074
1177
|
isRetrying = true;
|
|
1075
1178
|
_doAction(function () {
|
|
1076
1179
|
if (thePayload.sendType === 0 ) {
|
|
@@ -1081,6 +1184,9 @@
|
|
|
1081
1184
|
}
|
|
1082
1185
|
else {
|
|
1083
1186
|
backOffTrans = true;
|
|
1187
|
+
if (_isUnloading) {
|
|
1188
|
+
reason = 8001 ;
|
|
1189
|
+
}
|
|
1084
1190
|
}
|
|
1085
1191
|
}
|
|
1086
1192
|
}
|
|
@@ -1155,12 +1261,9 @@
|
|
|
1155
1261
|
}
|
|
1156
1262
|
function _getMsfpc(thePayload) {
|
|
1157
1263
|
for (var lp = 0; lp < thePayload.batches.length; lp++) {
|
|
1158
|
-
var
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
if (_1dsCoreJs.isValueAssigned(intWeb["msfpc"])) {
|
|
1162
|
-
return encodeURIComponent(intWeb["msfpc"]);
|
|
1163
|
-
}
|
|
1264
|
+
var msfpc = thePayload.batches[lp].Msfpc();
|
|
1265
|
+
if (msfpc) {
|
|
1266
|
+
return encodeURIComponent(msfpc);
|
|
1164
1267
|
}
|
|
1165
1268
|
}
|
|
1166
1269
|
return "";
|
|
@@ -1178,8 +1281,8 @@
|
|
|
1178
1281
|
}
|
|
1179
1282
|
if (responseText) {
|
|
1180
1283
|
var response = JSON.parse(responseText);
|
|
1181
|
-
if (_1dsCoreJs.isValueAssigned(response.webResult) && _1dsCoreJs.isValueAssigned(response.webResult
|
|
1182
|
-
_cookieMgr.set("MSFPC", response.webResult
|
|
1284
|
+
if (_1dsCoreJs.isValueAssigned(response.webResult) && _1dsCoreJs.isValueAssigned(response.webResult[strMsfpc])) {
|
|
1285
|
+
_cookieMgr.set("MSFPC", response.webResult[strMsfpc], 365 * 86400);
|
|
1183
1286
|
}
|
|
1184
1287
|
}
|
|
1185
1288
|
}
|
|
@@ -1229,19 +1332,22 @@
|
|
|
1229
1332
|
var MaxNumberEventPerBatch = 500;
|
|
1230
1333
|
var EventsDroppedAtOneTime = 20;
|
|
1231
1334
|
var MaxSendAttempts = 6;
|
|
1335
|
+
var MaxSyncUnloadSendAttempts = 2;
|
|
1232
1336
|
var MaxBackoffCount = 4;
|
|
1233
1337
|
var globalContext = _1dsCoreJs.isWindowObjectAvailable ? window : undefined;
|
|
1234
1338
|
var MaxConnections = 2;
|
|
1235
|
-
var
|
|
1339
|
+
var MaxRequestRetriesBeforeBackoff = 1;
|
|
1236
1340
|
var strEventsDiscarded = "eventsDiscarded";
|
|
1237
1341
|
var strOverrideInstrumentationKey = "overrideInstrumentationKey";
|
|
1342
|
+
var strMaxEventRetryAttempts = "maxEventRetryAttempts";
|
|
1343
|
+
var strMaxUnloadEventRetryAttempts = "maxUnloadEventRetryAttempts";
|
|
1238
1344
|
var PostChannel = /** @class */ (function (_super) {
|
|
1239
1345
|
applicationinsightsShims.__extendsFn(PostChannel, _super);
|
|
1240
1346
|
function PostChannel() {
|
|
1241
1347
|
var _this = _super.call(this) || this;
|
|
1242
1348
|
_this.identifier = "PostChannel";
|
|
1243
1349
|
_this.priority = 1011;
|
|
1244
|
-
_this.version = '3.1.
|
|
1350
|
+
_this.version = '3.1.11';
|
|
1245
1351
|
var _config;
|
|
1246
1352
|
var _isTeardownCalled = false;
|
|
1247
1353
|
var _flushCallbackQueue = [];
|
|
@@ -1266,11 +1372,13 @@
|
|
|
1266
1372
|
var _delayedBatchReason;
|
|
1267
1373
|
var _optimizeObject = true;
|
|
1268
1374
|
var _isPageUnloadTriggered = false;
|
|
1375
|
+
var _maxEventSendAttempts = MaxSendAttempts;
|
|
1376
|
+
var _maxUnloadEventSendAttempts = MaxSyncUnloadSendAttempts;
|
|
1269
1377
|
dynamicProto__default(PostChannel, _this, function (_self, _base) {
|
|
1270
1378
|
_initializeProfiles();
|
|
1271
1379
|
_clearQueues();
|
|
1272
1380
|
_setAutoLimits();
|
|
1273
|
-
_httpManager = new HttpManager(MaxNumberEventPerBatch, MaxConnections,
|
|
1381
|
+
_httpManager = new HttpManager(MaxNumberEventPerBatch, MaxConnections, MaxRequestRetriesBeforeBackoff, {
|
|
1274
1382
|
requeue: _requeueEvents,
|
|
1275
1383
|
send: _sendingEvent,
|
|
1276
1384
|
sent: _eventsSentEvent,
|
|
@@ -1292,14 +1400,7 @@
|
|
|
1292
1400
|
_self._setTimeoutOverride = _config.setTimeoutOverride ? _config.setTimeoutOverride : setTimeout.bind(globalContext);
|
|
1293
1401
|
_self._clearTimeoutOverride = _config.clearTimeoutOverride ? _config.clearTimeoutOverride : clearTimeout.bind(globalContext);
|
|
1294
1402
|
_optimizeObject = !_config.disableOptimizeObj && _1dsCoreJs.isChromium();
|
|
1295
|
-
|
|
1296
|
-
extendedCore.getWParam = function () {
|
|
1297
|
-
var wparam = 0;
|
|
1298
|
-
if (_config.ignoreMc1Ms0CookieProcessing) {
|
|
1299
|
-
wparam = wparam | 2;
|
|
1300
|
-
}
|
|
1301
|
-
return wparam | existingGetWParamMethod();
|
|
1302
|
-
};
|
|
1403
|
+
_hookWParam(extendedCore);
|
|
1303
1404
|
if (_config.eventsLimitInMem > 0) {
|
|
1304
1405
|
_queueSizeLimit = _config.eventsLimitInMem;
|
|
1305
1406
|
}
|
|
@@ -1309,6 +1410,12 @@
|
|
|
1309
1410
|
if (_config.autoFlushEventsLimit > 0) {
|
|
1310
1411
|
_autoFlushEventsLimit = _config.autoFlushEventsLimit;
|
|
1311
1412
|
}
|
|
1413
|
+
if (_1dsCoreJs.isNumber(_config[strMaxEventRetryAttempts])) {
|
|
1414
|
+
_maxEventSendAttempts = _config[strMaxEventRetryAttempts];
|
|
1415
|
+
}
|
|
1416
|
+
if (_1dsCoreJs.isNumber(_config[strMaxUnloadEventRetryAttempts])) {
|
|
1417
|
+
_maxUnloadEventSendAttempts = _config[strMaxUnloadEventRetryAttempts];
|
|
1418
|
+
}
|
|
1312
1419
|
_setAutoLimits();
|
|
1313
1420
|
if (_config.httpXHROverride && _config.httpXHROverride.sendPOST) {
|
|
1314
1421
|
_xhrOverride = _config.httpXHROverride;
|
|
@@ -1321,21 +1428,10 @@
|
|
|
1321
1428
|
var endpointUrl = _config.overrideEndpointUrl ? _config.overrideEndpointUrl : coreConfig.endpointUrl;
|
|
1322
1429
|
_self._notificationManager = coreConfig.extensionConfig.NotificationManager;
|
|
1323
1430
|
_httpManager.initialize(endpointUrl, _self.core, _self, _xhrOverride, _config);
|
|
1324
|
-
function _handleUnloadEvents(evt) {
|
|
1325
|
-
var theEvt = evt || _1dsCoreJs.getWindow().event;
|
|
1326
|
-
if (theEvt.type !== "beforeunload") {
|
|
1327
|
-
_isPageUnloadTriggered = true;
|
|
1328
|
-
_httpManager.setUnloading(_isPageUnloadTriggered);
|
|
1329
|
-
}
|
|
1330
|
-
_releaseAllQueues(2 , 2 );
|
|
1331
|
-
}
|
|
1332
1431
|
var excludePageUnloadEvents = coreConfig.disablePageUnloadEvents || [];
|
|
1333
1432
|
_1dsCoreJs.addPageUnloadEventListener(_handleUnloadEvents, excludePageUnloadEvents);
|
|
1334
1433
|
_1dsCoreJs.addPageHideEventListener(_handleUnloadEvents, excludePageUnloadEvents);
|
|
1335
|
-
_1dsCoreJs.addPageShowEventListener(
|
|
1336
|
-
_isPageUnloadTriggered = false;
|
|
1337
|
-
_httpManager.setUnloading(_isPageUnloadTriggered);
|
|
1338
|
-
}, coreConfig.disablePageShowEvents);
|
|
1434
|
+
_1dsCoreJs.addPageShowEventListener(_handleShowEvents, coreConfig.disablePageShowEvents);
|
|
1339
1435
|
_self.setInitialized(true);
|
|
1340
1436
|
}, function () { return ({ coreConfig: coreConfig, core: core, extensions: extensions }); });
|
|
1341
1437
|
};
|
|
@@ -1365,6 +1461,28 @@
|
|
|
1365
1461
|
}
|
|
1366
1462
|
_self.processNext(event, itemCtx);
|
|
1367
1463
|
};
|
|
1464
|
+
function _hookWParam(extendedCore) {
|
|
1465
|
+
var existingGetWParamMethod = extendedCore.getWParam;
|
|
1466
|
+
extendedCore.getWParam = function () {
|
|
1467
|
+
var wparam = 0;
|
|
1468
|
+
if (_config.ignoreMc1Ms0CookieProcessing) {
|
|
1469
|
+
wparam = wparam | 2;
|
|
1470
|
+
}
|
|
1471
|
+
return wparam | existingGetWParamMethod();
|
|
1472
|
+
};
|
|
1473
|
+
}
|
|
1474
|
+
function _handleUnloadEvents(evt) {
|
|
1475
|
+
var theEvt = evt || _1dsCoreJs.getWindow().event;
|
|
1476
|
+
if (theEvt.type !== "beforeunload") {
|
|
1477
|
+
_isPageUnloadTriggered = true;
|
|
1478
|
+
_httpManager.setUnloading(_isPageUnloadTriggered);
|
|
1479
|
+
}
|
|
1480
|
+
_releaseAllQueues(2 , 2 );
|
|
1481
|
+
}
|
|
1482
|
+
function _handleShowEvents(evt) {
|
|
1483
|
+
_isPageUnloadTriggered = false;
|
|
1484
|
+
_httpManager.setUnloading(_isPageUnloadTriggered);
|
|
1485
|
+
}
|
|
1368
1486
|
function _addEventToQueues(event, append) {
|
|
1369
1487
|
if (!event.sendAttempt) {
|
|
1370
1488
|
event.sendAttempt = 0;
|
|
@@ -1514,7 +1632,7 @@
|
|
|
1514
1632
|
}
|
|
1515
1633
|
};
|
|
1516
1634
|
_self.setMsaAuthTicket = function (ticket) {
|
|
1517
|
-
_httpManager.addHeader(
|
|
1635
|
+
_httpManager.addHeader(strMsaDeviceTicket, ticket);
|
|
1518
1636
|
};
|
|
1519
1637
|
_self.hasEvents = _hasEvents;
|
|
1520
1638
|
_self._setTransmitProfile = function (profileName) {
|
|
@@ -1651,7 +1769,7 @@
|
|
|
1651
1769
|
}
|
|
1652
1770
|
var latency = event.latency;
|
|
1653
1771
|
var eventBatch = _getEventBatch(event.iKey, latency, true);
|
|
1654
|
-
if (eventBatch.
|
|
1772
|
+
if (eventBatch.addEvent(event)) {
|
|
1655
1773
|
if (latency !== _1dsCoreJs.EventLatency.Immediate) {
|
|
1656
1774
|
_queueSize++;
|
|
1657
1775
|
if (append && event.sendAttempt === 0) {
|
|
@@ -1794,6 +1912,10 @@
|
|
|
1794
1912
|
}
|
|
1795
1913
|
function _requeueEvents(batches, reason) {
|
|
1796
1914
|
var droppedEvents = [];
|
|
1915
|
+
var maxSendAttempts = _maxEventSendAttempts;
|
|
1916
|
+
if (_isPageUnloadTriggered) {
|
|
1917
|
+
maxSendAttempts = _maxUnloadEventSendAttempts;
|
|
1918
|
+
}
|
|
1797
1919
|
_1dsCoreJs.arrForEach(batches, function (theBatch) {
|
|
1798
1920
|
if (theBatch && theBatch.count() > 0) {
|
|
1799
1921
|
_1dsCoreJs.arrForEach(theBatch.events(), function (theEvent) {
|
|
@@ -1802,7 +1924,7 @@
|
|
|
1802
1924
|
theEvent.latency = _1dsCoreJs.EventLatency.Immediate;
|
|
1803
1925
|
theEvent.sync = false;
|
|
1804
1926
|
}
|
|
1805
|
-
if (theEvent.sendAttempt <
|
|
1927
|
+
if (theEvent.sendAttempt < maxSendAttempts) {
|
|
1806
1928
|
_1dsCoreJs.setProcessTelemetryTimings(theEvent, _self.identifier);
|
|
1807
1929
|
_addEventToQueues(theEvent, false);
|
|
1808
1930
|
}
|