@microsoft/applicationinsights-channel-js 3.0.4-nightly3.2309-09 → 3.0.4-nightly3.2309-10

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 (51) hide show
  1. package/browser/es5/{applicationinsights-channel-js.3.0.4-nightly3.2309-09.cjs.js → applicationinsights-channel-js.3.0.4-nightly3.2309-10.cjs.js} +187 -88
  2. package/browser/es5/{applicationinsights-channel-js.3.0.4-nightly3.2309-09.cjs.js.map → applicationinsights-channel-js.3.0.4-nightly3.2309-10.cjs.js.map} +1 -1
  3. package/browser/es5/{applicationinsights-channel-js.3.0.4-nightly3.2309-09.cjs.min.js → applicationinsights-channel-js.3.0.4-nightly3.2309-10.cjs.min.js} +3 -3
  4. package/browser/es5/{applicationinsights-channel-js.3.0.4-nightly3.2309-09.cjs.min.js.map → applicationinsights-channel-js.3.0.4-nightly3.2309-10.cjs.min.js.map} +1 -1
  5. package/browser/es5/{applicationinsights-channel-js.3.0.4-nightly3.2309-09.gbl.js → applicationinsights-channel-js.3.0.4-nightly3.2309-10.gbl.js} +189 -90
  6. package/browser/es5/{applicationinsights-channel-js.3.0.4-nightly3.2309-09.gbl.js.map → applicationinsights-channel-js.3.0.4-nightly3.2309-10.gbl.js.map} +1 -1
  7. package/browser/es5/applicationinsights-channel-js.3.0.4-nightly3.2309-10.gbl.min.js +6 -0
  8. package/browser/es5/{applicationinsights-channel-js.3.0.4-nightly3.2309-09.gbl.min.js.map → applicationinsights-channel-js.3.0.4-nightly3.2309-10.gbl.min.js.map} +1 -1
  9. package/browser/es5/applicationinsights-channel-js.3.0.4-nightly3.2309-10.integrity.json +66 -0
  10. package/browser/es5/{applicationinsights-channel-js.3.0.4-nightly3.2309-09.js → applicationinsights-channel-js.3.0.4-nightly3.2309-10.js} +189 -90
  11. package/browser/es5/{applicationinsights-channel-js.3.0.4-nightly3.2309-09.js.map → applicationinsights-channel-js.3.0.4-nightly3.2309-10.js.map} +1 -1
  12. package/browser/es5/applicationinsights-channel-js.3.0.4-nightly3.2309-10.min.js +6 -0
  13. package/browser/es5/{applicationinsights-channel-js.3.0.4-nightly3.2309-09.min.js.map → applicationinsights-channel-js.3.0.4-nightly3.2309-10.min.js.map} +1 -1
  14. package/browser/es5/applicationinsights-channel-js.3.cjs.js +186 -87
  15. package/browser/es5/applicationinsights-channel-js.3.cjs.js.map +1 -1
  16. package/browser/es5/applicationinsights-channel-js.3.cjs.min.js +2 -2
  17. package/browser/es5/applicationinsights-channel-js.3.cjs.min.js.map +1 -1
  18. package/browser/es5/applicationinsights-channel-js.3.gbl.js +188 -89
  19. package/browser/es5/applicationinsights-channel-js.3.gbl.js.map +1 -1
  20. package/browser/es5/applicationinsights-channel-js.3.gbl.min.js +2 -2
  21. package/browser/es5/applicationinsights-channel-js.3.gbl.min.js.map +1 -1
  22. package/browser/es5/applicationinsights-channel-js.3.integrity.json +25 -25
  23. package/browser/es5/applicationinsights-channel-js.3.js +188 -89
  24. package/browser/es5/applicationinsights-channel-js.3.js.map +1 -1
  25. package/browser/es5/applicationinsights-channel-js.3.min.js +2 -2
  26. package/browser/es5/applicationinsights-channel-js.3.min.js.map +1 -1
  27. package/dist/es5/applicationinsights-channel-js.js +186 -87
  28. package/dist/es5/applicationinsights-channel-js.js.map +1 -1
  29. package/dist/es5/applicationinsights-channel-js.min.js +2 -2
  30. package/dist/es5/applicationinsights-channel-js.min.js.map +1 -1
  31. package/dist-es5/EnvelopeCreator.js +2 -2
  32. package/dist-es5/EnvelopeCreator.js.map +1 -1
  33. package/dist-es5/Interfaces.js +1 -1
  34. package/dist-es5/InternalConstants.js +1 -1
  35. package/dist-es5/Offline.js +1 -1
  36. package/dist-es5/SendBuffer.js +1 -1
  37. package/dist-es5/Sender.js +198 -98
  38. package/dist-es5/Sender.js.map +1 -1
  39. package/dist-es5/Serializer.js +1 -1
  40. package/dist-es5/TelemetryProcessors/Sample.js +1 -1
  41. package/dist-es5/TelemetryProcessors/SamplingScoreGenerators/HashCodeScoreGenerator.js +1 -1
  42. package/dist-es5/TelemetryProcessors/SamplingScoreGenerators/SamplingScoreGenerator.js +1 -1
  43. package/dist-es5/__DynamicConstants.js +14 -12
  44. package/dist-es5/__DynamicConstants.js.map +1 -1
  45. package/dist-es5/applicationinsights-channel-js.js +1 -1
  46. package/package.json +3 -3
  47. package/types/applicationinsights-channel-js.d.ts +22 -1
  48. package/types/applicationinsights-channel-js.namespaced.d.ts +22 -1
  49. package/browser/es5/applicationinsights-channel-js.3.0.4-nightly3.2309-09.gbl.min.js +0 -6
  50. package/browser/es5/applicationinsights-channel-js.3.0.4-nightly3.2309-09.integrity.json +0 -66
  51. package/browser/es5/applicationinsights-channel-js.3.0.4-nightly3.2309-09.min.js +0 -6
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Application Insights JavaScript SDK - Channel, 3.0.4-nightly3.2309-09
2
+ * Application Insights JavaScript SDK - Channel, 3.0.4-nightly3.2309-10
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
  (function (global, factory) {
@@ -1765,7 +1765,7 @@
1765
1765
  return result;
1766
1766
  }
1767
1767
 
1768
- var version = '3.0.4-nightly3.2309-09';
1768
+ var version = '3.0.4-nightly3.2309-10';
1769
1769
  var instanceName = "." + newId(6);
1770
1770
  var _dataUid = 0;
1771
1771
  function _canAcceptData(target) {
@@ -4663,6 +4663,7 @@
4663
4663
  var _DYN__BUFFER__KEY = "BUFFER_KEY";
4664
4664
  var _DYN__SENT__BUFFER__KEY = "SENT_BUFFER_KEY";
4665
4665
  var _DYN__MAX__BUFFER__SIZE = "MAX_BUFFER_SIZE";
4666
+ var _DYN_SEND_POST = "sendPOST";
4666
4667
  var _DYN_TRIGGER_SEND = "triggerSend";
4667
4668
  var _DYN_DIAG_LOG = "diagLog";
4668
4669
  var _DYN__SENDER = "_sender";
@@ -4670,21 +4671,22 @@
4670
4671
  var _DYN_MAX_BATCH_SIZE_IN_BY1 = "maxBatchSizeInBytes";
4671
4672
  var _DYN_ONUNLOAD_DISABLE_BEA2 = "onunloadDisableBeacon";
4672
4673
  var _DYN_IS_BEACON_API_DISABL3 = "isBeaconApiDisabled";
4673
- var _DYN_ENABLE_SESSION_STORA4 = "enableSessionStorageBuffer";
4674
+ var _DYN_ALWAYS_USE_XHR_OVERR4 = "alwaysUseXhrOverride";
4675
+ var _DYN_ENABLE_SESSION_STORA5 = "enableSessionStorageBuffer";
4674
4676
  var _DYN__BUFFER = "_buffer";
4677
+ var _DYN_ONUNLOAD_DISABLE_FET6 = "onunloadDisableFetch";
4675
4678
  var _DYN_INSTRUMENTATION_KEY = "instrumentationKey";
4676
- var _DYN_DISABLE_XHR = "disableXhr";
4677
- var _DYN_ONUNLOAD_DISABLE_FET5 = "onunloadDisableFetch";
4678
4679
  var _DYN_CONVERT_UNDEFINED = "convertUndefined";
4679
4680
  var _DYN_MAX_BATCH_INTERVAL = "maxBatchInterval";
4680
4681
  var _DYN_BASE_TYPE = "baseType";
4681
4682
  var _DYN_SAMPLE_RATE = "sampleRate";
4682
- var _DYN__XHR_READY_STATE_CHA6 = "_xhrReadyStateChange";
4683
+ var _DYN__XHR_READY_STATE_CHA7 = "_xhrReadyStateChange";
4683
4684
  var _DYN__ON_ERROR = "_onError";
4684
4685
  var _DYN__ON_PARTIAL_SUCCESS = "_onPartialSuccess";
4685
4686
  var _DYN__ON_SUCCESS = "_onSuccess";
4686
4687
  var _DYN_ITEMS_ACCEPTED = "itemsAccepted";
4687
4688
  var _DYN_ITEMS_RECEIVED = "itemsReceived";
4689
+ var _DYN_ORI_PAYLOAD = "oriPayload";
4688
4690
  var _DYN_SET_REQUEST_HEADER = "setRequestHeader";
4689
4691
  var _DYN_EVENTS_SEND_REQUEST = "eventsSendRequest";
4690
4692
  var _DYN_GET_SAMPLING_SCORE = "getSamplingScore";
@@ -4799,7 +4801,7 @@
4799
4801
  }
4800
4802
  }
