@microsoft/1ds-post-js 3.1.10 → 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 (53) hide show
  1. package/README.md +123 -5
  2. package/bundle/{ms.post-3.1.10.gbl.js → ms.post-3.1.11.gbl.js} +163 -86
  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.10.js → ms.post-3.1.11.js} +163 -86
  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 +162 -85
  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 +162 -85
  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 +101 -47
  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 +1 -0
  27. package/dist-esm/src/Constants.js +2 -1
  28. package/dist-esm/src/Constants.js.map +1 -1
  29. package/dist-esm/src/DataModels.d.ts +49 -0
  30. package/dist-esm/src/DataModels.js +1 -1
  31. package/dist-esm/src/EventBatch.js +1 -1
  32. package/dist-esm/src/HttpManager.d.ts +1 -1
  33. package/dist-esm/src/HttpManager.js +63 -24
  34. package/dist-esm/src/HttpManager.js.map +1 -1
  35. package/dist-esm/src/Index.js +1 -1
  36. package/dist-esm/src/KillSwitch.js +1 -1
  37. package/dist-esm/src/PostChannel.js +51 -28
  38. package/dist-esm/src/PostChannel.js.map +1 -1
  39. package/dist-esm/src/RetryPolicy.js +1 -1
  40. package/dist-esm/src/Serializer.js +1 -1
  41. package/dist-esm/src/typings/XDomainRequest.js +1 -1
  42. package/package.json +2 -2
  43. package/src/Constants.ts +1 -0
  44. package/src/DataModels.ts +62 -1
  45. package/src/HttpManager.ts +67 -22
  46. package/src/PostChannel.ts +56 -28
  47. package/bundle/ms.post-3.1.10.gbl.js.map +0 -1
  48. package/bundle/ms.post-3.1.10.gbl.min.js +0 -7
  49. package/bundle/ms.post-3.1.10.gbl.min.js.map +0 -1
  50. package/bundle/ms.post-3.1.10.integrity.json +0 -46
  51. package/bundle/ms.post-3.1.10.js.map +0 -1
  52. package/bundle/ms.post-3.1.10.min.js +0 -7
  53. package/bundle/ms.post-3.1.10.min.js.map +0 -1
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "ms.post",
3
+ "version": "3.1.11",
4
+ "ext": {
5
+ "@gbl.js": {
6
+ "file": "ms.post-3.1.11.gbl.js",
7
+ "type": "text/javascript; charset=utf-8",
8
+ "integrity": "sha256-fs7auGv7CFhKGV70Kh4EWHdbnCL6vLAc4jBHHFCPOs0= sha384-4ZepeHunU/pSb8e6nhZ6iwwxqphyojf+nKRTgwbSR9AbUcoseXvDHSVLS/T1CpEh sha512-+sRX2mbp3EMV87qb+3OK0kSoPwZeTUQ8QEiQLD3AyzZP9xWs4GZbDXtYEyMv0Vg7u+RGAPkCPdDgaeosYP298A==",
9
+ "hashes": {
10
+ "sha256": "fs7auGv7CFhKGV70Kh4EWHdbnCL6vLAc4jBHHFCPOs0=",
11
+ "sha384": "4ZepeHunU/pSb8e6nhZ6iwwxqphyojf+nKRTgwbSR9AbUcoseXvDHSVLS/T1CpEh",
12
+ "sha512": "+sRX2mbp3EMV87qb+3OK0kSoPwZeTUQ8QEiQLD3AyzZP9xWs4GZbDXtYEyMv0Vg7u+RGAPkCPdDgaeosYP298A=="
13
+ }
14
+ },
15
+ "@gbl.min.js": {
16
+ "file": "ms.post-3.1.11.gbl.min.js",
17
+ "type": "text/javascript; charset=utf-8",
18
+ "integrity": "sha256-9AH01yS9tmUM/2Zh+0XK6EzIvo+FSTAUYGwih9Q7zVA= sha384-KNg7AspX2gBB31pjB+TVaHpmL+irHBVlbcx6pNHni1Kj8BJPIttyVkT0Cga6xrbe sha512-NWVgzk0eBI874IbmPrLdpoNjydYs8OGsdmLyj25/vMvFC+7O9AF7k9ZhUzXr3DYBYvZGxnv5TrX9eRPqlhB7/A==",
19
+ "hashes": {
20
+ "sha256": "9AH01yS9tmUM/2Zh+0XK6EzIvo+FSTAUYGwih9Q7zVA=",
21
+ "sha384": "KNg7AspX2gBB31pjB+TVaHpmL+irHBVlbcx6pNHni1Kj8BJPIttyVkT0Cga6xrbe",
22
+ "sha512": "NWVgzk0eBI874IbmPrLdpoNjydYs8OGsdmLyj25/vMvFC+7O9AF7k9ZhUzXr3DYBYvZGxnv5TrX9eRPqlhB7/A=="
23
+ }
24
+ },
25
+ "@js": {
26
+ "file": "ms.post-3.1.11.js",
27
+ "type": "text/javascript; charset=utf-8",
28
+ "integrity": "sha256-DroO44rWarmqY3kcDEO10wAoTEh2D4rFlfRNNgeKMAs= sha384-cUaE7+DQrur1yymQhriSIM1wPdAvkATbrzQaVvDOkRpkYHjw4JQBXao4xaAl7h9g sha512-2xmGWGFTXjbb8o+qZ/KdlplheplhdqYD3WN/KbTdV7N+tNij4tGl8al1ijXmWn+PrfJOw+PmsVOODBm29xAlXg==",
29
+ "hashes": {
30
+ "sha256": "DroO44rWarmqY3kcDEO10wAoTEh2D4rFlfRNNgeKMAs=",
31
+ "sha384": "cUaE7+DQrur1yymQhriSIM1wPdAvkATbrzQaVvDOkRpkYHjw4JQBXao4xaAl7h9g",
32
+ "sha512": "2xmGWGFTXjbb8o+qZ/KdlplheplhdqYD3WN/KbTdV7N+tNij4tGl8al1ijXmWn+PrfJOw+PmsVOODBm29xAlXg=="
33
+ }
34
+ },
35
+ "@min.js": {
36
+ "file": "ms.post-3.1.11.min.js",
37
+ "type": "text/javascript; charset=utf-8",
38
+ "integrity": "sha256-lh+jfY3V1unwU96mpKNX2tYmts9DVf8DXk0GNAiHezg= sha384-uiUUIMdrB5yFipGG5xGNYaRVp60QEvRV1CFbEgltRzjuL0OXSjPkn7WBd/5b37/Z sha512-FoEs9VczJMy6Ef7TRA47CYuj5JACndbMrhrP066Fnl7Bwt6NdcSZBlUIFE82ismeXQdKWCuWVDZppFYzsvXw7A==",
39
+ "hashes": {
40
+ "sha256": "lh+jfY3V1unwU96mpKNX2tYmts9DVf8DXk0GNAiHezg=",
41
+ "sha384": "uiUUIMdrB5yFipGG5xGNYaRVp60QEvRV1CFbEgltRzjuL0OXSjPkn7WBd/5b37/Z",
42
+ "sha512": "FoEs9VczJMy6Ef7TRA47CYuj5JACndbMrhrP066Fnl7Bwt6NdcSZBlUIFE82ismeXQdKWCuWVDZppFYzsvXw7A=="
43
+ }
44
+ }
45
+ }
46
+ }
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * 1DS JS SDK POST plugin, 3.1.10
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
  */
