@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.
Files changed (56) hide show
  1. package/README.md +124 -5
  2. package/bundle/{ms.post-3.1.8.gbl.js → ms.post-3.1.11.gbl.js} +353 -172
  3. package/bundle/ms.post-3.1.11.gbl.js.map +1 -0
  4. package/bundle/ms.post-3.1.11.gbl.min.js +7 -0
  5. package/bundle/ms.post-3.1.11.gbl.min.js.map +1 -0
  6. package/bundle/ms.post-3.1.11.integrity.json +46 -0
  7. package/bundle/{ms.post-3.1.8.js → ms.post-3.1.11.js} +353 -172
  8. package/bundle/ms.post-3.1.11.js.map +1 -0
  9. package/bundle/ms.post-3.1.11.min.js +7 -0
  10. package/bundle/ms.post-3.1.11.min.js.map +1 -0
  11. package/bundle/ms.post.gbl.js +352 -171
  12. package/bundle/ms.post.gbl.js.map +1 -1
  13. package/bundle/ms.post.gbl.min.js +2 -2
  14. package/bundle/ms.post.gbl.min.js.map +1 -1
  15. package/bundle/ms.post.integrity.json +17 -17
  16. package/bundle/ms.post.js +352 -171
  17. package/bundle/ms.post.js.map +1 -1
  18. package/bundle/ms.post.min.js +2 -2
  19. package/bundle/ms.post.min.js.map +1 -1
  20. package/dist/ms.post.js +238 -116
  21. package/dist/ms.post.js.map +1 -1
  22. package/dist/ms.post.min.js +2 -2
  23. package/dist/ms.post.min.js.map +1 -1
  24. package/dist-esm/src/BatchNotificationActions.js +1 -1
  25. package/dist-esm/src/ClockSkewManager.js +1 -1
  26. package/dist-esm/src/Constants.d.ts +25 -0
  27. package/dist-esm/src/Constants.js +31 -0
  28. package/dist-esm/src/Constants.js.map +1 -0
  29. package/dist-esm/src/DataModels.d.ts +55 -0
  30. package/dist-esm/src/DataModels.js +1 -1
  31. package/dist-esm/src/EventBatch.d.ts +5 -2
  32. package/dist-esm/src/EventBatch.js +35 -15
  33. package/dist-esm/src/EventBatch.js.map +1 -1
  34. package/dist-esm/src/HttpManager.d.ts +2 -2
  35. package/dist-esm/src/HttpManager.js +172 -85
  36. package/dist-esm/src/HttpManager.js.map +1 -1
  37. package/dist-esm/src/Index.js +1 -1
  38. package/dist-esm/src/KillSwitch.js +1 -1
  39. package/dist-esm/src/PostChannel.js +55 -31
  40. package/dist-esm/src/PostChannel.js.map +1 -1
  41. package/dist-esm/src/RetryPolicy.js +1 -1
  42. package/dist-esm/src/Serializer.js +1 -1
  43. package/dist-esm/src/typings/XDomainRequest.js +1 -1
  44. package/package.json +3 -3
  45. package/src/Constants.ts +28 -0
  46. package/src/DataModels.ts +68 -0
  47. package/src/EventBatch.ts +47 -14
  48. package/src/HttpManager.ts +206 -84
  49. package/src/PostChannel.ts +60 -31
  50. package/bundle/ms.post-3.1.8.gbl.js.map +0 -1
  51. package/bundle/ms.post-3.1.8.gbl.min.js +0 -7
  52. package/bundle/ms.post-3.1.8.gbl.min.js.map +0 -1
  53. package/bundle/ms.post-3.1.8.integrity.json +0 -46
  54. package/bundle/ms.post-3.1.8.js.map +0 -1
  55. package/bundle/ms.post-3.1.8.min.js +0 -7
  56. 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.8
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.addEvents = function (theEvents, append) {
34
- if (append === void 0) { append = true; }
35
- if (theEvents && theEvents.length > 0) {
36
- if (append) {
37
- events = events.concat(theEvents);
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 theEvents.length;
81
+ return true;
43
82
  }
44
- return 0;
83
+ return false;
45
84
  };
46
85
  _self.split = function (fromEvent, numEvents) {
47
- var newBatch = new EventBatch(iKey);
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
- newBatch.addEvents(events.splice(fromEvent, cnt), true);
92
+ theEvents = events.splice(fromEvent, cnt);
93
+ _msfpc = _getMsfpc(events);
54
94
  }
55
- return newBatch;
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 Method = "POST";
423
- var DisabledPropertyName = "Microsoft_ApplicationInsights_BypassAjaxInstrumentation";
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, maxRetries, actions) {
516
+ function HttpManager(maxEventsPerBatch, maxConnections, maxRequestRetriesBeforeBackoff, actions) {
472
517
  this._responseHandlers = [];
473
- var _urlString = "?cors=true&" + strContentTypeHeader.toLowerCase() + "=" + defaultContentType + "&client-id=NO_AUTH&client-version="
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 , 1 ], true) || syncHttpInterface,
544
- _a[3 ] = _getSenderInterface([2 , 3 , 1 ], true) || syncHttpInterface,
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(payload.urlString, requestInit).then(function (response) {
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
- _doOnComplete(oncomplete, response.status, headerMap, responseText);
636
- _handleCollectorResponse(responseText);
697
+ if (!responseHandled) {
698
+ responseHandled = true;
699
+ _doOnComplete(oncomplete, response.status, headerMap, responseText);
700
+ _handleCollectorResponse(responseText);
701
+ }
637
702
  })["catch"](function (error) {
638
- _doOnComplete(oncomplete, 0, {});
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
- var xhRequest = _1dsCoreJs.openXhr(Method, payload.urlString, _sendCredentials, true, sync);
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
- xhRequest.setRequestHeader(name, value);
752
+ xhrRequest.setRequestHeader(name, value);
669
753
  });
