@microsoft/1ds-post-js 3.2.1 → 3.2.4

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 (69) hide show
  1. package/README.md +1 -1
  2. package/bundle/{ms.post-3.2.1.gbl.js → ms.post-3.2.4.gbl.js} +1071 -966
  3. package/bundle/ms.post-3.2.4.gbl.js.map +1 -0
  4. package/bundle/ms.post-3.2.4.gbl.min.js +7 -0
  5. package/bundle/ms.post-3.2.4.gbl.min.js.map +1 -0
  6. package/bundle/ms.post-3.2.4.integrity.json +46 -0
  7. package/bundle/{ms.post-3.2.1.js → ms.post-3.2.4.js} +1071 -966
  8. package/bundle/ms.post-3.2.4.js.map +1 -0
  9. package/bundle/ms.post-3.2.4.min.js +7 -0
  10. package/bundle/ms.post-3.2.4.min.js.map +1 -0
  11. package/bundle/ms.post.gbl.js +1070 -965
  12. package/bundle/ms.post.gbl.js.map +1 -1
  13. package/bundle/ms.post.gbl.min.js +2 -2
  14. package/bundle/ms.post.gbl.min.js.map +1 -1
  15. package/bundle/ms.post.integrity.json +17 -17
  16. package/bundle/ms.post.js +1070 -965
  17. package/bundle/ms.post.js.map +1 -1
  18. package/bundle/ms.post.min.js +2 -2
  19. package/bundle/ms.post.min.js.map +1 -1
  20. package/dist/ms.post.js +251 -212
  21. package/dist/ms.post.js.map +1 -1
  22. package/dist/ms.post.min.js +2 -2
  23. package/dist/ms.post.min.js.map +1 -1
  24. package/dist-esm/src/BatchNotificationActions.js +1 -1
  25. package/dist-esm/src/ClockSkewManager.js +6 -1
  26. package/dist-esm/src/ClockSkewManager.js.map +1 -1
  27. package/dist-esm/src/DataModels.js +1 -1
  28. package/dist-esm/src/EventBatch.d.ts +0 -5
  29. package/dist-esm/src/EventBatch.js +9 -4
  30. package/dist-esm/src/EventBatch.js.map +1 -1
  31. package/dist-esm/src/HttpManager.d.ts +4 -8
  32. package/dist-esm/src/HttpManager.js +120 -112
  33. package/dist-esm/src/HttpManager.js.map +1 -1
  34. package/dist-esm/src/Index.js +1 -1
  35. package/dist-esm/src/InternalConstants.d.ts +27 -0
  36. package/dist-esm/src/InternalConstants.js +40 -0
  37. package/dist-esm/src/InternalConstants.js.map +1 -0
  38. package/dist-esm/src/KillSwitch.js +7 -2
  39. package/dist-esm/src/KillSwitch.js.map +1 -1
  40. package/dist-esm/src/PostChannel.d.ts +3 -6
  41. package/dist-esm/src/PostChannel.js +97 -73
  42. package/dist-esm/src/PostChannel.js.map +1 -1
  43. package/dist-esm/src/RetryPolicy.js +1 -1
  44. package/dist-esm/src/Serializer.d.ts +1 -1
  45. package/dist-esm/src/Serializer.js +9 -3
  46. package/dist-esm/src/Serializer.js.map +1 -1
  47. package/dist-esm/src/TimeoutOverrideWrapper.d.ts +18 -0
  48. package/dist-esm/src/TimeoutOverrideWrapper.js +28 -0
  49. package/dist-esm/src/TimeoutOverrideWrapper.js.map +1 -0
  50. package/dist-esm/src/typings/XDomainRequest.js +1 -1
  51. package/package.json +5 -3
  52. package/src/EventBatch.ts +4 -4
  53. package/src/HttpManager.ts +74 -71
  54. package/src/InternalConstants.ts +41 -0
  55. package/src/KillSwitch.ts +1 -1
  56. package/src/PostChannel.ts +72 -44
  57. package/src/Serializer.ts +7 -5
  58. package/src/TimeoutOverrideWrapper.ts +29 -0
  59. package/bundle/ms.post-3.2.1.gbl.js.map +0 -1
  60. package/bundle/ms.post-3.2.1.gbl.min.js +0 -7
  61. package/bundle/ms.post-3.2.1.gbl.min.js.map +0 -1
  62. package/bundle/ms.post-3.2.1.integrity.json +0 -46
  63. package/bundle/ms.post-3.2.1.js.map +0 -1
  64. package/bundle/ms.post-3.2.1.min.js +0 -7
  65. package/bundle/ms.post-3.2.1.min.js.map +0 -1
  66. package/dist-esm/src/Constants.d.ts +0 -25
  67. package/dist-esm/src/Constants.js +0 -31
  68. package/dist-esm/src/Constants.js.map +0 -1
  69. package/src/Constants.ts +0 -28
package/dist/ms.post.js CHANGED
@@ -1,13 +1,13 @@
1
1
  /*!
2
- * 1DS JS SDK POST plugin, 3.2.1
2
+ * 1DS JS SDK POST plugin, 3.2.4
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  * (Microsoft Internal Only)
5
5
  */
