@microsoft/1ds-post-js 3.1.11 → 3.2.2

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 (56) hide show
  1. package/README.md +2 -2
  2. package/bundle/{ms.post-3.1.11.gbl.js → ms.post-3.2.2.gbl.js} +1278 -548
  3. package/bundle/ms.post-3.2.2.gbl.js.map +1 -0
  4. package/bundle/ms.post-3.2.2.gbl.min.js +7 -0
  5. package/bundle/ms.post-3.2.2.gbl.min.js.map +1 -0
  6. package/bundle/ms.post-3.2.2.integrity.json +46 -0
  7. package/bundle/{ms.post-3.1.11.js → ms.post-3.2.2.js} +1278 -548
  8. package/bundle/ms.post-3.2.2.js.map +1 -0
  9. package/bundle/ms.post-3.2.2.min.js +7 -0
  10. package/bundle/ms.post-3.2.2.min.js.map +1 -0
  11. package/bundle/ms.post.gbl.js +1277 -547
  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 +1277 -547
  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 +212 -128
  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 +1 -1
  26. package/dist-esm/src/Constants.js +1 -1
  27. package/dist-esm/src/DataModels.js +1 -1
  28. package/dist-esm/src/EventBatch.js +1 -1
  29. package/dist-esm/src/HttpManager.d.ts +2 -1
  30. package/dist-esm/src/HttpManager.js +45 -40
  31. package/dist-esm/src/HttpManager.js.map +1 -1
  32. package/dist-esm/src/Index.js +1 -1
  33. package/dist-esm/src/KillSwitch.js +1 -1
  34. package/dist-esm/src/PostChannel.d.ts +2 -9
  35. package/dist-esm/src/PostChannel.js +151 -97
  36. package/dist-esm/src/PostChannel.js.map +1 -1
  37. package/dist-esm/src/RetryPolicy.d.ts +20 -25
  38. package/dist-esm/src/RetryPolicy.js +35 -44
  39. package/dist-esm/src/RetryPolicy.js.map +1 -1
  40. package/dist-esm/src/Serializer.js +1 -1
  41. package/dist-esm/src/TimeoutOverrideWrapper.d.ts +18 -0
  42. package/dist-esm/src/TimeoutOverrideWrapper.js +28 -0
  43. package/dist-esm/src/TimeoutOverrideWrapper.js.map +1 -0
  44. package/dist-esm/src/typings/XDomainRequest.js +1 -1
  45. package/package.json +3 -3
  46. package/src/HttpManager.ts +48 -51
  47. package/src/PostChannel.ts +186 -119
  48. package/src/RetryPolicy.ts +33 -38
  49. package/src/TimeoutOverrideWrapper.ts +29 -0
  50. package/bundle/ms.post-3.1.11.gbl.js.map +0 -1
  51. package/bundle/ms.post-3.1.11.gbl.min.js +0 -7
  52. package/bundle/ms.post-3.1.11.gbl.min.js.map +0 -1
  53. package/bundle/ms.post-3.1.11.integrity.json +0 -46
  54. package/bundle/ms.post-3.1.11.js.map +0 -1
  55. package/bundle/ms.post-3.1.11.min.js +0 -7
  56. package/bundle/ms.post-3.1.11.min.js.map +0 -1
@@ -6,9 +6,9 @@
6
6
  import {
7
7
  isReactNative, isValueAssigned, isString, getTime, arrForEach, getLocation, strTrim, isFetchSupported, isXhrSupported,
8
8
  isBeaconsSupported, FullVersionString, useXDomainRequest, IExtendedAppInsightsCore, IExtendedConfiguration,
9
- LoggingSeverity, _ExtendedInternalMessageId, SendRequestReason, strUndefined, getNavigator, doPerf, IPerfEvent,
9
+ eLoggingSeverity, _eExtendedInternalMessageId, SendRequestReason, strUndefined, getNavigator, doPerf, IPerfEvent,
10
10
  dateNow, isUndefined, isNullOrUndefined, objForEachKey, ICookieMgr, isNumber, isArray, TransportType, dumpObj, objKeys, extend,
11
- EventSendType, hasOwnProperty, openXhr
11
+ EventSendType, hasOwnProperty, openXhr, _throwInternal, _eInternalMessageId
12
12
  } from "@microsoft/1ds-core-js";