4801
4803
  var EnvelopeCreator = {
4802
- Version: '3.0.4-nightly3.2309-09'
4804
+ Version: '3.0.4-nightly3.2309-10'
4803
4805
  };
4804
4806
  function DependencyEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {
4805
4807
  EnvelopeCreatorInit(logger, telemetryItem);
@@ -5460,6 +5462,9 @@
5460
5462
  }
5461
5463
  return null;
5462
5464
  }
5465
+ function isOverrideFn(httpXHROverride) {
5466
+ return httpXHROverride && httpXHROverride[_DYN_SEND_POST ];
5467
+ }
5463
5468
  var defaultAppInsightsChannelConfig = objDeepFreeze((_a = {
5464
5469
  endpointUrl: cfgDfValidate(isTruthy, DEFAULT_BREEZE_ENDPOINT + DEFAULT_BREEZE_PATH)
5465
5470
  },
@@ -5467,11 +5472,11 @@
5467
5472
  _a[_DYN_MAX_BATCH_INTERVAL ] = 15000,
5468
5473
  _a[_DYN_MAX_BATCH_SIZE_IN_BY1 ] = 102400,
5469
5474
  _a.disableTelemetry = cfgDfBoolean(),
5470
- _a[_DYN_ENABLE_SESSION_STORA4 ] = cfgDfBoolean(true),
5475
+ _a[_DYN_ENABLE_SESSION_STORA5 ] = cfgDfBoolean(true),
5471
5476
  _a.isRetryDisabled = cfgDfBoolean(),
5472
5477
  _a[_DYN_IS_BEACON_API_DISABL3 ] = cfgDfBoolean(true),
5473
- _a[_DYN_DISABLE_XHR ] = cfgDfBoolean(),
5474
- _a[_DYN_ONUNLOAD_DISABLE_FET5 ] = cfgDfBoolean(),
5478
+ _a.disableXhr = cfgDfBoolean(),
5479
+ _a[_DYN_ONUNLOAD_DISABLE_FET6 ] = cfgDfBoolean(),
5475
5480
  _a[_DYN_ONUNLOAD_DISABLE_BEA2 ] = cfgDfBoolean(),
5476
5481
  _a[_DYN_INSTRUMENTATION_KEY ] = UNDEFINED_VALUE,
5477
5482
  _a.namePrefix = UNDEFINED_VALUE,
@@ -5480,6 +5485,8 @@
5480
5485
  _a[_DYN_CONVERT_UNDEFINED ] = UNDEFINED_VALUE,
5481
5486
  _a[_DYN_EVENTS_LIMIT_IN_MEM ] = 10000,
5482
5487
  _a[_DYN_BUFFER_OVERRIDE ] = false,
5488
+ _a.httpXHROverride = { isVal: isOverrideFn, v: UNDEFINED_VALUE },
5489
+ _a[_DYN_ALWAYS_USE_XHR_OVERR4 ] = cfgDfBoolean(),
5483
5490
  _a));
