@mswjs/interceptors 0.21.0 → 0.22.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.
Files changed (53) hide show
  1. package/lib/browser/interceptors/XMLHttpRequest/index.js +0 -4
  2. package/lib/browser/interceptors/XMLHttpRequest/index.mjs +0 -4
  3. package/lib/node/RemoteHttpInterceptor.js +11 -15
  4. package/lib/node/RemoteHttpInterceptor.mjs +5 -9
  5. package/lib/node/{chunk-ZSI7MX3V.mjs → chunk-37CATPNG.mjs} +0 -34
  6. package/lib/node/{chunk-ZWCZGO3W.mjs → chunk-CYWTKHFI.mjs} +2 -7
  7. package/lib/node/{chunk-CIN5URNI.mjs → chunk-G6ZTHYZQ.mjs} +1 -1
  8. package/lib/node/{chunk-HDUJCCWF.js → chunk-GGD5JOGB.js} +9 -14
  9. package/lib/node/{chunk-JISWS3Y3.mjs → chunk-KZEQH4YW.mjs} +1 -1
  10. package/lib/node/{chunk-VKKFXSTL.js → chunk-PRX3F52M.js} +31 -24
  11. package/lib/node/{chunk-KZJG2UW7.js → chunk-Q56TMOP5.js} +2 -2
  12. package/lib/node/{chunk-6GWWOJ23.js → chunk-SNNL2EXF.js} +3 -3
  13. package/lib/node/{chunk-FCIAOT7W.mjs → chunk-SWJ33XIS.mjs} +24 -17
  14. package/lib/node/{chunk-QMIXLBOU.js → chunk-WWHITCCI.js} +2 -36
  15. package/lib/node/index.js +4 -4
  16. package/lib/node/index.mjs +3 -3
  17. package/lib/node/interceptors/ClientRequest/index.js +3 -4
  18. package/lib/node/interceptors/ClientRequest/index.mjs +2 -3
  19. package/lib/node/interceptors/XMLHttpRequest/index.js +4 -5
  20. package/lib/node/interceptors/XMLHttpRequest/index.mjs +3 -4
  21. package/lib/node/interceptors/fetch/index.js +2 -2
  22. package/lib/node/interceptors/fetch/index.mjs +1 -1
  23. package/package.json +17 -11
  24. package/src/BatchInterceptor.test.ts +8 -7
  25. package/src/Interceptor.test.ts +6 -5
  26. package/src/RemoteHttpInterceptor.ts +0 -1
  27. package/src/interceptors/ClientRequest/NodeClientRequest.test.ts +108 -86
  28. package/src/interceptors/ClientRequest/NodeClientRequest.ts +40 -22
  29. package/src/interceptors/ClientRequest/index.test.ts +20 -8
  30. package/src/interceptors/ClientRequest/utils/cloneIncomingMessage.test.ts +2 -1
  31. package/src/interceptors/ClientRequest/utils/createRequest.test.ts +1 -0
  32. package/src/interceptors/ClientRequest/utils/createRequest.ts +0 -1
  33. package/src/interceptors/ClientRequest/utils/createResponse.test.ts +1 -3
  34. package/src/interceptors/ClientRequest/utils/createResponse.ts +0 -1
  35. package/src/interceptors/ClientRequest/utils/getIncomingMessageBody.test.ts +5 -4
  36. package/src/interceptors/ClientRequest/utils/normalizeClientRequestArgs.test.ts +19 -18
  37. package/src/interceptors/ClientRequest/utils/normalizeClientRequestEndArgs.test.ts +6 -5
  38. package/src/interceptors/ClientRequest/utils/normalizeClientRequestWriteArgs.test.ts +5 -4
  39. package/src/interceptors/XMLHttpRequest/XMLHttpRequestController.ts +0 -1
  40. package/src/interceptors/XMLHttpRequest/utils/concateArrayBuffer.test.ts +1 -3
  41. package/src/interceptors/XMLHttpRequest/utils/createEvent.test.ts +4 -5
  42. package/src/interceptors/XMLHttpRequest/utils/createResponse.ts +0 -1
  43. package/src/interceptors/fetch/index.ts +1 -2
  44. package/src/utils/AsyncEventEmitter.test.ts +8 -7
  45. package/src/utils/bufferUtils.test.ts +1 -0
  46. package/src/utils/cloneObject.test.ts +6 -5
  47. package/src/utils/getCleanUrl.test.ts +5 -4
  48. package/src/utils/getUrlByRequestOptions.test.ts +11 -10
  49. package/src/utils/getUrlByRequestOptions.ts +14 -1
  50. package/src/utils/isObject.test.ts +4 -3
  51. package/src/utils/parseJson.test.ts +3 -2
  52. package/lib/node/chunk-6V3JXLBF.js +0 -6093
  53. package/lib/node/chunk-NNVTJLQA.mjs +0 -6093
