@microsoft/applicationinsights-channel-js 3.1.1-nightly3.2403-01 → 3.1.1-nightly3.2403-03
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.1.1-nightly3.2403-01.cjs.js → applicationinsights-channel-js.3.1.1-nightly3.2403-03.cjs.js} +586 -331
- package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-03.cjs.js.map +1 -0
- package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-03.cjs.min.js +6 -0
- package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-03.cjs.min.js.map +1 -0
- package/browser/es5/{applicationinsights-channel-js.3.1.1-nightly3.2403-01.gbl.js → applicationinsights-channel-js.3.1.1-nightly3.2403-03.gbl.js} +588 -333
- package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-03.gbl.js.map +1 -0
- package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-03.gbl.min.js +6 -0
- package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-03.gbl.min.js.map +1 -0
- package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-03.integrity.json +66 -0
- package/browser/es5/{applicationinsights-channel-js.3.1.1-nightly3.2403-01.js → applicationinsights-channel-js.3.1.1-nightly3.2403-03.js} +588 -333
- package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-03.js.map +1 -0
- package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-03.min.js +6 -0
- package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-03.min.js.map +1 -0
- package/browser/es5/applicationinsights-channel-js.3.cjs.js +585 -330
- 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 +587 -332
- 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 +587 -332
- 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 +585 -330
- 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/SendBuffer.js +5 -5
- package/dist-es5/SendBuffer.js.map +1 -1
- package/dist-es5/Sender.js +138 -369
- 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 +14 -15
- package/dist-es5/__DynamicConstants.js.map +1 -1
- package/dist-es5/applicationinsights-channel-js.js +1 -1
- package/package.json +3 -3
- package/types/applicationinsights-channel-js.d.ts +1 -1
- package/types/applicationinsights-channel-js.namespaced.d.ts +6 -1
- package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-01.cjs.js.map +0 -1
- package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-01.cjs.min.js +0 -6
- package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-01.cjs.min.js.map +0 -1
- package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-01.gbl.js.map +0 -1
- package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-01.gbl.min.js +0 -6
- package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-01.gbl.min.js.map +0 -1
- package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-01.integrity.json +0 -66
- package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-01.js.map +0 -1
- package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-01.min.js +0 -6
- package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-01.min.js.map +0 -1
package/dist-es5/Sender.js
CHANGED
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Application Insights JavaScript SDK - Channel, 3.1.1-nightly3.2403-
|
|
2
|
+
* Application Insights JavaScript SDK - Channel, 3.1.1-nightly3.2403-03
|
|
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,
|
|
9
|
-
import { BaseTelemetryPlugin, _throwInternal, _warnToConsole, arrForEach, cfgDfBoolean, cfgDfValidate, createProcessTelemetryContext, createUniqueNamespace, dateNow, dumpObj, getExceptionName, getIEVersion,
|
|
10
|
-
import {
|
|
11
|
-
import { isNumber, isTruthy, objDeepFreeze, objDefine, scheduleTimeout } from "@nevware21/ts-utils";
|
|
8
|
+
import { BreezeChannelIdentifier, DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, Event, Exception, Metric, PageView, PageViewPerformance, ProcessLegacy, RemoteDependencyData, RequestHeaders, SampleRate, SenderPostManager, Trace, createOfflineListener, formatErrorMessageXdr, formatErrorMessageXhr, isInternalApplicationInsightsEndpoint, parseResponse, prependTransports, utlCanUseSessionStorage, utlSetStoragePrefix } from "@microsoft/applicationinsights-common";
|
|
9
|
+
import { BaseTelemetryPlugin, _throwInternal, _warnToConsole, arrForEach, cfgDfBoolean, cfgDfValidate, createProcessTelemetryContext, createUniqueNamespace, dateNow, dumpObj, getExceptionName, getIEVersion, isArray, isBeaconsSupported, isFetchSupported, isNullOrUndefined, mergeEvtNamespace, objExtend, onConfigChange, runTargetUnload } from "@microsoft/applicationinsights-core-js";
|
|
10
|
+
import { isTruthy, objDeepFreeze, objDefine, scheduleTimeout } from "@nevware21/ts-utils";
|
|
12
11
|
import { DependencyEnvelopeCreator, EventEnvelopeCreator, ExceptionEnvelopeCreator, MetricEnvelopeCreator, PageViewEnvelopeCreator, PageViewPerformanceEnvelopeCreator, TraceEnvelopeCreator } from "./EnvelopeCreator";
|
|
13
12
|
import { ArraySendBuffer, SessionStorageSendBuffer } from "./SendBuffer";
|
|
14
13
|
import { Serializer } from "./Serializer";
|
|
15
14
|
import { Sample } from "./TelemetryProcessors/Sample";
|
|
16
|
-
import { _DYN_ALWAYS_USE_XHR_OVERR4, _DYN_BASE_TYPE,
|
|
15
|
+
import { _DYN_ALWAYS_USE_XHR_OVERR4, _DYN_BASE_TYPE, _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_DISABLE_XHR, _DYN_EMIT_LINE_DELIMITED_0, _DYN_ENABLE_SEND_PROMISE, _DYN_ENABLE_SESSION_STORA5, _DYN_ENQUEUE, _DYN_EVENTS_LIMIT_IN_MEM, _DYN_EVENTS_SEND_REQUEST, _DYN_GET_XHR_INST, _DYN_INITIALIZE, _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_SERIALIZE, _DYN_TAGS, _DYN_TRIGGER_SEND, _DYN_UNLOAD_TRANSPORTS, _DYN__BUFFER, _DYN__ON_ERROR, _DYN__ON_PARTIAL_SUCCESS, _DYN__ON_SUCCESS, _DYN__SENDER } from "./__DynamicConstants";
|
|
17
16
|
var UNDEFINED_VALUE = undefined;
|
|
18
17
|
var EMPTY_STR = "";
|
|
19
18
|
var FetchSyncRequestSizeLimitBytes = 65000; // approx 64kb (the current Edge, Firefox and Chrome max limit)
|
|
@@ -27,18 +26,7 @@ function _getResponseText(xhr) {
|
|
|
27
26
|
return null;
|
|
28
27
|
}
|
|
29
28
|
function isOverrideFn(httpXHROverride) {
|
|
30
|
-
return httpXHROverride && httpXHROverride
|
|
31
|
-
}
|
|
32
|
-
function _prependTransports(theTransports, newTransports) {
|
|
33
|
-
if (newTransports) {
|
|
34
|
-
if (isNumber(newTransports)) {
|
|
35
|
-
theTransports = [newTransports][_DYN_CONCAT /* @min:%2econcat */](theTransports);
|
|
36
|
-
}
|
|
37
|
-
else if (isArray(newTransports)) {
|
|
38
|
-
theTransports = newTransports[_DYN_CONCAT /* @min:%2econcat */](theTransports);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
return theTransports;
|
|
29
|
+
return httpXHROverride && httpXHROverride.sendPOST;
|
|
42
30
|
}
|
|
43
31
|
var defaultAppInsightsChannelConfig = objDeepFreeze((_a = {
|
|
44
32
|
// Use the default value (handles empty string in the configuration)
|
|
@@ -52,7 +40,7 @@ var defaultAppInsightsChannelConfig = objDeepFreeze((_a = {
|
|
|
52
40
|
_a.isRetryDisabled = cfgDfBoolean(),
|
|
53
41
|
_a[_DYN_IS_BEACON_API_DISABL3 /* @min:isBeaconApiDisabled */] = cfgDfBoolean(true),
|
|
54
42
|
_a[_DYN_DISABLE_SEND_BEACON_7 /* @min:disableSendBeaconSplit */] = cfgDfBoolean(true),
|
|
55
|
-
_a
|
|
43
|
+
_a[_DYN_DISABLE_XHR /* @min:disableXhr */] = cfgDfBoolean(),
|
|
56
44
|
_a[_DYN_ONUNLOAD_DISABLE_FET6 /* @min:onunloadDisableFetch */] = cfgDfBoolean(),
|
|
57
45
|
_a[_DYN_ONUNLOAD_DISABLE_BEA2 /* @min:onunloadDisableBeacon */] = cfgDfBoolean(),
|
|
58
46
|
_a[_DYN_INSTRUMENTATION_KEY /* @min:instrumentationKey */] = UNDEFINED_VALUE,
|
|
@@ -119,6 +107,7 @@ var Sender = /** @class */ (function (_super) {
|
|
|
119
107
|
var _xhrSend;
|
|
120
108
|
var _fallbackSend;
|
|
121
109
|
var _disableBeaconSplit;
|
|
110
|
+
var _sendPostMgr;
|
|
122
111
|
dynamicProto(Sender, _this, function (_self, _base) {
|
|
123
112
|
_initDefaults();
|
|
124
113
|
_self.pause = function () {
|
|
@@ -165,11 +154,11 @@ var Sender = /** @class */ (function (_super) {
|
|
|
165
154
|
_self.addHeader = function (name, value) {
|
|
166
155
|
_headers[name] = value;
|
|
167
156
|
};
|
|
168
|
-
_self
|
|
157
|
+
_self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (config, core, extensions, pluginChain) {
|
|
169
158
|
if (_self.isInitialized()) {
|
|
170
159
|
_throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 28 /* _eInternalMessageId.SenderNotInitialized */, "Sender is already initialized");
|
|
171
160
|
}
|
|
172
|
-
_base
|
|
161
|
+
_base[_DYN_INITIALIZE /* @min:%2einitialize */](config, core, extensions, pluginChain);
|
|
173
162
|
var identifier = _self.identifier;
|
|
174
163
|
_serializer = new Serializer(core.logger);
|
|
175
164
|
_consecutiveErrors = 0;
|
|
@@ -212,7 +201,7 @@ var Sender = /** @class */ (function (_super) {
|
|
|
212
201
|
_beaconOnUnloadSupported = senderConfig[_DYN_ONUNLOAD_DISABLE_BEA2 /* @min:%2eonunloadDisableBeacon */] === false && isBeaconsSupported();
|
|
213
202
|
_beaconNormalSupported = senderConfig[_DYN_IS_BEACON_API_DISABL3 /* @min:%2eisBeaconApiDisabled */] === false && isBeaconsSupported();
|
|
214
203
|
_alwaysUseCustomSend = senderConfig[_DYN_ALWAYS_USE_XHR_OVERR4 /* @min:%2ealwaysUseXhrOverride */];
|
|
215
|
-
_disableXhr = !!senderConfig
|
|
204
|
+
_disableXhr = !!senderConfig[_DYN_DISABLE_XHR /* @min:%2edisableXhr */];
|
|
216
205
|
var bufferOverride = senderConfig[_DYN_BUFFER_OVERRIDE /* @min:%2ebufferOverride */];
|
|
217
206
|
var canUseSessionStorage = !!senderConfig[_DYN_ENABLE_SESSION_STORA5 /* @min:%2eenableSessionStorageBuffer */] &&
|
|
218
207
|
(!!bufferOverride || utlCanUseSessionStorage());
|
|
@@ -261,15 +250,24 @@ var Sender = /** @class */ (function (_super) {
|
|
|
261
250
|
else {
|
|
262
251
|
_customHeaders = null;
|
|
263
252
|
}
|
|
264
|
-
_enableSendPromise = senderConfig
|
|
253
|
+
_enableSendPromise = senderConfig[_DYN_ENABLE_SEND_PROMISE /* @min:%2eenableSendPromise */];
|
|
254
|
+
var sendPostConfig = _getSendPostMgrConfig();
|
|
255
|
+
// only init it once
|
|
256
|
+
if (!_sendPostMgr) {
|
|
257
|
+
_sendPostMgr = new SenderPostManager();
|
|
258
|
+
_sendPostMgr[_DYN_INITIALIZE /* @min:%2einitialize */](sendPostConfig, diagLog);
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
_sendPostMgr.SetConfig(sendPostConfig);
|
|
262
|
+
}
|
|
265
263
|
var customInterface = senderConfig.httpXHROverride;
|
|
266
264
|
var httpInterface = null;
|
|
267
265
|
var syncInterface = null;
|
|
268
266
|
// User requested transport(s) values > Beacon > Fetch > XHR
|
|
269
267
|
// Beacon would be filtered out if user has set disableBeaconApi to true at _getSenderInterface
|
|
270
|
-
var theTransports =
|
|
271
|
-
httpInterface =
|
|
272
|
-
var xhrInterface =
|
|
268
|
+
var theTransports = prependTransports([3 /* TransportType.Beacon */, 1 /* TransportType.Xhr */, 2 /* TransportType.Fetch */], senderConfig.transports);
|
|
269
|
+
httpInterface = _sendPostMgr && _sendPostMgr[_DYN_GET_XHR_INST /* @min:%2egetXhrInst */](theTransports, false);
|
|
270
|
+
var xhrInterface = _sendPostMgr && _sendPostMgr.getFallbackInst();
|
|
273
271
|
_xhrSend = function (payload, isAsync) {
|
|
274
272
|
return _doSend(xhrInterface, payload, isAsync);
|
|
275
273
|
};
|
|
@@ -284,12 +282,12 @@ var Sender = /** @class */ (function (_super) {
|
|
|
284
282
|
// Try and use the fetch with keepalive
|
|
285
283
|
_syncUnloadSender = _fetchKeepAliveSender;
|
|
286
284
|
}
|
|
287
|
-
var syncTransports =
|
|
285
|
+
var syncTransports = prependTransports([3 /* TransportType.Beacon */, 1 /* TransportType.Xhr */], senderConfig[_DYN_UNLOAD_TRANSPORTS /* @min:%2eunloadTransports */]);
|
|
288
286
|
if (!_fetchKeepAlive) {
|
|
289
287
|
// remove fetch from theTransports
|
|
290
288
|
syncTransports = syncTransports.filter(function (transport) { return transport !== 2 /* TransportType.Fetch */; });
|
|
291
289
|
}
|
|
292
|
-
syncInterface =
|
|
290
|
+
syncInterface = _sendPostMgr && _sendPostMgr[_DYN_GET_XHR_INST /* @min:%2egetXhrInst */](syncTransports, true);
|
|
293
291
|
syncInterface = _alwaysUseCustomSend ? customInterface : (syncInterface || customInterface);
|
|
294
292
|
if ((_alwaysUseCustomSend || senderConfig[_DYN_UNLOAD_TRANSPORTS /* @min:%2eunloadTransports */] || !_syncUnloadSender) && syncInterface) {
|
|
295
293
|
_syncUnloadSender = function (payload, isAsync) {
|
|
@@ -339,10 +337,8 @@ var Sender = /** @class */ (function (_super) {
|
|
|
339
337
|
/**
|
|
340
338
|
* xhr state changes
|
|
341
339
|
*/
|
|
342
|
-
_self
|
|
343
|
-
|
|
344
|
-
_checkResponsStatus(xhr.status, payload, xhr.responseURL, countOfItemsInPayload, _formatErrorMessageXhr(xhr), _getResponseText(xhr) || xhr.response);
|
|
345
|
-
}
|
|
340
|
+
_self._xhrReadyStateChange = function (xhr, payload, countOfItemsInPayload) {
|
|
341
|
+
return _xhrReadyStateChange(xhr, payload, countOfItemsInPayload);
|
|
346
342
|
};
|
|
347
343
|
/**
|
|
348
344
|
* Immediately send buffered data
|
|
@@ -436,7 +432,7 @@ var Sender = /** @class */ (function (_super) {
|
|
|
436
432
|
_self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */](payload, results[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */]);
|
|
437
433
|
}
|
|
438
434
|
if (failed[_DYN_LENGTH /* @min:%2elength */] > 0) {
|
|
439
|
-
_self[_DYN__ON_ERROR /* @min:%2e_onError */](failed,
|
|
435
|
+
_self[_DYN__ON_ERROR /* @min:%2e_onError */](failed, formatErrorMessageXhr(null, ["partial success", results[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */], "of", results.itemsReceived].join(" ")));
|
|
440
436
|
}
|
|
441
437
|
if (retry[_DYN_LENGTH /* @min:%2elength */] > 0) {
|
|
442
438
|
_resendPayload(retry);
|
|
@@ -455,22 +451,94 @@ var Sender = /** @class */ (function (_super) {
|
|
|
455
451
|
* xdr state changes
|
|
456
452
|
*/
|
|
457
453
|
_self._xdrOnLoad = function (xdr, payload) {
|
|
454
|
+
return _xdrOnLoad(xdr, payload);
|
|
455
|
+
};
|
|
456
|
+
function _xdrOnLoad(xdr, payload) {
|
|
458
457
|
var responseText = _getResponseText(xdr);
|
|
459
458
|
if (xdr && (responseText + "" === "200" || responseText === "")) {
|
|
460
459
|
_consecutiveErrors = 0;
|
|
461
460
|
_self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */](payload, 0);
|
|
462
461
|
}
|
|
463
462
|
else {
|
|
464
|
-
var results =
|
|
463
|
+
var results = parseResponse(responseText);
|
|
465
464
|
if (results && results.itemsReceived && results.itemsReceived > results[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */]
|
|
466
465
|
&& !_isRetryDisabled) {
|
|
467
466
|
_self[_DYN__ON_PARTIAL_SUCCESS /* @min:%2e_onPartialSuccess */](payload, results);
|
|
468
467
|
}
|
|
469
468
|
else {
|
|
470
|
-
_self[_DYN__ON_ERROR /* @min:%2e_onError */](payload,
|
|
469
|
+
_self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, formatErrorMessageXdr(xdr));
|
|
471
470
|
}
|
|
472
471
|
}
|
|
473
|
-
}
|
|
472
|
+
}
|
|
473
|
+
function _getSendPostMgrConfig() {
|
|
474
|
+
var _a;
|
|
475
|
+
try {
|
|
476
|
+
var onCompleteFuncs = {
|
|
477
|
+
xdrOnComplete: function (xdr, oncomplete, payload) {
|
|
478
|
+
var data = _getPayloadArr(payload);
|
|
479
|
+
if (!data) {
|
|
480
|
+
return;
|
|
481
|
+
}
|
|
482
|
+
return _xdrOnLoad(xdr, data);
|
|
483
|
+
},
|
|
484
|
+
fetchOnComplete: function (response, onComplete, resValue, payload) {
|
|
485
|
+
var data = _getPayloadArr(payload);
|
|
486
|
+
if (!data) {
|
|
487
|
+
return;
|
|
488
|
+
}
|
|
489
|
+
return _checkResponsStatus(response.status, data, response.url, data[_DYN_LENGTH /* @min:%2elength */], response.statusText, resValue || "");
|
|
490
|
+
},
|
|
491
|
+
xhrOnComplete: function (request, oncomplete, payload) {
|
|
492
|
+
var data = _getPayloadArr(payload);
|
|
493
|
+
if (!data) {
|
|
494
|
+
return;
|
|
495
|
+
}
|
|
496
|
+
return _xhrReadyStateChange(request, data, data[_DYN_LENGTH /* @min:%2elength */]);
|
|
497
|
+
},
|
|
498
|
+
beaconOnRetry: function (data, onComplete, canSend) {
|
|
499
|
+
return _onBeaconRetry(data, onComplete, canSend);
|
|
500
|
+
}
|
|
501
|
+
};
|
|
502
|
+
var config = (_a = {},
|
|
503
|
+
_a[_DYN_ENABLE_SEND_PROMISE /* @min:enableSendPromise */] = _enableSendPromise,
|
|
504
|
+
_a.isOneDs = false,
|
|
505
|
+
_a.disableCredentials = false,
|
|
506
|
+
_a[_DYN_DISABLE_XHR /* @min:disableXhr */] = _disableXhr,
|
|
507
|
+
_a.disableBeacon = !_beaconNormalSupported,
|
|
508
|
+
_a.disableBeaconSync = !_beaconOnUnloadSupported,
|
|
509
|
+
_a.senderOnCompleteCallBack = onCompleteFuncs,
|
|
510
|
+
_a);
|
|
511
|
+
return config;
|
|
512
|
+
}
|
|
513
|
+
catch (e) {
|
|
514
|
+
// eslint-disable-next-line no-empty
|
|
515
|
+
}
|
|
516
|
+
return null;
|
|
517
|
+
}
|
|
518
|
+
/**
|
|
519
|
+
* xhr state changes
|
|
520
|
+
*/
|
|
521
|
+
function _xhrReadyStateChange(xhr, payload, countOfItemsInPayload) {
|
|
522
|
+
if (xhr.readyState === 4) {
|
|
523
|
+
_checkResponsStatus(xhr.status, payload, xhr.responseURL, countOfItemsInPayload, formatErrorMessageXhr(xhr), _getResponseText(xhr) || xhr.response);
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
function _getPayloadArr(payload) {
|
|
527
|
+
try {
|
|
528
|
+
if (payload) {
|
|
529
|
+
var internalPayload = payload;
|
|
530
|
+
var arr = internalPayload[_DYN_ORI_PAYLOAD /* @min:%2eoriPayload */];
|
|
531
|
+
if (arr && arr[_DYN_LENGTH /* @min:%2elength */]) {
|
|
532
|
+
return arr;
|
|
533
|
+
}
|
|
534
|
+
return null;
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
catch (e) {
|
|
538
|
+
// eslint-disable-next-line no-empty
|
|
539
|
+
}
|
|
540
|
+
return null;
|
|
541
|
+
}
|
|
474
542
|
function _validate(telemetryItem, diagLogger) {
|
|
475
543
|
if (_disableTelemetry) {
|
|
476
544
|
// Do not send/save data
|
|
@@ -579,37 +647,6 @@ var Sender = /** @class */ (function (_super) {
|
|
|
579
647
|
function _isSampledIn(envelope) {
|
|
580
648
|
return _self._sample.isSampledIn(envelope);
|
|
581
649
|
}
|
|
582
|
-
function _getSenderInterface(transports, syncSupport) {
|
|
583
|
-
var _a;
|
|
584
|
-
var transportType = null;
|
|
585
|
-
var sendPostFunc = null;
|
|
586
|
-
var lp = 0;
|
|
587
|
-
while (sendPostFunc == null && lp < transports[_DYN_LENGTH /* @min:%2elength */]) {
|
|
588
|
-
transportType = transports[lp];
|
|
589
|
-
if (!_disableXhr && transportType === 1 /* TransportType.Xhr */) {
|
|
590
|
-
if (useXDomainRequest()) {
|
|
591
|
-
// IE 8 and 9
|
|
592
|
-
sendPostFunc = _xdrSender;
|
|
593
|
-
}
|
|
594
|
-
else if (isXhrSupported()) {
|
|
595
|
-
sendPostFunc = _xhrSender;
|
|
596
|
-
}
|
|
597
|
-
}
|
|
598
|
-
else if (transportType === 2 /* TransportType.Fetch */ && isFetchSupported(syncSupport)) {
|
|
599
|
-
sendPostFunc = _fetchSender;
|
|
600
|
-
}
|
|
601
|
-
else if (transportType === 3 /* TransportType.Beacon */ && (syncSupport ? _beaconOnUnloadSupported : _beaconNormalSupported)) {
|
|
602
|
-
sendPostFunc = _beaconSender;
|
|
603
|
-
}
|
|
604
|
-
lp++;
|
|
605
|
-
}
|
|
606
|
-
if (sendPostFunc) {
|
|
607
|
-
return _a = {},
|
|
608
|
-
_a[_DYN_SEND_POST /* @min:sendPOST */] = sendPostFunc,
|
|
609
|
-
_a;
|
|
610
|
-
}
|
|
611
|
-
return null;
|
|
612
|
-
}
|
|
613
650
|
function _getOnComplete(payload, status, headers, response) {
|
|
614
651
|
// ***********************************************************************************************
|
|
615
652
|
//TODO: handle other status codes
|
|
@@ -626,7 +663,7 @@ var Sender = /** @class */ (function (_super) {
|
|
|
626
663
|
return _getOnComplete(payload, status, headers, response);
|
|
627
664
|
};
|
|
628
665
|
var payloadData = _getPayload(payload);
|
|
629
|
-
var sendPostFunc = sendInterface && sendInterface
|
|
666
|
+
var sendPostFunc = sendInterface && sendInterface.sendPOST;
|
|
630
667
|
if (sendPostFunc && payloadData) {
|
|
631
668
|
// ***********************************************************************************************
|
|
632
669
|
// mark payload as sent at the beginning of calling each send function
|
|
@@ -640,7 +677,7 @@ var Sender = /** @class */ (function (_super) {
|
|
|
640
677
|
function _getPayload(payload) {
|
|
641
678
|
var _a;
|
|
642
679
|
if (isArray(payload) && payload[_DYN_LENGTH /* @min:%2elength */] > 0) {
|
|
643
|
-
var batch = _self
|
|
680
|
+
var batch = _self[_DYN__BUFFER /* @min:%2e_buffer */].batchPayloads(payload);
|
|
644
681
|
var payloadData = (_a = {},
|
|
645
682
|
_a[_DYN_DATA /* @min:data */] = batch,
|
|
646
683
|
_a.urlString = _endpointUrl,
|
|
@@ -653,15 +690,6 @@ var Sender = /** @class */ (function (_super) {
|
|
|
653
690
|
}
|
|
654
691
|
return null;
|
|
655
692
|
}
|
|
656
|
-
/**
|
|
657
|
-
* Send fetch API request
|
|
658
|
-
* @param payload - {string} - The data payload to be sent.
|
|
659
|
-
* @param oncomplete - {function} on complete function
|
|
660
|
-
* @param sync - {boolean} - not used
|
|
661
|
-
*/
|
|
662
|
-
function _fetchSender(payload, oncomplete, sync) {
|
|
663
|
-
return _doFetchSender(payload, oncomplete, false);
|
|
664
|
-
}
|
|
665
693
|
function _checkMaxSize(incomingPayload) {
|
|
666
694
|
var incomingSize = incomingPayload ? incomingPayload[_DYN_LENGTH /* @min:%2elength */] : 0;
|
|
667
695
|
if ((_self[_DYN__BUFFER /* @min:%2e_buffer */].size() + incomingSize) > _maxBatchSizeInBytes) {
|
|
@@ -675,7 +703,7 @@ var Sender = /** @class */ (function (_super) {
|
|
|
675
703
|
function _checkResponsStatus(status, payload, responseUrl, countOfItemsInPayload, errorMessage, res) {
|
|
676
704
|
var response = null;
|
|
677
705
|
if (!_self._appId) {
|
|
678
|
-
response =
|
|
706
|
+
response = parseResponse(res);
|
|
679
707
|
if (response && response.appId) {
|
|
680
708
|
_self._appId = response.appId;
|
|
681
709
|
}
|
|
@@ -712,7 +740,7 @@ var Sender = /** @class */ (function (_super) {
|
|
|
712
740
|
_checkAndUpdateEndPointUrl(responseUrl);
|
|
713
741
|
if (status === 206) {
|
|
714
742
|
if (!response) {
|
|
715
|
-
response =
|
|
743
|
+
response = parseResponse(res);
|
|
716
744
|
}
|
|
717
745
|
if (response && !_isRetryDisabled) {
|
|
718
746
|
_self[_DYN__ON_PARTIAL_SUCCESS /* @min:%2e_onPartialSuccess */](payload, response);
|
|
@@ -743,278 +771,67 @@ var Sender = /** @class */ (function (_super) {
|
|
|
743
771
|
}
|
|
744
772
|
return false;
|
|
745
773
|
}
|
|
746
|
-
function _doOnComplete(oncomplete, status, headers, response) {
|
|
747
|
-
try {
|
|
748
|
-
oncomplete(status, headers, response);
|
|
749
|
-
}
|
|
750
|
-
catch (e) {
|
|
751
|
-
// eslint-disable-next-line no-empty
|
|
752
|
-
}
|
|
753
|
-
}
|
|
754
774
|
function _doUnloadSend(payload, isAsync) {
|
|
755
|
-
var onComplete = function (status, headers, response) {
|
|
756
|
-
return _getOnComplete(payload, status, headers, response);
|
|
757
|
-
};
|
|
758
775
|
if (_syncUnloadSender) {
|
|
759
776
|
// We are unloading so always call the sender with sync set to false
|
|
760
777
|
_syncUnloadSender(payload, false);
|
|
761
778
|
}
|
|
762
779
|
else {
|
|
763
780
|
// Fallback to the previous beacon Sender (which causes a CORB warning on chrome now)
|
|
764
|
-
var
|
|
765
|
-
|
|
766
|
-
_beaconSender(payloadData, onComplete, !isAsync);
|
|
781
|
+
var beaconInst = _sendPostMgr && _sendPostMgr[_DYN_GET_XHR_INST /* @min:%2egetXhrInst */]([3 /* TransportType.Beacon */], true);
|
|
782
|
+
return _doSend(beaconInst, payload, isAsync);
|
|
767
783
|
}
|
|
768
784
|
}
|
|
769
|
-
function
|
|
770
|
-
var nav = getNavigator();
|
|
771
|
-
var url = _endpointUrl;
|
|
772
|
-
var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];
|
|
773
|
-
// Chrome only allows CORS-safelisted values for the sendBeacon data argument
|
|
774
|
-
// see: https://bugs.chromium.org/p/chromium/issues/detail?id=720283
|
|
775
|
-
var batch = buffer[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */](payload);
|
|
776
|
-
// Chrome only allows CORS-safelisted values for the sendBeacon data argument
|
|
777
|
-
// see: https://bugs.chromium.org/p/chromium/issues/detail?id=720283
|
|
778
|
-
var plainTextBatch = new Blob([batch], { type: "text/plain;charset=UTF-8" });
|
|
779
|
-
// The sendBeacon method returns true if the user agent is able to successfully queue the data for transfer. Otherwise it returns false.
|
|
780
|
-
var queued = nav.sendBeacon(url, plainTextBatch);
|
|
781
|
-
if (queued) {
|
|
782
|
-
// Should NOT pass onComplete directly since onComplete will always be called at full batch level
|
|
783
|
-
//buffer.markAsSent(payload);
|
|
784
|
-
// no response from beaconSender, clear buffer
|
|
785
|
-
_self._onSuccess(payload, payload[_DYN_LENGTH /* @min:%2elength */]);
|
|
786
|
-
}
|
|
787
|
-
return queued;
|
|
788
|
-
}
|
|
789
|
-
/**
|
|
790
|
-
* Send Beacon API request
|
|
791
|
-
* @param payload - {string} - The data payload to be sent.
|
|
792
|
-
* @param sync - {boolean} - not used
|
|
793
|
-
* Note: Beacon API does not support custom headers and we are not able to get
|
|
794
|
-
* appId from the backend for the correct correlation.
|
|
795
|
-
*/
|
|
796
|
-
function _beaconSender(payload, oncomplete, sync) {
|
|
785
|
+
function _onBeaconRetry(payload, onComplete, canSend) {
|
|
797
786
|
var internalPayload = payload;
|
|
798
787
|
var data = internalPayload && internalPayload[_DYN_ORI_PAYLOAD /* @min:%2eoriPayload */];
|
|
799
|
-
if (
|
|
800
|
-
//
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
droppedPayload[_DYN_PUSH /* @min:%2epush */](thePayload);
|
|
810
|
-
}
|
|
811
|
-
}
|
|
812
|
-
if (droppedPayload[_DYN_LENGTH /* @min:%2elength */] > 0) {
|
|
813
|
-
_fallbackSend && _fallbackSend(droppedPayload, true);
|
|
814
|
-
_throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, ". " + "Failed to send telemetry with Beacon API, retried with normal sender.");
|
|
815
|
-
}
|
|
788
|
+
if (!_disableBeaconSplit) {
|
|
789
|
+
// Failed to send entire payload so try and split data and try to send as much events as possible
|
|
790
|
+
var droppedPayload = [];
|
|
791
|
+
for (var lp = 0; lp < data[_DYN_LENGTH /* @min:%2elength */]; lp++) {
|
|
792
|
+
var thePayload = data[lp];
|
|
793
|
+
var arr = [thePayload];
|
|
794
|
+
var item = _getPayload(arr);
|
|
795
|
+
if (!canSend(item, onComplete)) {
|
|
796
|
+
// Can't send anymore, so split the batch and drop the rest
|
|
797
|
+
droppedPayload[_DYN_PUSH /* @min:%2epush */](thePayload);
|
|
816
798
|
}
|
|
817
799
|
else {
|
|
818
|
-
|
|
819
|
-
_throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, ". " + "Failed to send telemetry with Beacon API, retried with normal sender.");
|
|
800
|
+
_self._onSuccess(arr, arr[_DYN_LENGTH /* @min:%2elength */]);
|
|
820
801
|
}
|
|
821
802
|
}
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
* Send XMLHttpRequest
|
|
826
|
-
* @param payload - {string} - The data payload to be sent.
|
|
827
|
-
* @param sync - {boolean} - Indicates if the request should be sent synchronously
|
|
828
|
-
*/
|
|
829
|
-
function _xhrSender(payload, oncomplete, sync) {
|
|
830
|
-
var internalPayload = payload;
|
|
831
|
-
var thePromise;
|
|
832
|
-
var resolveFunc;
|
|
833
|
-
var rejectFunc;
|
|
834
|
-
var xhr = new XMLHttpRequest();
|
|
835
|
-
var endPointUrl = _endpointUrl;
|
|
836
|
-
try {
|
|
837
|
-
xhr[DisabledPropertyName] = true;
|
|
838
|
-
}
|
|
839
|
-
catch (e) {
|
|
840
|
-
// If the environment has locked down the XMLHttpRequest (preventExtensions and/or freeze), this would
|
|
841
|
-
// cause the request to fail and we no telemetry would be sent
|
|
842
|
-
}
|
|
843
|
-
xhr.open("POST", endPointUrl, !sync);
|
|
844
|
-
xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */]("Content-type", "application/json");
|
|
845
|
-
// append Sdk-Context request header only in case of breeze endpoint
|
|
846
|
-
if (isInternalApplicationInsightsEndpoint(endPointUrl)) {
|
|
847
|
-
xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[6 /* eRequestHeaders.sdkContextHeader */], RequestHeaders[7 /* eRequestHeaders.sdkContextHeaderAppIdRequest */]);
|
|
848
|
-
}
|
|
849
|
-
arrForEach(objKeys(_headers), function (headerName) {
|
|
850
|
-
xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](headerName, _headers[headerName]);
|
|
851
|
-
});
|
|
852
|
-
xhr.onreadystatechange = function () {
|
|
853
|
-
var oriPayload = internalPayload[_DYN_ORI_PAYLOAD /* @min:%2eoriPayload */];
|
|
854
|
-
_self._xhrReadyStateChange(xhr, oriPayload, oriPayload[_DYN_LENGTH /* @min:%2elength */]);
|
|
855
|
-
if (xhr.readyState === 4) {
|
|
856
|
-
resolveFunc && resolveFunc(true);
|
|
803
|
+
if (droppedPayload[_DYN_LENGTH /* @min:%2elength */] > 0) {
|
|
804
|
+
_fallbackSend && _fallbackSend(droppedPayload, true);
|
|
805
|
+
_throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, ". " + "Failed to send telemetry with Beacon API, retried with normal sender.");
|
|
857
806
|
}
|
|
858
|
-
};
|
|
859
|
-
xhr.onerror = function (event) {
|
|
860
|
-
_doOnComplete(oncomplete, 400, {}, _formatErrorMessageXhr(xhr));
|
|
861
|
-
rejectFunc && rejectFunc(event);
|
|
862
|
-
};
|
|
863
|
-
if (!sync && _enableSendPromise) {
|
|
864
|
-
thePromise = createPromise(function (resolve, reject) {
|
|
865
|
-
resolveFunc = resolve;
|
|
866
|
-
rejectFunc = reject;
|
|
867
|
-
});
|
|
868
807
|
}
|
|
869
|
-
|
|
870
|
-
|
|
808
|
+
else {
|
|
809
|
+
_fallbackSend && _fallbackSend(data, true);
|
|
810
|
+
_throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, ". " + "Failed to send telemetry with Beacon API, retried with normal sender.");
|
|
811
|
+
}
|
|
871
812
|
}
|
|
872
813
|
function _fetchKeepAliveSender(payload, isAsync) {
|
|
873
|
-
var
|
|
874
|
-
return _getOnComplete(payload, status, headers, response);
|
|
875
|
-
};
|
|
814
|
+
var transport = null;
|
|
876
815
|
if (isArray(payload)) {
|
|
877
816
|
var payloadSize = payload[_DYN_LENGTH /* @min:%2elength */];
|
|
878
817
|
for (var lp = 0; lp < payload[_DYN_LENGTH /* @min:%2elength */]; lp++) {
|
|
879
818
|
payloadSize += payload[lp][_DYN_LENGTH /* @min:%2elength */];
|
|
880
819
|
}
|
|
881
|
-
var
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
_doFetchSender(payloadData, onComplete, true);
|
|
820
|
+
var syncFetchPayload = _sendPostMgr.getSyncFetchPayload();
|
|
821
|
+
if ((syncFetchPayload + payloadSize) <= FetchSyncRequestSizeLimitBytes) {
|
|
822
|
+
transport = 2 /* TransportType.Fetch */;
|
|
885
823
|
}
|
|
886
824
|
else if (isBeaconsSupported()) {
|
|
887
825
|
// Fallback to beacon sender as we at least get told which events can't be scheduled
|
|
888
|
-
|
|
826
|
+
transport = 3 /* TransportType.Beacon */;
|
|
889
827
|
}
|
|
890
828
|
else {
|
|
891
829
|
// Payload is going to be too big so just try and send via XHR
|
|
892
|
-
|
|
830
|
+
transport = 1 /* TransportType.Xhr */;
|
|
893
831
|
_throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, ". " + "Failed to send telemetry with Beacon API, retried with xhrSender.");
|
|
894
832
|
}
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
/**
|
|
898
|
-
* Send fetch API request
|
|
899
|
-
* @param payload - {string} - The data payload to be sent.
|
|
900
|
-
* @param sync - {boolean} - For fetch this identifies whether we are "unloading" (false) or a normal request
|
|
901
|
-
*/
|
|
902
|
-
function _doFetchSender(payload, oncomplete, sync) {
|
|
903
|
-
var _a;
|
|
904
|
-
var endPointUrl = _endpointUrl;
|
|
905
|
-
var internalPayload = payload;
|
|
906
|
-
var batch = internalPayload[_DYN_DATA /* @min:%2edata */];
|
|
907
|
-
var plainTextBatch = new Blob([batch], { type: "application/json" });
|
|
908
|
-
var thePromise;
|
|
909
|
-
var resolveFunc;
|
|
910
|
-
var rejectFunc;
|
|
911
|
-
var requestHeaders = new Headers();
|
|
912
|
-
var batchLength = batch[_DYN_LENGTH /* @min:%2elength */];
|
|
913
|
-
var ignoreResponse = false;
|
|
914
|
-
var responseHandled = false;
|
|
915
|
-
// append Sdk-Context request header only in case of breeze endpoint
|
|
916
|
-
if (isInternalApplicationInsightsEndpoint(endPointUrl)) {
|
|
917
|
-
requestHeaders.append(RequestHeaders[6 /* eRequestHeaders.sdkContextHeader */], RequestHeaders[7 /* eRequestHeaders.sdkContextHeaderAppIdRequest */]);
|
|
918
|
-
}
|
|
919
|
-
arrForEach(objKeys(_headers), function (headerName) {
|
|
920
|
-
requestHeaders.append(headerName, _headers[headerName]);
|
|
921
|
-
});
|
|
922
|
-
var init = (_a = {
|
|
923
|
-
method: "POST",
|
|
924
|
-
headers: requestHeaders,
|
|
925
|
-
body: plainTextBatch
|
|
926
|
-
},
|
|
927
|
-
_a[DisabledPropertyName] = true // Mark so we don't attempt to track this request
|
|
928
|
-
,
|
|
929
|
-
_a);
|
|
930
|
-
if (sync) {
|
|
931
|
-
init.keepalive = true;
|
|
932
|
-
// As a sync request (during unload), it is unlikely that we will get a chance to process the response so
|
|
933
|
-
// just like beacon send assume that the events have been accepted and processed
|
|
934
|
-
ignoreResponse = true;
|
|
935
|
-
_syncFetchPayload += batchLength;
|
|
936
|
-
}
|
|
937
|
-
var request = new Request(endPointUrl, init);
|
|
938
|
-
try {
|
|
939
|
-
// Also try and tag the request (just in case the value in init is not copied over)
|
|
940
|
-
request[DisabledPropertyName] = true;
|
|
941
|
-
}
|
|
942
|
-
catch (e) {
|
|
943
|
-
// If the environment has locked down the XMLHttpRequest (preventExtensions and/or freeze), this would
|
|
944
|
-
// cause the request to fail and we no telemetry would be sent
|
|
945
|
-
}
|
|
946
|
-
if (!sync && _enableSendPromise) {
|
|
947
|
-
thePromise = createPromise(function (resolve, reject) {
|
|
948
|
-
resolveFunc = resolve;
|
|
949
|
-
rejectFunc = reject;
|
|
950
|
-
});
|
|
951
|
-
}
|
|
952
|
-
try {
|
|
953
|
-
doAwaitResponse(fetch(request), function (result) {
|
|
954
|
-
if (sync) {
|
|
955
|
-
_syncFetchPayload -= batchLength;
|
|
956
|
-
batchLength = 0;
|
|
957
|
-
}
|
|
958
|
-
if (!responseHandled) {
|
|
959
|
-
responseHandled = true;
|
|
960
|
-
if (!result.rejected) {
|
|
961
|
-
var response_1 = result.value;
|
|
962
|
-
/**
|
|
963
|
-
* The Promise returned from fetch() won’t reject on HTTP error status even if the response is an HTTP 404 or 500.
|
|
964
|
-
* Instead, it will resolve normally (with ok status set to false), and it will only reject on network failure
|
|
965
|
-
* or if anything prevented the request from completing.
|
|
966
|
-
*/
|
|
967
|
-
if (!response_1.ok) {
|
|
968
|
-
_doOnComplete(oncomplete, 400, {}, response_1.statusText);
|
|
969
|
-
resolveFunc && resolveFunc(false);
|
|
970
|
-
}
|
|
971
|
-
else {
|
|
972
|
-
doAwaitResponse(response_1.text(), function (resp) {
|
|
973
|
-
var oriPayload = internalPayload[_DYN_ORI_PAYLOAD /* @min:%2eoriPayload */];
|
|
974
|
-
_checkResponsStatus(response_1.status, oriPayload, response_1.url, oriPayload[_DYN_LENGTH /* @min:%2elength */], response_1.statusText, resp.value || "");
|
|
975
|
-
resolveFunc && resolveFunc(true);
|
|
976
|
-
});
|
|
977
|
-
}
|
|
978
|
-
}
|
|
979
|
-
else {
|
|
980
|
-
_doOnComplete(oncomplete, 400, {}, result.reason && result.reason.message);
|
|
981
|
-
rejectFunc && rejectFunc(result.reason);
|
|
982
|
-
}
|
|
983
|
-
}
|
|
984
|
-
});
|
|
985
|
-
}
|
|
986
|
-
catch (e) {
|
|
987
|
-
if (!responseHandled) {
|
|
988
|
-
_doOnComplete(oncomplete, 400, {}, dumpObj(e));
|
|
989
|
-
rejectFunc && rejectFunc(e);
|
|
990
|
-
}
|
|
991
|
-
}
|
|
992
|
-
if (ignoreResponse && !responseHandled) {
|
|
993
|
-
// Assume success during unload processing as we most likely won't get the response
|
|
994
|
-
responseHandled = true;
|
|
995
|
-
_doOnComplete(oncomplete, 200, {});
|
|
996
|
-
resolveFunc && resolveFunc(true);
|
|
997
|
-
}
|
|
998
|
-
return thePromise;
|
|
999
|
-
}
|
|
1000
|
-
/**
|
|
1001
|
-
* Parses the response from the backend.
|
|
1002
|
-
* @param response - XMLHttpRequest or XDomainRequest response
|
|
1003
|
-
*/
|
|
1004
|
-
function _parseResponse(response) {
|
|
1005
|
-
try {
|
|
1006
|
-
if (response && response !== "") {
|
|
1007
|
-
var result = getJSON().parse(response);
|
|
1008
|
-
if (result && result.itemsReceived && result.itemsReceived >= result[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */] &&
|
|
1009
|
-
result.itemsReceived - result.itemsAccepted === result.errors[_DYN_LENGTH /* @min:%2elength */]) {
|
|
1010
|
-
return result;
|
|
1011
|
-
}
|
|
1012
|
-
}
|
|
1013
|
-
}
|
|
1014
|
-
catch (e) {
|
|
1015
|
-
_throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 43 /* _eInternalMessageId.InvalidBackendResponse */, "Cannot parse the response. " + getExceptionName(e), {
|
|
1016
|
-
response: response
|
|
1017
|
-
});
|
|
833
|
+
var inst = _sendPostMgr && _sendPostMgr[_DYN_GET_XHR_INST /* @min:%2egetXhrInst */]([transport], true);
|
|
834
|
+
return _doSend(inst, payload, isAsync);
|
|
1018
835
|
}
|
|
1019
836
|
return null;
|
|
1020
837
|
}
|
|
@@ -1092,55 +909,6 @@ var Sender = /** @class */ (function (_super) {
|
|
|
1092
909
|
|| statusCode === 503 // Service unavailable.
|
|
1093
910
|
|| statusCode === 504; // Gateway timeout.
|
|
1094
911
|
}
|
|
1095
|
-
function _formatErrorMessageXhr(xhr, message) {
|
|
1096
|
-
if (xhr) {
|
|
1097
|
-
return "XMLHttpRequest,Status:" + xhr.status + ",Response:" + _getResponseText(xhr) || xhr.response || "";
|
|
1098
|
-
}
|
|
1099
|
-
return message;
|
|
1100
|
-
}
|
|
1101
|
-
/**
|
|
1102
|
-
* Send XDomainRequest
|
|
1103
|
-
* @param payload - {string} - The data payload to be sent.
|
|
1104
|
-
* @param sync - {boolean} - Indicates if the request should be sent synchronously
|
|
1105
|
-
*
|
|
1106
|
-
* Note: XDomainRequest does not support sync requests. This 'isAsync' parameter is added
|
|
1107
|
-
* to maintain consistency with the xhrSender's contract
|
|
1108
|
-
* Note: XDomainRequest does not support custom headers and we are not able to get
|
|
1109
|
-
* appId from the backend for the correct correlation.
|
|
1110
|
-
*/
|
|
1111
|
-
function _xdrSender(payload, oncomplete, sync) {
|
|
1112
|
-
var internalPayload = payload;
|
|
1113
|
-
var _window = getWindow();
|
|
1114
|
-
var xdr = new XDomainRequest();
|
|
1115
|
-
var data = internalPayload[_DYN_DATA /* @min:%2edata */];
|
|
1116
|
-
// NOTE: xdr may send previous retry payload to new endpoint since we are not able to check response URL
|
|
1117
|
-
xdr.onload = function () {
|
|
1118
|
-
var oriPayload = internalPayload[_DYN_ORI_PAYLOAD /* @min:%2eoriPayload */];
|
|
1119
|
-
// we will assume onload means the request succeeded.
|
|
1120
|
-
_self._xdrOnLoad(xdr, oriPayload);
|
|
1121
|
-
};
|
|
1122
|
-
xdr.onerror = function () {
|
|
1123
|
-
_doOnComplete(oncomplete, 400, {}, _formatErrorMessageXdr(xdr));
|
|
1124
|
-
};
|
|
1125
|
-
// XDomainRequest requires the same protocol as the hosting page.
|
|
1126
|
-
// If the protocol doesn't match, we can't send the telemetry :(.
|
|
1127
|
-
var hostingProtocol = _window && _window.location && _window.location.protocol || "";
|
|
1128
|
-
if (_endpointUrl.lastIndexOf(hostingProtocol, 0) !== 0) {
|
|
1129
|
-
_throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, ". " +
|
|
1130
|
-
"Cannot send XDomain request. The endpoint URL protocol doesn't match the hosting page protocol.");
|
|
1131
|
-
_self._buffer[_DYN_CLEAR /* @min:%2eclear */]();
|
|
1132
|
-
return;
|
|
1133
|
-
}
|
|
1134
|
-
var endpointUrl = _endpointUrl.replace(/^(https?:)/, "");
|
|
1135
|
-
xdr.open("POST", endpointUrl);
|
|
1136
|
-
xdr.send(data);
|
|
1137
|
-
}
|
|
1138
|
-
function _formatErrorMessageXdr(xdr, message) {
|
|
1139
|
-
if (xdr) {
|
|
1140
|
-
return "XDomainRequest,Response:" + _getResponseText(xdr) || "";
|
|
1141
|
-
}
|
|
1142
|
-
return message;
|
|
1143
|
-
}
|
|
1144
912
|
// Using function lookups for backward compatibility as the getNotifyMgr() did not exist until after v2.5.6
|
|
1145
913
|
function _getNotifyMgr() {
|
|
1146
914
|
var func = "getNotifyMgr";
|
|
@@ -1208,6 +976,7 @@ var Sender = /** @class */ (function (_super) {
|
|
|
1208
976
|
_disableBeaconSplit = false;
|
|
1209
977
|
_xhrSend = null;
|
|
1210
978
|
_fallbackSend = null;
|
|
979
|
+
_sendPostMgr = null;
|
|
1211
980
|
objDefine(_self, "_senderConfig", {
|
|
1212
981
|
g: function () {
|
|
1213
982
|
return objExtend({}, defaultAppInsightsChannelConfig);
|