@@ -90,9 +90,7 @@ export function trustedReplaceXhrResponse(source, pattern = '', replacement = ''
90
90
const nativeOpen = window . XMLHttpRequest . prototype . open ;
91
91
const nativeSend = window . XMLHttpRequest . prototype . send ;
92
92
93
- let shouldReplace = false ;
94
93
let xhrData ;
95
- let requestHeaders = [ ] ;
96
94
97
95
const openWrapper = ( target , thisArg , args ) => {
98
96
// eslint-disable-next-line prefer-spread
@@ -106,13 +104,16 @@ export function trustedReplaceXhrResponse(source, pattern = '', replacement = ''
106
104
return Reflect . apply ( target , thisArg , args ) ;
107
105
}
108
106
109
- shouldReplace = matchRequestProps ( source , propsToMatch , xhrData ) ;
107
+ if ( matchRequestProps ( source , propsToMatch , xhrData ) ) {
108
+ thisArg . shouldBePrevented = true ;
109
+ }
110
110
111
111
// Trap setRequestHeader of target xhr object to mimic request headers later
112
- if ( shouldReplace ) {
112
+ if ( thisArg . shouldBePrevented ) {
113
+ thisArg . collectedHeaders = [ ] ;
113
114
const setRequestHeaderWrapper = ( target , thisArg , args ) => {
114
115
// Collect headers
115
- requestHeaders . push ( args ) ;
116
+ thisArg . collectedHeaders . push ( args ) ;
116
117
return Reflect . apply ( target , thisArg , args ) ;
117
118
} ;
118
119
@@ -129,7 +130,7 @@ export function trustedReplaceXhrResponse(source, pattern = '', replacement = ''
129
130
} ;
130
131
131
132
const sendWrapper = ( target , thisArg , args ) => {
132
- if ( ! shouldReplace ) {
133
+ if ( ! thisArg . shouldBePrevented ) {
133
134
return Reflect . apply ( target , thisArg , args ) ;
134
135
}
135
136
@@ -197,13 +198,13 @@ export function trustedReplaceXhrResponse(source, pattern = '', replacement = ''
197
198
198
199
// Mimic request headers before sending
199
200
// setRequestHeader can only be called on open request objects
200
- requestHeaders . forEach ( ( header ) => {
201
+ thisArg . collectedHeaders . forEach ( ( header ) => {
201
202
const name = header [ 0 ] ;
202
203
const value = header [ 1 ] ;
203
204
204
205
forgedRequest . setRequestHeader ( name , value ) ;
205
206
} ) ;
206
- requestHeaders = [ ] ;
207
+ thisArg . collectedHeaders = [ ] ;
207
208
208
209
try {
209
210
nativeSend . call ( forgedRequest , args ) ;
0 commit comments