@microsoft/applicationinsights-channel-js 3.1.3-nightly3.240329-01 → 3.1.3-nightly3.2404-12

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.3-nightly3.240329-01.js → applicationinsights-channel-js.3.1.3-nightly3.2404-12.cjs.js} +248 -125
  2. package/browser/es5/applicationinsights-channel-js.3.1.3-nightly3.2404-12.cjs.js.map +1 -0
  3. package/browser/es5/applicationinsights-channel-js.3.1.3-nightly3.2404-12.cjs.min.js +6 -0
  4. package/browser/es5/applicationinsights-channel-js.3.1.3-nightly3.2404-12.cjs.min.js.map +1 -0
  5. package/browser/es5/{applicationinsights-channel-js.3.1.3-nightly3.240329-01.gbl.js → applicationinsights-channel-js.3.1.3-nightly3.2404-12.gbl.js} +250 -100
  6. package/browser/es5/applicationinsights-channel-js.3.1.3-nightly3.2404-12.gbl.js.map +1 -0
  7. package/browser/es5/applicationinsights-channel-js.3.1.3-nightly3.2404-12.gbl.min.js +6 -0
  8. package/browser/es5/applicationinsights-channel-js.3.1.3-nightly3.2404-12.gbl.min.js.map +1 -0
  9. package/browser/es5/applicationinsights-channel-js.3.1.3-nightly3.2404-12.integrity.json +66 -0
  10. package/browser/es5/{applicationinsights-channel-js.3.1.3-nightly3.240329-01.cjs.js → applicationinsights-channel-js.3.1.3-nightly3.2404-12.js} +275 -98
  11. package/browser/es5/applicationinsights-channel-js.3.1.3-nightly3.2404-12.js.map +1 -0
  12. package/browser/es5/applicationinsights-channel-js.3.1.3-nightly3.2404-12.min.js +6 -0
  13. package/browser/es5/applicationinsights-channel-js.3.1.3-nightly3.2404-12.min.js.map +1 -0
  14. package/browser/es5/applicationinsights-channel-js.3.cjs.js +247 -97
  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 +249 -99
  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 +249 -99
  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 +247 -97
  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 +3 -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 +98 -19
  36. package/dist-es5/SendBuffer.js.map +1 -1
  37. package/dist-es5/Sender.js +94 -35
  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 +6 -4
  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 +59 -22
  49. package/types/applicationinsights-channel-js.namespaced.d.ts +59 -49
  50. package/browser/es5/applicationinsights-channel-js.3.1.3-nightly3.240329-01.cjs.js.map +0 -1
  51. package/browser/es5/applicationinsights-channel-js.3.1.3-nightly3.240329-01.cjs.min.js +0 -6
  52. package/browser/es5/applicationinsights-channel-js.3.1.3-nightly3.240329-01.cjs.min.js.map +0 -1
  53. package/browser/es5/applicationinsights-channel-js.3.1.3-nightly3.240329-01.gbl.js.map +0 -1
  54. package/browser/es5/applicationinsights-channel-js.3.1.3-nightly3.240329-01.gbl.min.js +0 -6
  55. package/browser/es5/applicationinsights-channel-js.3.1.3-nightly3.240329-01.gbl.min.js.map +0 -1
  56. package/browser/es5/applicationinsights-channel-js.3.1.3-nightly3.240329-01.integrity.json +0 -66
  57. package/browser/es5/applicationinsights-channel-js.3.1.3-nightly3.240329-01.js.map +0 -1
  58. package/browser/es5/applicationinsights-channel-js.3.1.3-nightly3.240329-01.min.js +0 -6
  59. package/browser/es5/applicationinsights-channel-js.3.1.3-nightly3.240329-01.min.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Application Insights JavaScript SDK - Channel, 3.1.3-nightly3.240329-01
