@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.
- package/README.md +2 -2
- package/bundle/{ms.post-3.1.11.gbl.js → ms.post-3.2.2.gbl.js} +1278 -548
- package/bundle/ms.post-3.2.2.gbl.js.map +1 -0
- package/bundle/ms.post-3.2.2.gbl.min.js +7 -0
- package/bundle/ms.post-3.2.2.gbl.min.js.map +1 -0
- package/bundle/ms.post-3.2.2.integrity.json +46 -0
- package/bundle/{ms.post-3.1.11.js → ms.post-3.2.2.js} +1278 -548
- package/bundle/ms.post-3.2.2.js.map +1 -0
- package/bundle/ms.post-3.2.2.min.js +7 -0
- package/bundle/ms.post-3.2.2.min.js.map +1 -0
- package/bundle/ms.post.gbl.js +1277 -547
- 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 +1277 -547
- 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 +212 -128
- 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.d.ts +2 -1
- package/dist-esm/src/HttpManager.js +45 -40
- 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 +2 -9
- package/dist-esm/src/PostChannel.js +151 -97
- 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/TimeoutOverrideWrapper.d.ts +18 -0
- package/dist-esm/src/TimeoutOverrideWrapper.js +28 -0
- package/dist-esm/src/TimeoutOverrideWrapper.js.map +1 -0
- package/dist-esm/src/typings/XDomainRequest.js +1 -1
- package/package.json +3 -3
- package/src/HttpManager.ts +48 -51
- package/src/PostChannel.ts +186 -119
- package/src/RetryPolicy.ts +33 -38
- package/src/TimeoutOverrideWrapper.ts +29 -0
- 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";
|
|
@@ -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
|
-
|
|
67
|
+
if (allowQs !== false) {
|
|
68
|
+
_collectorHeaderToQs[headerName] = qsName;
|
|
69
|
+
}
|
|
67
70
|
}
|
|
68
71
|
|
|
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
|
-
// ----------------------------------------------------------------------------------------------------------------
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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()
|
|
465
|
-
|
|
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()
|
|
744
|
-
|
|
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
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
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 (!
|
|
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,
|
|
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
|
-
|
|
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()
|
|
1193
|
-
|
|
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()
|
|
1221
|
-
|
|
1216
|
+
_throwInternal(_postManager.diagLog(),
|
|
1217
|
+
eLoggingSeverity.CRITICAL,
|
|
1218
|
+
_eInternalMessageId.NotificationException,
|
|
1222
1219
|
"send request notification failed: " + e);
|
|
1223
1220
|
}
|
|
1224
1221
|
}, sendSync || isSyncRequest, 0);
|