6
6
  (function (global, factory) {
7
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@microsoft/applicationinsights-shims'), require('@microsoft/1ds-core-js'), require('@microsoft/dynamicproto-js')) :
8
- typeof define === 'function' && define.amd ? define(['exports', '@microsoft/applicationinsights-shims', '@microsoft/1ds-core-js', '@microsoft/dynamicproto-js'], factory) :
9
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.oneDS = global.oneDS || {}, global.applicationinsightsShims, global._1dsCoreJs, global.dynamicProto));
10
- })(this, (function (exports, applicationinsightsShims, _1dsCoreJs, dynamicProto) { 'use strict';
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@microsoft/applicationinsights-shims'), require('@microsoft/dynamicproto-js'), require('@microsoft/1ds-core-js')) :
8
+ typeof define === 'function' && define.amd ? define(['exports', '@microsoft/applicationinsights-shims', '@microsoft/dynamicproto-js', '@microsoft/1ds-core-js'], factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.oneDS = global.oneDS || {}, global.applicationinsightsShims, global.dynamicProto, global._1dsCoreJs));
10
+ })(this, (function (exports, applicationinsightsShims, dynamicProto, _1dsCoreJs) { 'use strict';
11
11
 
12
12
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; }
13
13
 
@@ -17,35 +17,37 @@
17
17
  var NRT_PROFILE = "NEAR_REAL_TIME";
18
18
  var BE_PROFILE = "BEST_EFFORT";
19
19
 
20
- var Method = "POST";
21
- var DisabledPropertyName = "Microsoft_ApplicationInsights_BypassAjaxInstrumentation";
22
- var strDropped = "drop";
23
- var strSending = "send";
24
- var strRequeue = "requeue";
25
- var strResponseFail = "rspFail";
26
- var strOther = "oth";
27
- var defaultCacheControl = "no-cache, no-store";
28
- var defaultContentType = "application/x-json-stream";
29
- var strCacheControl = "cache-control";
30
- var strContentTypeHeader = "content-type";
31
- var strKillTokensHeader = "kill-tokens";
32
- var strKillDurationHeader = "kill-duration";
33
- var strKillDurationSecondsHeader = "kill-duration-seconds";
34
- var strTimeDeltaHeader = "time-delta-millis";
35
- var strClientVersion = "client-version";
36
- var strClientId = "client-id";
37
- var strTimeDeltaToApply = "time-delta-to-apply-millis";
38
- var strUploadTime = "upload-time";
39
- var strApiKey = "apikey";
40
- var strMsaDeviceTicket = "AuthMsaDeviceTicket";
41
- var strAuthXToken = "AuthXToken";
42
- var strNoResponseBody = "NoResponseBody";
43
- var strMsfpc = "msfpc";
20
+ var STR_POST_METHOD = "POST";
21
+ var STR_DISABLED_PROPERTY_NAME = "Microsoft_ApplicationInsights_BypassAjaxInstrumentation";
22
+ var STR_DROPPED = "drop";
23
+ var STR_SENDING = "send";
24
+ var STR_REQUEUE = "requeue";
25
+ var STR_RESPONSE_FAIL = "rspFail";
26
+ var STR_OTHER = "oth";
27
+ var DEFAULT_CACHE_CONTROL = "no-cache, no-store";
28
+ var DEFAULT_CONTENT_TYPE = "application/x-json-stream";
29
+ var STR_CACHE_CONTROL = "cache-control";
30
+ var STR_CONTENT_TYPE_HEADER = "content-type";
31
+ var STR_KILL_TOKENS_HEADER = "kill-tokens";
32
+ var STR_KILL_DURATION_HEADER = "kill-duration";
33
+ var STR_KILL_DURATION_SECONDS_HEADER = "kill-duration-seconds";
34
+ var STR_TIME_DELTA_HEADER = "time-delta-millis";
35
+ var STR_CLIENT_VERSION = "client-version";
36
+ var STR_CLIENT_ID = "client-id";
37
+ var STR_TIME_DELTA_TO_APPLY = "time-delta-to-apply-millis";
38
+ var STR_UPLOAD_TIME = "upload-time";
39
+ var STR_API_KEY = "apikey";
40
+ var STR_MSA_DEVICE_TICKET = "AuthMsaDeviceTicket";
41
+ var STR_AUTH_XTOKEN = "AuthXToken";
42
+ var STR_NO_RESPONSE_BODY = "NoResponseBody";
43
+ var STR_MSFPC = "msfpc";
44
+ var STR_TRACE = "trace";
45
+ var STR_USER = "user";
44
46
 
45
47
  function _getEventMsfpc(theEvent) {
46
48
  var intWeb = ((theEvent.ext || {})["intweb"]);
47
- if (intWeb && _1dsCoreJs.isValueAssigned(intWeb[strMsfpc])) {
48
- return intWeb[strMsfpc];
49
+ if (intWeb && _1dsCoreJs.isValueAssigned(intWeb[STR_MSFPC])) {
50
+ return intWeb[STR_MSFPC];
49
51
  }
50
52
  return null;
51
53
  }
@@ -102,6 +104,115 @@
102
104
  return EventBatch;
103
105
  }());
104
106
 
107
+ var ClockSkewManager = /** @class */ (function () {
108
+ function ClockSkewManager() {
109
+ var _allowRequestSending = true;
110
+ var _shouldAddClockSkewHeaders = true;
111
+ var _isFirstRequest = true;
112
+ var _clockSkewHeaderValue = "use-collector-delta";
113
+ var _clockSkewSet = false;
114
+ dynamicProto__default(ClockSkewManager, this, function (_self) {
115
+ _self.allowRequestSending = function () {
116
+ return _allowRequestSending;
117
+ };
118
+ _self.firstRequestSent = function () {
119
+ if (_isFirstRequest) {
120
+ _isFirstRequest = false;
121
+ if (!_clockSkewSet) {
122
+ _allowRequestSending = false;
123
+ }
124
+ }
125
+ };
126
+ _self.shouldAddClockSkewHeaders = function () {
127
+ return _shouldAddClockSkewHeaders;
128
+ };
129
+ _self.getClockSkewHeaderValue = function () {
130
+ return _clockSkewHeaderValue;
131
+ };
132
+ _self.setClockSkew = function (timeDeltaInMillis) {
133
+ if (!_clockSkewSet) {
134
+ if (timeDeltaInMillis) {
135
+ _clockSkewHeaderValue = timeDeltaInMillis;
136
+ _shouldAddClockSkewHeaders = true;
137
+ _clockSkewSet = true;
138
+ }
139
+ else {
140
+ _shouldAddClockSkewHeaders = false;
141
+ }
142
+ _allowRequestSending = true;
143
+ }
144
+ };
145
+ });
146
+ }
147
+ ClockSkewManager.__ieDyn=1;
148
+ return ClockSkewManager;
149
+ }());
150
+
151
+ var SecToMsMultiplier = 1000;
152
+ var KillSwitch = /** @class */ (function () {
153
+ function KillSwitch() {
154
+ var _killedTokenDictionary = {};
155
+ function _normalizeTenants(values) {
156
+ var result = [];
157
+ if (values) {
158
+ _1dsCoreJs.arrForEach(values, function (value) {
159
+ result.push(_1dsCoreJs.strTrim(value));
160
+ });
161
+ }
162
+ return result;
163
+ }
164
+ dynamicProto__default(KillSwitch, this, function (_self) {
165
+ _self.setKillSwitchTenants = function (killTokens, killDuration) {
166
+ if (killTokens && killDuration) {
167
+ try {
168
+ var killedTokens = _normalizeTenants(killTokens.split(","));
169
+ if (killDuration === "this-request-only") {
170
+ return killedTokens;
171
+ }
172
+ var durationMs = parseInt(killDuration, 10) * SecToMsMultiplier;
173
+ for (var i = 0; i < killedTokens.length; ++i) {
174
+ _killedTokenDictionary[killedTokens[i]] = _1dsCoreJs.dateNow() + durationMs;
175
+ }
176
+ }
177
+ catch (ex) {
178
+ return [];
179
+ }
180
+ }
181
+ return [];
182
+ };
183
+ _self.isTenantKilled = function (tenantToken) {
184
+ var killDictionary = _killedTokenDictionary;
185
+ var name = _1dsCoreJs.strTrim(tenantToken);
186
+ if (killDictionary[name] !== undefined && killDictionary[name] > _1dsCoreJs.dateNow()) {
187
+ return true;
188
+ }
189
+ delete killDictionary[name];
190
+ return false;
191
+ };
192
+ });
193
+ }
194
+ KillSwitch.__ieDyn=1;
195
+ return KillSwitch;
196
+ }());
197
+
198
+ var RandomizationLowerThreshold = 0.8;
199
+ var RandomizationUpperThreshold = 1.2;
200
+ var BaseBackoff = 3000;
201
+ var MaxBackoff = 600000;
202
+ function retryPolicyShouldRetryForStatus(httpStatusCode) {
203
+ return !((httpStatusCode >= 300 && httpStatusCode < 500 && httpStatusCode != 408 && httpStatusCode != 429)
204
+ || (httpStatusCode == 501)
205
+ || (httpStatusCode == 505));
206
+ }
207
+ function retryPolicyGetMillisToBackoffForRetry(retriesSoFar) {
208
+ var waitDuration = 0;
209
+ var minBackoff = BaseBackoff * RandomizationLowerThreshold;
210
+ var maxBackoff = BaseBackoff * RandomizationUpperThreshold;
211
+ var randomBackoff = Math.floor(Math.random() * (maxBackoff - minBackoff)) + minBackoff;
212
+ waitDuration = Math.pow(2, retriesSoFar) * randomBackoff;
213
+ return Math.min(waitDuration, MaxBackoff);
214
+ }
215
+
105
216
  var _MAX_STRING_JOINS = 20;
106
217
  var RequestSizeLimitBytes = 3984588;
107
218
  var BeaconRequestSizeLimitBytes = 65000;
@@ -307,6 +418,7 @@
307
418
  }