@@ -438,10 +438,19 @@
438
438
  var strOnPrefix = "on";
439
439
  var strAttachEvent = "attachEvent";
440
440
  var strAddEventHelper = "addEventListener";
441
+ var cStrStartsWith = "startsWith";
442
+ var strIndexOf = "indexOf";
443
+ var cStrTrim = "trim";
444
+ var strToString = "toString";
441
445
  var _objDefineProperty = ObjDefineProperty;
442
- function objToString(obj) {
443
- return ObjProto.toString.call(obj);
444
- }
446
+ var _objKeys = ObjClass.keys;
447
+ var StringProto = String[strShimPrototype];
448
+ var _strTrim = StringProto[cStrTrim];
449
+ var _strStartsWith = StringProto[cStrStartsWith];
450
+ var _isArray = Array.isArray;
451
+ var _objToString = ObjProto[strToString];
452
+ var _fnToString = ObjHasOwnProperty[strToString];
453
+ _fnToString.call(ObjClass);
445
454
  function isUndefined(value) {
446
455
  return value === undefined || typeof value === strShimUndefined;
447
456
  }
@@ -449,13 +458,13 @@
449
458
  return (value === null || isUndefined(value));
450
459
  }
451
460
  function hasOwnProperty(obj, prop) {
452
- return obj && ObjHasOwnProperty.call(obj, prop);
461
+ return !!(obj && ObjHasOwnProperty.call(obj, prop));
453
462
  }
454
463
  function isObject(value) {
455
- return typeof value === strShimObject;
464
+ return !!(value && typeof value === strShimObject);
456
465
  }
457
466
  function isFunction(value) {
458
- return typeof value === strShimFunction;
467
+ return !!(value && typeof value === strShimFunction);
459
468
  }
460
469
  function attachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {
461
470
  if (useCapture === void 0) { useCapture = false; }
@@ -487,24 +496,27 @@
487
496
  }