2
+ * Application Insights JavaScript SDK - Channel, 3.1.3-nightly3.2404-12
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
  (function (global, factory) {
@@ -1168,14 +1168,19 @@
1168
1168
  throw new aggregationErrorType(theMessage, sourceErrors || []);
1169
1169
  }
1170
1170
 
1171
+ var STR_PROMISE = "Promise";
1172
+ var REJECTED = "rejected";
1173
+
1171
1174
  function doAwaitResponse(value, cb) {
1172
1175
  return doAwait(value, function (value) {
1173
1176
  return cb ? cb({
1174
- value: value,
1175
- rejected: false
1177
+ status: "fulfilled",
1178
+ rejected: false,
1179
+ value: value
1176
1180
  }) : value;
1177
1181
  }, function (reason) {
1178
1182
  return cb ? cb({
1183
+ status: REJECTED,
1179
1184
  rejected: true,
1180
1185
  reason: reason
1181
1186
  }) : reason;
@@ -1183,18 +1188,32 @@
1183
1188
  }
1184
1189
  function doAwait(value, resolveFn, rejectFn, finallyFn) {
1185
1190
  var result = value;
1186
- if (isPromiseLike(value)) {
1187
- if (resolveFn || rejectFn) {
1188
- result = value.then(resolveFn, rejectFn);
1191
+ try {
1192
+ if (isPromiseLike(value)) {
1193
+ if (resolveFn || rejectFn) {
1194
+ result = value.then(resolveFn, rejectFn);
1195
+ }
1189
1196
  }
1190
- }
1191
- else {
1192
- if (resolveFn) {
1193
- result = resolveFn(value);
1197
+ else {
1198
+ try {
1199
+ if (resolveFn) {
1200
+ result = resolveFn(value);
1201
+ }
1202
+ }
1203
+ catch (err) {
1204
+ if (rejectFn) {
1205
+ result = rejectFn(err);
1206
+ }
1207
+ else {
1208
+ throw err;
1209
+ }
1210
+ }
1194
1211
  }
1195
1212
  }
1196
- if (finallyFn) {
1197
- doFinally(result, finallyFn);
1213
+ finally {
1214
+ if (finallyFn) {
1215
+ doFinally(result, finallyFn);
1216
+ }
1198
1217
  }
1199
1218
  return result;
1200
1219
  }
@@ -1222,21 +1241,22 @@
1222
1241
  return result;
1223
1242
  }
1224
1243
 
1225
- var STRING_STATES = [
1226
- "pending", "resolving", "resolved", "rejected"
1244
+ var STRING_STATES = [
1245
+ "pending", "resolving", "resolved", REJECTED
1227
1246
  ];
1228
1247
 
1229
1248
  var DISPATCH_EVENT = "dispatchEvent";
1230
1249
  var _hasInitEvent;
1250
+ function _hasInitEventFn(doc) {
1251
+ var evt;
1252
+ if (doc && doc.createEvent) {
1253
+ evt = doc.createEvent("Event");
1254
+ }
1255
+ return (!!evt && evt.initEvent);
1256
+ }
1231
1257
  function emitEvent(target, evtName, populateEvent, useNewEvent) {
1232
1258
  var doc = getDocument();
1233
- !_hasInitEvent && (_hasInitEvent = safeGetLazy(function () {
1234
- var evt;
1235
- if (doc && doc.createEvent) {
1236
- evt = doc.createEvent("Event");
1237
- }
1238
- return (!!evt && evt.initEvent);
1239
- }, null));
1259
+ !_hasInitEvent && (_hasInitEvent = createCachedValue(!!safe(_hasInitEventFn, [doc]).v));
1240
1260
  var theEvt = _hasInitEvent.v ? doc.createEvent("Event") : (useNewEvent ? new Event(evtName) : {});
1241
1261
  populateEvent && populateEvent(theEvt);
1242
1262
  if (_hasInitEvent.v) {
@@ -1257,8 +1277,6 @@
1257
1277
  }
1258
1278
  }
1259
1279
 
1260
- var STR_PROMISE = "Promise";
1261
-
1262
1280
  var NODE_UNHANDLED_REJECTION = "unhandledRejection";
1263
1281
  var UNHANDLED_REJECTION = NODE_UNHANDLED_REJECTION.toLowerCase();
1264
1282
  var _unhandledRejectionTimeout = 10;
@@ -1279,7 +1297,7 @@
1279
1297
  var _unHandledRejectionHandler = null;
1280
1298
  var _thePromise;
1281
1299
  !_hasPromiseRejectionEvent && (_hasPromiseRejectionEvent = lazySafeGetInst(STR_PROMISE + "RejectionEvent"));
1282
- var _then = function (onResolved, onRejected) {
1300
+ function _then(onResolved, onRejected) {
1283
1301
  try {
1284
1302
  _handled = true;
1285
1303
  _unHandledRejectionHandler && _unHandledRejectionHandler.cancel();
@@ -1314,11 +1332,11 @@
1314
1332
  }
1315
1333
  finally {
1316
1334
  }
1317
- };
1318
- var _catch = function (onRejected) {
1335
+ }
1336
+ function _catch(onRejected) {
1319
1337
  return _then(undefined, onRejected);
1320
- };
1321
- var _finally = function (onFinally) {
1338
+ }
1339
+ function _finally(onFinally) {
1322
1340
  var thenFinally = onFinally;
1323
1341
  var catchFinally = onFinally;
1324
1342
  if (isFunction(onFinally)) {
@@ -1332,21 +1350,21 @@
1332
1350
  };
1333
1351
  }
1334
1352
  return _then(thenFinally, catchFinally);
1335
- };
1336
- var _strState = function () {
1353
+ }
1354
+ function _strState() {
1337
1355
  return STRING_STATES[_state];
1338
- };
1339
- var _processQueue = function () {
1356
+ }
1357
+ function _processQueue() {
1340
1358
  if (_queue.length > 0) {
1341
1359
  var pending = _queue.slice();
1342
1360
  _queue = [];
1343
1361
  _handled = true;
1344
- processor(pending);
1345
1362
  _unHandledRejectionHandler && _unHandledRejectionHandler.cancel();
1346
1363
  _unHandledRejectionHandler = null;
1364
+ processor(pending);
1347
1365
  }
1348
- };
1349
- var _createSettleIfFn = function (newState, allowState) {
1366
+ }
1367
+ function _createSettleIfFn(newState, allowState) {
1350
1368
  return function (theValue) {
1351
1369
  if (_state === allowState) {
1352
1370
  if (newState === 2 && isPromiseLike(theValue)) {
@@ -1363,9 +1381,10 @@
1363
1381
  }
1364
1382
  }
1365
1383
  };
1366
- };
1367
- var _notifyUnhandledRejection = function () {
1384
+ }
1385
+ function _notifyUnhandledRejection() {
1368
1386
  if (!_handled) {
1387
+ _handled = true;
1369
1388
  if (isNode()) {
1370
1389
  process.emit(NODE_UNHANDLED_REJECTION, _settledValue, _thePromise);
1371
1390
  }
@@ -1378,7 +1397,7 @@
1378
1397
  }, !!_hasPromiseRejectionEvent.v);
1379
1398
  }
1380
1399
  }
1381
- };
1400
+ }
1382
1401
  _thePromise = {
1383
1402
  then: _then,
1384
1403
  "catch": _catch,
@@ -1390,9 +1409,9 @@
1390
1409
  if (hasSymbol()) {
1391
1410
  _thePromise[getKnownSymbol(11 )] = "IPromise";
1392
1411
  }
1393
- var _toString = function () {
1394
- return "IPromise" + ("") + " " + _strState() + (_hasResolved ? (" - " + dumpFnObj(_settledValue)) : "");
1395
- };
1412
+ function _toString() {
1413
+ return "IPromise" + ("") + " " + _strState() + (_hasResolved ? (" - " + dumpFnObj(_settledValue)) : "") + ("");
1414
+ }
1396
1415
  _thePromise.toString = _toString;
1397
1416
  (function _initialize() {
1398
1417
  if (!isFunction(executor)) {
@@ -1409,7 +1428,7 @@
1409
1428
  return _thePromise;
1410
1429
  }
1411
1430
 
1412
- var _processPendingItems = function (pending) {
1431
+ function syncItemProcessor(pending) {
1413
1432
  arrForEach(pending, function (fn) {
1414
1433
  try {
1415
1434
  fn();
@@ -1417,12 +1436,12 @@
1417
1436
  catch (e) {
1418
1437
  }
1419
1438
  });
1420
- };
1439
+ }
1421
1440
  function timeoutItemProcessor(timeout) {
1422
1441
  var callbackTimeout = isNumber(timeout) ? timeout : 0;
1423
1442
  return function (pending) {
1424
1443
  scheduleTimeout(function () {
1425
- _processPendingItems(pending);
1444
+ syncItemProcessor(pending);
1426
1445
  }, callbackTimeout);
1427
1446
  };
1428
1447
  }
@@ -1431,10 +1450,10 @@
1431
1450
  return _createPromise(createAsyncPromise, timeoutItemProcessor(timeout), executor, timeout);
1432
1451
  }
1433
1452
 
1434
- var _isPromiseSupported;
1453
+ var _promiseCls;
1435
1454
  function createNativePromise(executor, timeout) {
1436
- !_isPromiseSupported && (_isPromiseSupported = lazySafeGetInst(STR_PROMISE));
1437
- var PrmCls = _isPromiseSupported.v;
1455
+ !_promiseCls && (_promiseCls = createCachedValue((safe(getInst, [STR_PROMISE]).v) || null));
1456
+ var PrmCls = _promiseCls.v;
1438
1457
  if (!PrmCls) {
1439
1458
  return createAsyncPromise(executor);
1440
1459
  }
@@ -1464,7 +1483,7 @@
1464
1483
 
1465
1484
  var _promiseCreator;
1466
1485
  function createPromise(executor, timeout) {
1467
- !_promiseCreator && (_promiseCreator = getLazy(function () { return createNativePromise; }));
1486
+ !_promiseCreator && (_promiseCreator = createCachedValue(createNativePromise));
1468
1487
  return _promiseCreator.v.call(this, executor, timeout);
1469
1488
  }
1470
1489
 
@@ -3702,7 +3721,9 @@
3702
3721
  return;
3703
3722
  }
3704
3723
  var xhr = openXhr(STR_POST_METHOD, endPointUrl, _sendCredentials, true, sync, payload[_DYN_TIMEOUT ]);
3705
- xhr[_DYN_SET_REQUEST_HEADER ]("Content-type", "application/json");
3724
+ if (!_isOneDs) {
3725
+ xhr[_DYN_SET_REQUEST_HEADER ]("Content-type", "application/json");
3726
+ }
3706
3727
  arrForEach(objKeys(headers), function (headerName) {
3707
3728
  xhr[_DYN_SET_REQUEST_HEADER ](headerName, headers[headerName]);
3708
3729
  });
@@ -4441,6 +4462,20 @@
4441
4462
  }
4442
4463
  return false;
4443
4464
  }
4465
+ function utlRemoveSessionStorage(logger, name) {
4466
+ var storage = _getSessionStorageObject();
4467
+ if (storage !== null) {
4468
+ try {
4469
+ storage[_DYN_REMOVE_ITEM ](name);
4470
+ return true;
4471
+ }
4472
+ catch (e) {
4473
+ _canUseSessionStorage = false;
4474
+ _throwInternal(logger, 2 , 6 , "Browser failed removal of session storage item. " + getExceptionName(e), { exception: dumpObj(e) });
4475
+ }
4476
+ }
4477
+ return false;
4478
+ }
4444
4479
 
4445
4480
  var Envelope = /** @class */ (function () {
4446
4481
  function Envelope(logger, data, name) {
@@ -5381,6 +5416,7 @@
5381
5416
  var _DYN_COUNT = "count";
5382
5417
  var _DYN_EVENTS_LIMIT_IN_MEM = "eventsLimitInMem";
5383
5418
  var _DYN_PUSH = "push";
5419
+ var _DYN_ITEM = "item";
5384
5420
  var _DYN_EMIT_LINE_DELIMITED_0 = "emitLineDelimitedJson";
5385
5421
  var _DYN_CLEAR = "clear";
5386
5422
  var _DYN_CREATE_NEW = "createNew";
@@ -5389,6 +5425,7 @@
5389
5425
  var _DYN_BUFFER_OVERRIDE = "bufferOverride";
5390
5426
  var _DYN__BUFFER__KEY = "BUFFER_KEY";
5391
5427
  var _DYN__SENT__BUFFER__KEY = "SENT_BUFFER_KEY";
5428
+ var _DYN_CONCAT = "concat";
5392
5429
  var _DYN__MAX__BUFFER__SIZE = "MAX_BUFFER_SIZE";
5393
5430
  var _DYN_TRIGGER_SEND = "triggerSend";
5394
5431
  var _DYN_DIAG_LOG = "diagLog";
@@ -5414,8 +5451,8 @@
5414
5451
  var _DYN__ON_ERROR = "_onError";
5415
5452
  var _DYN__ON_PARTIAL_SUCCESS = "_onPartialSuccess";
5416
5453
  var _DYN__ON_SUCCESS = "_onSuccess";
5417
- var _DYN_ITEMS_ACCEPTED = "itemsAccepted";
5418
5454
  var _DYN_ITEMS_RECEIVED = "itemsReceived";
5455
+ var _DYN_ITEMS_ACCEPTED = "itemsAccepted";
5419
5456
  var _DYN_ORI_PAYLOAD = "oriPayload";
5420
5457
  var _DYN_BASE_TYPE = "baseType";
5421
5458
  var _DYN_SAMPLE_RATE = "sampleRate";
@@ -5467,6 +5504,7 @@
5467
5504
  var extOs = itmExt.os;
5468
5505
  if (extOs) {
5469
5506
  _setValueIf(envTags, CtxTagKeys.deviceOS, extOs[_DYN_NAME ]);
5507
+ _setValueIf(envTags, CtxTagKeys.deviceOSVersion, extOs.osVer);
5470
5508
  }
5471
5509
  var extTrace = itmExt.trace;
5472
5510
  if (extTrace) {
@@ -5532,7 +5570,7 @@
5532
5570
  }
5533
5571
  }
5534
5572
  var EnvelopeCreator = {
5535
- Version: '3.1.3-nightly3.240329-01'
5573
+ Version: '3.1.3-nightly3.2404-12'
5536
5574
  };
5537
5575
  function DependencyEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {
5538
5576
  EnvelopeCreatorInit(logger, telemetryItem);
@@ -5685,6 +5723,7 @@
5685
5723
  function BaseSendBuffer(logger, config) {
5686
5724
  var _buffer = [];
5687
5725
  var _bufferFullMessageSent = false;
5726
+ var _maxRetryCnt = config.maxRetryCnt;
5688
5727
  this[_DYN__GET ] = function () {
5689
5728
  return _buffer;
5690
5729
  };
@@ -5701,7 +5740,14 @@
5701
5740
  }
5702
5741
  return;
5703
5742
  }
5743
+ payload.cnt = payload.cnt || 0;
5744
+ if (!isNullOrUndefined(_maxRetryCnt)) {
5745
+ if (payload.cnt > _maxRetryCnt) {
5746
+ return;
5747
+ }
5748
+ }
5704
5749
  _buffer[_DYN_PUSH ](payload);
5750
+ return;
5705
5751
  };
5706
5752
  _self[_DYN_COUNT ] = function () {
5707
5753
  return _buffer[_DYN_LENGTH ];
@@ -5709,7 +5755,7 @@
5709
5755
  _self.size = function () {
5710
5756
  var size = _buffer[_DYN_LENGTH ];
5711
5757
  for (var lp = 0; lp < _buffer[_DYN_LENGTH ]; lp++) {
5712
- size += _buffer[lp][_DYN_LENGTH ];
5758
+ size += (_buffer[lp].item)[_DYN_LENGTH ];
5713
5759
  }
5714
5760
  if (!config[_DYN_EMIT_LINE_DELIMITED_0 ]) {
5715
5761
  size += 2;
@@ -5723,11 +5769,15 @@
5723
5769
  _self.getItems = function () {
5724
5770
  return _buffer.slice(0);
5725
5771
  };
5726
- _self.batchPayloads = function (payload) {
5727
- if (payload && payload[_DYN_LENGTH ] > 0) {
5772
+ _self.batchPayloads = function (payloads) {
5773
+ if (payloads && payloads[_DYN_LENGTH ] > 0) {
5774
+ var payloadStr_1 = [];
5775
+ arrForEach(payloads, function (payload) {
5776
+ payloadStr_1[_DYN_PUSH ](payload[_DYN_ITEM ]);
5777
+ });
5728
5778
  var batch = config[_DYN_EMIT_LINE_DELIMITED_0 ] ?
5729
- payload.join("\n") :
5730
- "[" + payload.join(",") + "]";
5779
+ payloadStr_1.join("\n") :
5780
+ "[" + payloadStr_1.join(",") + "]";
5731
5781
  return batch;
5732
5782
  }
5733
5783
  return null;
@@ -5763,17 +5813,21 @@
5763
5813
  ArraySendBuffer.__ieDyn=1;
5764
5814
  return ArraySendBuffer;
5765
5815
  }(BaseSendBuffer));
5816
+ var PREVIOUS_KEYS = ["AI_buffer", "AI_sentBuffer"];
5766
5817
  var SessionStorageSendBuffer = /** @class */ (function (_super) {
5767
5818
  __extendsFn(SessionStorageSendBuffer, _super);
5768
5819
  function SessionStorageSendBuffer(logger, config) {
5769
5820
  var _this = _super.call(this, logger, config) || this;
5770
5821
  var _bufferFullMessageSent = false;
5771
5822
  var _namePrefix = config === null || config === void 0 ? void 0 : config.namePrefix;
5772
- var _a = config[_DYN_BUFFER_OVERRIDE ] || { getItem: utlGetSessionStorage, setItem: utlSetSessionStorage }, getItem = _a.getItem, setItem = _a.setItem;
5823
+ var _b = config[_DYN_BUFFER_OVERRIDE ] || { getItem: utlGetSessionStorage, setItem: utlSetSessionStorage }, getItem = _b.getItem, setItem = _b.setItem;
5824
+ var _maxRetryCnt = config.maxRetryCnt;
5773
5825
  dynamicProto(SessionStorageSendBuffer, _this, function (_self, _base) {
5774
5826
  var bufferItems = _getBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY ]);
5775
- var notDeliveredItems = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY ]);
5776
- var buffer = _self._set(bufferItems.concat(notDeliveredItems));
5827
+ var itemsInSentBuffer = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY ]);
5828
+ var previousItems = _getPreviousEvents();
5829
+ var notDeliveredItems = itemsInSentBuffer[_DYN_CONCAT ](previousItems);
5830
+ var buffer = _self._set(bufferItems[_DYN_CONCAT ](notDeliveredItems));
5777
5831
  if (buffer[_DYN_LENGTH ] > SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE ]) {
5778
5832
  buffer[_DYN_LENGTH ] = SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE ];
5779
5833
  }
@@ -5787,6 +5841,12 @@
5787
5841
  }
5788
5842
  return;
5789
5843
  }
5844
+ payload.cnt = payload.cnt || 0;
5845
+ if (!isNullOrUndefined(_maxRetryCnt)) {
5846
+ if (payload.cnt > _maxRetryCnt) {
5847
+ return;
5848
+ }
5849
+ }
5790
5850
  _base[_DYN_ENQUEUE ](payload);
5791
5851
  _setBuffer(SessionStorageSendBuffer.BUFFER_KEY, _self[_DYN__GET ]());
5792
5852
  };
@@ -5800,7 +5860,7 @@
5800
5860
  _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY ], _self._set(_removePayloadsFromBuffer(payload, _self[_DYN__GET ]())));
5801
5861
  var sentElements = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY ]);