308
419
  });
309
420
  }
421
+ Serializer.__ieDyn=1;
310
422
  return Serializer;
311
423
  }());
312
424
  function _addJSONPropertyMetaData(json, propKeys, name, propertyValue) {
@@ -347,122 +459,15 @@
347
459
  }
348
460
  }
349
461
 
350
- var RandomizationLowerThreshold = 0.8;
351
- var RandomizationUpperThreshold = 1.2;
352
- var BaseBackoff = 3000;
353
- var MaxBackoff = 600000;
354
- function retryPolicyShouldRetryForStatus(httpStatusCode) {
355
- return !((httpStatusCode >= 300 && httpStatusCode < 500 && httpStatusCode != 408 && httpStatusCode != 429)
356
- || (httpStatusCode == 501)
357
- || (httpStatusCode == 505));
358
- }
359
- function retryPolicyGetMillisToBackoffForRetry(retriesSoFar) {
360
- var waitDuration = 0;
361
- var minBackoff = BaseBackoff * RandomizationLowerThreshold;
362
- var maxBackoff = BaseBackoff * RandomizationUpperThreshold;
363
- var randomBackoff = Math.floor(Math.random() * (maxBackoff - minBackoff)) + minBackoff;
364
- waitDuration = Math.pow(2, retriesSoFar) * randomBackoff;
365
- return Math.min(waitDuration, MaxBackoff);
366
- }
367
-
368
- var SecToMsMultiplier = 1000;
369
- var KillSwitch = /** @class */ (function () {
370
- function KillSwitch() {
371
- var _killedTokenDictionary = {};
372
- function _normalizeTenants(values) {
373
- var result = [];
374
- if (values) {
375
- _1dsCoreJs.arrForEach(values, function (value) {
376
- result.push(_1dsCoreJs.strTrim(value));
377
- });
378
- }
379
- return result;
380
- }
381
- dynamicProto__default(KillSwitch, this, function (_self) {
382
- _self.setKillSwitchTenants = function (killTokens, killDuration) {
383
- if (killTokens && killDuration) {
384
- try {
385
- var killedTokens = _normalizeTenants(killTokens.split(","));
386
- if (killDuration === "this-request-only") {
387
- return killedTokens;
388
- }
389
- var durationMs = parseInt(killDuration, 10) * SecToMsMultiplier;
390
- for (var i = 0; i < killedTokens.length; ++i) {
391
- _killedTokenDictionary[killedTokens[i]] = _1dsCoreJs.dateNow() + durationMs;
392
- }
393
- }
394
- catch (ex) {
395
- return [];
396
- }
397
- }
398
- return [];
399
- };
400
- _self.isTenantKilled = function (tenantToken) {
401
- var killDictionary = _killedTokenDictionary;
402
- var name = _1dsCoreJs.strTrim(tenantToken);
403
- if (killDictionary[name] !== undefined && killDictionary[name] > _1dsCoreJs.dateNow()) {
404
- return true;
405
- }
406
- delete killDictionary[name];
407
- return false;
408
- };
409
- });
410
- }
411
- return KillSwitch;
412
- }());
413
-
414
- var ClockSkewManager = /** @class */ (function () {
415
- function ClockSkewManager() {
416
- var _allowRequestSending = true;
417
- var _shouldAddClockSkewHeaders = true;
418
- var _isFirstRequest = true;
419
- var _clockSkewHeaderValue = "use-collector-delta";
420
- var _clockSkewSet = false;
421
- dynamicProto__default(ClockSkewManager, this, function (_self) {
422
- _self.allowRequestSending = function () {
423
- return _allowRequestSending;
424
- };
425
- _self.firstRequestSent = function () {
426
- if (_isFirstRequest) {
427
- _isFirstRequest = false;
428
- if (!_clockSkewSet) {
429
- _allowRequestSending = false;
430
- }
431
- }
432
- };
433
- _self.shouldAddClockSkewHeaders = function () {
434
- return _shouldAddClockSkewHeaders;
435
- };
436
- _self.getClockSkewHeaderValue = function () {
437
- return _clockSkewHeaderValue;
438
- };
439
- _self.setClockSkew = function (timeDeltaInMillis) {
440
- if (!_clockSkewSet) {
441
- if (timeDeltaInMillis) {
442
- _clockSkewHeaderValue = timeDeltaInMillis;
443
- _shouldAddClockSkewHeaders = true;
444
- _clockSkewSet = true;
445
- }
446
- else {
447
- _shouldAddClockSkewHeaders = false;
448
- }
449
- _allowRequestSending = true;
450
- }
451
- };
452
- });
453
- }
454
- return ClockSkewManager;
455
- }());
456
-
457
462
  var _a;