488
497
  function strStartsWith(value, checkValue) {
489
498
  var result = false;
490
- if (value && checkValue) {
491
- var chkLen = checkValue.length;
492
- if (value === checkValue) {
493
- return true;
494
- }
495
- else if (value.length >= chkLen) {
496
- for (var lp = 0; lp < chkLen; lp++) {
497
- if (value[lp] !== checkValue[lp]) {
498
- return false;
499
- }
499
+ if (value && checkValue && !(result = value === checkValue)) {
500
+ result = _strStartsWith ? value[cStrStartsWith](checkValue) : _strStartsWithPoly(value, checkValue);
501
+ }
502
+ return result;
503
+ }
504
+ function _strStartsWithPoly(value, checkValue) {
505
+ var result = false;
506
+ var chkLen = checkValue ? checkValue.length : 0;
507
+ if (value && chkLen && value.length >= chkLen && !(result = value === checkValue)) {
508
+ for (var lp = 0; lp < chkLen; lp++) {
509
+ if (value[lp] !== checkValue[lp]) {
510
+ return false;
500
511
  }
501
- result = true;
502
512
  }
513
+ result = true;
503
514
  }
504
515
  return result;
505
516
  }
506
- function isArray(obj) {
507
- return objToString(obj) === "[object Array]";
517
+ var isArray = _isArray || _isArrayPoly;
518
+ function _isArrayPoly(obj) {
519
+ return !!(obj && _objToString.call(obj) === "[object Array]");
508
520
  }
509
521
  function isString(value) {
510
522
  return typeof value === "string";
@@ -530,24 +542,29 @@
530
542
  }
531
543
  }
532
544
  function arrIndexOf(arr, searchElement, fromIndex) {
533
- var len = arr.length;
534
- var from = fromIndex || 0;
535
- try {
536
- for (var lp = Math.max(from >= 0 ? from : len - Math.abs(from), 0); lp < len; lp++) {
537
- if (lp in arr && arr[lp] === searchElement) {
538
- return lp;
545
+ if (arr) {
546
+ if (arr[strIndexOf]) {
547
+ return arr[strIndexOf](searchElement, fromIndex);
548
+ }
549
+ var len = arr.length;
550
+ var from = fromIndex || 0;
551
+ try {
552
+ for (var lp = Math.max(from >= 0 ? from : len - Math.abs(from), 0); lp < len; lp++) {
553
+ if (lp in arr && arr[lp] === searchElement) {
554
+ return lp;
555
+ }
539
556
  }
540
557
  }
541
- }
542
- catch (e) {
558
+ catch (e) {
559
+ }
543
560
  }
544
561
  return -1;
545
562
  }
546
563
  function strTrim(str) {
547
- if (typeof str !== "string") {
548
- return str;
564
+ if (str) {
565
+ str = (_strTrim && str[cStrTrim]) ? str[cStrTrim]() : (str.replace ? str.replace(/^\s+|\s+$/g, "") : str);
549
566
  }
550
- return str.replace(/^\s+|\s+$/g, "");
567
+ return str;
551
568
  }
552
569
  var _objKeysHasDontEnumBug = !({ toString: null }).propertyIsEnumerable("toString");
553
570
  var _objKeysDontEnums = [
@@ -564,6 +581,9 @@
564
581
  if (objType !== strShimFunction && (objType !== strShimObject || obj === null)) {
565
582
  throwTypeError("objKeys called on non-object");
566
583
  }
584
+ if (!_objKeysHasDontEnumBug && _objKeys) {
585
+ return _objKeys(obj);
586
+ }
567
587
  var result = [];
568
588
  for (var prop in obj) {
569
589
  if (obj && ObjHasOwnProperty.call(obj, prop)) {
@@ -603,10 +623,7 @@
603
623
  }
604
624
  function dateNow() {
605
625
  var dt = Date;
606
- if (dt.now) {
607
- return dt.now();
608
- }
609
- return new dt().getTime();
626
+ return dt.now ? dt.now() : new dt().getTime();
610
627
  }
611
628
  function setValue(target, field, value, valChk, srcChk) {
612
629
  var theValue = value;
@@ -620,8 +637,8 @@
620
637
  return theValue;
621
638
  }
622
639
  function optimizeObject(theObject) {
623
- if (theObject) {
624
- theObject = ObjClass(ObjAssign ? ObjAssign({}, theObject) : theObject);
640
+ if (theObject && ObjAssign) {
641
+ theObject = ObjClass(ObjAssign({}, theObject));
625
642
  }
626
643
  return theObject;
627
644
  }
@@ -1437,10 +1454,11 @@
1437
1454
  var _ExtendedInternalMessageId = __assignFn(__assignFn({}, _InternalMessageId), { AuthHandShakeError: 501, AuthRedirectFail: 502, BrowserCannotReadLocalStorage: 503, BrowserCannotWriteLocalStorage: 504, BrowserDoesNotSupportLocalStorage: 505, CannotParseBiBlobValue: 506, CannotParseDataAttribute: 507, CVPluginNotAvailable: 508, DroppedEvent: 509, ErrorParsingAISessionCookie: 510, ErrorProvidedChannels: 511, FailedToGetCookies: 512, FailedToInitializeCorrelationVector: 513, FailedToInitializeSDK: 514, InvalidContentBlob: 515, InvalidCorrelationValue: 516, SessionRenewalDateIsZero: 517, SendPostOnCompleteFailure: 518, PostResponseHandler: 519, SDKNotInitialized: 520 });
1438
1455
 
1439
1456
  var _a$1;
1440
- var Version = '3.1.10';
1457
+ var Version = '3.1.11';
1441
1458
  var FullVersionString = "1DS-Web-JS-" + Version;
1442
1459
  var strDisabledPropertyName = "Microsoft_ApplicationInsights_BypassAjaxInstrumentation";
1443
1460
  var strWithCredentials = "withCredentials";
1461
+ var strTimeout = "timeout";
1444
1462
  var _fieldTypeEventPropMap = (_a$1 = {},
1445
1463
  _a$1[0 ] = EventPropertyType.Unspecified,
1446
1464
  _a$1[2 ] = EventPropertyType.Double,
@@ -1612,7 +1630,7 @@
1612
1630
  function isChromium() {
1613
1631
  return !!getGlobalInst("chrome");
1614
1632
  }
1615
- function openXhr(method, urlString, withCredentials, disabled, isSync) {
1633
+ function openXhr(method, urlString, withCredentials, disabled, isSync, timeout) {
1616
1634
  if (disabled === void 0) { disabled = false; }
1617
1635
  if (isSync === void 0) { isSync = false; }
1618
1636
  function _wrapSetXhrProp(xhr, prop, value) {
@@ -1633,6 +1651,9 @@
1633
1651
  if (withCredentials) {
1634
1652
  _wrapSetXhrProp(xhr, strWithCredentials, withCredentials);
1635
1653
  }
1654
+ if (!isSync && timeout) {
1655
+ _wrapSetXhrProp(xhr, strTimeout, timeout);
1656
+ }
1636
1657
  return xhr;
1637
1658
  }
1638
1659
 
@@ -1661,6 +1682,7 @@
1661
1682
  var strUploadTime = "upload-time";
1662
1683
  var strApiKey = "apikey";
1663
1684
  var strMsaDeviceTicket = "AuthMsaDeviceTicket";
1685
+ var strNoResponseBody = "NoResponseBody";
1664
1686
  var strMsfpc = "msfpc";
1665
1687
 
1666
1688
  function _getEventMsfpc(theEvent) {
@@ -2084,6 +2106,8 @@
2084
2106
  var EVTClockSkewManager = ClockSkewManager;
2085
2107
 
2086
2108
  var _a;
2109
+ var strSendAttempt = "sendAttempt";
2110
+ var _noResponseQs = "&" + strNoResponseBody + "=true";
2087
2111
  var _eventActionMap = (_a = {},
2088
2112
  _a[1 ] = strRequeue,
2089
2113
  _a[100 ] = strRequeue,
@@ -2136,7 +2160,7 @@
2136
2160
  }
2137
2161
  }
2138
2162
  var HttpManager = /** @class */ (function () {
2139
- function HttpManager(maxEventsPerBatch, maxConnections, maxRetries, actions) {
2163
+ function HttpManager(maxEventsPerBatch, maxConnections, maxRequestRetriesBeforeBackoff, actions) {
2140
2164
  this._responseHandlers = [];
2141
2165
  var _urlString = "?cors=true&" + strContentTypeHeader.toLowerCase() + "=" + defaultContentType;
2142
2166
  var _killSwitch = new EVTKillSwitch();
@@ -2156,6 +2180,8 @@
2156
2180
  var _cookieMgr;
2157
2181
  var _isUnloading = false;
2158
2182
  var _useHeaders = false;
2183
+ var _xhrTimeout;
2184
+ var _disableXhrSync;
2159
2185
  dynamicProto(HttpManager, this, function (_self) {
2160
2186
  var _sendCredentials = true;
2161
2187
  _self.initialize = function (endpointUrl, core, postChannel, httpInterface, channelConfig) {
@@ -2175,9 +2201,13 @@
2175
2201
  if (!isUndefined(channelConfig.enableCompoundKey)) {
2176
2202
  enableCompoundKey = !!channelConfig.enableCompoundKey;
2177
2203
  }
2204
+ _xhrTimeout = channelConfig.xhrTimeout;
2205
+ _disableXhrSync = channelConfig.disableXhrSync;
2178
2206
  _useBeacons = !isReactNative();
2179
2207
  _serializer = new Serializer(_core, valueSanitizer, stringifyObjects, enableCompoundKey);
2180
2208
  var syncHttpInterface = httpInterface;
2209
+ var beaconHttpInterface = channelConfig.alwaysUseXhrOverride ? httpInterface : null;
2210
+ var fetchSyncHttpInterface = channelConfig.alwaysUseXhrOverride ? httpInterface : null;
2181
2211
  if (!httpInterface) {
2182
2212
  _customHttpInterface = false;
2183
2213
  var location_1 = getLocation();
@@ -2209,8 +2239,8 @@
2209
2239
  _sendInterfaces = (_a = {},
2210
2240
  _a[0 ] = httpInterface,
2211
2241
  _a[1 ] = syncHttpInterface || _getSenderInterface([1 , 2 , 3 ], true),
2212
- _a[2 ] = _getSenderInterface([3 , 2 , 1 ], true) || syncHttpInterface,
2213
- _a[3 ] = _getSenderInterface([2 , 3 , 1 ], true) || syncHttpInterface,
2242
+ _a[2 ] = beaconHttpInterface || _getSenderInterface([3 , 2 ], true) || syncHttpInterface || _getSenderInterface([1 ], true),
2243
+ _a[3 ] = fetchSyncHttpInterface || _getSenderInterface([2 , 3 ], true) || syncHttpInterface || _getSenderInterface([1 ], true),
2214
2244
  _a);
2215
2245
  };
2216
2246
  function _getSenderInterface(transports, syncSupport) {
@@ -2250,6 +2280,9 @@
2250
2280
  function _xdrSendPost(payload, oncomplete, sync) {
2251
2281
  var xdr = new XDomainRequest();
2252
2282
  xdr.open(Method, payload.urlString);
2283
+ if (payload.timeout) {
2284
+ xdr.timeout = payload.timeout;
2285
+ }
2253
2286
  xdr.onload = function () {
2254
2287
  var response = _getResponseText(xdr);
2255
2288
  _doOnComplete(oncomplete, 200, {}, response);
@@ -2273,6 +2306,7 @@
2273
2306
  }
2274
2307
  function _fetchSendPost(payload, oncomplete, sync) {
2275
2308
  var _a;
2309
+ var theUrl = payload.urlString;
2276
2310
  var ignoreResponse = false;
2277
2311
  var responseHandled = false;
2278
2312
  var requestInit = (_a = {
@@ -2285,6 +2319,7 @@
2285
2319
  requestInit.keepalive = true;
2286
2320
  if (payload._sendReason === 2 ) {
2287
2321
  ignoreResponse = true;
2322
+ theUrl += _noResponseQs;
2288
2323
  }
2289
2324
  }
2290
2325
  if (_sendCredentials) {
@@ -2293,7 +2328,7 @@
2293
2328
  if (payload.headers && objKeys(payload.headers).length > 0) {
2294
2329
  requestInit.headers = payload.headers;
2295
2330
  }
2296
- fetch(payload.urlString, requestInit).then(function (response) {
2331
+ fetch(theUrl, requestInit).then(function (response) {
2297
2332
  var headerMap = {};
2298
2333
  var responseText = "";
2299
2334
  if (response.headers) {
@@ -2321,8 +2356,17 @@
2321
2356
  responseHandled = true;
2322
2357
  _doOnComplete(oncomplete, 200, {});
2323
2358
  }
2359
+ if (!responseHandled && payload.timeout > 0) {
2360
+ _postManager._setTimeoutOverride(function () {
2361
+ if (!responseHandled) {
2362
+ responseHandled = true;
2363
+ _doOnComplete(oncomplete, 500, {});
2364
+ }
2365
+ }, payload.timeout);
2366
+ }
2324
2367
  }
2325
2368
  function _xhrSendPost(payload, oncomplete, sync) {
2369
+ var theUrl = payload.urlString;
2326
2370
  function _appendHeader(theHeaders, xhr, name) {
2327
2371
  if (!theHeaders[name] && xhr && xhr.getResponseHeader) {
2328
2372
  var value = xhr.getResponseHeader(name);
@@ -2347,22 +2391,25 @@
2347
2391
  function xhrComplete(xhr, responseTxt) {
2348
2392
  _doOnComplete(oncomplete, xhr.status, _getAllResponseHeaders(xhr), responseTxt);
2349
2393
  }
2350
- var xhRequest = openXhr(Method, payload.urlString, _sendCredentials, true, sync);
2394
+ if (sync && payload.disableXhrSync) {
2395
+ sync = false;
2396
+ }
2397
+ var xhrRequest = openXhr(Method, theUrl, _sendCredentials, true, sync, payload.timeout);
2351
2398
  objForEachKey(payload.headers, function (name, value) {
2352
- xhRequest.setRequestHeader(name, value);
2399
+ xhrRequest.setRequestHeader(name, value);
2353
2400
  });
2354
- xhRequest.onload = function () {
2355
- var response = _getResponseText(xhRequest);
2356
- xhrComplete(xhRequest, response);
2401
+ xhrRequest.onload = function () {
2402
+ var response = _getResponseText(xhrRequest);
2403
+ xhrComplete(xhrRequest, response);
2357
2404
  _handleCollectorResponse(response);
2358
2405
  };
2359
- xhRequest.onerror = function () {
2360
- xhrComplete(xhRequest);
2406
+ xhrRequest.onerror = function () {
2407
+ xhrComplete(xhrRequest);
2361
2408
  };
2362
- xhRequest.ontimeout = function () {
2363
- xhrComplete(xhRequest);
2409
+ xhrRequest.ontimeout = function () {
2410
+ xhrComplete(xhrRequest);
2364
2411
  };
2365
- xhRequest.send(payload.data);
2412
+ xhrRequest.send(payload.data);
2366
2413
  }
2367
2414
  function _doOnComplete(oncomplete, status, headers, response) {
2368
2415
  try {
@@ -2376,16 +2423,17 @@
2376
2423
  var internalPayloadData = payload;
2377
2424
  var status = 200;
2378
2425
  var thePayload = internalPayloadData._thePayload;
2426
+ var theUrl = payload.urlString + _noResponseQs;
2379
2427
  try {
2380
2428
  var nav_1 = getNavigator();
2381
- if (!nav_1.sendBeacon(payload.urlString, payload.data)) {
2429
+ if (!nav_1.sendBeacon(theUrl, payload.data)) {
2382
2430
  if (thePayload) {
2383
2431
  var droppedBatches_1 = [];
2384
2432
  arrForEach(thePayload.batches, function (theBatch) {
2385
2433
  if (droppedBatches_1 && theBatch && theBatch.count() > 0) {
2386
2434
  var theEvents = theBatch.events();
2387
2435
  for (var lp = 0; lp < theEvents.length; lp++) {
2388
- if (!nav_1.sendBeacon(payload.urlString, _serializer.getEventBlob(theEvents[lp]))) {
2436
+ if (!nav_1.sendBeacon(theUrl, _serializer.getEventBlob(theEvents[lp]))) {
2389
2437
  droppedBatches_1.push(theBatch.split(lp));
2390
2438
  break;
2391
2439
  }
@@ -2628,7 +2676,6 @@
2628
2676
  var requestDetails_1 = _buildRequestDetails(thePayload, useHeaders_1);
2629
2677
  useHeaders_1 = useHeaders_1 || requestDetails_1.useHdrs;
2630
2678
  var sendEventStart_1 = getTime();
2631
- var strSendAttempt_1 = "sendAttempt";
2632
2679
  doPerf(_core, function () { return "HttpManager:_doPayloadSend"; }, function () {
2633
2680
  for (var batchLp = 0; batchLp < thePayload.batches.length; batchLp++) {
2634
2681
  var theBatch = thePayload.batches[batchLp];
@@ -2641,7 +2688,7 @@
2641
2688
  _setTimingValue(timings, "serializationStart", serializationStart);
2642
2689
  _setTimingValue(timings, "serializationCompleted", serializationCompleted);
2643
2690
  }
2644
- telemetryItem[strSendAttempt_1] > 0 ? telemetryItem[strSendAttempt_1]++ : telemetryItem[strSendAttempt_1] = 1;
2691
+ telemetryItem[strSendAttempt] > 0 ? telemetryItem[strSendAttempt]++ : telemetryItem[strSendAttempt] = 1;
2645
2692
  }
2646
2693
  }
2647
2694
  _sendBatchesNotification(thePayload.batches, (1000 + (sendReason || 0 )), thePayload.sendType, true);
@@ -2650,8 +2697,12 @@
2650
2697
  urlString: requestDetails_1.url,
2651
2698
  headers: requestDetails_1.hdrs,
2652
2699
  _thePayload: thePayload,
2653
- _sendReason: sendReason
2700
+ _sendReason: sendReason,
2701
+ timeout: _xhrTimeout
2654
2702
  };
2703
+ if (!isUndefined(_disableXhrSync)) {
2704
+ orgPayloadData.disableXhrSync = !!_disableXhrSync;
2705
+ }
2655
2706
  if (useHeaders_1) {
2656
2707
  if (!_hasHeader(orgPayloadData.headers, strCacheControl)) {
2657
2708
  orgPayloadData.headers[strCacheControl] = defaultCacheControl;
@@ -2689,7 +2740,9 @@
2689
2740
  var hookData_1 = {
2690
2741
  data: orgPayloadData.data,
2691
2742
  urlString: orgPayloadData.urlString,
2692
- headers: extend({}, orgPayloadData.headers)
2743
+ headers: extend({}, orgPayloadData.headers),
2744
+ timeout: orgPayloadData.timeout,
2745
+ disableXhrSync: orgPayloadData.disableXhrSync
2693
2746
  };
2694
2747
  var senderCalled_1 = false;
2695
2748
  doPerf(_core, function () { return "HttpManager:_doPayloadSend.sendHook"; }, function () {
@@ -2754,7 +2807,7 @@
2754
2807
  });
2755
2808
  });
2756
2809
  }
2757
- if (status == 200) {
2810
+ if (status == 200 || status == 204) {
2758
2811
  reason = 200 ;
2759
2812
  return;
2760
2813
  }
@@ -2767,7 +2820,7 @@
2767
2820
  reason = 100 ;
2768
2821
  var retryCount_1 = thePayload.retryCnt;
2769
2822
  if (thePayload.sendType === 0 ) {
2770
- if (retryCount_1 < maxRetries) {
2823
+ if (retryCount_1 < maxRequestRetriesBeforeBackoff) {
2771
2824
  isRetrying = true;
2772
2825
  _doAction(function () {
2773
2826
  if (thePayload.sendType === 0 ) {
@@ -2778,6 +2831,9 @@
2778
2831
  }
2779
2832
  else {
2780
2833
  backOffTrans = true;
2834
+ if (_isUnloading) {
2835
+ reason = 8001 ;
2836
+ }
2781
2837
  }
2782
2838
  }
2783
2839
  }
@@ -2923,19 +2979,22 @@
2923
2979
  var MaxNumberEventPerBatch = 500;
2924
2980
  var EventsDroppedAtOneTime = 20;
2925
2981
  var MaxSendAttempts = 6;
2982
+ var MaxSyncUnloadSendAttempts = 2;
2926
2983
  var MaxBackoffCount = 4;
2927
2984
  var globalContext = isWindowObjectAvailable ? window : undefined;
2928
2985
  var MaxConnections = 2;
2929
- var MaxRetries = 1;
2986
+ var MaxRequestRetriesBeforeBackoff = 1;
2930
2987
  var strEventsDiscarded = "eventsDiscarded";
2931
2988
  var strOverrideInstrumentationKey = "overrideInstrumentationKey";
2989
+ var strMaxEventRetryAttempts = "maxEventRetryAttempts";
2990
+ var strMaxUnloadEventRetryAttempts = "maxUnloadEventRetryAttempts";
2932
2991
  var PostChannel = /** @class */ (function (_super) {
2933
2992
  __extendsFn(PostChannel, _super);
2934
2993
  function PostChannel() {
2935
2994
  var _this = _super.call(this) || this;
2936
2995
  _this.identifier = "PostChannel";
2937
2996
  _this.priority = 1011;
2938
- _this.version = '3.1.10';
2997
+ _this.version = '3.1.11';
2939
2998
  var _config;
2940
2999
  var _isTeardownCalled = false;
2941
3000
  var _flushCallbackQueue = [];
@@ -2960,11 +3019,14 @@
2960
3019
  var _delayedBatchReason;
2961
3020
  var _optimizeObject = true;
2962
3021
  var _isPageUnloadTriggered = false;
3022
+ var _disableXhrSync = false;
3023
+ var _maxEventSendAttempts = MaxSendAttempts;
3024
+ var _maxUnloadEventSendAttempts = MaxSyncUnloadSendAttempts;
2963
3025
  dynamicProto(PostChannel, _this, function (_self, _base) {
2964
3026
  _initializeProfiles();
2965
3027
  _clearQueues();
2966
3028
  _setAutoLimits();
2967
- _httpManager = new HttpManager(MaxNumberEventPerBatch, MaxConnections, MaxRetries, {
3029
+ _httpManager = new HttpManager(MaxNumberEventPerBatch, MaxConnections, MaxRequestRetriesBeforeBackoff, {
2968
3030
  requeue: _requeueEvents,
2969
3031
  send: _sendingEvent,
2970
3032
  sent: _eventsSentEvent,
@@ -2986,14 +3048,7 @@
2986
3048
  _self._setTimeoutOverride = _config.setTimeoutOverride ? _config.setTimeoutOverride : setTimeout.bind(globalContext);
2987
3049
  _self._clearTimeoutOverride = _config.clearTimeoutOverride ? _config.clearTimeoutOverride : clearTimeout.bind(globalContext);
2988
3050
  _optimizeObject = !_config.disableOptimizeObj && isChromium();
2989
- var existingGetWParamMethod = extendedCore.getWParam;
2990
- extendedCore.getWParam = function () {
2991
- var wparam = 0;
2992
- if (_config.ignoreMc1Ms0CookieProcessing) {
2993
- wparam = wparam | 2;
2994
- }
2995
- return wparam | existingGetWParamMethod();
2996
- };
3051
+ _hookWParam(extendedCore);
2997
3052
  if (_config.eventsLimitInMem > 0) {
2998
3053
  _queueSizeLimit = _config.eventsLimitInMem;
2999
3054
  }
@@ -3003,6 +3058,13 @@
3003
3058
  if (_config.autoFlushEventsLimit > 0) {
3004
3059
  _autoFlushEventsLimit = _config.autoFlushEventsLimit;
3005
3060
  }
3061
+ _disableXhrSync = _config.disableXhrSync;
3062
+ if (isNumber(_config[strMaxEventRetryAttempts])) {
3063
+ _maxEventSendAttempts = _config[strMaxEventRetryAttempts];
3064
+ }
3065
+ if (isNumber(_config[strMaxUnloadEventRetryAttempts])) {
3066
+ _maxUnloadEventSendAttempts = _config[strMaxUnloadEventRetryAttempts];
3067
+ }
3006
3068
  _setAutoLimits();
3007
3069
  if (_config.httpXHROverride && _config.httpXHROverride.sendPOST) {
3008
3070
  _xhrOverride = _config.httpXHROverride;
@@ -3015,21 +3077,10 @@
3015
3077
  var endpointUrl = _config.overrideEndpointUrl ? _config.overrideEndpointUrl : coreConfig.endpointUrl;
3016
3078
  _self._notificationManager = coreConfig.extensionConfig.NotificationManager;
3017
3079
  _httpManager.initialize(endpointUrl, _self.core, _self, _xhrOverride, _config);
3018
- function _handleUnloadEvents(evt) {
3019
- var theEvt = evt || getWindow().event;
3020
- if (theEvt.type !== "beforeunload") {
3021
- _isPageUnloadTriggered = true;
3022
- _httpManager.setUnloading(_isPageUnloadTriggered);
3023
- }
3024
- _releaseAllQueues(2 , 2 );
3025
- }
3026
3080
  var excludePageUnloadEvents = coreConfig.disablePageUnloadEvents || [];
3027
3081
  addPageUnloadEventListener(_handleUnloadEvents, excludePageUnloadEvents);
3028
3082
  addPageHideEventListener(_handleUnloadEvents, excludePageUnloadEvents);
3029
- addPageShowEventListener(function (evt) {
3030
- _isPageUnloadTriggered = false;
3031
- _httpManager.setUnloading(_isPageUnloadTriggered);
3032
- }, coreConfig.disablePageShowEvents);
3083
+ addPageShowEventListener(_handleShowEvents, coreConfig.disablePageShowEvents);
3033
3084
  _self.setInitialized(true);
3034
3085
  }, function () { return ({ coreConfig: coreConfig, core: core, extensions: extensions }); });
3035
3086
  };
@@ -3059,6 +3110,28 @@
3059
3110
  }
3060
3111
  _self.processNext(event, itemCtx);
3061
3112
  };
3113
+ function _hookWParam(extendedCore) {
3114
+ var existingGetWParamMethod = extendedCore.getWParam;
3115
+ extendedCore.getWParam = function () {
3116
+ var wparam = 0;
3117
+ if (_config.ignoreMc1Ms0CookieProcessing) {
3118
+ wparam = wparam | 2;
3119
+ }
3120
+ return wparam | existingGetWParamMethod();
3121
+ };
3122
+ }
3123
+ function _handleUnloadEvents(evt) {
3124
+ var theEvt = evt || getWindow().event;
3125
+ if (theEvt.type !== "beforeunload") {
3126
+ _isPageUnloadTriggered = true;
3127
+ _httpManager.setUnloading(_isPageUnloadTriggered);
3128
+ }
3129
+ _releaseAllQueues(2 , 2 );
3130
+ }
3131
+ function _handleShowEvents(evt) {
3132
+ _isPageUnloadTriggered = false;
3133
+ _httpManager.setUnloading(_isPageUnloadTriggered);
3134
+ }
3062
3135
  function _addEventToQueues(event, append) {
3063
3136
  if (!event.sendAttempt) {
3064
3137
  event.sendAttempt = 0;
@@ -3488,6 +3561,10 @@
3488
3561
  }
3489
3562
  function _requeueEvents(batches, reason) {
3490
3563
  var droppedEvents = [];
3564
+ var maxSendAttempts = _maxEventSendAttempts;
3565
+ if (_isPageUnloadTriggered) {
3566
+ maxSendAttempts = _maxUnloadEventSendAttempts;
3567
+ }
3491
3568
  arrForEach(batches, function (theBatch) {
3492
3569
  if (theBatch && theBatch.count() > 0) {
3493
3570
  arrForEach(theBatch.events(), function (theEvent) {
@@ -3496,7 +3573,7 @@
3496
3573
  theEvent.latency = EventLatency.Immediate;
3497
3574
  theEvent.sync = false;
3498
3575
  }
3499
- if (theEvent.sendAttempt < MaxSendAttempts) {
3576
+ if (theEvent.sendAttempt < maxSendAttempts) {
3500
3577
  setProcessTelemetryTimings(theEvent, _self.identifier);
3501
3578
  _addEventToQueues(theEvent, false);
3502
3579
  }
@@ -3595,4 +3672,4 @@
3595
3672
  (function(obj, prop, descriptor) { /* ai_es3_polyfil defineProperty */ var func = Object["defineProperty"]; if (func) { try { return func(obj, prop, descriptor); } catch(e) { /* IE8 defines defineProperty, but will throw */ } } if (descriptor && typeof descriptor.value !== undefined) { obj[prop] = descriptor.value; } return obj; })(exports, '__esModule', { value: true });
3596
3673
 
3597
3674
  }));
3598
- //# sourceMappingURL=ms.post-3.1.10.js.map
3675
+ //# sourceMappingURL=ms.post-3.1.11.js.map