5802
5862
  if (sentElements instanceof Array && payload instanceof Array) {
5803
- sentElements = sentElements.concat(payload);
5863
+ sentElements = sentElements[_DYN_CONCAT ](payload);
5804
5864
  if (sentElements[_DYN_LENGTH ] > SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE ]) {
5805
5865
  _throwInternal(logger, 1 , 67 , "Sent buffer reached its maximum size: " + sentElements[_DYN_LENGTH ], true);
5806
5866
  sentElements[_DYN_LENGTH ] = SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE ];
@@ -5831,8 +5891,12 @@
5831
5891
  };
5832
5892
  function _removePayloadsFromBuffer(payloads, buffer) {
5833
5893
  var remaining = [];
5894
+ var payloadStr = [];
5895
+ arrForEach(payloads, function (payload) {
5896
+ payloadStr[_DYN_PUSH ](payload[_DYN_ITEM ]);
5897
+ });
5834
5898
  arrForEach(buffer, function (value) {
5835
- if (!isFunction(value) && arrIndexOf(payloads, value) === -1) {
5899
+ if (!isFunction(value) && arrIndexOf(payloadStr, value[_DYN_ITEM ]) === -1) {
5836
5900
  remaining[_DYN_PUSH ](value);
5837
5901
  }
5838
5902
  });
@@ -5840,9 +5904,12 @@
5840
5904
  }
5841
5905
  function _getBuffer(key) {
5842
5906
  var prefixedKey = key;
5907
+ prefixedKey = _namePrefix ? _namePrefix + "_" + prefixedKey : prefixedKey;
5908
+ return _getBufferBase(prefixedKey);
5909
+ }
5910
+ function _getBufferBase(key) {
5843
5911
  try {
5844
- prefixedKey = _namePrefix ? _namePrefix + "_" + prefixedKey : prefixedKey;
5845
- var bufferJson = getItem(logger, prefixedKey);
5912
+ var bufferJson = getItem(logger, key);
5846
5913
  if (bufferJson) {
5847
5914
  var buffer_1 = getJSON().parse(bufferJson);
5848
5915
  if (isString(buffer_1)) {
@@ -5854,7 +5921,7 @@
5854
5921
  }
5855
5922
  }
5856
5923
  catch (e) {
5857
- _throwInternal(logger, 1 , 42 , " storage key: " + prefixedKey + ", " + getExceptionName(e), { exception: dumpObj(e) });
5924
+ _throwInternal(logger, 1 , 42 , " storage key: " + key + ", " + getExceptionName(e), { exception: dumpObj(e) });
5858
5925
  }
5859
5926
  return [];
5860
5927
  }
@@ -5870,11 +5937,51 @@
5870
5937
  _throwInternal(logger, 2 , 41 , " storage key: " + prefixedKey + ", " + getExceptionName(e) + ". Buffer cleared", { exception: dumpObj(e) });
5871
5938
  }
5872
5939
  }
