@microsoft/applicationinsights-web-basic 3.0.4-nightly3.2309-08 → 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 (38) hide show
  1. package/browser/es5/{aib.3.0.4-nightly3.2309-08.cjs.js → aib.3.0.4-nightly3.2309-10.cjs.js} +187 -88
  2. package/browser/es5/{aib.3.0.4-nightly3.2309-08.cjs.js.map → aib.3.0.4-nightly3.2309-10.cjs.js.map} +1 -1
  3. package/browser/es5/{aib.3.0.4-nightly3.2309-08.cjs.min.js → aib.3.0.4-nightly3.2309-10.cjs.min.js} +3 -3
  4. package/browser/es5/{aib.3.0.4-nightly3.2309-08.cjs.min.js.map → aib.3.0.4-nightly3.2309-10.cjs.min.js.map} +1 -1
  5. package/browser/es5/{aib.3.0.4-nightly3.2309-08.gbl.js → aib.3.0.4-nightly3.2309-10.gbl.js} +189 -90
  6. package/browser/es5/{aib.3.0.4-nightly3.2309-08.gbl.js.map → aib.3.0.4-nightly3.2309-10.gbl.js.map} +1 -1
  7. package/browser/es5/aib.3.0.4-nightly3.2309-10.gbl.min.js +6 -0
  8. package/browser/es5/{aib.3.0.4-nightly3.2309-08.gbl.min.js.map → aib.3.0.4-nightly3.2309-10.gbl.min.js.map} +1 -1
  9. package/browser/es5/aib.3.0.4-nightly3.2309-10.integrity.json +66 -0
  10. package/browser/es5/{aib.3.0.4-nightly3.2309-08.js → aib.3.0.4-nightly3.2309-10.js} +189 -90
  11. package/browser/es5/{aib.3.0.4-nightly3.2309-08.js.map → aib.3.0.4-nightly3.2309-10.js.map} +1 -1
  12. package/browser/es5/aib.3.0.4-nightly3.2309-10.min.js +6 -0
  13. package/browser/es5/{aib.3.0.4-nightly3.2309-08.min.js.map → aib.3.0.4-nightly3.2309-10.min.js.map} +1 -1
  14. package/browser/es5/aib.3.cjs.js +186 -87
  15. package/browser/es5/aib.3.cjs.js.map +1 -1
  16. package/browser/es5/aib.3.cjs.min.js +2 -2
  17. package/browser/es5/aib.3.cjs.min.js.map +1 -1
  18. package/browser/es5/aib.3.gbl.js +188 -89
  19. package/browser/es5/aib.3.gbl.js.map +1 -1
  20. package/browser/es5/aib.3.gbl.min.js +2 -2
  21. package/browser/es5/aib.3.gbl.min.js.map +1 -1
  22. package/browser/es5/aib.3.integrity.json +25 -25
  23. package/browser/es5/aib.3.js +188 -89
  24. package/browser/es5/aib.3.js.map +1 -1
  25. package/browser/es5/aib.3.min.js +2 -2
  26. package/browser/es5/aib.3.min.js.map +1 -1
  27. package/dist/es5/applicationinsights-web-basic.js +186 -87
  28. package/dist/es5/applicationinsights-web-basic.js.map +1 -1
  29. package/dist/es5/applicationinsights-web-basic.min.js +2 -2
  30. package/dist/es5/applicationinsights-web-basic.min.js.map +1 -1
  31. package/dist-es5/__DynamicConstants.js +1 -1
  32. package/dist-es5/index.js +1 -1
  33. package/package.json +4 -4
  34. package/types/applicationinsights-web-basic.d.ts +1 -1
  35. package/types/applicationinsights-web-basic.namespaced.d.ts +1 -1
  36. package/browser/es5/aib.3.0.4-nightly3.2309-08.gbl.min.js +0 -6
  37. package/browser/es5/aib.3.0.4-nightly3.2309-08.integrity.json +0 -66
  38. package/browser/es5/aib.3.0.4-nightly3.2309-08.min.js +0 -6
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Application Insights JavaScript Web SDK - Basic, 3.0.4-nightly3.2309-08
2
+ * Application Insights JavaScript Web SDK - Basic, 3.0.4-nightly3.2309-10
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
  (function (global, factory) {
@@ -2041,7 +2041,7 @@
2041
2041
  return result;
2042
2042
  }
2043
2043
 
2044
- var version = '3.0.4-nightly3.2309-08';
2044
+ var version = '3.0.4-nightly3.2309-10';
2045
2045
  var instanceName = "." + newId(6);
2046
2046
  var _dataUid = 0;
2047
2047
  function _canAcceptData(target) {
@@ -6413,6 +6413,7 @@
6413
6413
  var _DYN__BUFFER__KEY = "BUFFER_KEY";
6414
6414
  var _DYN__SENT__BUFFER__KEY = "SENT_BUFFER_KEY";
6415
6415
  var _DYN__MAX__BUFFER__SIZE = "MAX_BUFFER_SIZE";
6416
+ var _DYN_SEND_POST = "sendPOST";
6416
6417
  var _DYN_TRIGGER_SEND = "triggerSend";
6417
6418
  var _DYN_DIAG_LOG = "diagLog";
6418
6419
  var _DYN__SENDER = "_sender";
@@ -6420,21 +6421,22 @@
6420
6421
  var _DYN_MAX_BATCH_SIZE_IN_BY1 = "maxBatchSizeInBytes";
6421
6422
  var _DYN_ONUNLOAD_DISABLE_BEA2 = "onunloadDisableBeacon";
6422
6423
  var _DYN_IS_BEACON_API_DISABL3 = "isBeaconApiDisabled";
6423
- var _DYN_ENABLE_SESSION_STORA4 = "enableSessionStorageBuffer";
6424
+ var _DYN_ALWAYS_USE_XHR_OVERR4 = "alwaysUseXhrOverride";
6425
+ var _DYN_ENABLE_SESSION_STORA5 = "enableSessionStorageBuffer";
6424
6426
  var _DYN__BUFFER = "_buffer";
6427
+ var _DYN_ONUNLOAD_DISABLE_FET6 = "onunloadDisableFetch";
6425
6428
  var _DYN_INSTRUMENTATION_KEY$1 = "instrumentationKey";
6426
- var _DYN_DISABLE_XHR = "disableXhr";
6427
- var _DYN_ONUNLOAD_DISABLE_FET5 = "onunloadDisableFetch";
6428
6429
  var _DYN_CONVERT_UNDEFINED = "convertUndefined";
6429
6430
  var _DYN_MAX_BATCH_INTERVAL = "maxBatchInterval";
6430
6431
  var _DYN_BASE_TYPE = "baseType";
6431
6432
  var _DYN_SAMPLE_RATE = "sampleRate";
6432
- var _DYN__XHR_READY_STATE_CHA6 = "_xhrReadyStateChange";
6433
+ var _DYN__XHR_READY_STATE_CHA7 = "_xhrReadyStateChange";
6433
6434
  var _DYN__ON_ERROR = "_onError";
6434
6435
  var _DYN__ON_PARTIAL_SUCCESS = "_onPartialSuccess";
6435
6436
  var _DYN__ON_SUCCESS = "_onSuccess";
6436
6437
  var _DYN_ITEMS_ACCEPTED = "itemsAccepted";
6437
6438
  var _DYN_ITEMS_RECEIVED = "itemsReceived";
6439
+ var _DYN_ORI_PAYLOAD = "oriPayload";
6438
6440
  var _DYN_SET_REQUEST_HEADER = "setRequestHeader";
6439
6441
  var _DYN_EVENTS_SEND_REQUEST = "eventsSendRequest";
6440
6442
  var _DYN_GET_SAMPLING_SCORE = "getSamplingScore";
@@ -6549,7 +6551,7 @@
6549
6551
  }
6550
6552
  }
