@microsoft/applicationinsights-dependencies-js 2.8.16-nightly.2308-04 → 2.8.16-nightly.2308-17
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/browser/applicationinsights-dependencies-js.integrity.json +9 -9
- package/browser/applicationinsights-dependencies-js.js +126 -56
- package/browser/applicationinsights-dependencies-js.js.map +1 -1
- package/browser/applicationinsights-dependencies-js.min.js +2 -2
- package/browser/applicationinsights-dependencies-js.min.js.map +1 -1
- package/dist/applicationinsights-dependencies-js.api.json +92 -6
- package/dist/applicationinsights-dependencies-js.api.md +12 -1
- package/dist/applicationinsights-dependencies-js.d.ts +21 -5
- package/dist/applicationinsights-dependencies-js.js +126 -56
- package/dist/applicationinsights-dependencies-js.js.map +1 -1
- package/dist/applicationinsights-dependencies-js.min.js +2 -2
- package/dist/applicationinsights-dependencies-js.min.js.map +1 -1
- package/dist/applicationinsights-dependencies-js.rollup.d.ts +21 -5
- package/dist-esm/DependencyInitializer.js +1 -1
- package/dist-esm/DependencyListener.js +1 -1
- package/dist-esm/InternalConstants.js +1 -1
- package/dist-esm/__DynamicConstants.js +1 -1
- package/dist-esm/ajax.js +136 -54
- package/dist-esm/ajax.js.map +1 -1
- package/dist-esm/ajaxRecord.js +1 -1
- package/dist-esm/ajaxUtils.js +1 -1
- package/dist-esm/applicationinsights-dependencies-js.js +1 -1
- package/package.json +3 -3
- package/src/ajax.ts +160 -60
- package/src/applicationinsights-dependencies-js.ts +1 -1
- package/types/ajax.d.ts +19 -4
- package/types/applicationinsights-dependencies-js.d.ts +1 -1
- package/types/tsdoc-metadata.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"metadata": {
|
|
3
3
|
"toolPackage": "@microsoft/api-extractor",
|
|
4
|
-
"toolVersion": "7.36.
|
|
4
|
+
"toolVersion": "7.36.4",
|
|
5
5
|
"schemaVersion": 1011,
|
|
6
6
|
"oldestForwardsCompatibleVersion": 1001,
|
|
7
7
|
"tsdocConfig": {
|
|
@@ -2899,6 +2899,92 @@
|
|
|
2899
2899
|
}
|
|
2900
2900
|
]
|
|
2901
2901
|
},
|
|
2902
|
+
{
|
|
2903
|
+
"kind": "Interface",
|
|
2904
|
+
"canonicalReference": "@microsoft/applicationinsights-dependencies-js!XMLHttpRequestData:interface",
|
|
2905
|
+
"docComment": "",
|
|
2906
|
+
"excerptTokens": [
|
|
2907
|
+
{
|
|
2908
|
+
"kind": "Content",
|
|
2909
|
+
"text": "export interface XMLHttpRequestData "
|
|
2910
|
+
}
|
|
2911
|
+
],
|
|
2912
|
+
"fileUrlPath": "types/ajax.d.ts",
|
|
2913
|
+
"releaseTag": "Public",
|
|
2914
|
+
"name": "XMLHttpRequestData",
|
|
2915
|
+
"preserveMemberOrder": false,
|
|
2916
|
+
"members": [
|
|
2917
|
+
{
|
|
2918
|
+
"kind": "PropertySignature",
|
|
2919
|
+
"canonicalReference": "@microsoft/applicationinsights-dependencies-js!XMLHttpRequestData#i:member",
|
|
2920
|
+
"docComment": "/**\n * The individual tracking data for each AI instance\n */\n",
|
|
2921
|
+
"excerptTokens": [
|
|
2922
|
+
{
|
|
2923
|
+
"kind": "Content",
|
|
2924
|
+
"text": "i: "
|
|
2925
|
+
},
|
|
2926
|
+
{
|
|
2927
|
+
"kind": "Content",
|
|
2928
|
+
"text": "{\n [key: string]: "
|
|
2929
|
+
},
|
|
2930
|
+
{
|
|
2931
|
+
"kind": "Reference",
|
|
2932
|
+
"text": "ajaxRecord",
|
|
2933
|
+
"canonicalReference": "@microsoft/applicationinsights-dependencies-js!ajaxRecord:class"
|
|
2934
|
+
},
|
|
2935
|
+
{
|
|
2936
|
+
"kind": "Content",
|
|
2937
|
+
"text": ";\n }"
|
|
2938
|
+
},
|
|
2939
|
+
{
|
|
2940
|
+
"kind": "Content",
|
|
2941
|
+
"text": ";"
|
|
2942
|
+
}
|
|
2943
|
+
],
|
|
2944
|
+
"isReadonly": false,
|
|
2945
|
+
"isOptional": false,
|
|
2946
|
+
"releaseTag": "Public",
|
|
2947
|
+
"name": "i",
|
|
2948
|
+
"propertyTypeTokenRange": {
|
|
2949
|
+
"startIndex": 1,
|
|
2950
|
+
"endIndex": 4
|
|
2951
|
+
}
|
|
2952
|
+
},
|
|
2953
|
+
{
|
|
2954
|
+
"kind": "PropertySignature",
|
|
2955
|
+
"canonicalReference": "@microsoft/applicationinsights-dependencies-js!XMLHttpRequestData#xh:member",
|
|
2956
|
+
"docComment": "/**\n * The \"Shared\" XHR headers, avoids causing multiple instances\n */\n",
|
|
2957
|
+
"excerptTokens": [
|
|
2958
|
+
{
|
|
2959
|
+
"kind": "Content",
|
|
2960
|
+
"text": "xh?: "
|
|
2961
|
+
},
|
|
2962
|
+
{
|
|
2963
|
+
"kind": "Reference",
|
|
2964
|
+
"text": "Array",
|
|
2965
|
+
"canonicalReference": "!Array:interface"
|
|
2966
|
+
},
|
|
2967
|
+
{
|
|
2968
|
+
"kind": "Content",
|
|
2969
|
+
"text": "<{\n n: string;\n v: string;\n }>"
|
|
2970
|
+
},
|
|
2971
|
+
{
|
|
2972
|
+
"kind": "Content",
|
|
2973
|
+
"text": ";"
|
|
2974
|
+
}
|
|
2975
|
+
],
|
|
2976
|
+
"isReadonly": false,
|
|
2977
|
+
"isOptional": true,
|
|
2978
|
+
"releaseTag": "Public",
|
|
2979
|
+
"name": "xh",
|
|
2980
|
+
"propertyTypeTokenRange": {
|
|
2981
|
+
"startIndex": 1,
|
|
2982
|
+
"endIndex": 3
|
|
2983
|
+
}
|
|
2984
|
+
}
|
|
2985
|
+
],
|
|
2986
|
+
"extendsTokenRanges": []
|
|
2987
|
+
},
|
|
2902
2988
|
{
|
|
2903
2989
|
"kind": "Interface",
|
|
2904
2990
|
"canonicalReference": "@microsoft/applicationinsights-dependencies-js!XMLHttpRequestInstrumented:interface",
|
|
@@ -2925,17 +3011,17 @@
|
|
|
2925
3011
|
"members": [
|
|
2926
3012
|
{
|
|
2927
3013
|
"kind": "PropertySignature",
|
|
2928
|
-
"canonicalReference": "@microsoft/applicationinsights-dependencies-js!XMLHttpRequestInstrumented#
|
|
3014
|
+
"canonicalReference": "@microsoft/applicationinsights-dependencies-js!XMLHttpRequestInstrumented#_ajaxData:member",
|
|
2929
3015
|
"docComment": "",
|
|
2930
3016
|
"excerptTokens": [
|
|
2931
3017
|
{
|
|
2932
3018
|
"kind": "Content",
|
|
2933
|
-
"text": "
|
|
3019
|
+
"text": "_ajaxData: "
|
|
2934
3020
|
},
|
|
2935
3021
|
{
|
|
2936
3022
|
"kind": "Reference",
|
|
2937
|
-
"text": "
|
|
2938
|
-
"canonicalReference": "@microsoft/applicationinsights-dependencies-js!
|
|
3023
|
+
"text": "XMLHttpRequestData",
|
|
3024
|
+
"canonicalReference": "@microsoft/applicationinsights-dependencies-js!XMLHttpRequestData:interface"
|
|
2939
3025
|
},
|
|
2940
3026
|
{
|
|
2941
3027
|
"kind": "Content",
|
|
@@ -2945,7 +3031,7 @@
|
|
|
2945
3031
|
"isReadonly": false,
|
|
2946
3032
|
"isOptional": false,
|
|
2947
3033
|
"releaseTag": "Public",
|
|
2948
|
-
"name": "
|
|
3034
|
+
"name": "_ajaxData",
|
|
2949
3035
|
"propertyTypeTokenRange": {
|
|
2950
3036
|
"startIndex": 1,
|
|
2951
3037
|
"endIndex": 2
|
|
@@ -193,10 +193,21 @@ export interface IInstrumentationRequirements extends IDependenciesPlugin {
|
|
|
193
193
|
includeCorrelationHeaders: (ajaxData: ajaxRecord, input?: Request | string, init?: RequestInit, xhr?: XMLHttpRequestInstrumented) => any;
|
|
194
194
|
}
|
|
195
195
|
|
|
196
|
+
// @public (undocumented)
|
|
197
|
+
export interface XMLHttpRequestData {
|
|
198
|
+
i: {
|
|
199
|
+
[key: string]: ajaxRecord;
|
|
200
|
+
};
|
|
201
|
+
xh?: Array<{
|
|
202
|
+
n: string;
|
|
203
|
+
v: string;
|
|
204
|
+
}>;
|
|
205
|
+
}
|
|
206
|
+
|
|
196
207
|
// @public (undocumented)
|
|
197
208
|
export interface XMLHttpRequestInstrumented extends XMLHttpRequest {
|
|
198
209
|
// (undocumented)
|
|
199
|
-
|
|
210
|
+
_ajaxData: XMLHttpRequestData;
|
|
200
211
|
}
|
|
201
212
|
|
|
202
213
|
// (No @packageDocumentation comment for this package)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Microsoft Application Insights XHR dependencies plugin, 2.8.16-nightly.2308-
|
|
2
|
+
* Microsoft Application Insights XHR dependencies plugin, 2.8.16-nightly.2308-17
|
|
3
3
|
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
4
|
*
|
|
5
5
|
* Microsoft Application Insights Team
|
|
@@ -31,7 +31,7 @@ declare namespace ApplicationInsights {
|
|
|
31
31
|
processTelemetry(item: ITelemetryItem, itemCtx?: IProcessTelemetryContext): void;
|
|
32
32
|
/**
|
|
33
33
|
* Logs dependency call
|
|
34
|
-
* @param dependencyData dependency data object
|
|
34
|
+
* @param dependencyData - dependency data object
|
|
35
35
|
*/
|
|
36
36
|
trackDependencyData(dependency: IDependencyTelemetry, properties?: {
|
|
37
37
|
[key: string]: any;
|
|
@@ -57,7 +57,7 @@ declare namespace ApplicationInsights {
|
|
|
57
57
|
* Protected function to allow sub classes the chance to add additional properties to the dependency event
|
|
58
58
|
* before it's sent. This function calls track, so sub-classes must call this function after they have
|
|
59
59
|
* populated their properties.
|
|
60
|
-
* @param dependencyData dependency data object
|
|
60
|
+
* @param dependencyData - dependency data object
|
|
61
61
|
*/
|
|
62
62
|
protected trackDependencyDataInternal(dependency: IDependencyTelemetry, properties?: {
|
|
63
63
|
[key: string]: any;
|
|
@@ -153,7 +153,7 @@ declare namespace ApplicationInsights {
|
|
|
153
153
|
interface IDependenciesPlugin extends IDependencyListenerContainer {
|
|
154
154
|
/**
|
|
155
155
|
* Logs dependency call
|
|
156
|
-
* @param dependencyData dependency data object
|
|
156
|
+
* @param dependencyData - dependency data object
|
|
157
157
|
*/
|
|
158
158
|
trackDependencyData(dependency: IDependencyTelemetry): void;
|
|
159
159
|
}
|
|
@@ -277,8 +277,24 @@ declare namespace ApplicationInsights {
|
|
|
277
277
|
constructor();
|
|
278
278
|
}
|
|
279
279
|
|
|
280
|
+
interface XMLHttpRequestData {
|
|
281
|
+
/**
|
|
282
|
+
* The "Shared" XHR headers, avoids causing multiple instances
|
|
283
|
+
*/
|
|
284
|
+
xh?: Array<{
|
|
285
|
+
n: string;
|
|
286
|
+
v: string;
|
|
287
|
+
}>;
|
|
288
|
+
/**
|
|
289
|
+
* The individual tracking data for each AI instance
|
|
290
|
+
*/
|
|
291
|
+
i: {
|
|
292
|
+
[key: string]: ajaxRecord;
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
|
|
280
296
|
interface XMLHttpRequestInstrumented extends XMLHttpRequest {
|
|
281
|
-
|
|
297
|
+
_ajaxData: XMLHttpRequestData;
|
|
282
298
|
}
|
|
283
299
|
|
|
284
300
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Application Insights JavaScript SDK - Dependencies Plugin, 2.8.16-nightly.2308-
|
|
2
|
+
* Application Insights JavaScript SDK - Dependencies Plugin, 2.8.16-nightly.2308-17
|
|
3
3
|
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
4
|
*/
|
|
5
5
|
(function (global, factory) {
|
|
@@ -1280,7 +1280,7 @@
|
|
|
1280
1280
|
}
|
|
1281
1281
|
|
|
1282
1282
|
var _objDefineProperty = ObjDefineProperty;
|
|
1283
|
-
var version = "2.8.16-nightly.2308-
|
|
1283
|
+
var version = "2.8.16-nightly.2308-17";
|
|
1284
1284
|
var instanceName = "." + newId(6);
|
|
1285
1285
|
var _dataUid = 0;
|
|
1286
1286
|
function _createAccessor(target, prop, value) {
|
|
@@ -1489,7 +1489,7 @@
|
|
|
1489
1489
|
var INVALID_SPAN_ID = "0000000000000000";
|
|
1490
1490
|
function _isValid(value, len, invalidValue) {
|
|
1491
1491
|
if (value && value[_DYN_LENGTH$2 ] === len && value !== invalidValue) {
|
|
1492
|
-
return !!value.match(/^[\da-f]*$/);
|
|
1492
|
+
return !!value.match(/^[\da-f]*$/i);
|
|
1493
1493
|
}
|
|
1494
1494
|
return false;
|
|
1495
1495
|
}
|
|
@@ -1534,7 +1534,7 @@
|
|
|
1534
1534
|
if (version !== "00" && version !== "ff") {
|
|
1535
1535
|
version = DEFAULT_VERSION;
|
|
1536
1536
|
}
|
|
1537
|
-
return "".concat(version, "-").concat(_formatValue(value.traceId, 32, INVALID_TRACE_ID), "-").concat(_formatValue(value.spanId, 16, INVALID_SPAN_ID), "-").concat(flags);
|
|
1537
|
+
return "".concat(version.toLowerCase(), "-").concat(_formatValue(value.traceId, 32, INVALID_TRACE_ID).toLowerCase(), "-").concat(_formatValue(value.spanId, 16, INVALID_SPAN_ID).toLowerCase(), "-").concat(flags.toLowerCase());
|
|
1538
1538
|
}
|
|
1539
1539
|
return "";
|
|
1540
1540
|
}
|
|
@@ -3106,7 +3106,7 @@
|
|
|
3106
3106
|
|
|
3107
3107
|
var AJAX_MONITOR_PREFIX = "ai.ajxmn.";
|
|
3108
3108
|
var strDiagLog = "diagLog";
|
|
3109
|
-
var
|
|
3109
|
+
var AJAX_DATA_CONTAINER = "_ajaxData";
|
|
3110
3110
|
var STR_FETCH = "fetch";
|
|
3111
3111
|
var ERROR_HEADER = "Failed to monitor XMLHttpRequest";
|
|
3112
3112
|
var ERROR_PREFIX = ", monitoring data for this ajax call ";
|
|
@@ -3138,7 +3138,8 @@
|
|
|
3138
3138
|
}
|
|
3139
3139
|
return _isWebWorker;
|
|
3140
3140
|
}
|
|
3141
|
-
function _supportsAjaxMonitoring(ajaxMonitorInstance) {
|
|
3141
|
+
function _supportsAjaxMonitoring(ajaxMonitorInstance, ajaxDataId) {
|
|
3142
|
+
var _a;
|
|
3142
3143
|
var result = false;
|
|
3143
3144
|
if (isXhrSupported()) {
|
|
3144
3145
|
var proto = XMLHttpRequest[strShimPrototype];
|
|
@@ -3154,7 +3155,13 @@
|
|
|
3154
3155
|
if (result) {
|
|
3155
3156
|
try {
|
|
3156
3157
|
var xhr = new XMLHttpRequest();
|
|
3157
|
-
|
|
3158
|
+
var xhrData = {
|
|
3159
|
+
xh: [],
|
|
3160
|
+
i: (_a = {},
|
|
3161
|
+
_a[ajaxDataId] = {},
|
|
3162
|
+
_a)
|
|
3163
|
+
};
|
|
3164
|
+
xhr[AJAX_DATA_CONTAINER] = xhrData;
|
|
3158
3165
|
var theOpen = XMLHttpRequest[strShimPrototype].open;
|
|
3159
3166
|
XMLHttpRequest[strShimPrototype].open = theOpen;
|
|
3160
3167
|
}
|
|
@@ -3167,11 +3174,44 @@
|
|
|
3167
3174
|
}
|
|
3168
3175
|
return result;
|
|
3169
3176
|
}
|
|
3170
|
-
function
|
|
3177
|
+
var _getAjaxData = function (xhr, ajaxDataId) {
|
|
3178
|
+
if (xhr && ajaxDataId && xhr[AJAX_DATA_CONTAINER]) {
|
|
3179
|
+
return (xhr[AJAX_DATA_CONTAINER].i || {})[ajaxDataId];
|
|
3180
|
+
}
|
|
3181
|
+
return null;
|
|
3182
|
+
};
|
|
3183
|
+
var _addSharedXhrHeaders = function (xhr, name, value) {
|
|
3184
|
+
if (xhr) {
|
|
3185
|
+
var headers = (xhr[AJAX_DATA_CONTAINER] || {}).xh;
|
|
3186
|
+
if (headers) {
|
|
3187
|
+
headers.push({
|
|
3188
|
+
n: name,
|
|
3189
|
+
v: value
|
|
3190
|
+
});
|
|
3191
|
+
}
|
|
3192
|
+
}
|
|
3193
|
+
};
|
|
3194
|
+
var _isHeaderSet = function (xhr, name) {
|
|
3195
|
+
var isPresent = false;
|
|
3196
|
+
if (xhr) {
|
|
3197
|
+
var headers = (xhr[AJAX_DATA_CONTAINER] || {}).xh;
|
|
3198
|
+
if (headers) {
|
|
3199
|
+
arrForEach(headers, function (header) {
|
|
3200
|
+
if (header.n === name) {
|
|
3201
|
+
isPresent = true;
|
|
3202
|
+
return -1;
|
|
3203
|
+
}
|
|
3204
|
+
});
|
|
3205
|
+
}
|
|
3206
|
+
}
|
|
3207
|
+
return isPresent;
|
|
3208
|
+
};
|
|
3209
|
+
function _getFailedAjaxDiagnosticsMessage(xhr, ajaxDataId) {
|
|
3171
3210
|
var result = "";
|
|
3172
3211
|
try {
|
|
3173
|
-
|
|
3174
|
-
|
|
3212
|
+
var ajaxData = _getAjaxData(xhr, ajaxDataId);
|
|
3213
|
+
if (ajaxData && ajaxData[_DYN_REQUEST_URL ]) {
|
|
3214
|
+
result += "(url: '" + ajaxData[_DYN_REQUEST_URL ] + "')";
|
|
3175
3215
|
}
|
|
3176
3216
|
}
|
|
3177
3217
|
catch (e) {
|
|
@@ -3185,10 +3225,10 @@
|
|
|
3185
3225
|
_throwInternal(ajaxMonitorInstance[strDiagLog](), 2 , msgId, message, properties, isUserAct);
|
|
3186
3226
|
}
|
|
3187
3227
|
function _createErrorCallbackFunc(ajaxMonitorInstance, internalMessage, message) {
|
|
3188
|
-
return function (
|
|
3228
|
+
return function (callDetails) {
|
|
3189
3229
|
_throwInternalCritical(ajaxMonitorInstance, internalMessage, message, {
|
|
3190
|
-
ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(
|
|
3191
|
-
exception: dumpObj(
|
|
3230
|
+
ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(callDetails[_DYN_INST ], ajaxMonitorInstance._ajaxDataId),
|
|
3231
|
+
exception: dumpObj(callDetails.err)
|
|
3192
3232
|
});
|
|
3193
3233
|
};
|
|
3194
3234
|
}
|
|
@@ -3322,6 +3362,7 @@
|
|
|
3322
3362
|
var _excludeRequestFromAutoTrackingPatterns;
|
|
3323
3363
|
var _addRequestContext;
|
|
3324
3364
|
var _evtNamespace;
|
|
3365
|
+
var _ajaxDataId;
|
|
3325
3366
|
var _dependencyHandlerId;
|
|
3326
3367
|
var _dependencyListeners;
|
|
3327
3368
|
var _dependencyInitializers;
|
|
@@ -3385,17 +3426,27 @@
|
|
|
3385
3426
|
else if (xhr) {
|
|
3386
3427
|
if (CorrelationIdHelper[_DYN_CAN_INCLUDE_CORRELAT3 ](_config, ajaxData[_DYN_GET_ABSOLUTE_URL ](), currentWindowHost)) {
|
|
3387
3428
|
if (_isUsingAIHeaders) {
|
|
3388
|
-
|
|
3389
|
-
|
|
3390
|
-
|
|
3391
|
-
|
|
3429
|
+
if (!_isHeaderSet(xhr, RequestHeaders[3 ])) {
|
|
3430
|
+
var id = "|" + ajaxData[_DYN_TRACE_ID ] + "." + ajaxData[_DYN_SPAN_ID ];
|
|
3431
|
+
xhr[_DYN_SET_REQUEST_HEADER ](RequestHeaders[3 ], id);
|
|
3432
|
+
if (_enableRequestHeaderTracking) {
|
|
3433
|
+
ajaxData[_DYN_REQUEST_HEADERS ][RequestHeaders[3 ]] = id;
|
|
3434
|
+
}
|
|
3435
|
+
}
|
|
3436
|
+
else {
|
|
3437
|
+
_throwInternalWarning(_self, 71 , "Unable to set [" + RequestHeaders[3 ] + "] as it has already been set by another instance");
|
|
3392
3438
|
}
|
|
3393
3439
|
}
|
|
3394
3440
|
var appId = _config[_DYN_APP_ID ] || (_context && _context[_DYN_APP_ID ]());
|
|
3395
3441
|
if (appId) {
|
|
3396
|
-
|
|
3397
|
-
|
|
3398
|
-
|
|
3442
|
+
if (!_isHeaderSet(xhr, RequestHeaders[0 ])) {
|
|
3443
|
+
xhr[_DYN_SET_REQUEST_HEADER ](RequestHeaders[0 ], RequestHeaders[2 ] + appId);
|
|
3444
|
+
if (_enableRequestHeaderTracking) {
|
|
3445
|
+
ajaxData[_DYN_REQUEST_HEADERS ][RequestHeaders[0 ]] = RequestHeaders[2 ] + appId;
|
|
3446
|
+
}
|
|
3447
|
+
}
|
|
3448
|
+
else {
|
|
3449
|
+
_throwInternalWarning(_self, 71 , "Unable to set [" + RequestHeaders[0 ] + "] as it has already been set by another instance");
|
|
3399
3450
|
}
|
|
3400
3451
|
}
|
|
3401
3452
|
if (_isUsingW3CHeaders) {
|
|
@@ -3403,10 +3454,15 @@
|
|
|
3403
3454
|
if (isNullOrUndefined(traceFlags)) {
|
|
3404
3455
|
traceFlags = 0x01;
|
|
3405
3456
|
}
|
|
3406
|
-
|
|
3407
|
-
|
|
3408
|
-
|
|
3409
|
-
|
|
3457
|
+
if (!_isHeaderSet(xhr, RequestHeaders[4 ])) {
|
|
3458
|
+
var traceParent = formatTraceParent(createTraceParent(ajaxData[_DYN_TRACE_ID ], ajaxData[_DYN_SPAN_ID ], traceFlags));
|
|
3459
|
+
xhr[_DYN_SET_REQUEST_HEADER ](RequestHeaders[4 ], traceParent);
|
|
3460
|
+
if (_enableRequestHeaderTracking) {
|
|
3461
|
+
ajaxData[_DYN_REQUEST_HEADERS ][RequestHeaders[4 ]] = traceParent;
|
|
3462
|
+
}
|
|
3463
|
+
}
|
|
3464
|
+
else {
|
|
3465
|
+
_throwInternalWarning(_self, 71 , "Unable to set [" + RequestHeaders[4 ] + "] as it has already been set by another instance");
|
|
3410
3466
|
}
|
|
3411
3467
|
}
|
|
3412
3468
|
}
|
|
@@ -3463,6 +3519,8 @@
|
|
|
3463
3519
|
_dependencyHandlerId = 0;
|
|
3464
3520
|
_dependencyListeners = [];
|
|
3465
3521
|
_dependencyInitializers = [];
|
|
3522
|
+
_ajaxDataId = createUniqueNamespace("ajaxData");
|
|
3523
|
+
_self._ajaxDataId = _ajaxDataId;
|
|
3466
3524
|
}
|
|
3467
3525
|
function _populateDefaults(config) {
|
|
3468
3526
|
var ctx = createProcessTelemetryContext(null, config, _self[_DYN_CORE ]);
|
|
@@ -3585,18 +3643,18 @@
|
|
|
3585
3643
|
_addHook(InstrumentProto(target, funcName, callbacks));
|
|
3586
3644
|
}
|
|
3587
3645
|
function _instrumentXhr() {
|
|
3588
|
-
if (_supportsAjaxMonitoring(_self) && !_disableAjaxTracking && !_xhrInitialized) {
|
|
3646
|
+
if (_supportsAjaxMonitoring(_self, _ajaxDataId) && !_disableAjaxTracking && !_xhrInitialized) {
|
|
3589
3647
|
_hookProto(XMLHttpRequest, "open", {
|
|
3590
3648
|
ns: _evtNamespace,
|
|
3591
|
-
req: function (
|
|
3649
|
+
req: function (callDetails, method, url, async) {
|
|
3592
3650
|
if (!_disableAjaxTracking) {
|
|
3593
|
-
var xhr =
|
|
3594
|
-
var ajaxData = xhr
|
|
3595
|
-
if (!_isDisabledRequest(xhr, url) && _isMonitoredXhrInstance(xhr, true)) {
|
|
3651
|
+
var xhr = callDetails[_DYN_INST ];
|
|
3652
|
+
var ajaxData = _getAjaxData(xhr, _ajaxDataId);
|
|
3653
|
+
if (!_isDisabledRequest(xhr, url) && _isMonitoredXhrInstance(xhr, ajaxData, true)) {
|
|
3596
3654
|
if (!ajaxData || !ajaxData.xhrMonitoringState[_DYN_OPEN_DONE ]) {
|
|
3597
|
-
_openHandler(xhr, method, url, async);
|
|
3655
|
+
ajaxData = _openHandler(xhr, method, url, async);
|
|
3598
3656
|
}
|
|
3599
|
-
_attachToOnReadyStateChange(xhr);
|
|
3657
|
+
_attachToOnReadyStateChange(xhr, ajaxData);
|
|
3600
3658
|
}
|
|
3601
3659
|
}
|
|
3602
3660
|
},
|
|
@@ -3604,11 +3662,11 @@
|
|
|
3604
3662
|
});
|
|
3605
3663
|
_hookProto(XMLHttpRequest, "send", {
|
|
3606
3664
|
ns: _evtNamespace,
|
|
3607
|
-
req: function (
|
|
3665
|
+
req: function (callDetails, context) {
|
|
3608
3666
|
if (!_disableAjaxTracking) {
|
|
3609
|
-
var xhr =
|
|
3610
|
-
var ajaxData = xhr
|
|
3611
|
-
if (_isMonitoredXhrInstance(xhr) && !ajaxData.xhrMonitoringState[_DYN_SEND_DONE ]) {
|
|
3667
|
+
var xhr = callDetails[_DYN_INST ];
|
|
3668
|
+
var ajaxData = _getAjaxData(xhr, _ajaxDataId);
|
|
3669
|
+
if (_isMonitoredXhrInstance(xhr, ajaxData) && !ajaxData.xhrMonitoringState[_DYN_SEND_DONE ]) {
|
|
3612
3670
|
_createMarkId("xhr", ajaxData);
|
|
3613
3671
|
ajaxData[_DYN_REQUEST_SENT_TIME ] = dateTimeUtilsNow();
|
|
3614
3672
|
_self[_DYN_INCLUDE_CORRELATION_2 ](ajaxData, undefined, undefined, xhr);
|
|
@@ -3620,11 +3678,11 @@
|
|
|
3620
3678
|
});
|
|
3621
3679
|
_hookProto(XMLHttpRequest, "abort", {
|
|
3622
3680
|
ns: _evtNamespace,
|
|
3623
|
-
req: function (
|
|
3681
|
+
req: function (callDetails) {
|
|
3624
3682
|
if (!_disableAjaxTracking) {
|
|
3625
|
-
var xhr =
|
|
3626
|
-
var ajaxData = xhr
|
|
3627
|
-
if (_isMonitoredXhrInstance(xhr) && !ajaxData.xhrMonitoringState[_DYN_ABORT_DONE ]) {
|
|
3683
|
+
var xhr = callDetails[_DYN_INST ];
|
|
3684
|
+
var ajaxData = _getAjaxData(xhr, _ajaxDataId);
|
|
3685
|
+
if (_isMonitoredXhrInstance(xhr, ajaxData) && !ajaxData.xhrMonitoringState[_DYN_ABORT_DONE ]) {
|
|
3628
3686
|
ajaxData[_DYN_ABORTED ] = 1;
|
|
3629
3687
|
ajaxData.xhrMonitoringState[_DYN_ABORT_DONE ] = true;
|
|
3630
3688
|
}
|
|
@@ -3634,11 +3692,17 @@
|
|
|
3634
3692
|
});
|
|
3635
3693
|
_hookProto(XMLHttpRequest, "setRequestHeader", {
|
|
3636
3694
|
ns: _evtNamespace,
|
|
3637
|
-
req: function (
|
|
3638
|
-
if (!_disableAjaxTracking
|
|
3639
|
-
var xhr =
|
|
3640
|
-
|
|
3641
|
-
|
|
3695
|
+
req: function (callDetails, header, value) {
|
|
3696
|
+
if (!_disableAjaxTracking) {
|
|
3697
|
+
var xhr = callDetails[_DYN_INST ];
|
|
3698
|
+
var ajaxData = _getAjaxData(xhr, _ajaxDataId);
|
|
3699
|
+
if (ajaxData && _isMonitoredXhrInstance(xhr, ajaxData)) {
|
|
3700
|
+
_addSharedXhrHeaders(xhr, header, value);
|
|
3701
|
+
if (_enableRequestHeaderTracking && _canIncludeHeaders(header)) {
|
|
3702
|
+
if (ajaxData) {
|
|
3703
|
+
ajaxData[_DYN_REQUEST_HEADERS ][header] = value;
|
|
3704
|
+
}
|
|
3705
|
+
}
|
|
3642
3706
|
}
|
|
3643
3707
|
}
|
|
3644
3708
|
},
|
|
@@ -3692,11 +3756,11 @@
|
|
|
3692
3756
|
}
|
|
3693
3757
|
return isDisabled;
|
|
3694
3758
|
}
|
|
3695
|
-
function _isMonitoredXhrInstance(xhr, excludeAjaxDataValidation) {
|
|
3759
|
+
function _isMonitoredXhrInstance(xhr, ajaxData, excludeAjaxDataValidation) {
|
|
3696
3760
|
var ajaxValidation = true;
|
|
3697
3761
|
var initialized = _xhrInitialized;
|
|
3698
3762
|
if (!isNullOrUndefined(xhr)) {
|
|
3699
|
-
ajaxValidation = excludeAjaxDataValidation === true || !isNullOrUndefined(
|
|
3763
|
+
ajaxValidation = excludeAjaxDataValidation === true || !isNullOrUndefined(ajaxData);
|
|
3700
3764
|
}
|
|
3701
3765
|
return initialized
|
|
3702
3766
|
&& ajaxValidation;
|
|
@@ -3716,7 +3780,9 @@
|
|
|
3716
3780
|
var distributedTraceCtx = _getDistributedTraceCtx();
|
|
3717
3781
|
var traceID = (distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_ID ]()) || generateW3CId();
|
|
3718
3782
|
var spanID = generateW3CId().substr(0, 16);
|
|
3719
|
-
var
|
|
3783
|
+
var xhrRequestData = xhr[AJAX_DATA_CONTAINER] = (xhr[AJAX_DATA_CONTAINER] || { xh: [], i: {} });
|
|
3784
|
+
var ajaxDataCntr = xhrRequestData.i = (xhrRequestData.i || {});
|
|
3785
|
+
var ajaxData = ajaxDataCntr[_ajaxDataId] = (ajaxDataCntr[_ajaxDataId] || new ajaxRecord(traceID, spanID, _self[strDiagLog](), (_a = _self.core) === null || _a === void 0 ? void 0 : _a.getTraceCtx()));
|
|
3720
3786
|
ajaxData[_DYN_TRACE_FLAGS ] = distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_FLAGS ]();
|
|
3721
3787
|
ajaxData[_DYN_METHOD ] = method;
|
|
3722
3788
|
ajaxData[_DYN_REQUEST_URL ] = url;
|
|
@@ -3724,12 +3790,12 @@
|
|
|
3724
3790
|
ajaxData[_DYN_REQUEST_HEADERS ] = {};
|
|
3725
3791
|
ajaxData.async = async;
|
|
3726
3792
|
ajaxData[_DYN_ERROR_STATUS_TEXT ] = _enableAjaxErrorStatusText;
|
|
3727
|
-
|
|
3793
|
+
return ajaxData;
|
|
3728
3794
|
}
|
|
3729
|
-
function _attachToOnReadyStateChange(xhr) {
|
|
3730
|
-
|
|
3795
|
+
function _attachToOnReadyStateChange(xhr, ajaxData) {
|
|
3796
|
+
ajaxData.xhrMonitoringState[_DYN_STATE_CHANGE_ATTACHE14 ] = eventOn(xhr, "readystatechange", function () {
|
|
3731
3797
|
try {
|
|
3732
|
-
if (xhr && xhr.readyState === 4 && _isMonitoredXhrInstance(xhr)) {
|
|
3798
|
+
if (xhr && xhr.readyState === 4 && _isMonitoredXhrInstance(xhr, ajaxData)) {
|
|
3733
3799
|
_onAjaxComplete(xhr);
|
|
3734
3800
|
}
|
|
3735
3801
|
}
|
|
@@ -3737,7 +3803,7 @@
|
|
|
3737
3803
|
var exceptionText = dumpObj(e);
|
|
3738
3804
|
if (!exceptionText || _indexOf(exceptionText[_DYN_TO_LOWER_CASE ](), "c00c023f") === -1) {
|
|
3739
3805
|
_throwInternalCritical(_self, 16 , ERROR_HEADER + " 'readystatechange' event handler" + ERROR_POSTFIX, {
|
|
3740
|
-
ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(xhr),
|
|
3806
|
+
ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(xhr, _ajaxDataId),
|
|
3741
3807
|
exception: exceptionText
|
|
3742
3808
|
});
|
|
3743
3809
|
}
|
|
@@ -3756,12 +3822,12 @@
|
|
|
3756
3822
|
return null;
|
|
3757
3823
|
}
|
|
3758
3824
|
function _onAjaxComplete(xhr) {
|
|
3759
|
-
var ajaxData = xhr
|
|
3825
|
+
var ajaxData = _getAjaxData(xhr, _ajaxDataId);
|
|
3760
3826
|
ajaxData[_DYN_RESPONSE_FINISHED_TI15 ] = dateTimeUtilsNow();
|
|
3761
3827
|
ajaxData[_DYN_STATUS ] = xhr[_DYN_STATUS ];
|
|
3762
3828
|
function _reportXhrError(e, failedProps) {
|
|
3763
3829
|
var errorProps = failedProps || {};
|
|
3764
|
-
errorProps["ajaxDiagnosticsMessage"] = _getFailedAjaxDiagnosticsMessage(xhr);
|
|
3830
|
+
errorProps["ajaxDiagnosticsMessage"] = _getFailedAjaxDiagnosticsMessage(xhr, _ajaxDataId);
|
|
3765
3831
|
if (e) {
|
|
3766
3832
|
errorProps["exception"] = dumpObj(e);
|
|
3767
3833
|
}
|
|
@@ -3821,7 +3887,11 @@
|
|
|
3821
3887
|
}
|
|
3822
3888
|
finally {
|
|
3823
3889
|
try {
|
|
3824
|
-
xhr[
|
|
3890
|
+
var xhrRequestData = (xhr[AJAX_DATA_CONTAINER] || { i: {} });
|
|
3891
|
+
var ajaxDataCntr = (xhrRequestData.i || {});
|
|
3892
|
+
if (ajaxDataCntr[_ajaxDataId]) {
|
|
3893
|
+
ajaxDataCntr[_ajaxDataId] = null;
|
|
3894
|
+
}
|
|
3825
3895
|
}
|
|
3826
3896
|
catch (e) {
|
|
3827
3897
|
}
|
|
@@ -3843,7 +3913,7 @@
|
|
|
3843
3913
|
}
|
|
3844
3914
|
catch (e) {
|
|
3845
3915
|
_throwInternalWarning(_self, 18 , CORRELATION_HEADER_ERROR, {
|
|
3846
|
-
ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(xhr),
|
|
3916
|
+
ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(xhr, _ajaxDataId),
|
|
3847
3917
|
exception: dumpObj(e)
|
|
3848
3918
|
});
|
|
3849
3919
|
}
|