5940
+ function _getPreviousEvents() {
5941
+ var items = [];
5942
+ try {
5943
+ arrForEach(PREVIOUS_KEYS, function (key) {
5944
+ var events = _getItemsFromPreviousKey(key);
5945
+ items = items[_DYN_CONCAT ](events);
5946
+ if (_namePrefix) {
5947
+ var prefixedKey = _namePrefix + "_" + key;
5948
+ var prefixEvents = _getItemsFromPreviousKey(prefixedKey);
5949
+ items = items[_DYN_CONCAT ](prefixEvents);
5950
+ }
5951
+ });
5952
+ return items;
5953
+ }
5954
+ catch (e) {
5955
+ _throwInternal(logger, 2 , 41 , "Transfer events from previous buffers: " + getExceptionName(e) + ". previous Buffer items can not be removed", { exception: dumpObj(e) });
5956
+ }
5957
+ return [];
5958
+ }
5959
+ function _getItemsFromPreviousKey(key) {
5960
+ try {
5961
+ var items = _getBufferBase(key);
5962
+ var transFormedItems_1 = [];
5963
+ arrForEach(items, function (item) {
5964
+ var internalItem = {
5965
+ item: item,
5966
+ cnt: 0
5967
+ };
5968
+ transFormedItems_1[_DYN_PUSH ](internalItem);
5969
+ });
5970
+ utlRemoveSessionStorage(logger, key);
5971
+ return transFormedItems_1;
5972
+ }
5973
+ catch (e) {
5974
+ }
5975
+ return [];
5976
+ }
5873
5977
  });