13
13
  import {
14
14
  IXHROverride, IPostTransmissionTelemetryItem, ICollectorResult,
@@ -18,7 +18,7 @@ import {
18
18
  import { BatchNotificationAction, BatchNotificationActions } from "./BatchNotificationActions";
19
19
  import { EventBatch } from "./EventBatch";
20
20
  import { Serializer, ISerializedPayload } from "./Serializer";
21
- import RetryPolicy from "./RetryPolicy";
21
+ import { retryPolicyGetMillisToBackoffForRetry, retryPolicyShouldRetryForStatus } from "./RetryPolicy";
22
22
  import EVTKillSwitch from "./KillSwitch";
23
23
  import EVTClockSkewManager from "./ClockSkewManager";
24
24
  import dynamicProto from "@microsoft/dynamicproto-js";
@@ -30,6 +30,7 @@ import {
30
30
  strKillTokensHeader, strMsaDeviceTicket, strMsfpc, strNoResponseBody, strOther, strRequeue, strResponseFail, strSending, strTimeDeltaHeader,
31
31
  strTimeDeltaToApply, strUploadTime
32
32
  } from "./Constants";
33
+ import { ITimeoutOverrideWrapper } from "./TimeoutOverrideWrapper";
33
34
 
34
35
  const strSendAttempt = "sendAttempt";
35
36
 
@@ -61,23 +62,20 @@ const _eventActionMap: any = {
61
62
  const _collectorQsHeaders = { };
62
63
  const _collectorHeaderToQs = { };
63
64
 
64
- function _addCollectorHeaderQsMapping(qsName: string, headerName: string) {
65
+ function _addCollectorHeaderQsMapping(qsName: string, headerName: string, allowQs?: boolean) {
65
66
  _collectorQsHeaders[qsName] = headerName;
66
- _collectorHeaderToQs[headerName] = qsName;
67
+ if (allowQs !== false) {
68
+ _collectorHeaderToQs[headerName] = qsName;
69
+ }
67
70
  }
68
71
 
69
- _addCollectorHeaderQsMapping(strMsaDeviceTicket, strMsaDeviceTicket);
70
-
71
- // ----------------------------------------------------------------------------------------------------------------
72
- // Task 12886642: Need to wait until an updated version of the collector is released to return these as allowed in the OPTIONS call
73
- // ----------------------------------------------------------------------------------------------------------------
74
- //_addCollectorHeaderQsMapping(strClientVersion, strClientVersion);
75
- //_addCollectorHeaderQsMapping(strClientId, "Client-Id");
76
- //_addCollectorHeaderQsMapping(strApiKey, strApiKey);
77
- //_addCollectorHeaderQsMapping(strTimeDeltaToApply, strTimeDeltaToApply);
78
- //_addCollectorHeaderQsMapping(strUploadTime, strUploadTime);
79
- //_addCollectorHeaderQsMapping(strAuthXToken, strAuthXToken);
80
- // ----------------------------------------------------------------------------------------------------------------
72
+ _addCollectorHeaderQsMapping(strMsaDeviceTicket, strMsaDeviceTicket, false);
73
+ _addCollectorHeaderQsMapping(strClientVersion, strClientVersion);
74
+ _addCollectorHeaderQsMapping(strClientId, "Client-Id");
75
+ _addCollectorHeaderQsMapping(strApiKey, strApiKey);
76
+ _addCollectorHeaderQsMapping(strTimeDeltaToApply, strTimeDeltaToApply);
77
+ _addCollectorHeaderQsMapping(strUploadTime, strUploadTime);
78
+ _addCollectorHeaderQsMapping(strAuthXToken, strAuthXToken);
81
79
 
82
80
  type OnCompleteCallback = (status: number, headers: { [headerName: string]: string }, response?: string) => void;
83
81
 
@@ -144,7 +142,7 @@ export class HttpManager {
144
142
  * @constructor
145
143
  * @param requestQueue - The queue that contains the requests to be sent.
146
144
  */
147
- constructor(maxEventsPerBatch: number, maxConnections: number, maxRequestRetriesBeforeBackoff: number, actions: BatchNotificationActions) {
145
+ constructor(maxEventsPerBatch: number, maxConnections: number, maxRequestRetriesBeforeBackoff: number, actions: BatchNotificationActions, timeoutOverride: ITimeoutOverrideWrapper) {
148
146
  let _urlString: string = "?cors=true&" + strContentTypeHeader.toLowerCase() + "=" + defaultContentType;
149
147
  let _killSwitch: EVTKillSwitch = new EVTKillSwitch();
150
148
  let _paused = false;
@@ -182,8 +180,7 @@ export class HttpManager {
182
180
 
183
181
  _urlString = endpointUrl + _urlString;
184
182
 
185
- // Task 12886642: Defaulting to 'false' until the Collector handles sending upload-time header in the OPTIONS call
186
- _useHeaders = !isUndefined(channelConfig.avoidOptions) ? !channelConfig.avoidOptions : false;
183
+ _useHeaders = !isUndefined(channelConfig.avoidOptions) ? !channelConfig.avoidOptions : true;
187
184
  _core = core;
188
185
  _cookieMgr = core.getCookieMgr();
189
186
  _enableEventTimings = !(_core.config as IExtendedConfiguration).disableEventTimings;
@@ -317,7 +314,7 @@ export class HttpManager {
317
314
  if (sync) {
318
315
  xdr.send(payload.data);
319
316
  } else {
320
- _postManager._setTimeoutOverride(() => {
317
+ timeoutOverride.set(() => {
321
318
  xdr.send(payload.data);
322
319
  }, 0);
323
320
  }
@@ -389,7 +386,7 @@ export class HttpManager {
389
386
 
390
387
  if (!responseHandled && payload.timeout > 0) {
391
388
  // Simulate timeout
392
- _postManager._setTimeoutOverride(() => {
389
+ timeoutOverride.set(() => {
393
390
  if (!responseHandled) {
394
391
  // Assume a 500 response (which will cause a retry)
395
392
  responseHandled = true;
@@ -461,8 +458,9 @@ export class HttpManager {
461
458
  try {
462
459
  oncomplete(status, headers, response);
463
460
  } catch (e) {
464
- _postManager.diagLog().throwInternal(LoggingSeverity.WARNING,
465
- _ExtendedInternalMessageId.SendPostOnCompleteFailure, dumpObj(e));
461
+ _throwInternal(_postManager.diagLog(),
462
+ eLoggingSeverity.WARNING,
463
+ _eExtendedInternalMessageId.SendPostOnCompleteFailure, dumpObj(e));
466
464
  }
467
465
  }
468
466
 
@@ -502,7 +500,7 @@ export class HttpManager {
502
500
  }
503
501
 
504
502
  } catch (ex) {
505
- _postManager.diagLog().warnToConsole("Failed to send telemetry using sendBeacon API. Ex:" + ex);
503
+ _postManager.diagLog().warnToConsole("Failed to send telemetry using sendBeacon API. Ex:" + dumpObj(ex));
506
504
  status = 0;
507
505
  } finally {
508
506
  _doOnComplete(oncomplete, status, {}, "");
@@ -740,8 +738,9 @@ export class HttpManager {
740
738
  _sendBatchesNotification(droppedBatches, EventBatchNotificationReason.KillSwitch, sendType);
741
739
  }, () => ({ batches: _createDebugBatches(orgBatches), retryCount, isTeardown, isSynchronous, sendReason, useSendBeacon: _isBeaconPayload(sendType), sendType }), !isSynchronous);
742
740
  } catch (ex) {
743
- _postManager.diagLog().throwInternal(LoggingSeverity.WARNING,
744
- _ExtendedInternalMessageId.CannotSerializeObject, "Unexpected Exception sending batch: " + dumpObj(ex));
741
+ _throwInternal(_postManager.diagLog(),
742
+ eLoggingSeverity.WARNING,
743
+ _eInternalMessageId.CannotSerializeObject, "Unexpected Exception sending batch: " + dumpObj(ex));
745
744
  }
746
745
  }
747
746
 
@@ -752,26 +751,22 @@ export class HttpManager {
752
751
  useHdrs: false // Assume no headers
753
752
  };
754
753
 
755
- // ----------------------------------------------------------------------------------------------------------------
756
- // Task 12886642: Need to wait until an updated version of the collector is released to return these as allowed in the OPTIONS call
757
- // ----------------------------------------------------------------------------------------------------------------
758
- // if (!useHeaders) {
759
- // // Attempt to map headers to a query string if possible
760
- // objForEachKey(_headers, (name, value) => {
761
- // if (_collectorHeaderToQs[name]) {
762
- // _addRequestDetails(requestDetails, _collectorHeaderToQs[name], value, false);
763
- // } else {
764
- // // No mapping, so just include in the headers anyway (may not get sent if using sendBeacon())
765
- // requestDetails.hdrs[name] = value;
766
- // requestDetails.useHdrs = true;
767
- // }
768
- // });
769
- // } else {
754
+ if (!useHeaders) {
755
+ // Attempt to map headers to a query string if possible
756
+ objForEachKey(_headers, (name, value) => {
757
+ if (_collectorHeaderToQs[name]) {
758
+ _addRequestDetails(requestDetails, _collectorHeaderToQs[name], value, false);
759
+ } else {
760
+ // No mapping, so just include in the headers anyway (may not get sent if using sendBeacon())
761
+ requestDetails.hdrs[name] = value;
762
+ requestDetails.useHdrs = true;
763
+ }
764
+ });
765
+ } else {
770
766
  // Copy the pre-defined headers into the payload headers
771
767
  requestDetails.hdrs = extend(requestDetails.hdrs, _headers);
772
768
  requestDetails.useHdrs = (objKeys(requestDetails.hdrs).length > 0);
773
- // }
774
- // ----------------------------------------------------------------------------------------------------------------
769
+ }
775
770
 
776
771
  _addRequestDetails(requestDetails, strClientId, "NO_AUTH", useHeaders);
777
772
  _addRequestDetails(requestDetails, strClientVersion, FullVersionString, useHeaders);
@@ -1033,7 +1028,7 @@ export class HttpManager {
1033
1028
  return;
1034
1029
  }
1035
1030
 
1036
- if (!RetryPolicy.shouldRetryForStatus(status) || thePayload.numEvents <= 0) {
1031
+ if (!retryPolicyShouldRetryForStatus(status) || thePayload.numEvents <= 0) {
1037
1032
  // Only retry for specific response codes and if there is still events after kill switch processing
1038
1033
  shouldRetry = false;
1039
1034
  }
@@ -1060,7 +1055,7 @@ export class HttpManager {
1060
1055
  }
1061
1056
 
1062
1057
  _sendBatches(thePayload.batches, retryCount + 1, thePayload.isTeardown, _isUnloading ? EventSendType.SendBeacon : thePayload.sendType, SendRequestReason.Retry);
1063
- }, _isUnloading, RetryPolicy.getMillisToBackoffForRetry(retryCount));
1058
+ }, _isUnloading, retryPolicyGetMillisToBackoffForRetry(retryCount));
1064
1059
  } else {
1065
1060
  backOffTrans = true;
1066
1061
  if (_isUnloading) {
@@ -1141,7 +1136,7 @@ export class HttpManager {
1141
1136
  if (isSync) {
1142
1137
  cb();
1143
1138
  } else {
1144
- _postManager._setTimeoutOverride(cb, interval);
1139
+ timeoutOverride.set(cb, interval);
1145
1140
  }
1146
1141
  }
1147
1142
 
@@ -1189,8 +1184,9 @@ export class HttpManager {
1189
1184
  try {
1190
1185
  responseHandlers[i](responseText);
1191
1186
  } catch (e) {
1192
- _postManager.diagLog().throwInternal(LoggingSeverity.CRITICAL,
1193
- _ExtendedInternalMessageId.PostResponseHandler,
1187
+ _throwInternal(_postManager.diagLog(),
1188
+ eLoggingSeverity.CRITICAL,
1189
+ _eExtendedInternalMessageId.PostResponseHandler,
1194
1190
  "Response handler failed: " + e);
1195
1191
  }
1196
1192
  }
@@ -1217,8 +1213,9 @@ export class HttpManager {
1217
1213
  try {
1218
1214
  theAction.call(actions, theBatches, batchReason, isSyncRequest, sendType);
1219
1215
  } catch (e) {
1220
- _postManager.diagLog().throwInternal(LoggingSeverity.CRITICAL,
1221
- _ExtendedInternalMessageId.NotificationException,
1216
+ _throwInternal(_postManager.diagLog(),
1217
+ eLoggingSeverity.CRITICAL,
1218
+ _eInternalMessageId.NotificationException,
1222
1219
  "send request notification failed: " + e);
1223
1220
  }
1224
1221
  }, sendSync || isSyncRequest, 0);