@microsoft/applicationinsights-channel-js 3.0.6-nightly3.2311-06 → 3.0.6

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 (61) hide show
  1. package/browser/es5/{applicationinsights-channel-js.3.0.6-nightly3.2311-06.cjs.js → applicationinsights-channel-js.3.0.6.cjs.js} +149 -192
  2. package/browser/es5/applicationinsights-channel-js.3.0.6.cjs.js.map +1 -0
  3. package/browser/es5/applicationinsights-channel-js.3.0.6.cjs.min.js +6 -0
  4. package/browser/es5/applicationinsights-channel-js.3.0.6.cjs.min.js.map +1 -0
  5. package/browser/es5/{applicationinsights-channel-js.3.0.6-nightly3.2311-06.gbl.js → applicationinsights-channel-js.3.0.6.gbl.js} +151 -194
  6. package/browser/es5/applicationinsights-channel-js.3.0.6.gbl.js.map +1 -0
  7. package/browser/es5/applicationinsights-channel-js.3.0.6.gbl.min.js +6 -0
  8. package/browser/es5/applicationinsights-channel-js.3.0.6.gbl.min.js.map +1 -0
  9. package/browser/es5/applicationinsights-channel-js.3.0.6.integrity.json +66 -0
  10. package/browser/es5/{applicationinsights-channel-js.3.0.6-nightly3.2311-06.js → applicationinsights-channel-js.3.0.6.js} +151 -194
  11. package/browser/es5/applicationinsights-channel-js.3.0.6.js.map +1 -0
  12. package/browser/es5/applicationinsights-channel-js.3.0.6.min.js +6 -0
  13. package/browser/es5/applicationinsights-channel-js.3.0.6.min.js.map +1 -0
  14. package/browser/es5/applicationinsights-channel-js.3.cjs.js +148 -191
  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 +150 -193
  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 +150 -193
  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 +148 -191
  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 +91 -0
  36. package/dist-es5/Offline.js.map +1 -0
  37. package/dist-es5/SendBuffer.js +4 -4
  38. package/dist-es5/SendBuffer.js.map +1 -1
  39. package/dist-es5/Sender.js +56 -53
  40. package/dist-es5/Sender.js.map +1 -1
  41. package/dist-es5/Serializer.js +1 -1
  42. package/dist-es5/TelemetryProcessors/Sample.js +1 -1
  43. package/dist-es5/TelemetryProcessors/SamplingScoreGenerators/HashCodeScoreGenerator.js +3 -3
  44. package/dist-es5/TelemetryProcessors/SamplingScoreGenerators/HashCodeScoreGenerator.js.map +1 -1
  45. package/dist-es5/TelemetryProcessors/SamplingScoreGenerators/SamplingScoreGenerator.js +1 -1
  46. package/dist-es5/__DynamicConstants.js +10 -9
  47. package/dist-es5/__DynamicConstants.js.map +1 -1
  48. package/dist-es5/applicationinsights-channel-js.js +1 -1
  49. package/package.json +62 -65
  50. package/types/applicationinsights-channel-js.d.ts +5 -10
  51. package/types/applicationinsights-channel-js.namespaced.d.ts +5 -10
  52. package/browser/es5/applicationinsights-channel-js.3.0.6-nightly3.2311-06.cjs.js.map +0 -1
  53. package/browser/es5/applicationinsights-channel-js.3.0.6-nightly3.2311-06.cjs.min.js +0 -6
  54. package/browser/es5/applicationinsights-channel-js.3.0.6-nightly3.2311-06.cjs.min.js.map +0 -1
  55. package/browser/es5/applicationinsights-channel-js.3.0.6-nightly3.2311-06.gbl.js.map +0 -1
  56. package/browser/es5/applicationinsights-channel-js.3.0.6-nightly3.2311-06.gbl.min.js +0 -6
  57. package/browser/es5/applicationinsights-channel-js.3.0.6-nightly3.2311-06.gbl.min.js.map +0 -1
  58. package/browser/es5/applicationinsights-channel-js.3.0.6-nightly3.2311-06.integrity.json +0 -66
  59. package/browser/es5/applicationinsights-channel-js.3.0.6-nightly3.2311-06.js.map +0 -1
  60. package/browser/es5/applicationinsights-channel-js.3.0.6-nightly3.2311-06.min.js +0 -6
  61. package/browser/es5/applicationinsights-channel-js.3.0.6-nightly3.2311-06.min.js.map +0 -1