5874
5978
  return _this;
5875
5979
  }
5876
- SessionStorageSendBuffer.BUFFER_KEY = "AI_buffer";
5877
- SessionStorageSendBuffer.SENT_BUFFER_KEY = "AI_sentBuffer";
5980
+ var _a;
5981
+ _a = SessionStorageSendBuffer;
5982
+ SessionStorageSendBuffer.VERSION = "_1";
5983
+ SessionStorageSendBuffer.BUFFER_KEY = "AI_buffer" + _a.VERSION;
5984
+ SessionStorageSendBuffer.SENT_BUFFER_KEY = "AI_sentBuffer" + _a.VERSION;
5878
5985
  SessionStorageSendBuffer.MAX_BUFFER_SIZE = 2000;
5879
5986
  return SessionStorageSendBuffer;
5880
5987
  }(BaseSendBuffer));
@@ -6033,7 +6140,7 @@
6033
6140
  return 0;
6034
6141
  }
6035
6142
  while (input[_DYN_LENGTH ] < MIN_INPUT_LENGTH) {
6036
- input = input.concat(input);
6143
+ input = input[_DYN_CONCAT ](input);
6037
6144
  }
6038
6145
  var hash = 5381;
6039
6146
  for (var i = 0; i < input[_DYN_LENGTH ]; ++i) {
@@ -6140,6 +6247,7 @@
6140
6247
  _a[_DYN_ALWAYS_USE_XHR_OVERR4 ] = cfgDfBoolean(),
6141
6248
  _a.transports = UNDEFINED_VALUE,
6142
6249
  _a.retryCodes = UNDEFINED_VALUE,
6250
+ _a.maxRetryCnt = { isVal: isNumber, v: 10 },
6143
6251
  _a));
