@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.
Files changed (59) hide show
  1. 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
  2. package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-03.cjs.js.map +1 -0
  3. package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-03.cjs.min.js +6 -0
  4. package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-03.cjs.min.js.map +1 -0
  5. 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
  6. package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-03.gbl.js.map +1 -0
  7. package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-03.gbl.min.js +6 -0
  8. package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-03.gbl.min.js.map +1 -0
  9. package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-03.integrity.json +66 -0
  10. 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
  11. package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-03.js.map +1 -0
  12. package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-03.min.js +6 -0
  13. package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-03.min.js.map +1 -0
  14. package/browser/es5/applicationinsights-channel-js.3.cjs.js +585 -330
  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 +587 -332
  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 +587 -332
  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 +585 -330
  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/SendBuffer.js +5 -5
  36. package/dist-es5/SendBuffer.js.map +1 -1
  37. package/dist-es5/Sender.js +138 -369
  38. package/dist-es5/Sender.js.map +1 -1
  39. package/dist-es5/Serializer.js +1 -1
  40. package/dist-es5/TelemetryProcessors/Sample.js +1 -1
  41. package/dist-es5/TelemetryProcessors/SamplingScoreGenerators/HashCodeScoreGenerator.js +3 -3
  42. package/dist-es5/TelemetryProcessors/SamplingScoreGenerators/HashCodeScoreGenerator.js.map +1 -1
  43. package/dist-es5/TelemetryProcessors/SamplingScoreGenerators/SamplingScoreGenerator.js +1 -1
  44. package/dist-es5/__DynamicConstants.js +14 -15
  45. package/dist-es5/__DynamicConstants.js.map +1 -1
  46. package/dist-es5/applicationinsights-channel-js.js +1 -1
  47. package/package.json +3 -3
  48. package/types/applicationinsights-channel-js.d.ts +1 -1
  49. package/types/applicationinsights-channel-js.namespaced.d.ts +6 -1
  50. package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-01.cjs.js.map +0 -1
  51. package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-01.cjs.min.js +0 -6
  52. package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-01.cjs.min.js.map +0 -1
  53. package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-01.gbl.js.map +0 -1
  54. package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-01.gbl.min.js +0 -6
  55. package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-01.gbl.min.js.map +0 -1
  56. package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-01.integrity.json +0 -66
  57. package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-01.js.map +0 -1
  58. package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-01.min.js +0 -6
  59. package/browser/es5/applicationinsights-channel-js.3.1.1-nightly3.2403-01.min.js.map +0 -1
@@ -1,19 +1,18 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Channel, 3.1.1-nightly3.2403-01
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, DisabledPropertyName, Event, Exception, Metric, PageView, PageViewPerformance, ProcessLegacy, RemoteDependencyData, RequestHeaders, SampleRate, Trace, createOfflineListener, isInternalApplicationInsightsEndpoint, utlCanUseSessionStorage, utlSetStoragePrefix } from "@microsoft/applicationinsights-common";
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
- import { createPromise, doAwaitResponse } from "@nevware21/ts-async";
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, _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_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_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_SERIALIZE, _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_CHA8 } from "./__DynamicConstants";
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[_DYN_SEND_POST /* @min:%2esendPOST */];
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.disableXhr = cfgDfBoolean(),
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.initialize = function (config, core, extensions, pluginChain) {
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.initialize(config, core, extensions, pluginChain);
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.disableXhr;
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.enableSendPromise;
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 = _prependTransports([3 /* TransportType.Beacon */, 1 /* TransportType.Xhr */, 2 /* TransportType.Fetch */], senderConfig.transports);
271
- httpInterface = _getSenderInterface(theTransports, false);
272
- var xhrInterface = { sendPOST: _xhrSender };
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 = _prependTransports([3 /* TransportType.Beacon */, 1 /* TransportType.Xhr */], senderConfig[_DYN_UNLOAD_TRANSPORTS /* @min:%2eunloadTransports */]);
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 = _getSenderInterface(syncTransports, true);
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[_DYN__XHR_READY_STATE_CHA8 /* @min:%2e_xhrReadyStateChange */] = function (xhr, payload, countOfItemsInPayload) {
343
- if (xhr.readyState === 4) {
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, _formatErrorMessageXhr(null, ["partial success", results[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */], "of", results.itemsReceived].join(" ")));
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 = _parseResponse(responseText);
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, _formatErrorMessageXdr(xdr));
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[_DYN_SEND_POST /* @min:%2esendPOST */];
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._buffer[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */](payload);
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 = _parseResponse(res);
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 = _parseResponse(res);
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 payloadData = _getPayload(payload);
765
- _self._buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);
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 _doBeaconSend(payload, oncomplete) {
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 (isArray(data) && data[_DYN_LENGTH /* @min:%2elength */] > 0) {
800
- // The sendBeacon method returns true if the user agent is able to successfully queue the data for transfer. Otherwise it returns false.
801
- if (!_doBeaconSend(data, oncomplete)) {
802
- if (!_disableBeaconSplit) {
803
- // Failed to send entire payload so try and split data and try to send as much events as possible
804
- var droppedPayload = [];
805
- for (var lp = 0; lp < data[_DYN_LENGTH /* @min:%2elength */]; lp++) {
806
- var thePayload = data[lp];
807
- if (!_doBeaconSend([thePayload], oncomplete)) {
808
- // Can't send anymore, so split the batch and drop the rest
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
- _fallbackSend && _fallbackSend(data, true);
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
- xhr.send(payload[_DYN_DATA /* @min:%2edata */]);
870
- return thePromise;
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 onComplete = function (status, headers, response) {
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 payloadData = _getPayload(payload);
882
- _self._buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);
883
- if ((_syncFetchPayload + payloadSize) <= FetchSyncRequestSizeLimitBytes) {
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
- _beaconSender(payloadData, onComplete, !isAsync);
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
- _fallbackSend && _fallbackSend(payload, true);
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);