458
463
  var strSendAttempt = "sendAttempt";
459
- var _noResponseQs = "&" + strNoResponseBody + "=true";
464
+ var _noResponseQs = "&" + STR_NO_RESPONSE_BODY + "=true";
460
465
  var _eventActionMap = (_a = {},
461
- _a[1 ] = strRequeue,
462
- _a[100 ] = strRequeue,
466
+ _a[1 ] = STR_REQUEUE,
467
+ _a[100 ] = STR_REQUEUE,
463
468
  _a[200 ] = "sent",
464
- _a[8004 ] = strDropped,
465
- _a[8003 ] = strDropped,
469
+ _a[8004 ] = STR_DROPPED,
470
+ _a[8003 ] = STR_DROPPED,
466
471
  _a);
467
472
  var _collectorQsHeaders = {};
468
473
  var _collectorHeaderToQs = {};
@@ -472,13 +477,13 @@
472
477
  _collectorHeaderToQs[headerName] = qsName;
473
478
  }
474
479
  }
475
- _addCollectorHeaderQsMapping(strMsaDeviceTicket, strMsaDeviceTicket, false);
476
- _addCollectorHeaderQsMapping(strClientVersion, strClientVersion);
477
- _addCollectorHeaderQsMapping(strClientId, "Client-Id");
478
- _addCollectorHeaderQsMapping(strApiKey, strApiKey);
479
- _addCollectorHeaderQsMapping(strTimeDeltaToApply, strTimeDeltaToApply);
480
- _addCollectorHeaderQsMapping(strUploadTime, strUploadTime);
481
- _addCollectorHeaderQsMapping(strAuthXToken, strAuthXToken);
480
+ _addCollectorHeaderQsMapping(STR_MSA_DEVICE_TICKET, STR_MSA_DEVICE_TICKET, false);
481
+ _addCollectorHeaderQsMapping(STR_CLIENT_VERSION, STR_CLIENT_VERSION);
482
+ _addCollectorHeaderQsMapping(STR_CLIENT_ID, "Client-Id");
483
+ _addCollectorHeaderQsMapping(STR_API_KEY, STR_API_KEY);
484
+ _addCollectorHeaderQsMapping(STR_TIME_DELTA_TO_APPLY, STR_TIME_DELTA_TO_APPLY);
485
+ _addCollectorHeaderQsMapping(STR_UPLOAD_TIME, STR_UPLOAD_TIME);
486
+ _addCollectorHeaderQsMapping(STR_AUTH_XTOKEN, STR_AUTH_XTOKEN);
482
487
  function _getResponseText(xhr) {
483
488
  try {
484
489
  return xhr.responseText;
@@ -517,15 +522,16 @@
517
522
  }
518
523
  }