@@ -1,19 +1,20 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Channel, 3.0.6-nightly3.2311-06
2
+ * Application Insights JavaScript SDK - Channel, 3.0.6
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
  var _a, _b;
6
6
  import { __assignFn as __assign, __extendsFn as __extends } from "@microsoft/applicationinsights-shims";
7
7
  import dynamicProto from "@microsoft/dynamicproto-js";
8
- import { BreezeChannelIdentifier, DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, DisabledPropertyName, Event, Exception, Metric, PageView, PageViewPerformance, ProcessLegacy, RemoteDependencyData, RequestHeaders, SampleRate, Trace, createOfflineListener, isInternalApplicationInsightsEndpoint, utlCanUseSessionStorage, utlSetStoragePrefix } from "@microsoft/applicationinsights-common";
8
+ import { BreezeChannelIdentifier, DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, DisabledPropertyName, Event, Exception, Metric, PageView, PageViewPerformance, ProcessLegacy, RemoteDependencyData, RequestHeaders, SampleRate, Trace, isInternalApplicationInsightsEndpoint, utlCanUseSessionStorage, utlSetStoragePrefix } from "@microsoft/applicationinsights-common";
9
9
  import { BaseTelemetryPlugin, _throwInternal, _warnToConsole, arrForEach, cfgDfBoolean, cfgDfValidate, createProcessTelemetryContext, createUniqueNamespace, dateNow, dumpObj, getExceptionName, getIEVersion, getJSON, getNavigator, getWindow, isArray, isBeaconsSupported, isFetchSupported, isNullOrUndefined, isXhrSupported, mergeEvtNamespace, objExtend, objKeys, onConfigChange, runTargetUnload, useXDomainRequest } from "@microsoft/applicationinsights-core-js";
10
10
  import { createPromise, doAwaitResponse } from "@nevware21/ts-async";
11
- import { isNumber, isString, isTruthy, objDeepFreeze, objDefine, scheduleTimeout } from "@nevware21/ts-utils";
11
+ import { isTruthy, objDeepFreeze, objDefine, scheduleTimeout } from "@nevware21/ts-utils";
12
12
  import { DependencyEnvelopeCreator, EventEnvelopeCreator, ExceptionEnvelopeCreator, MetricEnvelopeCreator, PageViewEnvelopeCreator, PageViewPerformanceEnvelopeCreator, TraceEnvelopeCreator } from "./EnvelopeCreator";
13
+ import { createOfflineListener } from "./Offline";
13
14
  import { ArraySendBuffer, SessionStorageSendBuffer } from "./SendBuffer";
14
15
  import { Serializer } from "./Serializer";
15
16
  import { Sample } from "./TelemetryProcessors/Sample";