6551
6553
  var EnvelopeCreator = {
6552
- Version: '3.0.4-nightly3.2309-08'
6554
+ Version: '3.0.4-nightly3.2309-10'
6553
6555
  };
6554
6556
  function DependencyEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {
6555
6557
  EnvelopeCreatorInit(logger, telemetryItem);
@@ -7210,6 +7212,9 @@
7210
7212
  }
7211
7213
  return null;
7212
7214
  }
7215
+ function isOverrideFn(httpXHROverride) {
7216
+ return httpXHROverride && httpXHROverride[_DYN_SEND_POST ];
7217
+ }
7213
7218
  var defaultAppInsightsChannelConfig = objDeepFreeze((_a = {
7214
7219
  endpointUrl: cfgDfValidate(isTruthy, DEFAULT_BREEZE_ENDPOINT + DEFAULT_BREEZE_PATH)
7215
7220
  },
@@ -7217,11 +7222,11 @@
7217
7222
  _a[_DYN_MAX_BATCH_INTERVAL ] = 15000,
7218
7223
  _a[_DYN_MAX_BATCH_SIZE_IN_BY1 ] = 102400,
7219
7224
  _a.disableTelemetry = cfgDfBoolean(),
7220
- _a[_DYN_ENABLE_SESSION_STORA4 ] = cfgDfBoolean(true),
7225
+ _a[_DYN_ENABLE_SESSION_STORA5 ] = cfgDfBoolean(true),
7221
7226
  _a.isRetryDisabled = cfgDfBoolean(),
7222
7227
  _a[_DYN_IS_BEACON_API_DISABL3 ] = cfgDfBoolean(true),
7223
- _a[_DYN_DISABLE_XHR ] = cfgDfBoolean(),
7224
- _a[_DYN_ONUNLOAD_DISABLE_FET5 ] = cfgDfBoolean(),
7228
+ _a.disableXhr = cfgDfBoolean(),
7229
+ _a[_DYN_ONUNLOAD_DISABLE_FET6 ] = cfgDfBoolean(),
7225
7230
  _a[_DYN_ONUNLOAD_DISABLE_BEA2 ] = cfgDfBoolean(),
7226
7231
  _a[_DYN_INSTRUMENTATION_KEY$1 ] = UNDEFINED_VALUE,
7227
7232
  _a.namePrefix = UNDEFINED_VALUE,
@@ -7230,6 +7235,8 @@
7230
7235
  _a[_DYN_CONVERT_UNDEFINED ] = UNDEFINED_VALUE,
7231
7236
  _a[_DYN_EVENTS_LIMIT_IN_MEM ] = 10000,
7232
7237
  _a[_DYN_BUFFER_OVERRIDE ] = false,
7238
+ _a.httpXHROverride = { isVal: isOverrideFn, v: UNDEFINED_VALUE },
7239
+ _a[_DYN_ALWAYS_USE_XHR_OVERR4 ] = cfgDfBoolean(),
7233
7240
  _a));
