@mswjs/interceptors 0.14.0 → 0.15.1
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/lib/interceptors/ClientRequest/NodeClientRequest.js +11 -3
- package/lib/interceptors/ClientRequest/NodeClientRequest.js.map +1 -1
- package/lib/interceptors/ClientRequest/http.request.js +1 -1
- package/lib/interceptors/ClientRequest/http.request.js.map +1 -1
- package/lib/interceptors/ClientRequest/utils/normalizeClientRequestArgs.js +14 -0
- package/lib/interceptors/ClientRequest/utils/normalizeClientRequestArgs.js.map +1 -1
- package/package.json +2 -2
- package/src/interceptors/ClientRequest/NodeClientRequest.ts +15 -3
- package/src/interceptors/ClientRequest/http.request.ts +1 -1
- package/src/interceptors/ClientRequest/utils/normalizeClientRequestArgs.test.ts +43 -7
- package/src/interceptors/ClientRequest/utils/normalizeClientRequestArgs.ts +29 -2
|
@@ -105,7 +105,7 @@ var NodeClientRequest = /** @class */ (function (_super) {
|
|
|
105
105
|
_this.responseSource = 'mock';
|
|
106
106
|
_this.requestBody = [];
|
|
107
107
|
_this.log = debug_1.debug("http " + requestOptions.method + " " + url.href);
|
|
108
|
-
_this.log('constructing ClientRequest
|
|
108
|
+
_this.log('constructing ClientRequest using options:', {
|
|
109
109
|
url: url,
|
|
110
110
|
requestOptions: requestOptions,
|
|
111
111
|
callback: callback,
|
|
@@ -130,17 +130,23 @@ var NodeClientRequest = /** @class */ (function (_super) {
|
|
|
130
130
|
chunk: chunk,
|
|
131
131
|
encoding: encoding,
|
|
132
132
|
callback: function (error) {
|
|
133
|
+
_this.log('executing custom callback...');
|
|
133
134
|
if (error) {
|
|
134
135
|
_this.log('error while writing chunk!', error);
|
|
135
136
|
}
|
|
136
137
|
else {
|
|
137
138
|
_this.log('request chunk successfully written!');
|
|
138
139
|
}
|
|
140
|
+
/**
|
|
141
|
+
* @todo Do not call callback if the `chunk` is empty.
|
|
142
|
+
* @see https://nodejs.org/api/http.html#requestwritechunk-encoding-callback
|
|
143
|
+
*/
|
|
144
|
+
_this.log('executing custom write callback:', callback);
|
|
139
145
|
callback === null || callback === void 0 ? void 0 : callback(error);
|
|
140
146
|
},
|
|
141
147
|
});
|
|
142
|
-
this.log('chunk successfully stored!');
|
|
143
148
|
this.requestBody = concatChunkToBuffer_1.concatChunkToBuffer(chunk, this.requestBody);
|
|
149
|
+
this.log('chunk successfully stored!', this.requestBody);
|
|
144
150
|
// Do not write the request body chunks to prevent
|
|
145
151
|
// the Socket from sending data to a potentially existing
|
|
146
152
|
// server when there is a mocked response defined.
|
|
@@ -166,6 +172,7 @@ var NodeClientRequest = /** @class */ (function (_super) {
|
|
|
166
172
|
}); }); }).then(function (_a) {
|
|
167
173
|
var e_1, _b;
|
|
168
174
|
var _c = __read(_a, 2), resolverException = _c[0], mockedResponse = _c[1];
|
|
175
|
+
_this.log('resolver has finished');
|
|
169
176
|
// Halt the request whenever the resolver throws an exception.
|
|
170
177
|
if (resolverException) {
|
|
171
178
|
_this.log('encountered resolver exception, aborting request...', resolverException);
|
|
@@ -294,6 +301,7 @@ var NodeClientRequest = /** @class */ (function (_super) {
|
|
|
294
301
|
// it later if this request won't have any mocked response.
|
|
295
302
|
if (!this.capturedError) {
|
|
296
303
|
this.capturedError = error;
|
|
304
|
+
this.log('captured the first error:', this.capturedError);
|
|
297
305
|
}
|
|
298
306
|
return false;
|
|
299
307
|
}
|
|
@@ -395,7 +403,7 @@ var NodeClientRequest = /** @class */ (function (_super) {
|
|
|
395
403
|
id: uuid_1.uuidv4(),
|
|
396
404
|
url: this.url,
|
|
397
405
|
method: this.options.method || 'GET',
|
|
398
|
-
credentials: '
|
|
406
|
+
credentials: 'same-origin',
|
|
399
407
|
headers: headers,
|
|
400
408
|
body: body,
|
|
401
409
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeClientRequest.js","sourceRoot":"","sources":["../../../src/interceptors/ClientRequest/NodeClientRequest.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAuC;AAEvC,6BAAqD;AACrD,2CAAyC;AACzC,4CAA+D;AAO/D,yCAAyC;AACzC,mEAAiE;AACjE,uFAG8C;AAE9C,2DAAyD;AACzD,yEAAuE;AACvE,iEAA+D;AAC/D,2FAIgD;AAChD,qEAAmE;AASnE;IAAuC,qCAAa;IAuBlD,2BACE,EAA4D,EAC5D,OAA0B;YAD1B,KAAA,aAA4D,EAA3D,GAAG,QAAA,EAAE,cAAc,QAAA,EAAE,QAAQ,QAAA;QADhC,YAIE,kBAAM,cAAc,EAAE,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"NodeClientRequest.js","sourceRoot":"","sources":["../../../src/interceptors/ClientRequest/NodeClientRequest.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,7 +32,7 @@ function request(protocol, resolver, observer) {
|
|
|
32
32
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
33
33
|
args[_i] = arguments[_i];
|
|
34
34
|
}
|
|
35
|
-
log('
|
|
35
|
+
log('request call (protocol "%s"):', protocol, args);
|
|
36
36
|
var clientRequestArgs = normalizeClientRequestArgs_1.normalizeClientRequestArgs.apply(void 0, __spreadArray([protocol + ":"], __read(args)));
|
|
37
37
|
return new NodeClientRequest_1.NodeClientRequest(clientRequestArgs, {
|
|
38
38
|
observer: observer,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.request.js","sourceRoot":"","sources":["../../../src/interceptors/ClientRequest/http.request.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAA6B;AAG7B,yDAAiE;AACjE,iFAG2C;AAE3C,IAAM,GAAG,GAAG,aAAK,CAAC,cAAc,CAAC,CAAA;AAEjC,SAAgB,OAAO,CACrB,QAAkB,EAClB,QAAkB,EAClB,QAAkB;IAElB,OAAO;QAAC,cAA0B;aAA1B,UAA0B,EAA1B,qBAA0B,EAA1B,IAA0B;YAA1B,yBAA0B;;QAChC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"http.request.js","sourceRoot":"","sources":["../../../src/interceptors/ClientRequest/http.request.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAA6B;AAG7B,yDAAiE;AACjE,iFAG2C;AAE3C,IAAM,GAAG,GAAG,aAAK,CAAC,cAAc,CAAC,CAAA;AAEjC,SAAgB,OAAO,CACrB,QAAkB,EAClB,QAAkB,EAClB,QAAkB;IAElB,OAAO;QAAC,cAA0B;aAA1B,UAA0B,EAA1B,qBAA0B,EAA1B,IAA0B;YAA1B,yBAA0B;;QAChC,GAAG,CAAC,+BAA+B,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;QAEpD,IAAM,iBAAiB,GAAG,uDAA0B,8BAC/C,QAAQ,MAAG,UACX,IAAI,GACR,CAAA;QACD,OAAO,IAAI,qCAAiB,CAAC,iBAAiB,EAAE;YAC9C,QAAQ,UAAA;YACR,QAAQ,UAAA;SACT,CAAC,CAAA;IACJ,CAAC,CAAA;AACH,CAAC;AAjBD,0BAiBC"}
|
|
@@ -160,8 +160,22 @@ function normalizeClientRequestArgs(defaultProtocol) {
|
|
|
160
160
|
options.agent = agent;
|
|
161
161
|
log('resolved fallback agent:', agent);
|
|
162
162
|
}
|
|
163
|
+
/**
|
|
164
|
+
* Ensure that the default Agent is always set.
|
|
165
|
+
* This prevents the protocol mismatch for requests with { agent: false },
|
|
166
|
+
* where the global Agent is inferred.
|
|
167
|
+
* @see https://github.com/mswjs/msw/issues/1150
|
|
168
|
+
* @see https://github.com/nodejs/node/blob/418ff70b810f0e7112d48baaa72932a56cfa213b/lib/_http_client.js#L130
|
|
169
|
+
* @see https://github.com/nodejs/node/blob/418ff70b810f0e7112d48baaa72932a56cfa213b/lib/_http_client.js#L157-L159
|
|
170
|
+
*/
|
|
171
|
+
if (!options._defaultAgent) {
|
|
172
|
+
log('has no default agent, setting the default agent for "%s"', options.protocol);
|
|
173
|
+
options._defaultAgent =
|
|
174
|
+
options.protocol === 'https:' ? https_1.globalAgent : http_1.globalAgent;
|
|
175
|
+
}
|
|
163
176
|
log('successfully resolved url:', url.href);
|
|
164
177
|
log('successfully resolved options:', options);
|
|
178
|
+
log('successfully resolved callback:', callback);
|
|
165
179
|
return [url, options, callback];
|
|
166
180
|
}
|
|
167
181
|
exports.normalizeClientRequestArgs = normalizeClientRequestArgs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalizeClientRequestArgs.js","sourceRoot":"","sources":["../../../../src/interceptors/ClientRequest/utils/normalizeClientRequestArgs.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAA6B;AAC7B,
|
|
1
|
+
{"version":3,"file":"normalizeClientRequestArgs.js","sourceRoot":"","sources":["../../../../src/interceptors/ClientRequest/utils/normalizeClientRequestArgs.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mswjs/interceptors",
|
|
3
3
|
"description": "Low-level HTTP/HTTPS/XHR/fetch request interception library.",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.15.1",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"typings": "lib/index.d.ts",
|
|
7
7
|
"author": "Artem Zakharchenko",
|
|
8
8
|
"license": "MIT",
|
|
9
9
|
"engines": {
|
|
10
|
-
"node": ">=
|
|
10
|
+
"node": ">=14"
|
|
11
11
|
},
|
|
12
12
|
"scripts": {
|
|
13
13
|
"start": "tsc --build -w",
|
|
@@ -63,7 +63,8 @@ export class NodeClientRequest extends ClientRequest {
|
|
|
63
63
|
super(requestOptions, callback)
|
|
64
64
|
|
|
65
65
|
this.log = debug(`http ${requestOptions.method} ${url.href}`)
|
|
66
|
-
|
|
66
|
+
|
|
67
|
+
this.log('constructing ClientRequest using options:', {
|
|
67
68
|
url,
|
|
68
69
|
requestOptions,
|
|
69
70
|
callback,
|
|
@@ -86,18 +87,25 @@ export class NodeClientRequest extends ClientRequest {
|
|
|
86
87
|
chunk,
|
|
87
88
|
encoding,
|
|
88
89
|
callback: (error?: Error | null) => {
|
|
90
|
+
this.log('executing custom callback...')
|
|
91
|
+
|
|
89
92
|
if (error) {
|
|
90
93
|
this.log('error while writing chunk!', error)
|
|
91
94
|
} else {
|
|
92
95
|
this.log('request chunk successfully written!')
|
|
93
96
|
}
|
|
94
97
|
|
|
98
|
+
/**
|
|
99
|
+
* @todo Do not call callback if the `chunk` is empty.
|
|
100
|
+
* @see https://nodejs.org/api/http.html#requestwritechunk-encoding-callback
|
|
101
|
+
*/
|
|
102
|
+
this.log('executing custom write callback:', callback)
|
|
95
103
|
callback?.(error)
|
|
96
104
|
},
|
|
97
105
|
})
|
|
98
106
|
|
|
99
|
-
this.log('chunk successfully stored!')
|
|
100
107
|
this.requestBody = concatChunkToBuffer(chunk, this.requestBody)
|
|
108
|
+
this.log('chunk successfully stored!', this.requestBody)
|
|
101
109
|
|
|
102
110
|
// Do not write the request body chunks to prevent
|
|
103
111
|
// the Socket from sending data to a potentially existing
|
|
@@ -121,6 +129,8 @@ export class NodeClientRequest extends ClientRequest {
|
|
|
121
129
|
// Node.js 16 forces "ClientRequest.end" to be synchronous and return "this".
|
|
122
130
|
until(async () => this.resolver(isomorphicRequest, this.response)).then(
|
|
123
131
|
([resolverException, mockedResponse]) => {
|
|
132
|
+
this.log('resolver has finished')
|
|
133
|
+
|
|
124
134
|
// Halt the request whenever the resolver throws an exception.
|
|
125
135
|
if (resolverException) {
|
|
126
136
|
this.log(
|
|
@@ -172,6 +182,7 @@ export class NodeClientRequest extends ClientRequest {
|
|
|
172
182
|
// in order to prevent the Socket to communicate with a potentially
|
|
173
183
|
// existing server.
|
|
174
184
|
this.log('writing request chunks...', this.chunks)
|
|
185
|
+
|
|
175
186
|
for (const { chunk, encoding, callback } of this.chunks) {
|
|
176
187
|
encoding
|
|
177
188
|
? super.write(chunk, encoding, callback)
|
|
@@ -264,6 +275,7 @@ export class NodeClientRequest extends ClientRequest {
|
|
|
264
275
|
// it later if this request won't have any mocked response.
|
|
265
276
|
if (!this.capturedError) {
|
|
266
277
|
this.capturedError = error
|
|
278
|
+
this.log('captured the first error:', this.capturedError)
|
|
267
279
|
}
|
|
268
280
|
return false
|
|
269
281
|
}
|
|
@@ -373,7 +385,7 @@ export class NodeClientRequest extends ClientRequest {
|
|
|
373
385
|
id: uuidv4(),
|
|
374
386
|
url: this.url,
|
|
375
387
|
method: this.options.method || 'GET',
|
|
376
|
-
credentials: '
|
|
388
|
+
credentials: 'same-origin',
|
|
377
389
|
headers,
|
|
378
390
|
body,
|
|
379
391
|
}
|
|
@@ -15,7 +15,7 @@ export function request(
|
|
|
15
15
|
observer: Observer
|
|
16
16
|
) {
|
|
17
17
|
return (...args: ClientRequestArgs): ClientRequest => {
|
|
18
|
-
log('
|
|
18
|
+
log('request call (protocol "%s"):', protocol, args)
|
|
19
19
|
|
|
20
20
|
const clientRequestArgs = normalizeClientRequestArgs(
|
|
21
21
|
`${protocol}:`,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { parse } from 'url'
|
|
2
|
-
import {
|
|
2
|
+
import { globalAgent as httpGlobalAgent, RequestOptions } from 'http'
|
|
3
|
+
import { Agent as HttpsAgent, globalAgent as httpsGlobalAgent } from 'https'
|
|
3
4
|
import { getUrlByRequestOptions } from '../../../utils/getUrlByRequestOptions'
|
|
4
5
|
import { normalizeClientRequestArgs } from './normalizeClientRequestArgs'
|
|
5
6
|
|
|
@@ -192,8 +193,9 @@ test('handles [URL, RequestOptions, callback] input', () => {
|
|
|
192
193
|
expect(url.href).toEqual('https://mswjs.io/resource')
|
|
193
194
|
|
|
194
195
|
// Options must be preserved.
|
|
195
|
-
expect(options).toEqual({
|
|
196
|
+
expect(options).toEqual<RequestOptions>({
|
|
196
197
|
agent: false,
|
|
198
|
+
_defaultAgent: httpsGlobalAgent,
|
|
197
199
|
protocol: url.protocol,
|
|
198
200
|
method: 'GET',
|
|
199
201
|
headers: {
|
|
@@ -294,12 +296,11 @@ test('sets fallback Agent based on the URL protocol', () => {
|
|
|
294
296
|
'https:',
|
|
295
297
|
'https://github.com'
|
|
296
298
|
)
|
|
299
|
+
const agent = options.agent as HttpsAgent
|
|
297
300
|
|
|
298
|
-
expect(
|
|
299
|
-
expect(
|
|
300
|
-
|
|
301
|
-
options.agent.protocol
|
|
302
|
-
).toEqual(url.protocol)
|
|
301
|
+
expect(agent).toBeInstanceOf(HttpsAgent)
|
|
302
|
+
expect(agent).toHaveProperty('defaultPort', 443)
|
|
303
|
+
expect(agent).toHaveProperty('protocol', url.protocol)
|
|
303
304
|
})
|
|
304
305
|
|
|
305
306
|
test('does not set any fallback Agent given "agent: false" option', () => {
|
|
@@ -312,6 +313,41 @@ test('does not set any fallback Agent given "agent: false" option', () => {
|
|
|
312
313
|
expect(options.agent).toEqual(false)
|
|
313
314
|
})
|
|
314
315
|
|
|
316
|
+
test('sets the default Agent for HTTP request', () => {
|
|
317
|
+
const [, options] = normalizeClientRequestArgs(
|
|
318
|
+
'http:',
|
|
319
|
+
'http://github.com',
|
|
320
|
+
{}
|
|
321
|
+
)
|
|
322
|
+
|
|
323
|
+
expect(options._defaultAgent).toEqual(httpGlobalAgent)
|
|
324
|
+
})
|
|
325
|
+
|
|
326
|
+
test('sets the default Agent for HTTPS request', () => {
|
|
327
|
+
const [, options] = normalizeClientRequestArgs(
|
|
328
|
+
'https:',
|
|
329
|
+
'https://github.com',
|
|
330
|
+
{}
|
|
331
|
+
)
|
|
332
|
+
|
|
333
|
+
expect(options._defaultAgent).toEqual(httpsGlobalAgent)
|
|
334
|
+
})
|
|
335
|
+
|
|
336
|
+
test('preserves a custom default Agent when set', () => {
|
|
337
|
+
const [, options] = normalizeClientRequestArgs(
|
|
338
|
+
'https:',
|
|
339
|
+
'https://github.com',
|
|
340
|
+
{
|
|
341
|
+
/**
|
|
342
|
+
* @note Intentionally incorrect Agent for HTTPS request.
|
|
343
|
+
*/
|
|
344
|
+
_defaultAgent: httpGlobalAgent,
|
|
345
|
+
}
|
|
346
|
+
)
|
|
347
|
+
|
|
348
|
+
expect(options._defaultAgent).toEqual(httpGlobalAgent)
|
|
349
|
+
})
|
|
350
|
+
|
|
315
351
|
test('merges URL-based RequestOptions with the custom RequestOptions', () => {
|
|
316
352
|
const [url, options] = normalizeClientRequestArgs(
|
|
317
353
|
'https:',
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { debug } from 'debug'
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import {
|
|
3
|
+
Agent as HttpAgent,
|
|
4
|
+
globalAgent as httpGlobalAgent,
|
|
5
|
+
IncomingMessage,
|
|
6
|
+
} from 'http'
|
|
7
|
+
import {
|
|
8
|
+
RequestOptions,
|
|
9
|
+
Agent as HttpsAgent,
|
|
10
|
+
globalAgent as httpsGlobalAgent,
|
|
11
|
+
} from 'https'
|
|
4
12
|
import { Url as LegacyURL } from 'url'
|
|
5
13
|
import { getRequestOptionsByUrl } from '../../../utils/getRequestOptionsByUrl'
|
|
6
14
|
import {
|
|
@@ -198,8 +206,27 @@ export function normalizeClientRequestArgs(
|
|
|
198
206
|
log('resolved fallback agent:', agent)
|
|
199
207
|
}
|
|
200
208
|
|
|
209
|
+
/**
|
|
210
|
+
* Ensure that the default Agent is always set.
|
|
211
|
+
* This prevents the protocol mismatch for requests with { agent: false },
|
|
212
|
+
* where the global Agent is inferred.
|
|
213
|
+
* @see https://github.com/mswjs/msw/issues/1150
|
|
214
|
+
* @see https://github.com/nodejs/node/blob/418ff70b810f0e7112d48baaa72932a56cfa213b/lib/_http_client.js#L130
|
|
215
|
+
* @see https://github.com/nodejs/node/blob/418ff70b810f0e7112d48baaa72932a56cfa213b/lib/_http_client.js#L157-L159
|
|
216
|
+
*/
|
|
217
|
+
if (!options._defaultAgent) {
|
|
218
|
+
log(
|
|
219
|
+
'has no default agent, setting the default agent for "%s"',
|
|
220
|
+
options.protocol
|
|
221
|
+
)
|
|
222
|
+
|
|
223
|
+
options._defaultAgent =
|
|
224
|
+
options.protocol === 'https:' ? httpsGlobalAgent : httpGlobalAgent
|
|
225
|
+
}
|
|
226
|
+
|
|
201
227
|
log('successfully resolved url:', url.href)
|
|
202
228
|
log('successfully resolved options:', options)
|
|
229
|
+
log('successfully resolved callback:', callback)
|
|
203
230
|
|
|
204
231
|
return [url, options, callback]
|
|
205
232
|
}
|