16
- import { _DYN_ALWAYS_USE_XHR_OVERR4, _DYN_BASE_TYPE, _DYN_BATCH_PAYLOADS, _DYN_BUFFER_OVERRIDE, _DYN_CLEAR, _DYN_CLEAR_SENT, _DYN_CONCAT, _DYN_CONVERT_UNDEFINED, _DYN_COUNT, _DYN_CREATE_NEW, _DYN_CUSTOM_HEADERS, _DYN_DATA, _DYN_DIAG_LOG, _DYN_EMIT_LINE_DELIMITED_0, _DYN_ENABLE_SESSION_STORA5, _DYN_ENQUEUE, _DYN_EVENTS_LIMIT_IN_MEM, _DYN_EVENTS_SEND_REQUEST, _DYN_INSTRUMENTATION_KEY, _DYN_IS_BEACON_API_DISABL3, _DYN_ITEMS_ACCEPTED, _DYN_ITEMS_RECEIVED, _DYN_LENGTH, _DYN_MARK_AS_SENT, _DYN_MAX_BATCH_INTERVAL, _DYN_MAX_BATCH_SIZE_IN_BY1, _DYN_ONUNLOAD_DISABLE_BEA2, _DYN_ONUNLOAD_DISABLE_FET6, _DYN_ORI_PAYLOAD, _DYN_PUSH, _DYN_SAMPLE_RATE, _DYN_SEND_POST, _DYN_SET_REQUEST_HEADER, _DYN_TAGS, _DYN_TRIGGER_SEND, _DYN_UNLOAD_TRANSPORTS, _DYN__BUFFER, _DYN__ON_ERROR, _DYN__ON_PARTIAL_SUCCESS, _DYN__ON_SUCCESS, _DYN__SENDER, _DYN__XHR_READY_STATE_CHA7 } from "./__DynamicConstants";
17
+ import { _DYN_ALWAYS_USE_XHR_OVERR4, _DYN_BASE_TYPE, _DYN_BATCH_PAYLOADS, _DYN_BUFFER_OVERRIDE, _DYN_CLEAR, _DYN_CLEAR_SENT, _DYN_CONVERT_UNDEFINED, _DYN_COUNT, _DYN_CREATE_NEW, _DYN_CUSTOM_HEADERS, _DYN_DATA, _DYN_DIAG_LOG, _DYN_DISABLE_SEND_BEACON_7, _DYN_EMIT_LINE_DELIMITED_0, _DYN_ENABLE_SESSION_STORA5, _DYN_ENQUEUE, _DYN_EVENTS_LIMIT_IN_MEM, _DYN_EVENTS_SEND_REQUEST, _DYN_INSTRUMENTATION_KEY, _DYN_IS_BEACON_API_DISABL3, _DYN_IS_ONLINE, _DYN_ITEMS_ACCEPTED, _DYN_ITEMS_RECEIVED, _DYN_LENGTH, _DYN_MARK_AS_SENT, _DYN_MAX_BATCH_INTERVAL, _DYN_MAX_BATCH_SIZE_IN_BY1, _DYN_ONUNLOAD_DISABLE_BEA2, _DYN_ONUNLOAD_DISABLE_FET6, _DYN_ORI_PAYLOAD, _DYN_PUSH, _DYN_SAMPLE_RATE, _DYN_SEND_POST, _DYN_SET_REQUEST_HEADER, _DYN_TAGS, _DYN_TRIGGER_SEND, _DYN__BUFFER, _DYN__ON_ERROR, _DYN__ON_PARTIAL_SUCCESS, _DYN__ON_SUCCESS, _DYN__SENDER, _DYN__XHR_READY_STATE_CHA8 } from "./__DynamicConstants";
17
18
  var UNDEFINED_VALUE = undefined;
18
19
  var FetchSyncRequestSizeLimitBytes = 65000; // approx 64kb (the current Edge, Firefox and Chrome max limit)