7234
7241
  function _chkSampling(value) {
7235
7242
  return !isNaN(value) && value > 0 && value <= 100;
@@ -7257,7 +7264,6 @@
7257
7264
  var _stamp_specific_redirects;
7258
7265
  var _headers;
7259
7266
  var _syncFetchPayload = 0;
7260
- var _fallbackSender;
7261
7267
  var _syncUnloadSender;
7262
7268
  var _offlineListener;
7263
7269
  var _evtNamespace;
@@ -7275,6 +7281,10 @@
7275
7281
  var _bufferOverrideUsed;
7276
7282
  var _namePrefix;
7277
7283
  var _enableSendPromise;
7284
+ var _alwaysUseCustomSend;
7285
+ var _disableXhr;
7286
+ var _fetchKeepAlive;
7287
+ var _xhrSend;
7278
7288
  dynamicProto(Sender, _this, function (_self, _base) {
7279
7289
  _initDefaults();
7280
7290
  _self.pause = function () {
@@ -7303,7 +7313,7 @@
7303
7313
  };
7304
7314
  _self.onunloadFlush = function () {
7305
7315
  if (!_paused) {
7306
- if (_beaconSupported) {
7316
+ if (_beaconSupported || _alwaysUseCustomSend) {
7307
7317
  try {
7308
7318
  return _self[_DYN_TRIGGER_SEND ](true, _doUnloadSend, 2 );
7309
7319
  }
@@ -7355,8 +7365,10 @@
7355
7365
  }
7356
7366
  _maxBatchSizeInBytes = senderConfig[_DYN_MAX_BATCH_SIZE_IN_BY1 ];
7357
7367
  _beaconSupported = (senderConfig[_DYN_ONUNLOAD_DISABLE_BEA2 ] === false || senderConfig[_DYN_IS_BEACON_API_DISABL3 ] === false) && isBeaconsSupported();
7368
+ _alwaysUseCustomSend = senderConfig[_DYN_ALWAYS_USE_XHR_OVERR4 ];
7369
+ _disableXhr = !!senderConfig.disableXhr;
7358
7370
  var bufferOverride = senderConfig[_DYN_BUFFER_OVERRIDE ];
7359
- var canUseSessionStorage = !!senderConfig[_DYN_ENABLE_SESSION_STORA4 ] &&
7371
+ var canUseSessionStorage = !!senderConfig[_DYN_ENABLE_SESSION_STORA5 ] &&
7360
7372
  (!!bufferOverride || utlCanUseSessionStorage());
7361
7373
  var namePrefix = senderConfig.namePrefix;
7362
7374
  var shouldUpdate = (canUseSessionStorage !== _sessionStorageUsed)
@@ -7380,6 +7392,7 @@
7380
7392
  _namePrefix = namePrefix;
7381
7393
  _sessionStorageUsed = canUseSessionStorage;
7382
7394
  _bufferOverrideUsed = bufferOverride;
7395
+ _fetchKeepAlive = !senderConfig[_DYN_ONUNLOAD_DISABLE_FET6 ] && isFetchSupported(true);
7383
7396
  _self._sample = new Sample(senderConfig.samplingPercentage, diagLog);
7384
7397
  _instrumentationKey = senderConfig[_DYN_INSTRUMENTATION_KEY$1 ];
7385
7398
  if (!_validateInstrumentationKey(_instrumentationKey, config)) {
@@ -7395,35 +7408,32 @@
7395
7408
  _customHeaders = null;
7396
7409
  }
7397
7410
  _enableSendPromise = senderConfig.enableSendPromise;
7398
- var sendPostFunc = null;
7399
- if (!senderConfig[_DYN_DISABLE_XHR ] && useXDomainRequest()) {
7400
- sendPostFunc = _xdrSender;
7401
- }
7402
- else if (!senderConfig[_DYN_DISABLE_XHR ] && isXhrSupported()) {
7403
- sendPostFunc = _xhrSender;
7404
- }
7405
- if (!sendPostFunc && isFetchSupported()) {
7406
- sendPostFunc = _fetchSender;
7407
- }
7408
- _fallbackSender = sendPostFunc || _xhrSender;
7411
+ var customInterface = senderConfig.httpXHROverride;
7412
+ var httpInterface = null;
7413
+ var syncInterface = null;
7414
+ httpInterface = _getSenderInterface([1 , 2 ], false);
7415
+ var xhrInterface = { sendPOST: _xhrSender };
7416
+ _xhrSend = function (payload, isAsync) {
7417
+ return _doSend(xhrInterface, payload, isAsync);
7418
+ };
7409
7419
  if (!senderConfig[_DYN_IS_BEACON_API_DISABL3 ] && isBeaconsSupported()) {
7410
- sendPostFunc = _beaconSender;
7420
+ httpInterface = _getSenderInterface([3 ], false);
7411
7421
  }
7412
- _self[_DYN__SENDER ] = sendPostFunc || _xhrSender;
7413
- if (!senderConfig[_DYN_ONUNLOAD_DISABLE_FET5 ] && isFetchSupported(true)) {
7422
+ httpInterface = _alwaysUseCustomSend ? customInterface : (httpInterface || customInterface || xhrInterface);
7423
+ _self[_DYN__SENDER ] = function (payload, isAsync) {
7424
+ return _doSend(httpInterface, payload, isAsync);
7425
+ };
7426
+ if (_fetchKeepAlive) {
7414
7427
  _syncUnloadSender = _fetchKeepAliveSender;
7415
7428
  }
7416
- else if (isBeaconsSupported()) {
7417
- _syncUnloadSender = _beaconSender;
7418
- }
7419
- else if (!senderConfig[_DYN_DISABLE_XHR ] && useXDomainRequest()) {
7420
- _syncUnloadSender = _xdrSender;
7429
+ syncInterface = _alwaysUseCustomSend ? customInterface : (_getSenderInterface([3 , 1 ], true) || customInterface);
7430
+ if ((_alwaysUseCustomSend || !_syncUnloadSender) && syncInterface) {
7431
+ _syncUnloadSender = function (payload, isAsync) {
7432
+ return _doSend(syncInterface, payload, isAsync);
7433
+ };
7421
7434
  }
7422
- else if (!senderConfig[_DYN_DISABLE_XHR ] && isXhrSupported()) {
7423
- _syncUnloadSender = _xhrSender;
7424
- }
7425
- else {
7426
- _syncUnloadSender = _fallbackSender;
7435
+ if (!_syncUnloadSender) {
7436
+ _syncUnloadSender = _xhrSend;
7427
7437
  }
7428
7438
  _disableTelemetry = senderConfig.disableTelemetry;
7429
7439
  _convertUndefined = senderConfig[_DYN_CONVERT_UNDEFINED ] || UNDEFINED_VALUE;
@@ -7495,7 +7505,7 @@
7495
7505
  }
7496
7506
  _self.processNext(telemetryItem, itemCtx);
7497
7507
  };
7498
- _self[_DYN__XHR_READY_STATE_CHA6 ] = function (xhr, payload, countOfItemsInPayload) {
7508
+ _self[_DYN__XHR_READY_STATE_CHA7 ] = function (xhr, payload, countOfItemsInPayload) {
7499
7509
  if (xhr.readyState === 4) {
7500
7510
  _checkResponsStatus(xhr.status, payload, xhr.responseURL, countOfItemsInPayload, _formatErrorMessageXhr(xhr), _getResponseText(xhr) || xhr.response);
7501
7511
  }
@@ -7591,6 +7601,73 @@
7591
7601
  function _isSampledIn(envelope) {
7592
7602
  return _self._sample.isSampledIn(envelope);
7593
7603
  }
7604
+ function _getSenderInterface(transports, syncSupport) {
7605
+ var _a;
7606
+ var transportType = null;
7607
+ var sendPostFunc = null;
7608
+ var lp = 0;
7609
+ while (sendPostFunc == null && lp < transports[_DYN_LENGTH ]) {
7610
+ transportType = transports[lp];
7611
+ if (!_disableXhr && transportType === 1 ) {
7612
+ if (useXDomainRequest()) {
7613
+ sendPostFunc = _xdrSender;
7614
+ }
7615
+ else if (isXhrSupported()) {
7616
+ sendPostFunc = _xhrSender;
7617
+ }
7618
+ }
7619
+ else if (transportType === 2 && isFetchSupported(syncSupport)) {
7620
+ sendPostFunc = _fetchSender;
7621
+ }
7622
+ else if (isBeaconsSupported() && transportType === 3 ) {
7623
+ sendPostFunc = _beaconSender;
7624
+ }
7625
+ lp++;
7626
+ }
7627
+ if (sendPostFunc) {
7628
+ return _a = {},
7629
+ _a[_DYN_SEND_POST ] = sendPostFunc,
7630
+ _a;
7631
+ }
7632
+ return null;
7633
+ }
7634
+ function _getOnComplete(payload, status, headers, response) {
7635
+ if (status === 200 && payload) {
7636
+ _self._onSuccess(payload, payload[_DYN_LENGTH ]);
7637
+ }
7638
+ response && _self[_DYN__ON_ERROR ](payload, response);
7639
+ }
7640
+ function _doSend(sendInterface, payload, isAsync) {
7641
+ var onComplete = function (status, headers, response) {
7642
+ return _getOnComplete(payload, status, headers, response);
7643
+ };
7644
+ var payloadData = _getPayload(payload);
7645
+ var sendPostFunc = sendInterface && sendInterface[_DYN_SEND_POST ];
7646
+ if (sendPostFunc && payloadData) {
7647
+ _self._buffer[_DYN_MARK_AS_SENT ](payload);
7648
+ return sendPostFunc(payloadData, onComplete, !isAsync);
7649
+ }
7650
+ return null;
7651
+ }
7652
+ function _getPayload(payload) {
7653
+ var _a;
7654
+ if (isArray(payload) && payload[_DYN_LENGTH ] > 0) {
7655
+ var batch = _self._buffer[_DYN_BATCH_PAYLOADS ](payload);
7656
+ var payloadData = (_a = {},
7657
+ _a[_DYN_DATA ] = batch,
7658
+ _a.urlString = _endpointUrl,
7659
+ _a.headers = _headers,
7660
+ _a.disableXhrSync = _disableXhr,
7661
+ _a.disableFetchKeepAlive = !_fetchKeepAlive,
7662
+ _a[_DYN_ORI_PAYLOAD ] = payload,
7663
+ _a);
7664
+ return payloadData;
7665
+ }
7666
+ return null;
7667
+ }
7668
+ function _fetchSender(payload, oncomplete, sync) {
7669
+ return _doFetchSender(payload, oncomplete, false);
7670
+ }
7594
7671
  function _checkMaxSize(incomingPayload) {
7595
7672
  var incomingSize = incomingPayload ? incomingPayload[_DYN_LENGTH ] : 0;
7596
7673
  if ((_self[_DYN__BUFFER ].size() + incomingSize) > _maxBatchSizeInBytes) {
@@ -7664,45 +7741,60 @@
7664
7741
  }
7665
7742
  return false;
7666
7743
  }
7744
+ function _doOnComplete(oncomplete, status, headers, response) {
7745
+ try {
7746
+ oncomplete(status, headers, response);
7747
+ }
7748
+ catch (e) {
7749
+ }
7750
+ }
7667
7751
  function _doUnloadSend(payload, isAsync) {
7752
+ var onComplete = function (status, headers, response) {
7753
+ return _getOnComplete(payload, status, headers, response);
7754
+ };
7668
7755
  if (_syncUnloadSender) {
7669
7756
  _syncUnloadSender(payload, false);
7670
7757
  }
7671
7758
  else {
7672
- _beaconSender(payload);
7759
+ var payloadData = _getPayload(payload);
7760
+ _beaconSender(payloadData, onComplete);
7673
7761
  }
7674
7762
  }
7675
- function _doBeaconSend(payload) {
7763
+ function _doBeaconSend(payload, oncomplete) {
7676
7764
  var nav = getNavigator();
7677
- var buffer = _self[_DYN__BUFFER ];
7678
7765
  var url = _endpointUrl;
7679
- var batch = _self._buffer[_DYN_BATCH_PAYLOADS ](payload);
7680
- var plainTextBatch = new Blob([batch], { type: "text/plain;charset=UTF-8" });
7766
+ var plainTextBatch = new Blob([payload], { type: "text/plain;charset=UTF-8" });
7681
7767
  var queued = nav.sendBeacon(url, plainTextBatch);
7682
7768
  if (queued) {
7683
- buffer[_DYN_MARK_AS_SENT ](payload);
7684
- _self._onSuccess(payload, payload[_DYN_LENGTH ]);
7769
+ oncomplete(200, {}, payload);
7685
7770
  }
7686
7771
  return queued;
7687
7772
  }
7688
- function _beaconSender(payload, isAsync) {
7689
- if (isArray(payload) && payload[_DYN_LENGTH ] > 0) {
7690
- if (!_doBeaconSend(payload)) {
7773
+ function _beaconSender(payload, oncomplete, sync) {
7774
+ var internalPayload = payload;
7775
+ var data = internalPayload && internalPayload[_DYN_DATA ];
7776
+ if (isString(data) && data[_DYN_LENGTH ] > 0) {
7777
+ if (!_doBeaconSend(data, oncomplete)) {
7691
7778
  var droppedPayload = [];
7692
- for (var lp = 0; lp < payload[_DYN_LENGTH ]; lp++) {
7693
- var thePayload = payload[lp];
7694
- if (!_doBeaconSend([thePayload])) {
7695
- droppedPayload[_DYN_PUSH ](thePayload);
7779
+ var oriPayload = internalPayload[_DYN_ORI_PAYLOAD ];
7780
+ if (oriPayload[_DYN_LENGTH ] > 0) {
7781
+ for (var lp = 0; lp < data[_DYN_LENGTH ]; lp++) {
7782
+ var thePayload = payload[lp];
7783
+ var batch = _self._buffer[_DYN_BATCH_PAYLOADS ](thePayload);
7784
+ if (!_doBeaconSend(batch, oncomplete)) {
7785
+ droppedPayload[_DYN_PUSH ](thePayload);
7786
+ }
7696
7787
  }
7697
7788
  }
7698
7789
  if (droppedPayload[_DYN_LENGTH ] > 0) {
7699
- _fallbackSender && _fallbackSender(droppedPayload, true);
7790
+ _xhrSend && _xhrSend(droppedPayload, true);
7700
7791
  _throwInternal(_self[_DYN_DIAG_LOG ](), 2 , 40 , ". " + "Failed to send telemetry with Beacon API, retried with normal sender.");
7701
7792
  }
7702
7793
  }
7703
7794
  }
7704
7795
  }
7705
- function _xhrSender(payload, isAsync) {
7796
+ function _xhrSender(payload, oncomplete, sync) {
7797
+ var internalPayload = payload;
7706
7798
  var thePromise;
7707
7799
  var resolveFunc;
7708
7800
  var rejectFunc;
@@ -7713,7 +7805,7 @@
7713
7805
  }
7714
7806
  catch (e) {
7715
7807
  }
7716
- xhr.open("POST", endPointUrl, isAsync);
7808
+ xhr.open("POST", endPointUrl, !sync);
7717
7809
  xhr[_DYN_SET_REQUEST_HEADER ]("Content-type", "application/json");
7718
7810
  if (isInternalApplicationInsightsEndpoint(endPointUrl)) {
7719
7811
  xhr[_DYN_SET_REQUEST_HEADER ](RequestHeaders[6 ], RequestHeaders[7 ]);
@@ -7722,51 +7814,52 @@
7722
7814
  xhr[_DYN_SET_REQUEST_HEADER ](headerName, _headers[headerName]);
7723
7815
  });
7724
7816
  xhr.onreadystatechange = function () {
7725
- _self._xhrReadyStateChange(xhr, payload, payload[_DYN_LENGTH ]);
7817
+ var oriPayload = internalPayload[_DYN_ORI_PAYLOAD ];
7818
+ _self._xhrReadyStateChange(xhr, oriPayload, oriPayload[_DYN_LENGTH ]);
7726
7819
  if (xhr.readyState === 4) {
7727
7820
  resolveFunc && resolveFunc(true);
7728
7821
  }
7729
7822
  };
7730
7823
  xhr.onerror = function (event) {
7731
- _self[_DYN__ON_ERROR ](payload, _formatErrorMessageXhr(xhr), event);
7824
+ _doOnComplete(oncomplete, 400, {}, _formatErrorMessageXhr(xhr));
7732
7825
  rejectFunc && rejectFunc(event);
7733
7826
  };
7734
- if (isAsync && _enableSendPromise) {
7827
+ if (!sync && _enableSendPromise) {
7735
7828
  thePromise = createPromise(function (resolve, reject) {
7736
7829
  resolveFunc = resolve;
7737
7830
  rejectFunc = reject;
7738
7831
  });
7739
7832
  }
7740
- var batch = _self._buffer[_DYN_BATCH_PAYLOADS ](payload);
7741
- xhr.send(batch);
7742
- _self._buffer[_DYN_MARK_AS_SENT ](payload);
7833
+ xhr.send(payload[_DYN_DATA ]);
7743
7834
  return thePromise;
7744
7835
  }
7745
7836
  function _fetchKeepAliveSender(payload, isAsync) {
7837
+ var onComplete = function (status, headers, response) {
7838
+ return _getOnComplete(payload, status, headers, response);
7839
+ };
7746
7840
  if (isArray(payload)) {
7747
7841
  var payloadSize = payload[_DYN_LENGTH ];
7748
7842
  for (var lp = 0; lp < payload[_DYN_LENGTH ]; lp++) {
7749
7843
  payloadSize += payload[lp][_DYN_LENGTH ];
7750
7844
  }
7845
+ var payloadData = _getPayload(payload);
7751
7846
  if ((_syncFetchPayload + payloadSize) <= FetchSyncRequestSizeLimitBytes) {
7752
- _doFetchSender(payload, false);
7847
+ _doFetchSender(payloadData, onComplete, true);
7753
7848
  }
7754
7849
  else if (isBeaconsSupported()) {
7755
- _beaconSender(payload);
7850
+ _beaconSender(payloadData, onComplete);
7756
7851
  }
7757
7852
  else {
7758
- _fallbackSender && _fallbackSender(payload, true);
7853
+ _xhrSend && _xhrSend(payload, true);
7759
7854
  _throwInternal(_self[_DYN_DIAG_LOG ](), 2 , 40 , ". " + "Failed to send telemetry with Beacon API, retried with xhrSender.");
7760
7855
  }
7761
7856
  }
7762
7857
  }
7763
- function _fetchSender(payload, isAsync) {
7764
- return _doFetchSender(payload, true);
7765
- }
7766
- function _doFetchSender(payload, isAsync) {
7858
+ function _doFetchSender(payload, oncomplete, sync) {
7767
7859
  var _a;
7768
7860
  var endPointUrl = _endpointUrl;
7769
- var batch = _self._buffer[_DYN_BATCH_PAYLOADS ](payload);
7861
+ var internalPayload = payload;
7862
+ var batch = internalPayload[_DYN_DATA ];
7770
7863
  var plainTextBatch = new Blob([batch], { type: "application/json" });
7771
7864
  var thePromise;
7772
7865
  var resolveFunc;
@@ -7789,7 +7882,7 @@
7789
7882
  _a[DisabledPropertyName] = true
7790
7883
  ,
7791
7884
  _a);
7792
- if (!isAsync) {
7885
+ if (sync) {
7793
7886
  init.keepalive = true;
7794
7887
  ignoreResponse = true;
7795
7888
  _syncFetchPayload += batchLength;
@@ -7800,8 +7893,7 @@
7800
7893
  }
7801
7894
  catch (e) {
7802
7895
  }
7803
- _self._buffer[_DYN_MARK_AS_SENT ](payload);
7804
- if (isAsync && _enableSendPromise) {
7896
+ if (!sync && _enableSendPromise) {
7805
7897
  thePromise = createPromise(function (resolve, reject) {
7806
7898
  resolveFunc = resolve;
7807
7899
  rejectFunc = reject;
@@ -7809,7 +7901,7 @@
7809
7901
  }
7810
7902
  try {
7811
7903
  doAwaitResponse(fetch(request), function (result) {
7812
- if (!isAsync) {
7904
+ if (sync) {
7813
7905
  _syncFetchPayload -= batchLength;
7814
7906
  batchLength = 0;
7815
7907
  }
@@ -7818,18 +7910,19 @@
7818
7910
  if (!result.rejected) {
7819
7911
  var response_1 = result.value;
7820
7912
  if (!response_1.ok) {
7821
- _self[_DYN__ON_ERROR ](payload, response_1.statusText);
7913
+ _doOnComplete(oncomplete, 400, {}, response_1.statusText);
7822
7914
  resolveFunc && resolveFunc(false);
7823
7915
  }
7824
7916
  else {
7825
7917
  doAwaitResponse(response_1.text(), function (resp) {
7826
- _checkResponsStatus(response_1.status, payload, response_1.url, payload[_DYN_LENGTH ], response_1.statusText, resp.value || "");
7918
+ var oriPayload = internalPayload[_DYN_ORI_PAYLOAD ];
7919
+ _checkResponsStatus(response_1.status, oriPayload, response_1.url, oriPayload[_DYN_LENGTH ], response_1.statusText, resp.value || "");
7827
7920
  resolveFunc && resolveFunc(true);
7828
7921
  });
7829
7922
  }
7830
7923
  }
7831
7924
  else {
7832
- _self[_DYN__ON_ERROR ](payload, result.reason && result.reason.message);
7925
+ _doOnComplete(oncomplete, 400, {}, result.reason && result.reason.message);
7833
7926
  rejectFunc && rejectFunc(result.reason);
7834
7927
  }
7835
7928
  }
@@ -7837,13 +7930,13 @@
7837
7930
  }
7838
7931
  catch (e) {
7839
7932
  if (!responseHandled) {
7840
- _self[_DYN__ON_ERROR ](payload, dumpObj(e));
7933
+ _doOnComplete(oncomplete, 400, {}, dumpObj(e));
7841
7934
  rejectFunc && rejectFunc(e);
7842
7935
  }
7843
7936
  }
7844
7937
  if (ignoreResponse && !responseHandled) {
7845
7938
  responseHandled = true;
7846
- _self._onSuccess(payload, payload[_DYN_LENGTH ]);
7939
+ _doOnComplete(oncomplete, 200, {});
7847
7940
  resolveFunc && resolveFunc(true);
7848
7941
  }
7849
7942
  return thePromise;
@@ -7926,24 +8019,28 @@
7926
8019
  }
7927
8020
  return message;
7928
8021
  }
7929
- function _xdrSender(payload, isAsync) {
7930
- var buffer = _self[_DYN__BUFFER ];
8022
+ function _xdrSender(payload, oncomplete, sync) {
8023
+ var internalPayload = payload;
7931
8024
  var _window = getWindow();
7932
8025
  var xdr = new XDomainRequest();
7933
- xdr.onload = function () { return _self._xdrOnLoad(xdr, payload); };
7934
- xdr.onerror = function (event) { return _self[_DYN__ON_ERROR ](payload, _formatErrorMessageXdr(xdr), event); };
8026
+ var data = internalPayload[_DYN_DATA ];
8027
+ xdr.onload = function () {
8028
+ var oriPayload = internalPayload[_DYN_ORI_PAYLOAD ];
8029
+ _self._xdrOnLoad(xdr, oriPayload);
8030
+ };
8031
+ xdr.onerror = function () {
8032
+ _doOnComplete(oncomplete, 400, {}, _formatErrorMessageXdr(xdr));
8033
+ };
7935
8034
  var hostingProtocol = _window && _window.location && _window.location.protocol || "";
7936
8035
  if (_endpointUrl.lastIndexOf(hostingProtocol, 0) !== 0) {
7937
8036
  _throwInternal(_self[_DYN_DIAG_LOG ](), 2 , 40 , ". " +
7938
8037
  "Cannot send XDomain request. The endpoint URL protocol doesn't match the hosting page protocol.");
7939
- buffer[_DYN_CLEAR ]();
8038
+ _self._buffer[_DYN_CLEAR ]();
7940
8039
  return;
7941
8040
  }
7942
8041
  var endpointUrl = _endpointUrl.replace(/^(https?:)/, "");
7943
8042
  xdr.open("POST", endpointUrl);
7944
- var batch = buffer[_DYN_BATCH_PAYLOADS ](payload);
7945
- xdr.send(batch);
7946
- buffer[_DYN_MARK_AS_SENT ](payload);
8043
+ xdr.send(data);
7947
8044
  }
7948
8045
  function _formatErrorMessageXdr(xdr, message) {
7949
8046
  if (xdr) {
@@ -7993,7 +8090,6 @@
7993
8090
  _serializer = null;
7994
8091
  _stamp_specific_redirects = 0;
7995
8092
  _syncFetchPayload = 0;
7996
- _fallbackSender = null;
7997
8093
  _syncUnloadSender = null;
7998
8094
  _evtNamespace = null;
7999
8095
  _endpointUrl = null;
@@ -8007,6 +8103,9 @@
8007
8103
  _isRetryDisabled = false;
8008
8104
  _sessionStorageUsed = null;
8009
8105
  _namePrefix = UNDEFINED_VALUE;
8106
+ _disableXhr = false;
8107
+ _fetchKeepAlive = false;
8108
+ _xhrSend = null;
8010
8109
  objDefine(_self, "_senderConfig", {
8011
8110
  g: function () {
8012
8111
  return objExtend({}, defaultAppInsightsChannelConfig);