670
- xhRequest.onload = function () {
671
- var response = _getResponseText(xhRequest);
672
- xhrComplete(xhRequest, response);
754
+ xhrRequest.onload = function () {
755
+ var response = _getResponseText(xhrRequest);
756
+ xhrComplete(xhrRequest, response);
673
757
  _handleCollectorResponse(response);
674
758
  };
675
- xhRequest.onerror = function () {
676
- xhrComplete(xhRequest);
759
+ xhrRequest.onerror = function () {
760
+ xhrComplete(xhrRequest);
677
761
  };
678
- xhRequest.ontimeout = function () {
679
- xhrComplete(xhRequest);
762
+ xhrRequest.ontimeout = function () {
763
+ xhrComplete(xhrRequest);
680
764
  };
681
- xhRequest.send(payload.data);
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(payload.urlString, payload.data)) {
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(payload.urlString, _serializer.getEventBlob(theEvents[lp]))) {
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 _buildQueryString(thePayload) {
890
- var urlString = _urlString;
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
- if (apiQsKeys.length > 0) {
899
- urlString += "&apikey=" + apiQsKeys;
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
- urlString = urlString + "&ext.intweb.msfpc=" + msfpc;
995
+ requestDetails.url += "&ext.intweb.msfpc=" + msfpc;
905
996
  }
906
997
  if (_clockSkewManager.shouldAddClockSkewHeaders()) {
907
- urlString += "&time-delta-to-apply-millis=" + _clockSkewManager.getClockSkewHeaderValue();
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
- urlString += "&w=" + wParam;
1003
+ requestDetails.url += "&w=" + wParam;
913
1004
  }
914
1005
  }
915
1006
  for (var i = 0; i < _queryStringParameters.length; i++) {
916
- urlString += "&" + _queryStringParameters[i].name + "=" + _queryStringParameters[i].value;
1007
+ requestDetails.url += "&" + _queryStringParameters[i].name + "=" + _queryStringParameters[i].value;
917
1008
  }
918
- return urlString;
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 urlString_1 = _buildQueryString(thePayload);
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[strSendAttempt_1] > 0 ? telemetryItem[strSendAttempt_1]++ : telemetryItem[strSendAttempt_1] = 1;
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: urlString_1,
951
- headers: _1dsCoreJs.extend({}, _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 (!_hasHeader(orgPayloadData.headers, strCacheControl)) {
956
- orgPayloadData.headers[strCacheControl] = defaultCacheControl;
1056
+ if (!_1dsCoreJs.isUndefined(_disableXhrSync)) {
1057
+ orgPayloadData.disableXhrSync = !!_disableXhrSync;
957
1058
  }
958
- if (!_hasHeader(orgPayloadData.headers, strContentTypeHeader)) {
959
- orgPayloadData.headers[strContentTypeHeader] = defaultContentType;
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
- var useSendHook = !!_self.sendHook;
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
- sendInterface.sendPOST(payload, onComplete, isSync);
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 (useSendHook && !thePayload.isBeacon && sendInterface._transport !== 3 ) {
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 < maxRetries) {
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 batchEvents = thePayload.batches[lp].events();
1159
- for (var evtLp = 0; evtLp < batchEvents.length; evtLp++) {
1160
- var intWeb = ((batchEvents[evtLp].ext || {})["intweb"] || {});
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.msfpc)) {
1182
- _cookieMgr.set("MSFPC", response.webResult.msfpc, 365 * 86400);
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 MaxRetries = 1;
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.8';
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, MaxRetries, {
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
- var existingGetWParamMethod = extendedCore.getWParam;
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(function (evt) {
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("AuthMsaDeviceTicket", ticket);
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.addEvents([event], append)) {
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 < MaxSendAttempts) {
1927
+ if (theEvent.sendAttempt < maxSendAttempts) {
1806
1928
  _1dsCoreJs.setProcessTelemetryTimings(theEvent, _self.identifier);
1807
1929
  _addEventToQueues(theEvent, false);
1808
1930
  }