@@ -18,10 +18,6 @@ var _outvariant = require('outvariant');
18
18
  // src/interceptors/XMLHttpRequest/XMLHttpRequestProxy.ts
19
19
  var _until = require('@open-draft/until');
20
20
 
21
- // node_modules/@remix-run/web-fetch/src/lib.js
22
- var { Headers, Request, Response } = globalThis;
23
- var lib_default = globalThis.fetch;
24
-
25
21
  // src/interceptors/XMLHttpRequest/XMLHttpRequestController.ts
26
22
  var _headerspolyfill = require('headers-polyfill');
27
23
 
@@ -18,10 +18,6 @@ import { invariant as invariant2 } from "outvariant";
18
18
  // src/interceptors/XMLHttpRequest/XMLHttpRequestProxy.ts
19
19
  import { until } from "@open-draft/until";
20
20
 
21
- // node_modules/@remix-run/web-fetch/src/lib.js
22
- var { Headers, Request, Response } = globalThis;
23
- var lib_default = globalThis.fetch;
24
-
25
21
  // src/interceptors/XMLHttpRequest/XMLHttpRequestController.ts
26
22
  import { headersToString } from "headers-polyfill";
27
23
 
@@ -1,34 +1,30 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkKZJG2UW7js = require('./chunk-KZJG2UW7.js');
3
+ var _chunkQ56TMOP5js = require('./chunk-Q56TMOP5.js');
4
4
 
5
5
 
6
- var _chunkVKKFXSTLjs = require('./chunk-VKKFXSTL.js');
6
+ var _chunkPRX3F52Mjs = require('./chunk-PRX3F52M.js');
7
7
 
8
8
 
9
- var _chunkHDUJCCWFjs = require('./chunk-HDUJCCWF.js');
10
- require('./chunk-6GWWOJ23.js');
11
-
12
-
13
-
14
- var _chunk6V3JXLBFjs = require('./chunk-6V3JXLBF.js');
9
+ var _chunkGGD5JOGBjs = require('./chunk-GGD5JOGB.js');
10
+ require('./chunk-SNNL2EXF.js');
15
11
  require('./chunk-VQ4DZOBB.js');
16
12
 
17
13
 
18
14
  var _chunkZJOF5MEZjs = require('./chunk-ZJOF5MEZ.js');
19
15
 
20
16
 
21
- var _chunkQMIXLBOUjs = require('./chunk-QMIXLBOU.js');
17
+ var _chunkWWHITCCIjs = require('./chunk-WWHITCCI.js');
22
18
 
23
19
  // src/RemoteHttpInterceptor.ts
24
20
  var _headerspolyfill = require('headers-polyfill');