519
524
  var HttpManager = /** @class */ (function () {
520
- function HttpManager(maxEventsPerBatch, maxConnections, maxRequestRetriesBeforeBackoff, actions) {
525
+ function HttpManager(maxEventsPerBatch, maxConnections, maxRequestRetriesBeforeBackoff, actions, timeoutOverride) {
521
526
  this._responseHandlers = [];
522
- var _urlString = "?cors=true&" + strContentTypeHeader.toLowerCase() + "=" + defaultContentType;
527
+ var _urlString = "?cors=true&" + STR_CONTENT_TYPE_HEADER.toLowerCase() + "=" + DEFAULT_CONTENT_TYPE;
523
528
  var _killSwitch = new KillSwitch();
524
529
  var _paused = false;
525
530
  var _clockSkewManager = new ClockSkewManager();
526
531
  var _useBeacons = false;
527
532
  var _outstandingRequests = 0;
528
533
  var _postManager;
534
+ var _logger;
529
535
  var _sendInterfaces;
530
536
  var _core;
531
537
  var _customHttpInterface = true;
@@ -553,6 +559,7 @@
553
559
  _enableEventTimings = !_core.config.disableEventTimings;
554
560
  var enableCompoundKey = !!_core.config.enableCompoundKey;
555
561
  _postManager = postChannel;
562
+ _logger = _postManager.diagLog();
556
563
  var valueSanitizer = channelConfig.valueSanitizer;
557
564
  var stringifyObjects = channelConfig.stringifyObjects;
558
565
  if (!_1dsCoreJs.isUndefined(channelConfig.enableCompoundKey)) {
@@ -590,7 +597,7 @@
590
597
  httpInterface = _getSenderInterface(theTransports, false);
591
598
  syncHttpInterface = _getSenderInterface(theTransports, true);
592
599
  if (!httpInterface) {
593
- _postManager.diagLog().warnToConsole("No available transport to send events");
600
+ _1dsCoreJs._warnToConsole(_logger, "No available transport to send events");
594
601
  }
595
602
  }
596
603
  _sendInterfaces = (_a = {},
@@ -636,7 +643,7 @@
636
643
  };
637
644
  function _xdrSendPost(payload, oncomplete, sync) {
638
645
  var xdr = new XDomainRequest();
639
- xdr.open(Method, payload.urlString);
646
+ xdr.open(STR_POST_METHOD, payload.urlString);
640
647
  if (payload.timeout) {
641
648
  xdr.timeout = payload.timeout;
642
649
  }
@@ -656,7 +663,7 @@
656
663
  xdr.send(payload.data);
657
664
  }
658
665
  else {
659
- _postManager._setTimeoutOverride(function () {
666
+ timeoutOverride.set(function () {
660
667
  xdr.send(payload.data);
661
668
  }, 0);
662
669
  }
@@ -668,9 +675,9 @@
668
675
  var responseHandled = false;
669
676
  var requestInit = (_a = {
670
677
  body: payload.data,
671
- method: Method
678
+ method: STR_POST_METHOD
672
679
  },
673
- _a[DisabledPropertyName] = true,
680
+ _a[STR_DISABLED_PROPERTY_NAME] = true,
674
681
  _a);
675
682
  if (sync) {
676
683
  requestInit.keepalive = true;
@@ -688,8 +695,9 @@
688
695
  fetch(theUrl, requestInit).then(function (response) {
689
696
  var headerMap = {};
690
697
  var responseText = "";
691
- if (response.headers) {
692
- response.headers.forEach(function (value, name) {
698
+ var headers = response.headers;
699
+ if (headers) {
700
+ headers["forEach"](function (value, name) {
693
701
  headerMap[name] = value;
694
702
  });
695
703
  }
@@ -714,7 +722,7 @@
714
722
  _doOnComplete(oncomplete, 200, {});
715
723
  }
716
724
  if (!responseHandled && payload.timeout > 0) {
717
- _postManager._setTimeoutOverride(function () {
725
+ timeoutOverride.set(function () {
718
726
  if (!responseHandled) {
719
727
  responseHandled = true;
720
728
  _doOnComplete(oncomplete, 500, {});
@@ -736,9 +744,9 @@
736
744
  function _getAllResponseHeaders(xhr) {
737
745
  var theHeaders = {};
738
746
  if (!xhr.getAllResponseHeaders) {
739
- theHeaders = _appendHeader(theHeaders, xhr, strTimeDeltaHeader);
740
- theHeaders = _appendHeader(theHeaders, xhr, strKillDurationHeader);
741
- theHeaders = _appendHeader(theHeaders, xhr, strKillDurationSecondsHeader);
747
+ theHeaders = _appendHeader(theHeaders, xhr, STR_TIME_DELTA_HEADER);
748
+ theHeaders = _appendHeader(theHeaders, xhr, STR_KILL_DURATION_HEADER);
749
+ theHeaders = _appendHeader(theHeaders, xhr, STR_KILL_DURATION_SECONDS_HEADER);
742
750
  }
743
751
  else {
744
752
  theHeaders = _convertAllHeadersToMap(xhr.getAllResponseHeaders());
@@ -751,7 +759,7 @@
751
759
  if (sync && payload.disableXhrSync) {
752
760
  sync = false;
753
761
  }
754
- var xhrRequest = _1dsCoreJs.openXhr(Method, theUrl, _sendCredentials, true, sync, payload.timeout);
762
+ var xhrRequest = _1dsCoreJs.openXhr(STR_POST_METHOD, theUrl, _sendCredentials, true, sync, payload.timeout);
755
763
  _1dsCoreJs.objForEachKey(payload.headers, function (name, value) {
756
764
  xhrRequest.setRequestHeader(name, value);
757
765
  });
@@ -773,7 +781,7 @@
773
781
  oncomplete(status, headers, response);
774
782
  }
775
783
  catch (e) {
776
- _1dsCoreJs._throwInternal(_postManager.diagLog(), 2 , 518 , _1dsCoreJs.dumpObj(e));
784
+ _1dsCoreJs._throwInternal(_logger, 2 , 518 , _1dsCoreJs.dumpObj(e));
777
785
  }
778
786
  }
779
787
  function _beaconSendPost(payload, oncomplete, sync) {
@@ -808,7 +816,7 @@
808
816
  }
809
817
  }
810
818
  catch (ex) {
811
- _postManager.diagLog().warnToConsole("Failed to send telemetry using sendBeacon API. Ex:" + _1dsCoreJs.dumpObj(ex));
819
+ _1dsCoreJs._warnToConsole(_logger, "Failed to send telemetry using sendBeacon API. Ex:" + _1dsCoreJs.dumpObj(ex));
812
820
  status = 0;
813
821
  }
814
822
  finally {
@@ -972,7 +980,7 @@
972
980
  }, function () { return ({ batches: _createDebugBatches(orgBatches_1), retryCount: retryCount, isTeardown: isTeardown, isSynchronous: isSynchronous_1, sendReason: sendReason, useSendBeacon: _isBeaconPayload(sendType), sendType: sendType }); }, !isSynchronous_1);
973
981
  }
974
982
  catch (ex) {
975
- _1dsCoreJs._throwInternal(_postManager.diagLog(), 2 , 48 , "Unexpected Exception sending batch: " + _1dsCoreJs.dumpObj(ex));
983
+ _1dsCoreJs._throwInternal(_logger, 2 , 48 , "Unexpected Exception sending batch: " + _1dsCoreJs.dumpObj(ex));
976
984
  }
977
985
  }
978
986
  function _buildRequestDetails(thePayload, useHeaders) {
@@ -996,8 +1004,8 @@
996
1004
  requestDetails.hdrs = _1dsCoreJs.extend(requestDetails.hdrs, _headers);
997
1005
  requestDetails.useHdrs = (_1dsCoreJs.objKeys(requestDetails.hdrs).length > 0);
998
1006
  }
999
- _addRequestDetails(requestDetails, strClientId, "NO_AUTH", useHeaders);
1000
- _addRequestDetails(requestDetails, strClientVersion, _1dsCoreJs.FullVersionString, useHeaders);
1007
+ _addRequestDetails(requestDetails, STR_CLIENT_ID, "NO_AUTH", useHeaders);
1008
+ _addRequestDetails(requestDetails, STR_CLIENT_VERSION, _1dsCoreJs.FullVersionString, useHeaders);
1001
1009
  var apiQsKeys = "";
1002
1010
  _1dsCoreJs.arrForEach(thePayload.apiKeys, function (apiKey) {
1003
1011
  if (apiQsKeys.length > 0) {
@@ -1005,14 +1013,14 @@
1005
1013
  }
1006
1014
  apiQsKeys += apiKey;
1007
1015
  });
1008
- _addRequestDetails(requestDetails, strApiKey, apiQsKeys, useHeaders);
1009
- _addRequestDetails(requestDetails, strUploadTime, _1dsCoreJs.dateNow().toString(), useHeaders);
1016
+ _addRequestDetails(requestDetails, STR_API_KEY, apiQsKeys, useHeaders);
1017
+ _addRequestDetails(requestDetails, STR_UPLOAD_TIME, _1dsCoreJs.dateNow().toString(), useHeaders);
1010
1018
  var msfpc = _getMsfpc(thePayload);
1011
1019
  if (_1dsCoreJs.isValueAssigned(msfpc)) {
1012
1020
  requestDetails.url += "&ext.intweb.msfpc=" + msfpc;
1013
1021
  }
1014
1022
  if (_clockSkewManager.shouldAddClockSkewHeaders()) {
1015
- _addRequestDetails(requestDetails, strTimeDeltaToApply, _clockSkewManager.getClockSkewHeaderValue(), useHeaders);
1023
+ _addRequestDetails(requestDetails, STR_TIME_DELTA_TO_APPLY, _clockSkewManager.getClockSkewHeaderValue(), useHeaders);
1016
1024
  }
1017
1025
  if (_core.getWParam) {
1018
1026
  var wParam = _core.getWParam();
@@ -1074,11 +1082,11 @@
1074
1082
  orgPayloadData.disableXhrSync = !!_disableXhrSync;
1075
1083
  }
1076
1084
  if (useHeaders_1) {
1077
- if (!_hasHeader(orgPayloadData.headers, strCacheControl)) {
1078
- orgPayloadData.headers[strCacheControl] = defaultCacheControl;
1085
+ if (!_hasHeader(orgPayloadData.headers, STR_CACHE_CONTROL)) {
1086
+ orgPayloadData.headers[STR_CACHE_CONTROL] = DEFAULT_CACHE_CONTROL;
1079
1087
  }
1080
- if (!_hasHeader(orgPayloadData.headers, strContentTypeHeader)) {
1081
- orgPayloadData.headers[strContentTypeHeader] = defaultContentType;
1088
+ if (!_hasHeader(orgPayloadData.headers, STR_CONTENT_TYPE_HEADER)) {
1089
+ orgPayloadData.headers[STR_CONTENT_TYPE_HEADER] = DEFAULT_CONTENT_TYPE;
1082
1090
  }
1083
1091
  }
1084
1092
  var sender = null;
@@ -1096,7 +1104,7 @@
1096
1104
  }
1097
1105
  }
1098
1106
  catch (ex) {
1099
- _postManager.diagLog().warnToConsole("Unexpected exception sending payload. Ex:" + _1dsCoreJs.dumpObj(ex));
1107
+ _1dsCoreJs._warnToConsole(_logger, "Unexpected exception sending payload. Ex:" + _1dsCoreJs.dumpObj(ex));
1100
1108
  _doOnComplete(onComplete, 0, {});
1101
1109
  }
1102
1110
  };
@@ -1164,9 +1172,9 @@
1164
1172
  var shouldRetry = true;
1165
1173
  if (typeof status !== _1dsCoreJs.strUndefined) {
1166
1174
  if (headers) {
1167
- _clockSkewManager.setClockSkew(headers[strTimeDeltaHeader]);
1168
- var killDuration = headers[strKillDurationHeader] || headers["kill-duration-seconds"];
1169
- _1dsCoreJs.arrForEach(_killSwitch.setKillSwitchTenants(headers[strKillTokensHeader], killDuration), function (killToken) {
1175
+ _clockSkewManager.setClockSkew(headers[STR_TIME_DELTA_HEADER]);
1176
+ var killDuration = headers[STR_KILL_DURATION_HEADER] || headers["kill-duration-seconds"];
1177
+ _1dsCoreJs.arrForEach(_killSwitch.setKillSwitchTenants(headers[STR_KILL_TOKENS_HEADER], killDuration), function (killToken) {
1170
1178
  _1dsCoreJs.arrForEach(thePayload.batches, function (theBatch) {
1171
1179
  if (theBatch.iKey() === killToken) {
1172
1180
  droppedBatches = droppedBatches || [];
@@ -1253,7 +1261,7 @@
1253
1261
  cb();
1254
1262
  }
1255
1263
  else {
1256
- _postManager._setTimeoutOverride(cb, interval);
1264
+ timeoutOverride.set(cb, interval);
1257
1265
  }
1258
1266
  }
1259
1267
  function _convertAllHeadersToMap(headersString) {
@@ -1293,13 +1301,13 @@
1293
1301
  responseHandlers[i](responseText);
1294
1302
  }
1295
1303
  catch (e) {
1296
- _1dsCoreJs._throwInternal(_postManager.diagLog(), 1 , 519 , "Response handler failed: " + e);
1304
+ _1dsCoreJs._throwInternal(_logger, 1 , 519 , "Response handler failed: " + e);
1297
1305
  }
1298
1306
  }
1299
1307
  if (responseText) {
1300
1308
  var response = JSON.parse(responseText);
1301
- if (_1dsCoreJs.isValueAssigned(response.webResult) && _1dsCoreJs.isValueAssigned(response.webResult[strMsfpc])) {
1302
- _cookieMgr.set("MSFPC", response.webResult[strMsfpc], 365 * 86400);
1309
+ if (_1dsCoreJs.isValueAssigned(response.webResult) && _1dsCoreJs.isValueAssigned(response.webResult[STR_MSFPC])) {
1310
+ _cookieMgr.set("MSFPC", response.webResult[STR_MSFPC], 365 * 86400);
1303
1311
  }
1304
1312
  }
1305
1313
  }
@@ -1317,7 +1325,7 @@
1317
1325
  theAction_1.call(actions, theBatches, batchReason, isSyncRequest_1, sendType);
1318
1326
  }
1319
1327
  catch (e) {
1320
- _1dsCoreJs._throwInternal(_postManager.diagLog(), 1 , 74 , "send request notification failed: " + e);
1328
+ _1dsCoreJs._throwInternal(_logger, 1 , 74 , "send request notification failed: " + e);
1321
1329
  }
1322
1330
  }, sendSync || isSyncRequest_1, 0);
1323
1331
  }, function () { return ({ batches: _createDebugBatches(theBatches), reason: batchReason, isSync: isSyncRequest_1, sendSync: sendSync, sendType: sendType }); }, !isSyncRequest_1);
@@ -1327,31 +1335,48 @@
1327
1335
  function _getNotificationAction(reason) {
1328
1336
  var action = _eventActionMap[reason];
1329
1337
  if (!_1dsCoreJs.isValueAssigned(action)) {
1330
- action = strOther;
1338
+ action = STR_OTHER;
1331
1339
  if (reason >= 9000 && reason <= 9999 ) {
1332
- action = strResponseFail;
1340
+ action = STR_RESPONSE_FAIL;
1333
1341
  }
1334
1342
  else if (reason >= 8000 && reason <= 8999 ) {
1335
- action = strDropped;
1343
+ action = STR_DROPPED;
1336
1344
  }
1337
1345
  else if (reason >= 1000 && reason <= 1999 ) {
1338
- action = strSending;
1346
+ action = STR_SENDING;
1339
1347
  }
1340
1348
  }
1341
1349
  return action;
1342
1350
  }
1343
1351
  });
1344
1352
  }
1353
+ HttpManager.__ieDyn=1;
1345
1354
  return HttpManager;
1346
1355
  }());
1347
1356
 
1357
+ function defaultSetTimeout(callback, ms) {
1358
+ var args = [];
1359
+ for (var _i = 2; _i < arguments.length; _i++) {
1360
+ args[_i - 2] = arguments[_i];
1361
+ }
1362
+ return setTimeout(callback, ms, args);
1363
+ }
1364
+ function defaultClearTimeout(timeoutId) {
1365
+ clearTimeout(timeoutId);
1366
+ }
1367
+ function createTimeoutWrapper(argSetTimeout, argClearTimeout) {
1368
+ return {
1369
+ set: argSetTimeout || defaultSetTimeout,
1370
+ clear: argClearTimeout || defaultClearTimeout
1371
+ };
1372
+ }
1373
+
1348
1374
  var FlushCheckTimer = 0.250;
1349
1375
  var MaxNumberEventPerBatch = 500;
1350
1376
  var EventsDroppedAtOneTime = 20;
1351
1377
  var MaxSendAttempts = 6;
1352
1378
  var MaxSyncUnloadSendAttempts = 2;
1353
1379
  var MaxBackoffCount = 4;
1354
- var globalContext = _1dsCoreJs.isWindowObjectAvailable ? window : undefined;
1355
1380
  var MaxConnections = 2;
1356
1381
  var MaxRequestRetriesBeforeBackoff = 1;
1357
1382
  var strEventsDiscarded = "eventsDiscarded";
@@ -1365,7 +1390,7 @@
1365
1390
  var _this = _super.call(this) || this;
1366
1391
  _this.identifier = "PostChannel";
1367
1392
  _this.priority = 1011;
1368
- _this.version = '3.2.1';
1393
+ _this.version = '3.2.4';
1369
1394
  var _config;
1370
1395
  var _isTeardownCalled = false;
1371
1396
  var _flushCallbackQueue = [];
@@ -1390,10 +1415,10 @@
1390
1415
  var _delayedBatchReason;
1391
1416
  var _optimizeObject = true;
1392
1417
  var _isPageUnloadTriggered = false;
1393
- var _disableXhrSync = false;
1394
1418
  var _maxEventSendAttempts = MaxSendAttempts;
1395
1419
  var _maxUnloadEventSendAttempts = MaxSyncUnloadSendAttempts;
1396
1420
  var _evtNamespace;
1421
+ var _timeoutWrapper;
1397
1422
  dynamicProto__default(PostChannel, _this, function (_self, _base) {
1398
1423
  _initDefaults();
1399
1424
  _self["_getDbgPlgTargets"] = function () {
@@ -1409,8 +1434,7 @@
1409
1434
  var ctx = _self._getTelCtx();
1410
1435
  coreConfig.extensionConfig[_self.identifier] = coreConfig.extensionConfig[_self.identifier] || {};
1411
1436
  _config = ctx.getExtCfg(_self.identifier);
1412
- _self._setTimeoutOverride = _config.setTimeoutOverride ? _config.setTimeoutOverride : setTimeout.bind(globalContext);
1413
- _self._clearTimeoutOverride = _config.clearTimeoutOverride ? _config.clearTimeoutOverride : clearTimeout.bind(globalContext);
1437
+ _timeoutWrapper = createTimeoutWrapper(_config.setTimeoutOverride, _config.clearTimeoutOverride);
1414
1438
  _optimizeObject = !_config.disableOptimizeObj && _1dsCoreJs.isChromium();
1415
1439
  _hookWParam(extendedCore);
1416
1440
  if (_config.eventsLimitInMem > 0) {
@@ -1422,7 +1446,6 @@
1422
1446
  if (_config.autoFlushEventsLimit > 0) {
1423
1447
  _autoFlushEventsLimit = _config.autoFlushEventsLimit;
1424
1448
  }
1425
- _disableXhrSync = _config.disableXhrSync;
1426
1449
  if (_1dsCoreJs.isNumber(_config[strMaxEventRetryAttempts])) {
1427
1450
  _maxEventSendAttempts = _config[strMaxEventRetryAttempts];
1428
1451
  }
@@ -1516,11 +1539,11 @@
1516
1539
  if (!event.latency) {
1517
1540
  event.latency = 1 ;
1518
1541
  }
1519
- if (event.ext && event.ext["trace"]) {
1520
- delete (event.ext["trace"]);
1542
+ if (event.ext && event.ext[STR_TRACE]) {
1543
+ delete (event.ext[STR_TRACE]);
1521
1544
  }
1522
- if (event.ext && event.ext["user"] && event.ext["user"]["id"]) {
1523
- delete (event.ext["user"]["id"]);
1545
+ if (event.ext && event.ext[STR_USER] && event.ext[STR_USER]["id"]) {
1546
+ delete (event.ext[STR_USER]["id"]);
1524
1547
  }
1525
1548
  if (_optimizeObject) {
1526
1549
  event.ext = _1dsCoreJs.optimizeObject(event.ext);
@@ -1630,13 +1653,13 @@
1630
1653
  _self.flush = function (async, callback, sendReason) {
1631
1654
  if (async === void 0) { async = true; }
1632
1655
  if (!_paused) {
1633
- _clearScheduledTimer();
1634
1656
  sendReason = sendReason || 1 ;
1635
1657
  if (async) {
1636
- _queueBatches(1 , 0 , sendReason);
1637
- _resetQueueCounts();
1638
1658
  if (_flushCallbackTimerId == null) {
1659
+ _clearScheduledTimer();
1660
+ _queueBatches(1 , 0 , sendReason);
1639
1661
  _flushCallbackTimerId = _createTimer(function () {
1662
+ _flushCallbackTimerId = null;
1640
1663
  _flushImpl(callback, sendReason);
1641
1664
  }, 0);
1642
1665
  }
@@ -1645,15 +1668,19 @@
1645
1668
  }
1646
1669
  }
1647
1670
  else {
1671
+ var cleared = _clearScheduledTimer();
1648
1672
  _sendEventsForLatencyAndAbove(1 , 1 , sendReason);
1649
1673
  if (callback !== null && callback !== undefined) {
1650
1674
  callback();
1651
1675
  }
1676
+ if (cleared) {
1677
+ _scheduleTimer();
1678
+ }
1652
1679
  }
1653
1680
  }
1654
1681
  };
1655
1682
  _self.setMsaAuthTicket = function (ticket) {
1656
- _httpManager.addHeader(strMsaDeviceTicket, ticket);
1683
+ _httpManager.addHeader(STR_MSA_DEVICE_TICKET, ticket);
1657
1684
  };
1658
1685
  _self.hasEvents = _hasEvents;
1659
1686
  _self._setTransmitProfile = function (profileName) {
@@ -1739,10 +1766,10 @@
1739
1766
  _delayedBatchReason = null;
1740
1767
  _optimizeObject = true;
1741
1768
  _isPageUnloadTriggered = false;
1742
- _disableXhrSync = false;
1743
1769
  _maxEventSendAttempts = MaxSendAttempts;
1744
1770
  _maxUnloadEventSendAttempts = MaxSyncUnloadSendAttempts;
1745
1771
  _evtNamespace = null;
1772
+ _timeoutWrapper = createTimeoutWrapper();
1746
1773
  _httpManager = new HttpManager(MaxNumberEventPerBatch, MaxConnections, MaxRequestRetriesBeforeBackoff, {
1747
1774
  requeue: _requeueEvents,
1748
1775
  send: _sendingEvent,
@@ -1750,7 +1777,7 @@
1750
1777
  drop: _eventsDropped,
1751
1778
  rspFail: _eventsResponseFail,
1752
1779
  oth: _otherEvent
1753
- });
1780
+ }, _timeoutWrapper);
1754
1781
  _initializeProfiles();
1755
1782
  _clearQueues();
1756
1783
  _setAutoLimits();
@@ -1763,19 +1790,21 @@
1763
1790
  if (_currentBackoffCount) {
1764
1791
  timerMultiplier = retryPolicyGetMillisToBackoffForRetry(_currentBackoffCount - 1);
1765
1792
  }
1766
- return _self._setTimeoutOverride(theTimerFunc, timeOut * timerMultiplier);
1793
+ return _timeoutWrapper.set(theTimerFunc, timeOut * timerMultiplier);
1767
1794
  }
1768
1795
  function _clearScheduledTimer() {
1769
1796
  if (_scheduledTimerId !== null) {
1770
- _self._clearTimeoutOverride(_scheduledTimerId);
1797
+ _timeoutWrapper.clear(_scheduledTimerId);
1771
1798
  _scheduledTimerId = null;
1772
1799
  _timerCount = 0;
1800
+ return true;
1773
1801
  }
1802
+ return false;
1774
1803
  }
1775
1804
  function _releaseAllQueues(sendType, sendReason) {
1776
1805
  _clearScheduledTimer();
1777
1806
  if (_flushCallbackTimerId) {
1778
- _self._clearTimeoutOverride(_flushCallbackTimerId);
1807
+ _timeoutWrapper.clear(_flushCallbackTimerId);
1779
1808
  _flushCallbackTimerId = null;
1780
1809
  }
1781
1810
  if (!_paused) {
@@ -1934,18 +1963,20 @@
1934
1963
  }
1935
1964
  function _flushImpl(callback, sendReason) {
1936
1965
  _sendEventsForLatencyAndAbove(1 , 0 , sendReason);
1966
+ _resetQueueCounts();
1937
1967
  _waitForIdleManager(function () {
1938
1968
  if (callback) {
1939
1969
  callback();
1940
1970
  }
1941
1971
  if (_flushCallbackQueue.length > 0) {
1942
- _flushCallbackTimerId = _createTimer(function () { return _flushImpl(_flushCallbackQueue.shift(), sendReason); }, 0);
1972
+ _flushCallbackTimerId = _createTimer(function () {
1973
+ _flushCallbackTimerId = null;
1974
+ _flushImpl(_flushCallbackQueue.shift(), sendReason);
1975
+ }, 0);
1943
1976
  }
1944
1977
  else {
1945
1978
  _flushCallbackTimerId = null;
1946
- if (_hasEvents()) {
1947
- _scheduleTimer();
1948
- }
1979
+ _scheduleTimer();
1949
1980
  }
1950
1981
  });
1951
1982
  }
@@ -1955,6 +1986,7 @@
1955
1986
  }
1956
1987
  else {
1957
1988
  _flushCallbackTimerId = _createTimer(function () {
1989
+ _flushCallbackTimerId = null;
1958
1990
  _waitForIdleManager(callback);
1959
1991
  }, FlushCheckTimer);
1960
1992
  }
@@ -2069,9 +2101,16 @@
2069
2101
  _autoFlushBatchLimit = 0;
2070
2102
  }
2071
2103
  }
2104
+ _1dsCoreJs.objDefineAccessors(_self, "_setTimeoutOverride", function () { return _timeoutWrapper.set; }, function (value) {
2105
+ _timeoutWrapper = createTimeoutWrapper(value, _timeoutWrapper.clear);
2106
+ });
2107
+ _1dsCoreJs.objDefineAccessors(_self, "_clearTimeoutOverride", function () { return _timeoutWrapper.clear; }, function (value) {
2108
+ _timeoutWrapper = createTimeoutWrapper(_timeoutWrapper.set, value);
2109
+ });
2072
2110
  });
2073
2111
  return _this;
2074
2112
  }
2113
+ PostChannel.__ieDyn=1;
2075
2114
  return PostChannel;
2076
2115
  }(_1dsCoreJs.BaseTelemetryPlugin));
2077
2116