5484
5491
  function _chkSampling(value) {
5485
5492
  return !isNaN(value) && value > 0 && value <= 100;
@@ -5507,7 +5514,6 @@
5507
5514
  var _stamp_specific_redirects;
5508
5515
  var _headers;
5509
5516
  var _syncFetchPayload = 0;
5510
- var _fallbackSender;
5511
5517
  var _syncUnloadSender;
5512
5518
  var _offlineListener;
5513
5519
  var _evtNamespace;
@@ -5525,6 +5531,10 @@
5525
5531
  var _bufferOverrideUsed;
5526
5532
  var _namePrefix;
5527
5533
  var _enableSendPromise;
5534
+ var _alwaysUseCustomSend;
5535
+ var _disableXhr;
5536
+ var _fetchKeepAlive;
5537
+ var _xhrSend;
5528
5538
  dynamicProto(Sender, _this, function (_self, _base) {
5529
5539
  _initDefaults();
5530
5540
  _self.pause = function () {
@@ -5553,7 +5563,7 @@
5553
5563
  };
5554
5564
  _self.onunloadFlush = function () {
5555
5565
  if (!_paused) {
5556
- if (_beaconSupported) {
5566
+ if (_beaconSupported || _alwaysUseCustomSend) {
5557
5567
  try {
5558
5568
  return _self[_DYN_TRIGGER_SEND ](true, _doUnloadSend, 2 );
5559
5569
  }
@@ -5605,8 +5615,10 @@
5605
5615
  }
5606
5616
  _maxBatchSizeInBytes = senderConfig[_DYN_MAX_BATCH_SIZE_IN_BY1 ];
5607
5617
  _beaconSupported = (senderConfig[_DYN_ONUNLOAD_DISABLE_BEA2 ] === false || senderConfig[_DYN_IS_BEACON_API_DISABL3 ] === false) && isBeaconsSupported();
5618
+ _alwaysUseCustomSend = senderConfig[_DYN_ALWAYS_USE_XHR_OVERR4 ];
5619
+ _disableXhr = !!senderConfig.disableXhr;
5608
5620
  var bufferOverride = senderConfig[_DYN_BUFFER_OVERRIDE ];
5609
- var canUseSessionStorage = !!senderConfig[_DYN_ENABLE_SESSION_STORA4 ] &&
5621
+ var canUseSessionStorage = !!senderConfig[_DYN_ENABLE_SESSION_STORA5 ] &&
5610
5622
  (!!bufferOverride || utlCanUseSessionStorage());
5611
5623
  var namePrefix = senderConfig.namePrefix;
5612
5624
  var shouldUpdate = (canUseSessionStorage !== _sessionStorageUsed)
@@ -5630,6 +5642,7 @@
5630
5642
  _namePrefix = namePrefix;
5631
5643
  _sessionStorageUsed = canUseSessionStorage;
5632
5644
  _bufferOverrideUsed = bufferOverride;
5645
+ _fetchKeepAlive = !senderConfig[_DYN_ONUNLOAD_DISABLE_FET6 ] && isFetchSupported(true);
5633
5646
  _self._sample = new Sample(senderConfig.samplingPercentage, diagLog);
5634
5647
  _instrumentationKey = senderConfig[_DYN_INSTRUMENTATION_KEY ];
5635
5648
  if (!_validateInstrumentationKey(_instrumentationKey, config)) {
@@ -5645,35 +5658,32 @@
5645
5658
  _customHeaders = null;
5646
5659
  }
5647
5660
  _enableSendPromise = senderConfig.enableSendPromise;
5648
- var sendPostFunc = null;
5649
- if (!senderConfig[_DYN_DISABLE_XHR ] && useXDomainRequest()) {
5650
- sendPostFunc = _xdrSender;
5651
- }
5652
- else if (!senderConfig[_DYN_DISABLE_XHR ] && isXhrSupported()) {
5653
- sendPostFunc = _xhrSender;
5654
- }
5655
- if (!sendPostFunc && isFetchSupported()) {
5656
- sendPostFunc = _fetchSender;
5657
- }
5658
- _fallbackSender = sendPostFunc || _xhrSender;
5661
+ var customInterface = senderConfig.httpXHROverride;
5662
+ var httpInterface = null;
5663
+ var syncInterface = null;
5664
+ httpInterface = _getSenderInterface([1 , 2 ], false);
5665
+ var xhrInterface = { sendPOST: _xhrSender };
5666
+ _xhrSend = function (payload, isAsync) {
5667
+ return _doSend(xhrInterface, payload, isAsync);
5668
+ };
5659
5669
  if (!senderConfig[_DYN_IS_BEACON_API_DISABL3 ] && isBeaconsSupported()) {
5660
- sendPostFunc = _beaconSender;
5670
+ httpInterface = _getSenderInterface([3 ], false);
5661
5671
  }
5662
- _self[_DYN__SENDER ] = sendPostFunc || _xhrSender;
5663
- if (!senderConfig[_DYN_ONUNLOAD_DISABLE_FET5 ] && isFetchSupported(true)) {
5672
+ httpInterface = _alwaysUseCustomSend ? customInterface : (httpInterface || customInterface || xhrInterface);
5673
+ _self[_DYN__SENDER ] = function (payload, isAsync) {
5674
+ return _doSend(httpInterface, payload, isAsync);
5675
+ };
5676
+ if (_fetchKeepAlive) {
5664
5677
  _syncUnloadSender = _fetchKeepAliveSender;
5665
5678
  }
5666
- else if (isBeaconsSupported()) {
5667
- _syncUnloadSender = _beaconSender;
5679
+ syncInterface = _alwaysUseCustomSend ? customInterface : (_getSenderInterface([3 , 1 ], true) || customInterface);
5680
+ if ((_alwaysUseCustomSend || !_syncUnloadSender) && syncInterface) {
5681
+ _syncUnloadSender = function (payload, isAsync) {
5682
+ return _doSend(syncInterface, payload, isAsync);
5683
+ };
5668
5684
  }
5669
- else if (!senderConfig[_DYN_DISABLE_XHR ] && useXDomainRequest()) {
5670
- _syncUnloadSender = _xdrSender;
5671
- }
5672
- else if (!senderConfig[_DYN_DISABLE_XHR ] && isXhrSupported()) {
5673
- _syncUnloadSender = _xhrSender;
5674
- }
5675
- else {
5676
- _syncUnloadSender = _fallbackSender;
5685
+ if (!_syncUnloadSender) {
5686
+ _syncUnloadSender = _xhrSend;
5677
5687
  }
5678
5688
  _disableTelemetry = senderConfig.disableTelemetry;
5679
5689
  _convertUndefined = senderConfig[_DYN_CONVERT_UNDEFINED ] || UNDEFINED_VALUE;
@@ -5745,7 +5755,7 @@
5745
5755
  }
5746
5756
  _self.processNext(telemetryItem, itemCtx);
5747
5757
  };
5748
- _self[_DYN__XHR_READY_STATE_CHA6 ] = function (xhr, payload, countOfItemsInPayload) {
5758
+ _self[_DYN__XHR_READY_STATE_CHA7 ] = function (xhr, payload, countOfItemsInPayload) {
5749
5759
  if (xhr.readyState === 4) {
5750
5760
  _checkResponsStatus(xhr.status, payload, xhr.responseURL, countOfItemsInPayload, _formatErrorMessageXhr(xhr), _getResponseText(xhr) || xhr.response);
5751
5761
  }
@@ -5841,6 +5851,73 @@
5841
5851
  function _isSampledIn(envelope) {
5842
5852
  return _self._sample.isSampledIn(envelope);
5843
5853
  }
5854
+ function _getSenderInterface(transports, syncSupport) {
5855
+ var _a;
5856
+ var transportType = null;
5857
+ var sendPostFunc = null;
5858
+ var lp = 0;
5859
+ while (sendPostFunc == null && lp < transports[_DYN_LENGTH ]) {
5860
+ transportType = transports[lp];
5861
+ if (!_disableXhr && transportType === 1 ) {
5862
+ if (useXDomainRequest()) {
5863
+ sendPostFunc = _xdrSender;
5864
+ }
5865
+ else if (isXhrSupported()) {
5866
+ sendPostFunc = _xhrSender;
5867
+ }
5868
+ }
5869
+ else if (transportType === 2 && isFetchSupported(syncSupport)) {
5870
+ sendPostFunc = _fetchSender;
5871
+ }
5872
+ else if (isBeaconsSupported() && transportType === 3 ) {
5873
+ sendPostFunc = _beaconSender;
5874
+ }
5875
+ lp++;
5876
+ }
5877
+ if (sendPostFunc) {
5878
+ return _a = {},
5879
+ _a[_DYN_SEND_POST ] = sendPostFunc,
5880
+ _a;
5881
+ }
5882
+ return null;
5883
+ }
5884
+ function _getOnComplete(payload, status, headers, response) {
5885
+ if (status === 200 && payload) {
5886
+ _self._onSuccess(payload, payload[_DYN_LENGTH ]);
5887
+ }
5888
+ response && _self[_DYN__ON_ERROR ](payload, response);
5889
+ }
5890
+ function _doSend(sendInterface, payload, isAsync) {
5891
+ var onComplete = function (status, headers, response) {
5892
+ return _getOnComplete(payload, status, headers, response);
5893
+ };
5894
+ var payloadData = _getPayload(payload);
5895
+ var sendPostFunc = sendInterface && sendInterface[_DYN_SEND_POST ];
5896
+ if (sendPostFunc && payloadData) {
5897
+ _self._buffer[_DYN_MARK_AS_SENT ](payload);
5898
+ return sendPostFunc(payloadData, onComplete, !isAsync);
5899
+ }
5900
+ return null;
5901
+ }
5902
+ function _getPayload(payload) {
5903
+ var _a;
5904
+ if (isArray(payload) && payload[_DYN_LENGTH ] > 0) {
5905
+ var batch = _self._buffer[_DYN_BATCH_PAYLOADS ](payload);
5906
+ var payloadData = (_a = {},
5907
+ _a[_DYN_DATA ] = batch,
5908
+ _a.urlString = _endpointUrl,
5909
+ _a.headers = _headers,
5910
+ _a.disableXhrSync = _disableXhr,
5911
+ _a.disableFetchKeepAlive = !_fetchKeepAlive,
5912
+ _a[_DYN_ORI_PAYLOAD ] = payload,
5913
+ _a);
5914
+ return payloadData;
5915
+ }
5916
+ return null;
5917
+ }
5918
+ function _fetchSender(payload, oncomplete, sync) {
5919
+ return _doFetchSender(payload, oncomplete, false);
5920
+ }
5844
5921
  function _checkMaxSize(incomingPayload) {
5845
5922
  var incomingSize = incomingPayload ? incomingPayload[_DYN_LENGTH ] : 0;
5846
5923
  if ((_self[_DYN__BUFFER ].size() + incomingSize) > _maxBatchSizeInBytes) {
@@ -5914,45 +5991,60 @@
5914
5991
  }
5915
5992
  return false;
5916
5993
  }
5994
+ function _doOnComplete(oncomplete, status, headers, response) {
5995
+ try {
5996
+ oncomplete(status, headers, response);
5997
+ }
5998
+ catch (e) {
5999
+ }
6000
+ }
5917
6001
  function _doUnloadSend(payload, isAsync) {
6002
+ var onComplete = function (status, headers, response) {
6003
+ return _getOnComplete(payload, status, headers, response);
6004
+ };
5918
6005
  if (_syncUnloadSender) {
5919
6006
  _syncUnloadSender(payload, false);
5920
6007
  }
5921
6008
  else {
5922
- _beaconSender(payload);
6009
+ var payloadData = _getPayload(payload);
6010
+ _beaconSender(payloadData, onComplete);
5923
6011
  }
5924
6012
  }
5925
- function _doBeaconSend(payload) {
6013
+ function _doBeaconSend(payload, oncomplete) {
5926
6014
  var nav = getNavigator();
5927
- var buffer = _self[_DYN__BUFFER ];
5928
6015
  var url = _endpointUrl;
5929
- var batch = _self._buffer[_DYN_BATCH_PAYLOADS ](payload);
5930
- var plainTextBatch = new Blob([batch], { type: "text/plain;charset=UTF-8" });
6016
+ var plainTextBatch = new Blob([payload], { type: "text/plain;charset=UTF-8" });
5931
6017
  var queued = nav.sendBeacon(url, plainTextBatch);
5932
6018
  if (queued) {
5933
- buffer[_DYN_MARK_AS_SENT ](payload);
5934
- _self._onSuccess(payload, payload[_DYN_LENGTH ]);
6019
+ oncomplete(200, {}, payload);
5935
6020
  }
5936
6021
  return queued;
5937
6022
  }
5938
- function _beaconSender(payload, isAsync) {
5939
- if (isArray(payload) && payload[_DYN_LENGTH ] > 0) {
5940
- if (!_doBeaconSend(payload)) {
6023
+ function _beaconSender(payload, oncomplete, sync) {
6024
+ var internalPayload = payload;
6025
+ var data = internalPayload && internalPayload[_DYN_DATA ];
6026
+ if (isString(data) && data[_DYN_LENGTH ] > 0) {
6027
+ if (!_doBeaconSend(data, oncomplete)) {
5941
6028
  var droppedPayload = [];
5942
- for (var lp = 0; lp < payload[_DYN_LENGTH ]; lp++) {
5943
- var thePayload = payload[lp];
5944
- if (!_doBeaconSend([thePayload])) {
5945
- droppedPayload[_DYN_PUSH ](thePayload);
6029
+ var oriPayload = internalPayload[_DYN_ORI_PAYLOAD ];
6030
+ if (oriPayload[_DYN_LENGTH ] > 0) {
6031
+ for (var lp = 0; lp < data[_DYN_LENGTH ]; lp++) {
6032
+ var thePayload = payload[lp];
6033
+ var batch = _self._buffer[_DYN_BATCH_PAYLOADS ](thePayload);
6034
+ if (!_doBeaconSend(batch, oncomplete)) {
6035
+ droppedPayload[_DYN_PUSH ](thePayload);
6036
+ }
5946
6037
  }
5947
6038
  }
5948
6039
  if (droppedPayload[_DYN_LENGTH ] > 0) {
5949
- _fallbackSender && _fallbackSender(droppedPayload, true);
6040
+ _xhrSend && _xhrSend(droppedPayload, true);
5950
6041
  _throwInternal(_self[_DYN_DIAG_LOG ](), 2 , 40 , ". " + "Failed to send telemetry with Beacon API, retried with normal sender.");
5951
6042
  }
5952
6043
  }
5953
6044
  }
5954
6045
  }
5955
- function _xhrSender(payload, isAsync) {
6046
+ function _xhrSender(payload, oncomplete, sync) {
6047
+ var internalPayload = payload;
5956
6048
  var thePromise;
5957
6049
  var resolveFunc;
5958
6050
  var rejectFunc;
@@ -5963,7 +6055,7 @@
5963
6055
  }
5964
6056
  catch (e) {
5965
6057
  }
5966
- xhr.open("POST", endPointUrl, isAsync);
6058
+ xhr.open("POST", endPointUrl, !sync);
5967
6059
  xhr[_DYN_SET_REQUEST_HEADER ]("Content-type", "application/json");
5968
6060
  if (isInternalApplicationInsightsEndpoint(endPointUrl)) {
5969
6061
  xhr[_DYN_SET_REQUEST_HEADER ](RequestHeaders[6 ], RequestHeaders[7 ]);
@@ -5972,51 +6064,52 @@
5972
6064
  xhr[_DYN_SET_REQUEST_HEADER ](headerName, _headers[headerName]);
5973
6065
  });
5974
6066
  xhr.onreadystatechange = function () {
5975
- _self._xhrReadyStateChange(xhr, payload, payload[_DYN_LENGTH ]);
6067
+ var oriPayload = internalPayload[_DYN_ORI_PAYLOAD ];
6068
+ _self._xhrReadyStateChange(xhr, oriPayload, oriPayload[_DYN_LENGTH ]);
5976
6069
  if (xhr.readyState === 4) {
5977
6070
  resolveFunc && resolveFunc(true);
5978
6071
  }
5979
6072
  };
5980
6073
  xhr.onerror = function (event) {
5981
- _self[_DYN__ON_ERROR ](payload, _formatErrorMessageXhr(xhr), event);
6074
+ _doOnComplete(oncomplete, 400, {}, _formatErrorMessageXhr(xhr));
5982
6075
  rejectFunc && rejectFunc(event);
5983
6076
  };
5984
- if (isAsync && _enableSendPromise) {
6077
+ if (!sync && _enableSendPromise) {
5985
6078
  thePromise = createPromise(function (resolve, reject) {
5986
6079
  resolveFunc = resolve;
5987
6080
  rejectFunc = reject;
5988
6081
  });
5989
6082
  }
5990
- var batch = _self._buffer[_DYN_BATCH_PAYLOADS ](payload);
5991
- xhr.send(batch);
5992
- _self._buffer[_DYN_MARK_AS_SENT ](payload);
6083
+ xhr.send(payload[_DYN_DATA ]);
5993
6084
  return thePromise;
5994
6085
  }
5995
6086
  function _fetchKeepAliveSender(payload, isAsync) {
6087
+ var onComplete = function (status, headers, response) {
6088
+ return _getOnComplete(payload, status, headers, response);
6089
+ };
5996
6090
  if (isArray(payload)) {
5997
6091
  var payloadSize = payload[_DYN_LENGTH ];
5998
6092
  for (var lp = 0; lp < payload[_DYN_LENGTH ]; lp++) {
5999
6093
  payloadSize += payload[lp][_DYN_LENGTH ];
6000
6094
  }
6095
+ var payloadData = _getPayload(payload);
6001
6096
  if ((_syncFetchPayload + payloadSize) <= FetchSyncRequestSizeLimitBytes) {
6002
- _doFetchSender(payload, false);
6097
+ _doFetchSender(payloadData, onComplete, true);
6003
6098
  }
6004
6099
  else if (isBeaconsSupported()) {
6005
- _beaconSender(payload);
6100
+ _beaconSender(payloadData, onComplete);
6006
6101
  }
6007
6102
  else {
6008
- _fallbackSender && _fallbackSender(payload, true);
6103
+ _xhrSend && _xhrSend(payload, true);
6009
6104
  _throwInternal(_self[_DYN_DIAG_LOG ](), 2 , 40 , ". " + "Failed to send telemetry with Beacon API, retried with xhrSender.");
6010
6105
  }
6011
6106
  }
6012
6107
  }
6013
- function _fetchSender(payload, isAsync) {
6014
- return _doFetchSender(payload, true);
6015
- }
6016
- function _doFetchSender(payload, isAsync) {
6108
+ function _doFetchSender(payload, oncomplete, sync) {
6017
6109
  var _a;
6018
6110
  var endPointUrl = _endpointUrl;
6019
- var batch = _self._buffer[_DYN_BATCH_PAYLOADS ](payload);
6111
+ var internalPayload = payload;
6112
+ var batch = internalPayload[_DYN_DATA ];
6020
6113
  var plainTextBatch = new Blob([batch], { type: "application/json" });
6021
6114
  var thePromise;
6022
6115
  var resolveFunc;
@@ -6039,7 +6132,7 @@
6039
6132
  _a[DisabledPropertyName] = true
6040
6133
  ,
6041
6134
  _a);
6042
- if (!isAsync) {
6135
+ if (sync) {
6043
6136
  init.keepalive = true;
6044
6137
  ignoreResponse = true;
6045
6138
  _syncFetchPayload += batchLength;
@@ -6050,8 +6143,7 @@
6050
6143
  }
6051
6144
  catch (e) {
6052
6145
  }
6053
- _self._buffer[_DYN_MARK_AS_SENT ](payload);
6054
- if (isAsync && _enableSendPromise) {
6146
+ if (!sync && _enableSendPromise) {
6055
6147
  thePromise = createPromise(function (resolve, reject) {
6056
6148
  resolveFunc = resolve;
6057
6149
  rejectFunc = reject;
@@ -6059,7 +6151,7 @@
6059
6151
  }
6060
6152
  try {
6061
6153
  doAwaitResponse(fetch(request), function (result) {
6062
- if (!isAsync) {
6154
+ if (sync) {
6063
6155
  _syncFetchPayload -= batchLength;
6064
6156
  batchLength = 0;
6065
6157
  }
@@ -6068,18 +6160,19 @@
6068
6160
  if (!result.rejected) {
6069
6161
  var response_1 = result.value;
6070
6162
  if (!response_1.ok) {
6071
- _self[_DYN__ON_ERROR ](payload, response_1.statusText);
6163
+ _doOnComplete(oncomplete, 400, {}, response_1.statusText);
6072
6164
  resolveFunc && resolveFunc(false);
6073
6165
  }
6074
6166
  else {
6075
6167
  doAwaitResponse(response_1.text(), function (resp) {
6076
- _checkResponsStatus(response_1.status, payload, response_1.url, payload[_DYN_LENGTH ], response_1.statusText, resp.value || "");
6168
+ var oriPayload = internalPayload[_DYN_ORI_PAYLOAD ];
6169
+ _checkResponsStatus(response_1.status, oriPayload, response_1.url, oriPayload[_DYN_LENGTH ], response_1.statusText, resp.value || "");
6077
6170
  resolveFunc && resolveFunc(true);
6078
6171
  });
6079
6172
  }
6080
6173
  }
6081
6174
  else {
6082
- _self[_DYN__ON_ERROR ](payload, result.reason && result.reason.message);
6175
+ _doOnComplete(oncomplete, 400, {}, result.reason && result.reason.message);
6083
6176
  rejectFunc && rejectFunc(result.reason);
6084
6177
  }
6085
6178
  }
@@ -6087,13 +6180,13 @@
6087
6180
  }
6088
6181
  catch (e) {
6089
6182
  if (!responseHandled) {
6090
- _self[_DYN__ON_ERROR ](payload, dumpObj(e));
6183
+ _doOnComplete(oncomplete, 400, {}, dumpObj(e));
6091
6184
  rejectFunc && rejectFunc(e);
6092
6185
  }
6093
6186
  }
6094
6187
  if (ignoreResponse && !responseHandled) {
6095
6188
  responseHandled = true;
6096
- _self._onSuccess(payload, payload[_DYN_LENGTH ]);
6189
+ _doOnComplete(oncomplete, 200, {});
6097
6190
  resolveFunc && resolveFunc(true);
6098
6191
  }
6099
6192
  return thePromise;
@@ -6176,24 +6269,28 @@
6176
6269
  }
6177
6270
  return message;
6178
6271
  }
6179
- function _xdrSender(payload, isAsync) {
6180
- var buffer = _self[_DYN__BUFFER ];
6272
+ function _xdrSender(payload, oncomplete, sync) {
6273
+ var internalPayload = payload;
6181
6274
  var _window = getWindow();
6182
6275
  var xdr = new XDomainRequest();
6183
- xdr.onload = function () { return _self._xdrOnLoad(xdr, payload); };
6184
- xdr.onerror = function (event) { return _self[_DYN__ON_ERROR ](payload, _formatErrorMessageXdr(xdr), event); };
6276
+ var data = internalPayload[_DYN_DATA ];
6277
+ xdr.onload = function () {
6278
+ var oriPayload = internalPayload[_DYN_ORI_PAYLOAD ];
6279
+ _self._xdrOnLoad(xdr, oriPayload);
6280
+ };
6281
+ xdr.onerror = function () {
6282
+ _doOnComplete(oncomplete, 400, {}, _formatErrorMessageXdr(xdr));
6283
+ };
6185
6284
  var hostingProtocol = _window && _window.location && _window.location.protocol || "";
6186
6285
  if (_endpointUrl.lastIndexOf(hostingProtocol, 0) !== 0) {
6187
6286
  _throwInternal(_self[_DYN_DIAG_LOG ](), 2 , 40 , ". " +
6188
6287
  "Cannot send XDomain request. The endpoint URL protocol doesn't match the hosting page protocol.");
6189
- buffer[_DYN_CLEAR ]();
6288
+ _self._buffer[_DYN_CLEAR ]();
6190
6289
  return;
6191
6290
  }
6192
6291
  var endpointUrl = _endpointUrl.replace(/^(https?:)/, "");
6193
6292
  xdr.open("POST", endpointUrl);
6194
- var batch = buffer[_DYN_BATCH_PAYLOADS ](payload);
6195
- xdr.send(batch);
6196
- buffer[_DYN_MARK_AS_SENT ](payload);
6293
+ xdr.send(data);
6197
6294
  }
6198
6295
  function _formatErrorMessageXdr(xdr, message) {
6199
6296
  if (xdr) {
@@ -6243,7 +6340,6 @@
6243
6340
  _serializer = null;
6244
6341
  _stamp_specific_redirects = 0;
6245
6342
  _syncFetchPayload = 0;
6246
- _fallbackSender = null;
6247
6343
  _syncUnloadSender = null;
6248
6344
  _evtNamespace = null;
6249
6345
  _endpointUrl = null;
@@ -6257,6 +6353,9 @@
6257
6353
  _isRetryDisabled = false;
6258
6354
  _sessionStorageUsed = null;
6259
6355
  _namePrefix = UNDEFINED_VALUE;
6356
+ _disableXhr = false;
6357
+ _fetchKeepAlive = false;
6358
+ _xhrSend = null;
6260
6359
  objDefine(_self, "_senderConfig", {
6261
6360
  g: function () {
6262
6361
  return objExtend({}, defaultAppInsightsChannelConfig);