@microsoft/1ds-post-js 3.1.11 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/bundle/{ms.post-3.1.11.gbl.js → ms.post-3.2.0.gbl.js} +1486 -786
- package/bundle/ms.post-3.2.0.gbl.js.map +1 -0
- package/bundle/ms.post-3.2.0.gbl.min.js +7 -0
- package/bundle/ms.post-3.2.0.gbl.min.js.map +1 -0
- package/bundle/ms.post-3.2.0.integrity.json +46 -0
- package/bundle/{ms.post-3.1.11.js → ms.post-3.2.0.js} +1486 -786
- package/bundle/ms.post-3.2.0.js.map +1 -0
- package/bundle/ms.post-3.2.0.min.js +7 -0
- package/bundle/ms.post-3.2.0.min.js.map +1 -0
- package/bundle/ms.post.gbl.js +1485 -785
- package/bundle/ms.post.gbl.js.map +1 -1
- package/bundle/ms.post.gbl.min.js +2 -2
- package/bundle/ms.post.gbl.min.js.map +1 -1
- package/bundle/ms.post.integrity.json +17 -17
- package/bundle/ms.post.js +1485 -785
- package/bundle/ms.post.js.map +1 -1
- package/bundle/ms.post.min.js +2 -2
- package/bundle/ms.post.min.js.map +1 -1
- package/dist/ms.post.js +177 -116
- package/dist/ms.post.js.map +1 -1
- package/dist/ms.post.min.js +2 -2
- package/dist/ms.post.min.js.map +1 -1
- package/dist-esm/src/BatchNotificationActions.js +1 -1
- package/dist-esm/src/ClockSkewManager.js +1 -1
- package/dist-esm/src/Constants.js +1 -1
- package/dist-esm/src/DataModels.js +1 -1
- package/dist-esm/src/EventBatch.js +1 -1
- package/dist-esm/src/HttpManager.js +41 -36
- package/dist-esm/src/HttpManager.js.map +1 -1
- package/dist-esm/src/Index.js +1 -1
- package/dist-esm/src/KillSwitch.js +1 -1
- package/dist-esm/src/PostChannel.d.ts +0 -4
- package/dist-esm/src/PostChannel.js +136 -92
- package/dist-esm/src/PostChannel.js.map +1 -1
- package/dist-esm/src/RetryPolicy.d.ts +20 -25
- package/dist-esm/src/RetryPolicy.js +35 -44
- package/dist-esm/src/RetryPolicy.js.map +1 -1
- package/dist-esm/src/Serializer.js +1 -1
- package/dist-esm/src/typings/XDomainRequest.js +1 -1
- package/package.json +2 -2
- package/src/HttpManager.ts +43 -47
- package/src/PostChannel.ts +162 -114
- package/src/RetryPolicy.ts +33 -38
- package/bundle/ms.post-3.1.11.gbl.js.map +0 -1
- package/bundle/ms.post-3.1.11.gbl.min.js +0 -7
- package/bundle/ms.post-3.1.11.gbl.min.js.map +0 -1
- package/bundle/ms.post-3.1.11.integrity.json +0 -46
- package/bundle/ms.post-3.1.11.js.map +0 -1
- package/bundle/ms.post-3.1.11.min.js +0 -7
- package/bundle/ms.post-3.1.11.min.js.map +0 -1
package/src/HttpManager.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
|
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";
|
|
@@ -61,23 +61,20 @@ const _eventActionMap: any = {
|
|
|
61
61
|
const _collectorQsHeaders = { };
|
|
62
62
|
const _collectorHeaderToQs = { };
|
|
63
63
|
|
|
64
|
-
function _addCollectorHeaderQsMapping(qsName: string, headerName: string) {
|
|
64
|
+
function _addCollectorHeaderQsMapping(qsName: string, headerName: string, allowQs?: boolean) {
|
|
65
65
|
_collectorQsHeaders[qsName] = headerName;
|
|
66
|
-
|
|
66
|
+
if (allowQs !== false) {
|
|
67
|
+
_collectorHeaderToQs[headerName] = qsName;
|
|
68
|
+
}
|
|
67
69
|
}
|
|
68
70
|
|
|
69
|
-
_addCollectorHeaderQsMapping(strMsaDeviceTicket, strMsaDeviceTicket);
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
//_addCollectorHeaderQsMapping(strApiKey, strApiKey);
|
|
77
|
-
//_addCollectorHeaderQsMapping(strTimeDeltaToApply, strTimeDeltaToApply);
|
|
78
|
-
//_addCollectorHeaderQsMapping(strUploadTime, strUploadTime);
|
|
79
|
-
//_addCollectorHeaderQsMapping(strAuthXToken, strAuthXToken);
|
|
80
|
-
// ----------------------------------------------------------------------------------------------------------------
|
|
71
|
+
_addCollectorHeaderQsMapping(strMsaDeviceTicket, strMsaDeviceTicket, false);
|
|
72
|
+
_addCollectorHeaderQsMapping(strClientVersion, strClientVersion);
|
|
73
|
+
_addCollectorHeaderQsMapping(strClientId, "Client-Id");
|
|
74
|
+
_addCollectorHeaderQsMapping(strApiKey, strApiKey);
|
|
75
|
+
_addCollectorHeaderQsMapping(strTimeDeltaToApply, strTimeDeltaToApply);
|
|
76
|
+
_addCollectorHeaderQsMapping(strUploadTime, strUploadTime);
|
|
77
|
+
_addCollectorHeaderQsMapping(strAuthXToken, strAuthXToken);
|
|
81
78
|
|
|
82
79
|
type OnCompleteCallback = (status: number, headers: { [headerName: string]: string }, response?: string) => void;
|
|
83
80
|
|
|
@@ -182,8 +179,7 @@ export class HttpManager {
|
|
|
182
179
|
|
|
183
180
|
_urlString = endpointUrl + _urlString;
|
|
184
181
|
|
|
185
|
-
|
|
186
|
-
_useHeaders = !isUndefined(channelConfig.avoidOptions) ? !channelConfig.avoidOptions : false;
|
|
182
|
+
_useHeaders = !isUndefined(channelConfig.avoidOptions) ? !channelConfig.avoidOptions : true;
|
|
187
183
|
_core = core;
|
|
188
184
|
_cookieMgr = core.getCookieMgr();
|
|
189
185
|
_enableEventTimings = !(_core.config as IExtendedConfiguration).disableEventTimings;
|
|
@@ -461,8 +457,9 @@ export class HttpManager {
|
|
|
461
457
|
try {
|
|
462
458
|
oncomplete(status, headers, response);
|
|
463
459
|
} catch (e) {
|
|
464
|
-
_postManager.diagLog()
|
|
465
|
-
|
|
460
|
+
_throwInternal(_postManager.diagLog(),
|
|
461
|
+
eLoggingSeverity.WARNING,
|
|
462
|
+
_eExtendedInternalMessageId.SendPostOnCompleteFailure, dumpObj(e));
|
|
466
463
|
}
|
|
467
464
|
}
|
|
468
465
|
|
|
@@ -502,7 +499,7 @@ export class HttpManager {
|
|
|
502
499
|
}
|
|
503
500
|
|
|
504
501
|
} catch (ex) {
|
|
505
|
-
_postManager.diagLog().warnToConsole("Failed to send telemetry using sendBeacon API. Ex:" + ex);
|
|
502
|
+
_postManager.diagLog().warnToConsole("Failed to send telemetry using sendBeacon API. Ex:" + dumpObj(ex));
|
|
506
503
|
status = 0;
|
|
507
504
|
} finally {
|
|
508
505
|
_doOnComplete(oncomplete, status, {}, "");
|
|
@@ -740,8 +737,9 @@ export class HttpManager {
|
|
|
740
737
|
_sendBatchesNotification(droppedBatches, EventBatchNotificationReason.KillSwitch, sendType);
|
|
741
738
|
}, () => ({ batches: _createDebugBatches(orgBatches), retryCount, isTeardown, isSynchronous, sendReason, useSendBeacon: _isBeaconPayload(sendType), sendType }), !isSynchronous);
|
|
742
739
|
} catch (ex) {
|
|
743
|
-
_postManager.diagLog()
|
|
744
|
-
|
|
740
|
+
_throwInternal(_postManager.diagLog(),
|
|
741
|
+
eLoggingSeverity.WARNING,
|
|
742
|
+
_eInternalMessageId.CannotSerializeObject, "Unexpected Exception sending batch: " + dumpObj(ex));
|
|
745
743
|
}
|
|
746
744
|
}
|
|
747
745
|
|
|
@@ -752,26 +750,22 @@ export class HttpManager {
|
|
|
752
750
|
useHdrs: false // Assume no headers
|
|
753
751
|
};
|
|
754
752
|
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
// }
|
|
768
|
-
// });
|
|
769
|
-
// } else {
|
|
753
|
+
if (!useHeaders) {
|
|
754
|
+
// Attempt to map headers to a query string if possible
|
|
755
|
+
objForEachKey(_headers, (name, value) => {
|
|
756
|
+
if (_collectorHeaderToQs[name]) {
|
|
757
|
+
_addRequestDetails(requestDetails, _collectorHeaderToQs[name], value, false);
|
|
758
|
+
} else {
|
|
759
|
+
// No mapping, so just include in the headers anyway (may not get sent if using sendBeacon())
|
|
760
|
+
requestDetails.hdrs[name] = value;
|
|
761
|
+
requestDetails.useHdrs = true;
|
|
762
|
+
}
|
|
763
|
+
});
|
|
764
|
+
} else {
|
|
770
765
|
// Copy the pre-defined headers into the payload headers
|
|
771
766
|
requestDetails.hdrs = extend(requestDetails.hdrs, _headers);
|
|
772
767
|
requestDetails.useHdrs = (objKeys(requestDetails.hdrs).length > 0);
|
|
773
|
-
|
|
774
|
-
// ----------------------------------------------------------------------------------------------------------------
|
|
768
|
+
}
|
|
775
769
|
|
|
776
770
|
_addRequestDetails(requestDetails, strClientId, "NO_AUTH", useHeaders);
|
|
777
771
|
_addRequestDetails(requestDetails, strClientVersion, FullVersionString, useHeaders);
|
|
@@ -1033,7 +1027,7 @@ export class HttpManager {
|
|
|
1033
1027
|
return;
|
|
1034
1028
|
}
|
|
1035
1029
|
|
|
1036
|
-
if (!
|
|
1030
|
+
if (!retryPolicyShouldRetryForStatus(status) || thePayload.numEvents <= 0) {
|
|
1037
1031
|
// Only retry for specific response codes and if there is still events after kill switch processing
|
|
1038
1032
|
shouldRetry = false;
|
|
1039
1033
|
}
|
|
@@ -1060,7 +1054,7 @@ export class HttpManager {
|
|
|
1060
1054
|
}
|
|
1061
1055
|
|
|
1062
1056
|
_sendBatches(thePayload.batches, retryCount + 1, thePayload.isTeardown, _isUnloading ? EventSendType.SendBeacon : thePayload.sendType, SendRequestReason.Retry);
|
|
1063
|
-
}, _isUnloading,
|
|
1057
|
+
}, _isUnloading, retryPolicyGetMillisToBackoffForRetry(retryCount));
|
|
1064
1058
|
} else {
|
|
1065
1059
|
backOffTrans = true;
|
|
1066
1060
|
if (_isUnloading) {
|
|
@@ -1189,8 +1183,9 @@ export class HttpManager {
|
|
|
1189
1183
|
try {
|
|
1190
1184
|
responseHandlers[i](responseText);
|
|
1191
1185
|
} catch (e) {
|
|
1192
|
-
_postManager.diagLog()
|
|
1193
|
-
|
|
1186
|
+
_throwInternal(_postManager.diagLog(),
|
|
1187
|
+
eLoggingSeverity.CRITICAL,
|
|
1188
|
+
_eExtendedInternalMessageId.PostResponseHandler,
|
|
1194
1189
|
"Response handler failed: " + e);
|
|
1195
1190
|
}
|
|
1196
1191
|
}
|
|
@@ -1217,8 +1212,9 @@ export class HttpManager {
|
|
|
1217
1212
|
try {
|
|
1218
1213
|
theAction.call(actions, theBatches, batchReason, isSyncRequest, sendType);
|
|
1219
1214
|
} catch (e) {
|
|
1220
|
-
_postManager.diagLog()
|
|
1221
|
-
|
|
1215
|
+
_throwInternal(_postManager.diagLog(),
|
|
1216
|
+
eLoggingSeverity.CRITICAL,
|
|
1217
|
+
_eInternalMessageId.NotificationException,
|
|
1222
1218
|
"send request notification failed: " + e);
|
|
1223
1219
|
}
|
|
1224
1220
|
}, sendSync || isSyncRequest, 0);
|