@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.
- package/browser/es5/{applicationinsights-channel-js.3.0.6-nightly3.2311-06.cjs.js → applicationinsights-channel-js.3.0.6.cjs.js} +149 -192
- package/browser/es5/applicationinsights-channel-js.3.0.6.cjs.js.map +1 -0
- package/browser/es5/applicationinsights-channel-js.3.0.6.cjs.min.js +6 -0
- package/browser/es5/applicationinsights-channel-js.3.0.6.cjs.min.js.map +1 -0
- package/browser/es5/{applicationinsights-channel-js.3.0.6-nightly3.2311-06.gbl.js → applicationinsights-channel-js.3.0.6.gbl.js} +151 -194
- package/browser/es5/applicationinsights-channel-js.3.0.6.gbl.js.map +1 -0
- package/browser/es5/applicationinsights-channel-js.3.0.6.gbl.min.js +6 -0
- package/browser/es5/applicationinsights-channel-js.3.0.6.gbl.min.js.map +1 -0
- package/browser/es5/applicationinsights-channel-js.3.0.6.integrity.json +66 -0
- package/browser/es5/{applicationinsights-channel-js.3.0.6-nightly3.2311-06.js → applicationinsights-channel-js.3.0.6.js} +151 -194
- package/browser/es5/applicationinsights-channel-js.3.0.6.js.map +1 -0
- package/browser/es5/applicationinsights-channel-js.3.0.6.min.js +6 -0
- package/browser/es5/applicationinsights-channel-js.3.0.6.min.js.map +1 -0
- package/browser/es5/applicationinsights-channel-js.3.cjs.js +148 -191
- package/browser/es5/applicationinsights-channel-js.3.cjs.js.map +1 -1
- package/browser/es5/applicationinsights-channel-js.3.cjs.min.js +2 -2
- package/browser/es5/applicationinsights-channel-js.3.cjs.min.js.map +1 -1
- package/browser/es5/applicationinsights-channel-js.3.gbl.js +150 -193
- package/browser/es5/applicationinsights-channel-js.3.gbl.js.map +1 -1
- package/browser/es5/applicationinsights-channel-js.3.gbl.min.js +2 -2
- package/browser/es5/applicationinsights-channel-js.3.gbl.min.js.map +1 -1
- package/browser/es5/applicationinsights-channel-js.3.integrity.json +25 -25
- package/browser/es5/applicationinsights-channel-js.3.js +150 -193
- package/browser/es5/applicationinsights-channel-js.3.js.map +1 -1
- package/browser/es5/applicationinsights-channel-js.3.min.js +2 -2
- package/browser/es5/applicationinsights-channel-js.3.min.js.map +1 -1
- package/dist/es5/applicationinsights-channel-js.js +148 -191
- package/dist/es5/applicationinsights-channel-js.js.map +1 -1
- package/dist/es5/applicationinsights-channel-js.min.js +2 -2
- package/dist/es5/applicationinsights-channel-js.min.js.map +1 -1
- package/dist-es5/EnvelopeCreator.js +2 -2
- package/dist-es5/EnvelopeCreator.js.map +1 -1
- package/dist-es5/Interfaces.js +1 -1
- package/dist-es5/InternalConstants.js +1 -1
- package/dist-es5/Offline.js +91 -0
- package/dist-es5/Offline.js.map +1 -0
- package/dist-es5/SendBuffer.js +4 -4
- package/dist-es5/SendBuffer.js.map +1 -1
- package/dist-es5/Sender.js +56 -53
- package/dist-es5/Sender.js.map +1 -1
- package/dist-es5/Serializer.js +1 -1
- package/dist-es5/TelemetryProcessors/Sample.js +1 -1
- package/dist-es5/TelemetryProcessors/SamplingScoreGenerators/HashCodeScoreGenerator.js +3 -3
- package/dist-es5/TelemetryProcessors/SamplingScoreGenerators/HashCodeScoreGenerator.js.map +1 -1
- package/dist-es5/TelemetryProcessors/SamplingScoreGenerators/SamplingScoreGenerator.js +1 -1
- package/dist-es5/__DynamicConstants.js +10 -9
- package/dist-es5/__DynamicConstants.js.map +1 -1
- package/dist-es5/applicationinsights-channel-js.js +1 -1
- package/package.json +62 -65
- package/types/applicationinsights-channel-js.d.ts +5 -10
- package/types/applicationinsights-channel-js.namespaced.d.ts +5 -10
- package/browser/es5/applicationinsights-channel-js.3.0.6-nightly3.2311-06.cjs.js.map +0 -1
- package/browser/es5/applicationinsights-channel-js.3.0.6-nightly3.2311-06.cjs.min.js +0 -6
- package/browser/es5/applicationinsights-channel-js.3.0.6-nightly3.2311-06.cjs.min.js.map +0 -1
- package/browser/es5/applicationinsights-channel-js.3.0.6-nightly3.2311-06.gbl.js.map +0 -1
- package/browser/es5/applicationinsights-channel-js.3.0.6-nightly3.2311-06.gbl.min.js +0 -6
- package/browser/es5/applicationinsights-channel-js.3.0.6-nightly3.2311-06.gbl.min.js.map +0 -1
- package/browser/es5/applicationinsights-channel-js.3.0.6-nightly3.2311-06.integrity.json +0 -66
- package/browser/es5/applicationinsights-channel-js.3.0.6-nightly3.2311-06.js.map +0 -1
- package/browser/es5/applicationinsights-channel-js.3.0.6-nightly3.2311-06.min.js +0 -6
- package/browser/es5/applicationinsights-channel-js.3.0.6-nightly3.2311-06.min.js.map +0 -1
package/dist-es5/Sender.js
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Application Insights JavaScript SDK - Channel, 3.0.6
|
|
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,
|
|
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 {
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
280
|
-
if (!
|
|
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[
|
|
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 */
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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([
|
|
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
|
-
|
|
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[
|
|
709
|
-
if (
|
|
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
|
-
|
|
713
|
-
|
|
714
|
-
|
|
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 =
|
|
718
|
-
|
|
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
|
-
|
|
726
|
-
|
|
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
|
-
|
|
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);
|