6144
6252
  function _chkSampling(value) {
6145
6253
  return !isNaN(value) && value > 0 && value <= 100;
@@ -6369,6 +6477,7 @@
6369
6477
  }));
6370
6478
  };
6371
6479
  _self.processTelemetry = function (telemetryItem, itemCtx) {
6480
+ var _a;
6372
6481
  itemCtx = _self._getTelCtx(itemCtx);
6373
6482
  var diagLogger = itemCtx[_DYN_DIAG_LOG ]();
6374
6483
  try {
@@ -6383,7 +6492,12 @@
6383
6492
  var payload = _serializer[_DYN_SERIALIZE ](aiEnvelope);
6384
6493
  var buffer = _self[_DYN__BUFFER ];
6385
6494
  _checkMaxSize(payload);
6386
- buffer[_DYN_ENQUEUE ](payload);
6495
+ var payloadItem = (_a = {},
6496
+ _a[_DYN_ITEM ] = payload,
6497
+ _a.cnt = 0
6498
+ ,
6499
+ _a);
6500
+ buffer[_DYN_ENQUEUE ](payloadItem);
6387
6501
  _setupTimer();
6388
6502
  }
6389
6503
  catch (e) {
@@ -6395,6 +6509,9 @@
6395
6509
  return !_paused && _syncFetchPayload === 0 && _self._buffer[_DYN_COUNT ]() === 0;
6396
6510
  };
6397
6511
  _self._xhrReadyStateChange = function (xhr, payload, countOfItemsInPayload) {
6512
+ if (_isStringArr(payload)) {
6513
+ return;
6514
+ }
6398
6515
  return _xhrReadyStateChange(xhr, payload, countOfItemsInPayload);
6399
6516
  };
6400
6517
  _self[_DYN_TRIGGER_SEND ] = function (async, forcedSender, sendReason) {
@@ -6450,40 +6567,27 @@
6450
6567
  _initDefaults();
6451
6568
  };
6452
6569
  _self[_DYN__ON_ERROR ] = function (payload, message, event) {
6453
- _throwInternal(_self[_DYN_DIAG_LOG ](), 2 , 26 , "Failed to send telemetry.", { message: message });
6454
- _self._buffer && _self._buffer[_DYN_CLEAR_SENT ](payload);
6570
+ if (_isStringArr(payload)) {
6571
+ return;
6572
+ }
6573
+ return _onError(payload, message);
6455
6574
  };
6456
6575
  _self[_DYN__ON_PARTIAL_SUCCESS ] = function (payload, results) {
6457
- var failed = [];
6458
- var retry = [];
6459
- var errors = results.errors.reverse();
6460
- for (var _i = 0, errors_1 = errors; _i < errors_1.length; _i++) {
6461
- var error = errors_1[_i];
6462
- var extracted = payload.splice(error.index, 1)[0];
6463
- if (_isRetriable(error.statusCode)) {
6464
- retry[_DYN_PUSH ](extracted);
6465
- }
6466
- else {
6467
- failed[_DYN_PUSH ](extracted);
6468
- }
6469
- }
6470
- if (payload[_DYN_LENGTH ] > 0) {
6471
- _self[_DYN__ON_SUCCESS ](payload, results[_DYN_ITEMS_ACCEPTED ]);
6472
- }
6473
- if (failed[_DYN_LENGTH ] > 0) {
6474
- _self[_DYN__ON_ERROR ](failed, formatErrorMessageXhr(null, ["partial success", results[_DYN_ITEMS_ACCEPTED ], "of", results.itemsReceived].join(" ")));
6475
- }
6476
- if (retry[_DYN_LENGTH ] > 0) {
6477
- _resendPayload(retry);
6478
- _throwInternal(_self[_DYN_DIAG_LOG ](), 2 , 40 , "Partial success. " +
6479
- "Delivered: " + payload[_DYN_LENGTH ] + ", Failed: " + failed[_DYN_LENGTH ] +
6480
- ". Will retry to send " + retry[_DYN_LENGTH ] + " our of " + results[_DYN_ITEMS_RECEIVED ] + " items");
6576
+ if (_isStringArr(payload)) {
6577
+ return;
6481
6578
  }
6579
+ return _onPartialSuccess(payload, results);
6482
6580
  };
6483
6581
  _self[_DYN__ON_SUCCESS ] = function (payload, countOfItemsInPayload) {
6484
- _self._buffer && _self._buffer[_DYN_CLEAR_SENT ](payload);
6582
+ if (_isStringArr(payload)) {
6583
+ return;
6584
+ }
6585
+ return _onSuccess(payload);
6485
6586
  };
6486
6587
  _self._xdrOnLoad = function (xdr, payload) {
6588
+ if (_isStringArr(payload)) {
6589
+ return;
6590
+ }
6487
6591
  return _xdrOnLoad(xdr, payload);
6488
6592
  };
6489
6593
  function _xdrOnLoad(xdr, payload) {
@@ -6494,7 +6598,7 @@
6494
6598
  }
6495
6599
  else {
6496
6600
  var results = parseResponse(responseText);
6497
- if (results && results.itemsReceived && results.itemsReceived > results[_DYN_ITEMS_ACCEPTED ]
6601
+ if (results && results[_DYN_ITEMS_RECEIVED ] && results[_DYN_ITEMS_RECEIVED ] > results[_DYN_ITEMS_ACCEPTED ]
6498
6602
  && !_isRetryDisabled) {
6499
6603
  _self[_DYN__ON_PARTIAL_SUCCESS ](payload, results);
6500
6604
  }
@@ -6552,6 +6656,40 @@
6552
6656
  _checkResponsStatus(xhr.status, payload, xhr.responseURL, countOfItemsInPayload, formatErrorMessageXhr(xhr), _getResponseText(xhr) || xhr.response);
6553
6657
  }
6554
6658
  }
6659
+ function _onError(payload, message, event) {
6660
+ _throwInternal(_self[_DYN_DIAG_LOG ](), 2 , 26 , "Failed to send telemetry.", { message: message });
6661
+ _self._buffer && _self._buffer[_DYN_CLEAR_SENT ](payload);
6662
+ }
6663
+ function _onPartialSuccess(payload, results) {
6664
+ var failed = [];
6665
+ var retry = [];
6666
+ var errors = results.errors.reverse();
6667
+ for (var _i = 0, errors_1 = errors; _i < errors_1.length; _i++) {
6668
+ var error = errors_1[_i];
6669
+ var extracted = payload.splice(error.index, 1)[0];
6670
+ if (_isRetriable(error.statusCode)) {
6671
+ retry[_DYN_PUSH ](extracted);
6672
+ }
6673
+ else {
6674
+ failed[_DYN_PUSH ](extracted);
6675
+ }
6676
+ }
6677
+ if (payload[_DYN_LENGTH ] > 0) {
6678
+ _self[_DYN__ON_SUCCESS ](payload, results[_DYN_ITEMS_ACCEPTED ]);
6679
+ }
6680
+ if (failed[_DYN_LENGTH ] > 0) {
6681
+ _self[_DYN__ON_ERROR ](failed, formatErrorMessageXhr(null, ["partial success", results[_DYN_ITEMS_ACCEPTED ], "of", results.itemsReceived].join(" ")));
6682
+ }
6683
+ if (retry[_DYN_LENGTH ] > 0) {
6684
+ _resendPayload(retry);
6685
+ _throwInternal(_self[_DYN_DIAG_LOG ](), 2 , 40 , "Partial success. " +
6686
+ "Delivered: " + payload[_DYN_LENGTH ] + ", Failed: " + failed[_DYN_LENGTH ] +
6687
+ ". Will retry to send " + retry[_DYN_LENGTH ] + " our of " + results[_DYN_ITEMS_RECEIVED ] + " items");
6688
+ }
6689
+ }
6690
+ function _onSuccess(payload, countOfItemsInPayload) {
6691
+ _self._buffer && _self._buffer[_DYN_CLEAR_SENT ](payload);
6692
+ }
6555
6693
  function _getPayloadArr(payload) {
6556
6694
  try {
6557
6695
  if (payload) {
@@ -6819,12 +6957,22 @@
6819
6957
  _throwInternal(_self[_DYN_DIAG_LOG ](), 2 , 40 , ". " + "Failed to send telemetry with Beacon API, retried with normal sender.");
6820
6958
  }
6821
6959
  }
6960
+ function _isStringArr(arr) {
6961
+ try {
6962
+ if (arr && arr[_DYN_LENGTH ]) {
6963
+ return (isString(arr[0]));
6964
+ }
6965
+ }
6966
+ catch (e) {
6967
+ }
6968
+ return null;
6969
+ }
6822
6970
  function _fetchKeepAliveSender(payload, isAsync) {
6823
6971
  var transport = null;
6824
6972
  if (isArray(payload)) {
6825
6973
  var payloadSize = payload[_DYN_LENGTH ];
6826
6974
  for (var lp = 0; lp < payload[_DYN_LENGTH ]; lp++) {
6827
- payloadSize += payload[lp][_DYN_LENGTH ];
6975
+ payloadSize += payload[lp].item[_DYN_LENGTH ];
6828
6976
  }
6829
6977
  var syncFetchPayload = _sendPostMgr.getSyncFetchPayload();
6830
6978
  if ((syncFetchPayload + payloadSize) <= FetchSyncRequestSizeLimitBytes) {
@@ -6852,6 +7000,8 @@
6852
7000
  _consecutiveErrors++;
6853
7001
  for (var _i = 0, payload_1 = payload; _i < payload_1.length; _i++) {
6854
7002
  var item = payload_1[_i];
7003
+ item.cnt = item.cnt || 0;
7004
+ item.cnt++;
6855
7005
  buffer[_DYN_ENQUEUE ](item);
6856
7006
  }
6857
7007
  _setRetryTime(linearFactor);