19
20
  function _getResponseText(xhr) {
@@ -28,17 +29,6 @@ function _getResponseText(xhr) {
28
29
  function isOverrideFn(httpXHROverride) {
29
30
  return httpXHROverride && httpXHROverride[_DYN_SEND_POST /* @min:%2esendPOST */];
30
31
  }
31
- function _prependTransports(theTransports, newTransports) {
32
- if (newTransports) {
33
- if (isNumber(newTransports)) {
34
- theTransports = [newTransports][_DYN_CONCAT /* @min:%2econcat */](theTransports);
35
- }
36
- else if (isArray(newTransports)) {
37
- theTransports = newTransports[_DYN_CONCAT /* @min:%2econcat */](theTransports);
38
- }
39
- }
40
- return theTransports;
41
- }
42
32
  var defaultAppInsightsChannelConfig = objDeepFreeze((_a = {
43
33
  // Use the default value (handles empty string in the configuration)
44
34
  endpointUrl: cfgDfValidate(isTruthy, DEFAULT_BREEZE_ENDPOINT + DEFAULT_BREEZE_PATH)
@@ -50,6 +40,7 @@ var defaultAppInsightsChannelConfig = objDeepFreeze((_a = {
50
40
  _a[_DYN_ENABLE_SESSION_STORA5 /* @min:enableSessionStorageBuffer */] = cfgDfBoolean(true),
51
41
  _a.isRetryDisabled = cfgDfBoolean(),
52
42
  _a[_DYN_IS_BEACON_API_DISABL3 /* @min:isBeaconApiDisabled */] = cfgDfBoolean(true),
43
+ _a[_DYN_DISABLE_SEND_BEACON_7 /* @min:disableSendBeaconSplit */] = cfgDfBoolean(),
53
44
  _a.disableXhr = cfgDfBoolean(),
54
45
  _a[_DYN_ONUNLOAD_DISABLE_FET6 /* @min:onunloadDisableFetch */] = cfgDfBoolean(),
55
46
  _a[_DYN_ONUNLOAD_DISABLE_BEA2 /* @min:onunloadDisableBeacon */] = cfgDfBoolean(),
@@ -62,7 +53,6 @@ var defaultAppInsightsChannelConfig = objDeepFreeze((_a = {
62
53
  _a[_DYN_BUFFER_OVERRIDE /* @min:bufferOverride */] = false,
63
54
  _a.httpXHROverride = { isVal: isOverrideFn, v: UNDEFINED_VALUE },
64
55
  _a[_DYN_ALWAYS_USE_XHR_OVERR4 /* @min:alwaysUseXhrOverride */] = cfgDfBoolean(),
65
- _a.transports = UNDEFINED_VALUE,
66
56
  _a));
67
57
  function _chkSampling(value) {
68
58
  return !isNaN(value) && value > 0 && value <= 100;
@@ -99,8 +89,6 @@ var Sender = /** @class */ (function (_super) {
99
89
  var _orgEndpointUrl;
100
90
  var _maxBatchSizeInBytes;
101
91
  var _beaconSupported;
102
- var _beaconOnUnloadSupported;
103
- var _beaconNormalSupported;
104
92
  var _customHeaders;
105
93
  var _disableTelemetry;
106
94
  var _instrumentationKey;
@@ -115,6 +103,8 @@ var Sender = /** @class */ (function (_super) {
115
103
  var _disableXhr;
116
104
  var _fetchKeepAlive;
117
105
  var _xhrSend;
106
+ var _fallbackSend;
107
+ var _disableBeaconSplit;
118
108
  dynamicProto(Sender, _this, function (_self, _base) {
119
109
  _initDefaults();
120
110
  _self.pause = function () {
@@ -205,8 +195,6 @@ var Sender = /** @class */ (function (_super) {
205
195
  }
206
196
  _maxBatchSizeInBytes = senderConfig[_DYN_MAX_BATCH_SIZE_IN_BY1 /* @min:%2emaxBatchSizeInBytes */];
207
197
  _beaconSupported = (senderConfig[_DYN_ONUNLOAD_DISABLE_BEA2 /* @min:%2eonunloadDisableBeacon */] === false || senderConfig[_DYN_IS_BEACON_API_DISABL3 /* @min:%2eisBeaconApiDisabled */] === false) && isBeaconsSupported();
208
- _beaconOnUnloadSupported = senderConfig[_DYN_ONUNLOAD_DISABLE_BEA2 /* @min:%2eonunloadDisableBeacon */] === false && isBeaconsSupported();
209
- _beaconNormalSupported = senderConfig[_DYN_IS_BEACON_API_DISABL3 /* @min:%2eisBeaconApiDisabled */] === false && isBeaconsSupported();
210
198
  _alwaysUseCustomSend = senderConfig[_DYN_ALWAYS_USE_XHR_OVERR4 /* @min:%2ealwaysUseXhrOverride */];
211
199
  _disableXhr = !!senderConfig.disableXhr;
212
200
  var bufferOverride = senderConfig[_DYN_BUFFER_OVERRIDE /* @min:%2ebufferOverride */];
@@ -242,6 +230,7 @@ var Sender = /** @class */ (function (_super) {
242
230
  _sessionStorageUsed = canUseSessionStorage;
243
231
  _bufferOverrideUsed = bufferOverride;
244
232
  _fetchKeepAlive = !senderConfig[_DYN_ONUNLOAD_DISABLE_FET6 /* @min:%2eonunloadDisableFetch */] && isFetchSupported(true);
233
+ _disableBeaconSplit = !!senderConfig[_DYN_DISABLE_SEND_BEACON_7 /* @min:%2edisableSendBeaconSplit */];
245
234
  _self._sample = new Sample(senderConfig.samplingPercentage, diagLog);
246
235
  _instrumentationKey = senderConfig[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */];
247
236
  if (!_validateInstrumentationKey(_instrumentationKey, config)) {
@@ -260,14 +249,18 @@ var Sender = /** @class */ (function (_super) {
260
249
  var customInterface = senderConfig.httpXHROverride;
261
250
  var httpInterface = null;
262
251
  var syncInterface = null;
263
- // User requested transport(s) values > Beacon > Fetch > XHR
264
- // Beacon would be filtered out if user has set disableBeaconApi to true at _getSenderInterface
265
- var theTransports = _prependTransports([3 /* TransportType.Beacon */, 1 /* TransportType.Xhr */, 2 /* TransportType.Fetch */], senderConfig.transports);
266
- httpInterface = _getSenderInterface(theTransports, false);
252
+ httpInterface = _getSenderInterface([1 /* TransportType.Xhr */, 2 /* TransportType.Fetch */], false);
267
253
  var xhrInterface = { sendPOST: _xhrSender };
268
254
  _xhrSend = function (payload, isAsync) {
269
255
  return _doSend(xhrInterface, payload, isAsync);
270
256
  };
257
+ _fallbackSend = function (payload, isAsync) {
258
+ return _doSend(xhrInterface, payload, isAsync, false);
259
+ };
260
+ if (!senderConfig[_DYN_IS_BEACON_API_DISABL3 /* @min:%2eisBeaconApiDisabled */] && isBeaconsSupported()) {
261
+ // Config is set to always used beacon sending
262
+ httpInterface = _getSenderInterface([3 /* TransportType.Beacon */], false);
263
+ }
271
264
  httpInterface = _alwaysUseCustomSend ? customInterface : (httpInterface || customInterface || xhrInterface);
272
265
  _self[_DYN__SENDER /* @min:%2e_sender */] = function (payload, isAsync) {
273
266
  return _doSend(httpInterface, payload, isAsync);
@@ -276,14 +269,8 @@ var Sender = /** @class */ (function (_super) {
276
269
  // Try and use the fetch with keepalive
277
270
  _syncUnloadSender = _fetchKeepAliveSender;
278
271
  }
279
- var syncTransports = _prependTransports([3 /* TransportType.Beacon */, 1 /* TransportType.Xhr */], senderConfig[_DYN_UNLOAD_TRANSPORTS /* @min:%2eunloadTransports */]);
280
- if (!_fetchKeepAlive) {
281
- // remove fetch from theTransports
282
- syncTransports = syncTransports.filter(function (transport) { return transport !== 2 /* TransportType.Fetch */; });
283
- }
284
- syncInterface = _getSenderInterface(syncTransports, true);
285
- syncInterface = _alwaysUseCustomSend ? customInterface : (syncInterface || customInterface);
286
- if ((_alwaysUseCustomSend || senderConfig[_DYN_UNLOAD_TRANSPORTS /* @min:%2eunloadTransports */] || !_syncUnloadSender) && syncInterface) {
272
+ syncInterface = _alwaysUseCustomSend ? customInterface : (_getSenderInterface([3 /* TransportType.Beacon */, 1 /* TransportType.Xhr */], true) || customInterface);
273
+ if ((_alwaysUseCustomSend || !_syncUnloadSender) && syncInterface) {
287
274
  _syncUnloadSender = function (payload, isAsync) {
288
275
  return _doSend(syncInterface, payload, isAsync);
289
276
  };
@@ -382,7 +369,7 @@ var Sender = /** @class */ (function (_super) {
382
369
  /**
383
370
  * xhr state changes
384
371
  */
385
- _self[_DYN__XHR_READY_STATE_CHA7 /* @min:%2e_xhrReadyStateChange */] = function (xhr, payload, countOfItemsInPayload) {
372
+ _self[_DYN__XHR_READY_STATE_CHA8 /* @min:%2e_xhrReadyStateChange */] = function (xhr, payload, countOfItemsInPayload) {
386
373
  if (xhr.readyState === 4) {
387
374
  _checkResponsStatus(xhr.status, payload, xhr.responseURL, countOfItemsInPayload, _formatErrorMessageXhr(xhr), _getResponseText(xhr) || xhr.response);
388
375
  }
@@ -521,7 +508,7 @@ var Sender = /** @class */ (function (_super) {
521
508
  else if (transportType === 2 /* TransportType.Fetch */ && isFetchSupported(syncSupport)) {
522
509
  sendPostFunc = _fetchSender;
523
510
  }
524
- else if (transportType === 3 /* TransportType.Beacon */ && (syncSupport ? _beaconOnUnloadSupported : _beaconNormalSupported)) {
511
+ else if (isBeaconsSupported() && transportType === 3 /* TransportType.Beacon */) {
525
512
  sendPostFunc = _beaconSender;
526
513
  }
527
514
  lp++;
@@ -539,9 +526,12 @@ var Sender = /** @class */ (function (_super) {
539
526
  if (status === 200 && payload) {
540
527
  _self._onSuccess(payload, payload[_DYN_LENGTH /* @min:%2elength */]);
541
528
  }
542
- response && _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, response);
529
+ else {
530
+ response && _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, response);
531
+ }
543
532
  }
544
- function _doSend(sendInterface, payload, isAsync) {
533
+ function _doSend(sendInterface, payload, isAsync, markAsSent) {
534
+ if (markAsSent === void 0) { markAsSent = true; }
545
535
  var onComplete = function (status, headers, response) {
546
536
  return _getOnComplete(payload, status, headers, response);
547
537
  };
@@ -550,7 +540,9 @@ var Sender = /** @class */ (function (_super) {
550
540
  if (sendPostFunc && payloadData) {
551
541
  // ***********************************************************************************************
552
542
  // mark payload as sent at the beginning of calling each send function
553
- _self._buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);
543
+ if (markAsSent) {
544
+ _self._buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);
545
+ }
554
546
  return sendPostFunc(payloadData, onComplete, !isAsync);
555
547
  }
556
548
  return null;
@@ -583,7 +575,7 @@ var Sender = /** @class */ (function (_super) {
583
575
  function _checkMaxSize(incomingPayload) {
584
576
  var incomingSize = incomingPayload ? incomingPayload[_DYN_LENGTH /* @min:%2elength */] : 0;
585
577
  if ((_self[_DYN__BUFFER /* @min:%2e_buffer */].size() + incomingSize) > _maxBatchSizeInBytes) {
586
- if (!_offlineListener || _offlineListener.isOnline()) { // only trigger send when currently online
578
+ if (!_offlineListener || _offlineListener[_DYN_IS_ONLINE /* @min:%2eisOnline */]()) { // only trigger send when currently online
587
579
  _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, null, 10 /* SendRequestReason.MaxBatchSize */);
588
580
  }
589
581
  return true;
@@ -616,7 +608,7 @@ var Sender = /** @class */ (function (_super) {
616
608
  _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, errorMessage);
617
609
  }
618
610
  }
619
- else if (_offlineListener && !_offlineListener.isOnline()) { // offline
611
+ else if (_offlineListener && !_offlineListener[_DYN_IS_ONLINE /* @min:%2eisOnline */]()) { // offline
620
612
  // Note: Don't check for status == 0, since adblock gives this code
621
613
  if (!_isRetryDisabled) {
622
614
  var offlineBackOffMultiplier = 10; // arbritrary number
@@ -686,13 +678,20 @@ var Sender = /** @class */ (function (_super) {
686
678
  function _doBeaconSend(payload, oncomplete) {
687
679
  var nav = getNavigator();
688
680
  var url = _endpointUrl;
681
+ var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];
682
+ // Chrome only allows CORS-safelisted values for the sendBeacon data argument
683
+ // see: https://bugs.chromium.org/p/chromium/issues/detail?id=720283
684
+ var batch = buffer[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */](payload);
689
685
  // Chrome only allows CORS-safelisted values for the sendBeacon data argument
690
686
  // see: https://bugs.chromium.org/p/chromium/issues/detail?id=720283
691
- var plainTextBatch = new Blob([payload], { type: "text/plain;charset=UTF-8" });
687
+ var plainTextBatch = new Blob([batch], { type: "text/plain;charset=UTF-8" });
692
688
  // The sendBeacon method returns true if the user agent is able to successfully queue the data for transfer. Otherwise it returns false.
693
689
  var queued = nav.sendBeacon(url, plainTextBatch);
694
690
  if (queued) {
695
- oncomplete(200, {}, payload);
691
+ // Should NOT pass onComplete directly since onComplete will always be called at full batch level
692
+ //buffer.markAsSent(payload);
693
+ // no response from beaconSender, clear buffer
694
+ _self._onSuccess(payload, payload[_DYN_LENGTH /* @min:%2elength */]);
696
695
  }
697
696
  return queued;
698
697
  }
@@ -705,25 +704,27 @@ var Sender = /** @class */ (function (_super) {
705
704
  */
706
705
  function _beaconSender(payload, oncomplete, sync) {
707
706
  var internalPayload = payload;
708
- var data = internalPayload && internalPayload[_DYN_DATA /* @min:%2edata */];
709
- if (isString(data) && data[_DYN_LENGTH /* @min:%2elength */] > 0) {
707
+ var data = internalPayload && internalPayload[_DYN_ORI_PAYLOAD /* @min:%2eoriPayload */];
708
+ if (isArray(data) && data[_DYN_LENGTH /* @min:%2elength */] > 0) {
710
709
  // The sendBeacon method returns true if the user agent is able to successfully queue the data for transfer. Otherwise it returns false.
711
710
  if (!_doBeaconSend(data, oncomplete)) {
712
- // Failed to send entire payload so try and split data and try to send as much events as possible
713
- var droppedPayload = [];
714
- var oriPayload = internalPayload[_DYN_ORI_PAYLOAD /* @min:%2eoriPayload */];
715
- if (oriPayload[_DYN_LENGTH /* @min:%2elength */] > 0) {
711
+ if (!_disableBeaconSplit) {
712
+ // Failed to send entire payload so try and split data and try to send as much events as possible
713
+ var droppedPayload = [];
716
714
  for (var lp = 0; lp < data[_DYN_LENGTH /* @min:%2elength */]; lp++) {
717
- var thePayload = payload[lp];
718
- var batch = _self._buffer[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */](thePayload);
719
- if (!_doBeaconSend(batch, oncomplete)) {
715
+ var thePayload = data[lp];
716
+ if (!_doBeaconSend([thePayload], oncomplete)) {
720
717
  // Can't send anymore, so split the batch and drop the rest
721
718
  droppedPayload[_DYN_PUSH /* @min:%2epush */](thePayload);
722
719
  }
723
720
  }
721
+ if (droppedPayload[_DYN_LENGTH /* @min:%2elength */] > 0) {
722
+ _fallbackSend && _fallbackSend(droppedPayload, true);
723
+ _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, ". " + "Failed to send telemetry with Beacon API, retried with normal sender.");
724
+ }
724
725
  }
725
- if (droppedPayload[_DYN_LENGTH /* @min:%2elength */] > 0) {
726
- _xhrSend && _xhrSend(droppedPayload, true);
726
+ else {
727
+ _fallbackSend && _fallbackSend(data, true);
727
728
  _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, ". " + "Failed to send telemetry with Beacon API, retried with normal sender.");
728
729
  }
729
730
  }
@@ -796,7 +797,7 @@ var Sender = /** @class */ (function (_super) {
796
797
  }
797
798
  else {
798
799
  // Payload is going to be too big so just try and send via XHR
799
- _xhrSend && _xhrSend(payload, true);
800
+ _fallbackSend && _fallbackSend(payload, true);
800
801
  _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, ". " + "Failed to send telemetry with Beacon API, retried with xhrSender.");
801
802
  }
802
803
  }
@@ -1112,7 +1113,9 @@ var Sender = /** @class */ (function (_super) {
1112
1113
  _namePrefix = UNDEFINED_VALUE;
1113
1114
  _disableXhr = false;
1114
1115
  _fetchKeepAlive = false;
1116
+ _disableBeaconSplit = false;
1115
1117
  _xhrSend = null;
1118
+ _fallbackSend = null;
1116
1119
  objDefine(_self, "_senderConfig", {
1117
1120
  g: function () {
1118
1121
  return objExtend({}, defaultAppInsightsChannelConfig);