25
- var RemoteHttpInterceptor = class extends _chunkKZJG2UW7js.BatchInterceptor {
21
+ var RemoteHttpInterceptor = class extends _chunkQ56TMOP5js.BatchInterceptor {
26
22
  constructor() {
27
23
  super({
28
24
  name: "remote-interceptor",
29
25
  interceptors: [
30
- new (0, _chunkVKKFXSTLjs.ClientRequestInterceptor)(),
31
- new (0, _chunkHDUJCCWFjs.XMLHttpRequestInterceptor)()
26
+ new (0, _chunkPRX3F52Mjs.ClientRequestInterceptor)(),
27
+ new (0, _chunkGGD5JOGBjs.XMLHttpRequestInterceptor)()
32
28
  ]
33
29
  });
34
30
  }
@@ -60,7 +56,7 @@ var RemoteHttpInterceptor = class extends _chunkKZJG2UW7js.BatchInterceptor {
60
56
  const responseInit = JSON.parse(
61
57
  serializedResponse
62
58
  );
63
- const mockedResponse = new (0, _chunk6V3JXLBFjs.Response)(responseInit.body, {
59
+ const mockedResponse = new Response(responseInit.body, {
64
60
  status: responseInit.status,
65
61
  statusText: responseInit.statusText,
66
62
  headers: new (0, _headerspolyfill.Headers)(responseInit.headers)
@@ -92,7 +88,7 @@ function requestReviver(key, value) {
92
88
  return value;
93
89
  }
94
90
  }
95
- var _RemoteHttpResolver = class extends _chunkQMIXLBOUjs.Interceptor {
91
+ var _RemoteHttpResolver = class extends _chunkWWHITCCIjs.Interceptor {
96
92
  constructor(options) {
97
93
  super(_RemoteHttpResolver.symbol);
98
94
  this.process = options.process;
@@ -114,7 +110,7 @@ var _RemoteHttpResolver = class extends _chunkQMIXLBOUjs.Interceptor {
114
110
  requestReviver
115
111
  );
116
112
  log("parsed intercepted request", requestJson);
117
- const capturedRequest = new (0, _chunk6V3JXLBFjs.Request)(requestJson.url, {
113
+ const capturedRequest = new Request(requestJson.url, {
118
114
  method: requestJson.method,
119
115
  headers: new (0, _headerspolyfill.Headers)(requestJson.headers),
120
116
  credentials: requestJson.credentials,
@@ -1,24 +1,20 @@
1
1
  import {
2
2
  BatchInterceptor
3
- } from "./chunk-JISWS3Y3.mjs";
3
+ } from "./chunk-KZEQH4YW.mjs";
4
4
  import {
5
5
  ClientRequestInterceptor
6
- } from "./chunk-FCIAOT7W.mjs";
6
+ } from "./chunk-SWJ33XIS.mjs";
7
7
  import {
8
8
  XMLHttpRequestInterceptor
9
- } from "./chunk-ZWCZGO3W.mjs";
10
- import "./chunk-CIN5URNI.mjs";
11
- import {
12
- Request,
13
- Response
14
- } from "./chunk-NNVTJLQA.mjs";
9
+ } from "./chunk-CYWTKHFI.mjs";
10
+ import "./chunk-G6ZTHYZQ.mjs";
15
11
  import "./chunk-GFH37L5D.mjs";
16
12
  import {
17
13
  toInteractiveRequest
18
14
  } from "./chunk-STA6QBYM.mjs";
19
15
  import {
20
16
  Interceptor
21
- } from "./chunk-ZSI7MX3V.mjs";
17
+ } from "./chunk-37CATPNG.mjs";
22
18
 
23
19
  // src/RemoteHttpInterceptor.ts
24
20
  import { Headers, headersToObject } from "headers-polyfill";
@@ -1,9 +1,3 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
1
  var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
8
2
  get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
9
3
  }) : x)(function(x) {
@@ -11,29 +5,6 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
11
5
  return require.apply(this, arguments);
12
6
  throw new Error('Dynamic require of "' + x + '" is not supported');
13
7
  });
14
- var __esm = (fn, res) => function __init() {
15
- return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
16
- };
17
- var __commonJS = (cb, mod) => function __require2() {
18
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
19
- };
20
- var __export = (target, all) => {
21
- for (var name in all)
22
- __defProp(target, name, { get: all[name], enumerable: true });
23
- };
24
- var __copyProps = (to, from, except, desc) => {
25
- if (from && typeof from === "object" || typeof from === "function") {
26
- for (let key of __getOwnPropNames(from))
27
- if (!__hasOwnProp.call(to, key) && key !== except)
28
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
29
- }
30
- return to;
31
- };
32
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
33
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
34
- mod
35
- ));
36
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
37
8
 
38
9
  // src/Interceptor.ts
39
10
  import { debug as debug2 } from "debug";
@@ -279,11 +250,6 @@ var Interceptor = class {
279
250
 
280
251
  export {
281
252
  __require,
282
- __esm,
283
- __commonJS,
284
- __export,
285
- __toESM,
286
- __toCommonJS,
287
253
  getGlobalSymbol,
288
254
  deleteGlobalSymbol,
289
255
  InterceptorReadyState,
@@ -2,12 +2,7 @@ import {
2
2
  decodeBuffer,
3
3
  encodeBuffer,
4
4
  toArrayBuffer
5
- } from "./chunk-CIN5URNI.mjs";
6
- import {
7
- Headers,
8
- Request,
9
- Response
10
- } from "./chunk-NNVTJLQA.mjs";
5
+ } from "./chunk-G6ZTHYZQ.mjs";
11
6
  import {
12
7
  IS_PATCHED_MODULE
13
8
  } from "./chunk-GFH37L5D.mjs";
@@ -17,7 +12,7 @@ import {
17
12
  } from "./chunk-STA6QBYM.mjs";
18
13
  import {
19
14
  Interceptor
20
- } from "./chunk-ZSI7MX3V.mjs";
15
+ } from "./chunk-37CATPNG.mjs";
21
16
 
22
17
  // src/interceptors/XMLHttpRequest/index.ts
23
18
  import { invariant as invariant2 } from "outvariant";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  __require
3
- } from "./chunk-ZSI7MX3V.mjs";
3
+ } from "./chunk-37CATPNG.mjs";
4
4
 
5
5
  // src/shims/webEncoding.ts
6
6
  var TextEncoder = typeof globalThis.TextEncoder === "undefined" ? __require("util").TextEncoder : globalThis.TextEncoder;
@@ -2,12 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- var _chunk6GWWOJ23js = require('./chunk-6GWWOJ23.js');
6
-
7
-
8
-
9
-
10
- var _chunk6V3JXLBFjs = require('./chunk-6V3JXLBF.js');
5
+ var _chunkSNNL2EXFjs = require('./chunk-SNNL2EXF.js');
11
6
 
12
7
 
13
8
  var _chunkVQ4DZOBBjs = require('./chunk-VQ4DZOBB.js');
@@ -17,7 +12,7 @@ var _chunkVQ4DZOBBjs = require('./chunk-VQ4DZOBB.js');
17
12
  var _chunkZJOF5MEZjs = require('./chunk-ZJOF5MEZ.js');
18
13
 
19
14
 
20
- var _chunkQMIXLBOUjs = require('./chunk-QMIXLBOU.js');
15
+ var _chunkWWHITCCIjs = require('./chunk-WWHITCCI.js');
21
16
 
22
17
  // src/interceptors/XMLHttpRequest/index.ts
23
18
  var _outvariant = require('outvariant');
@@ -178,7 +173,7 @@ function parseJson(data) {
178
173
  // src/interceptors/XMLHttpRequest/utils/createResponse.ts
179
174
 
180
175
  function createResponse(request, responseBody) {
181
- return new (0, _chunk6V3JXLBFjs.Response)(responseBody, {
176
+ return new Response(responseBody, {
182
177
  status: request.status,
183
178
  statusText: request.statusText,
184
179
  headers: _headerspolyfill.stringToHeaders.call(void 0, request.getAllResponseHeaders())
@@ -194,7 +189,7 @@ var XMLHttpRequestController = class {
194
189
  this.method = "GET";
195
190
  this.url = null;
196
191
  this.events = /* @__PURE__ */ new Map();
197
- this.requestHeaders = new (0, _chunk6V3JXLBFjs.Headers)();
192
+ this.requestHeaders = new Headers();
198
193
  this.responseBuffer = new Uint8Array();
199
194
  this.request = createProxy(initialRequest, {
200
195
  setProperty: ([propertyName, nextValue], invoke) => {
@@ -236,7 +231,7 @@ var XMLHttpRequestController = class {
236
231
  case "send": {
237
232
  const [body] = args;
238
233
  if (body != null) {
239
- this.requestBody = typeof body === "string" ? _chunk6GWWOJ23js.encodeBuffer.call(void 0, body) : body;
234
+ this.requestBody = typeof body === "string" ? _chunkSNNL2EXFjs.encodeBuffer.call(void 0, body) : body;
240
235
  }
241
236
  this.request.addEventListener("load", () => {
242
237
  if (typeof this.onResponse !== "undefined") {
@@ -390,7 +385,7 @@ var XMLHttpRequestController = class {
390
385
  }
391
386
  }
392
387
  responseBufferToText() {
393
- return _chunk6GWWOJ23js.decodeBuffer.call(void 0, this.responseBuffer);
388
+ return _chunkSNNL2EXFjs.decodeBuffer.call(void 0, this.responseBuffer);
394
389
  }
395
390
  get response() {
396
391
  this.log("getResponse (responseType: %s)", this.request.responseType);
@@ -404,7 +399,7 @@ var XMLHttpRequestController = class {
404
399
  return responseJson;
405
400
  }
406
401
  case "arraybuffer": {
407
- const arrayBuffer = _chunk6GWWOJ23js.toArrayBuffer.call(void 0, this.responseBuffer);
402
+ const arrayBuffer = _chunkSNNL2EXFjs.toArrayBuffer.call(void 0, this.responseBuffer);
408
403
  this.log("resolved response ArrayBuffer", arrayBuffer);
409
404
  return arrayBuffer;
410
405
  }
@@ -506,7 +501,7 @@ var XMLHttpRequestController = class {
506
501
  }
507
502
  toFetchApiRequest() {
508
503
  this.log("converting request to a Fetch API Request...");
509
- const fetchRequest = new (0, _chunk6V3JXLBFjs.Request)(this.url.href, {
504
+ const fetchRequest = new Request(this.url.href, {
510
505
  method: this.method,
511
506
  headers: this.requestHeaders,
512
507
  credentials: this.request.withCredentials ? "include" : "same-origin",
@@ -613,7 +608,7 @@ function createXMLHttpRequestProxy({
613
608
  }
614
609
 
615
610
  // src/interceptors/XMLHttpRequest/index.ts
616
- var _XMLHttpRequestInterceptor = class extends _chunkQMIXLBOUjs.Interceptor {
611
+ var _XMLHttpRequestInterceptor = class extends _chunkWWHITCCIjs.Interceptor {
617
612
  constructor() {
618
613
  super(_XMLHttpRequestInterceptor.symbol);
619
614
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Interceptor
3
- } from "./chunk-ZSI7MX3V.mjs";
3
+ } from "./chunk-37CATPNG.mjs";
4
4
 
5
5
  // src/BatchInterceptor.ts
6
6
  var BatchInterceptor = class extends Interceptor {
@@ -1,16 +1,11 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
2
 
3
3
 
4
-
5
- var _chunk6V3JXLBFjs = require('./chunk-6V3JXLBF.js');
6
-
7
-
8
-
9
4
  var _chunkZJOF5MEZjs = require('./chunk-ZJOF5MEZ.js');
10
5
 
11
6
 
12
7
 
13
- var _chunkQMIXLBOUjs = require('./chunk-QMIXLBOU.js');
8
+ var _chunkWWHITCCIjs = require('./chunk-WWHITCCI.js');
14
9
 
15
10
  // src/interceptors/ClientRequest/index.ts
16
11
  var _http = require('http'); var _http2 = _interopRequireDefault(_http);
@@ -21,7 +16,7 @@ var _https = require('https'); var _https2 = _interopRequireDefault(_https);
21
16
  var _until = require('@open-draft/until');
22
17
 
23
18
  // src/interceptors/ClientRequest/utils/normalizeClientRequestEndArgs.ts
24
- var debug = _chunkQMIXLBOUjs.__require.call(void 0, "debug")("http normalizeClientRequestEndArgs");
19
+ var debug = _chunkWWHITCCIjs.__require.call(void 0, "debug")("http normalizeClientRequestEndArgs");
25
20
  function normalizeClientRequestEndArgs(...args) {
26
21
  debug("arguments", args);
27
22
  const normalizedArgs = new Array(3).fill(null).map((value, index) => args[index] || value);
@@ -104,13 +99,13 @@ function inheritProperties(source, target) {
104
99
  // src/interceptors/ClientRequest/utils/createResponse.ts
105
100
  var _headerspolyfill = require('headers-polyfill');
106
101
  function createResponse(message) {
107
- const readable = new (0, _chunk6V3JXLBFjs.ReadableStream)({
102
+ const readable = new ReadableStream({
108
103
  start(controller) {
109
104
  message.on("data", (chunk) => controller.enqueue(chunk));
110
105
  message.on("end", () => controller.close());
111
106
  }
112
107
  });
113
- return new (0, _chunk6V3JXLBFjs.Response)(readable, {
108
+ return new Response(readable, {
114
109
  status: message.statusCode,
115
110
  statusText: message.statusMessage,
116
111
  headers: _headerspolyfill.objectToHeaders.call(void 0, message.headers)
@@ -132,7 +127,7 @@ function createRequest(clientRequest) {
132
127
  headers.append(headerName, value.toString());
133
128
  }
134
129
  }
135
- return new (0, _chunk6V3JXLBFjs.Request)(clientRequest.url, {
130
+ return new Request(clientRequest.url, {
136
131
  method: clientRequest.method || "GET",
137
132
  headers,
138
133
  credentials: "same-origin",
@@ -141,6 +136,7 @@ function createRequest(clientRequest) {
141
136
  }
142
137
 
143
138
  // src/interceptors/ClientRequest/NodeClientRequest.ts
139
+ var _deferredpromise = require('@open-draft/deferred-promise');
144
140
  var _NodeClientRequest = class extends _http.ClientRequest {
145
141
  constructor([url, requestOptions, callback], options) {
146
142
  super(requestOptions, callback);
@@ -212,6 +208,11 @@ var _NodeClientRequest = class extends _http.ClientRequest {
212
208
  return mockedResponse;
213
209
  }).then(([resolverException, mockedResponse]) => {
214
210
  this.log("the listeners promise awaited!");
211
+ if (!this.headersSent) {
212
+ for (const [headerName, headerValue] of capturedRequest.headers) {
213
+ this.setHeader(headerName, headerValue);
214
+ }
215
+ }
215
216
  if (resolverException) {
216
217
  this.log(
217
218
  "encountered resolver exception, aborting request...",
@@ -221,9 +222,6 @@ var _NodeClientRequest = class extends _http.ClientRequest {
221
222
  this.terminate();
222
223
  return this;
223
224
  }
224
- for (const [headerName, headerValue] of capturedRequest.headers) {
225
- this.setHeader(headerName, headerValue);
226
- }
227
225
  if (mockedResponse) {
228
226
  const responseClone = mockedResponse.clone();
229
227
  this.log("received mocked response:", mockedResponse);
@@ -324,9 +322,13 @@ var _NodeClientRequest = class extends _http.ClientRequest {
324
322
  });
325
323
  }
326
324
  this.log("mocked response headers ready:", headers);
325
+ const isResponseStreamRead = new (0, _deferredpromise.DeferredPromise)();
327
326
  const closeResponseStream = () => {
327
+ this.log("closing response stream...");
328
328
  this.response.push(null);
329
329
  this.response.complete = true;
330
+ isResponseStreamRead.resolve();
331
+ this.log("closed response stream!");
330
332
  };
331
333
  if (body) {
332
334
  const bodyReader = body.getReader();
@@ -343,14 +345,16 @@ var _NodeClientRequest = class extends _http.ClientRequest {
343
345
  } else {
344
346
  closeResponseStream();
345
347
  }
346
- this.res = this.response;
347
- this.finished = true;
348
- Object.defineProperty(this, "writableEnded", {
349
- value: true
348
+ isResponseStreamRead.then(() => {
349
+ this.res = this.response;
350
+ this.finished = true;
351
+ Object.defineProperty(this, "writableEnded", {
352
+ value: true
353
+ });
354
+ this.emit("finish");
355
+ this.emit("response", this.response);
356
+ this.terminate();
350
357
  });
351
- this.emit("finish");
352
- this.emit("response", this.response);
353
- this.terminate();
354
358
  }
355
359
  terminate() {
356
360
  var _a;
@@ -396,7 +400,7 @@ function getRequestOptionsByUrl(url) {
396
400
 
397
401
  // src/utils/getUrlByRequestOptions.ts
398
402
 
399
- var debug3 = _chunkQMIXLBOUjs.__require.call(void 0, "debug")("utils getUrlByRequestOptions");
403
+ var debug3 = _chunkWWHITCCIjs.__require.call(void 0, "debug")("utils getUrlByRequestOptions");
400
404
  var DEFAULT_PATH = "/";
401
405
  var DEFAULT_PROTOCOL = "http:";
402
406
  var DEFAULT_HOST = "localhost";
@@ -437,6 +441,9 @@ function getAuthByRequestOptions(options) {
437
441
  return { username, password };
438
442
  }
439
443
  }
444
+ function isRawIPv6Address(host) {
445
+ return host.includes(":") && !host.startsWith("[") && !host.endsWith("]");
446
+ }
440
447
  function getUrlByRequestOptions(options) {
441
448
  debug3("request options", options);
442
449
  const protocol = getProtocolByRequestOptions(options);
@@ -448,7 +455,7 @@ function getUrlByRequestOptions(options) {
448
455
  debug3("host", host);
449
456
  debug3("port", port);
450
457
  debug3("path", path);
451
- const baseUrl = `${protocol}//${host}`;
458
+ const baseUrl = `${protocol}//${isRawIPv6Address(host) ? `[${host}]` : host}`;
452
459
  debug3("base URL:", baseUrl);
453
460
  const url = options.uri ? new URL(options.uri.href) : new URL(path, baseUrl);
454
461
  if (port) {
@@ -465,7 +472,7 @@ function getUrlByRequestOptions(options) {
465
472
  }
466
473
 
467
474
  // src/utils/cloneObject.ts
468
- var debug4 = _chunkQMIXLBOUjs.__require.call(void 0, "debug")("cloneObject");
475
+ var debug4 = _chunkWWHITCCIjs.__require.call(void 0, "debug")("cloneObject");
469
476
  function isPlainObject(obj) {
470
477
  var _a;
471
478
  debug4("is plain object?", obj);
@@ -626,7 +633,7 @@ function request(protocol, options) {
626
633
  }
627
634
 
628
635
  // src/interceptors/ClientRequest/index.ts
629
- var _ClientRequestInterceptor = class extends _chunkQMIXLBOUjs.Interceptor {
636
+ var _ClientRequestInterceptor = class extends _chunkWWHITCCIjs.Interceptor {
630
637
  constructor() {
631
638
  super(_ClientRequestInterceptor.symbol);
632
639
  this.modules = /* @__PURE__ */ new Map();
@@ -1,9 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkQMIXLBOUjs = require('./chunk-QMIXLBOU.js');
3
+ var _chunkWWHITCCIjs = require('./chunk-WWHITCCI.js');
4
4
 
5
5
  // src/BatchInterceptor.ts
6
- var BatchInterceptor = class extends _chunkQMIXLBOUjs.Interceptor {
6
+ var BatchInterceptor = class extends _chunkWWHITCCIjs.Interceptor {
7
7
  constructor(options) {
8
8
  BatchInterceptor.symbol = Symbol(options.name);
9
9
  super(BatchInterceptor.symbol);
@@ -1,10 +1,10 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkQMIXLBOUjs = require('./chunk-QMIXLBOU.js');
3
+ var _chunkWWHITCCIjs = require('./chunk-WWHITCCI.js');
4
4
 
5
5
  // src/shims/webEncoding.ts
6
- var TextEncoder = typeof globalThis.TextEncoder === "undefined" ? _chunkQMIXLBOUjs.__require.call(void 0, "util").TextEncoder : globalThis.TextEncoder;
7
- var TextDecoder = typeof globalThis.TextDecoder === "undefined" ? _chunkQMIXLBOUjs.__require.call(void 0, "util").TextDecoder : globalThis.TextDecoder;
6
+ var TextEncoder = typeof globalThis.TextEncoder === "undefined" ? _chunkWWHITCCIjs.__require.call(void 0, "util").TextEncoder : globalThis.TextEncoder;
7
+ var TextDecoder = typeof globalThis.TextDecoder === "undefined" ? _chunkWWHITCCIjs.__require.call(void 0, "util").TextDecoder : globalThis.TextDecoder;
8
8
 
9
9
  // src/utils/bufferUtils.ts
10
10
  var encoder = new TextEncoder();
@@ -1,8 +1,3 @@
1
- import {
2
- ReadableStream,
3
- Request,
4
- Response
5
- } from "./chunk-NNVTJLQA.mjs";
6
1
  import {
7
2
  toInteractiveRequest,
8
3
  uuidv4
@@ -10,7 +5,7 @@ import {
10
5
  import {
11
6
  Interceptor,
12
7
  __require
13
- } from "./chunk-ZSI7MX3V.mjs";
8
+ } from "./chunk-37CATPNG.mjs";
14
9
 
15
10
  // src/interceptors/ClientRequest/index.ts
16
11
  import http from "http";
@@ -141,6 +136,7 @@ function createRequest(clientRequest) {
141
136
  }
142
137
 
143
138
  // src/interceptors/ClientRequest/NodeClientRequest.ts
139
+ import { DeferredPromise } from "@open-draft/deferred-promise";
144
140
  var _NodeClientRequest = class extends ClientRequest {
145
141
  constructor([url, requestOptions, callback], options) {
146
142
  super(requestOptions, callback);
@@ -212,6 +208,11 @@ var _NodeClientRequest = class extends ClientRequest {
212
208
  return mockedResponse;
213
209
  }).then(([resolverException, mockedResponse]) => {
214
210
  this.log("the listeners promise awaited!");
211
+ if (!this.headersSent) {
212
+ for (const [headerName, headerValue] of capturedRequest.headers) {
213
+ this.setHeader(headerName, headerValue);
214
+ }
215
+ }
215
216
  if (resolverException) {
216
217
  this.log(
217
218
  "encountered resolver exception, aborting request...",
@@ -221,9 +222,6 @@ var _NodeClientRequest = class extends ClientRequest {
221
222
  this.terminate();
222
223
  return this;
223
224
  }
224
- for (const [headerName, headerValue] of capturedRequest.headers) {
225
- this.setHeader(headerName, headerValue);
226
- }
227
225
  if (mockedResponse) {
228
226
  const responseClone = mockedResponse.clone();
229
227
  this.log("received mocked response:", mockedResponse);
@@ -324,9 +322,13 @@ var _NodeClientRequest = class extends ClientRequest {
324
322
  });
325
323
  }
326
324
  this.log("mocked response headers ready:", headers);
325
+ const isResponseStreamRead = new DeferredPromise();
327
326
  const closeResponseStream = () => {
327
+ this.log("closing response stream...");
328
328
  this.response.push(null);
329
329
  this.response.complete = true;
330
+ isResponseStreamRead.resolve();
331
+ this.log("closed response stream!");
330
332
  };
331
333
  if (body) {
332
334
  const bodyReader = body.getReader();
@@ -343,14 +345,16 @@ var _NodeClientRequest = class extends ClientRequest {
343
345
  } else {
344
346
  closeResponseStream();
345
347
  }
346
- this.res = this.response;
347
- this.finished = true;
348
- Object.defineProperty(this, "writableEnded", {
349
- value: true
348
+ isResponseStreamRead.then(() => {
349
+ this.res = this.response;
350
+ this.finished = true;
351
+ Object.defineProperty(this, "writableEnded", {
352
+ value: true
353
+ });
354
+ this.emit("finish");
355
+ this.emit("response", this.response);
356
+ this.terminate();
350
357
  });
351
- this.emit("finish");
352
- this.emit("response", this.response);
353
- this.terminate();
354
358
  }
355
359
  terminate() {
356
360
  var _a;
@@ -437,6 +441,9 @@ function getAuthByRequestOptions(options) {
437
441
  return { username, password };
438
442
  }
439
443
  }
444
+ function isRawIPv6Address(host) {
445
+ return host.includes(":") && !host.startsWith("[") && !host.endsWith("]");
446
+ }
440
447
  function getUrlByRequestOptions(options) {
441
448
  debug3("request options", options);
442
449
  const protocol = getProtocolByRequestOptions(options);
@@ -448,7 +455,7 @@ function getUrlByRequestOptions(options) {
448
455
  debug3("host", host);
449
456
  debug3("port", port);
450
457
  debug3("path", path);
451
- const baseUrl = `${protocol}//${host}`;
458
+ const baseUrl = `${protocol}//${isRawIPv6Address(host) ? `[${host}]` : host}`;
452
459
  debug3("base URL:", baseUrl);
453
460
  const url = options.uri ? new URL(options.uri.href) : new URL(path, baseUrl);
454
461
  if (port) {
@@ -1,39 +1,10 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
8
2
  get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
9
3
  }) : x)(function(x) {
10
4
  if (typeof require !== "undefined")
11
5
  return require.apply(this, arguments);
12
6
  throw new Error('Dynamic require of "' + x + '" is not supported');
13
7
  });
14
- var __esm = (fn, res) => function __init() {
15
- return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
16
- };
17
- var __commonJS = (cb, mod) => function __require2() {
18
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
19
- };
20
- var __export = (target, all) => {
21
- for (var name in all)
22
- __defProp(target, name, { get: all[name], enumerable: true });
23
- };
24
- var __copyProps = (to, from, except, desc) => {
25
- if (from && typeof from === "object" || typeof from === "function") {
26
- for (let key of __getOwnPropNames(from))
27
- if (!__hasOwnProp.call(to, key) && key !== except)
28
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
29
- }
30
- return to;
31
- };
32
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
33
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
34
- mod
35
- ));
36
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
37
8
 
38
9
  // src/Interceptor.ts
39
10
  var _debug = require('debug');
@@ -283,9 +254,4 @@ var Interceptor = class {
283
254
 
284
255
 
285
256
 
286
-
287
-
288
-
289
-
290
-
291
- exports.__require = __require; exports.__esm = __esm; exports.__commonJS = __commonJS; exports.__export = __export; exports.__toESM = __toESM; exports.__toCommonJS = __toCommonJS; exports.getGlobalSymbol = getGlobalSymbol; exports.deleteGlobalSymbol = deleteGlobalSymbol; exports.InterceptorReadyState = InterceptorReadyState; exports.Interceptor = Interceptor;
257
+ exports.__require = __require; exports.getGlobalSymbol = getGlobalSymbol; exports.deleteGlobalSymbol = deleteGlobalSymbol; exports.InterceptorReadyState = InterceptorReadyState; exports.Interceptor = Interceptor;