@mswjs/interceptors 0.36.9 → 0.37.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 (91) hide show
  1. package/lib/browser/{chunk-Q7PXVXSL.mjs → chunk-4SRQFK76.mjs} +8 -7
  2. package/lib/{node/chunk-EBDS6VMR.mjs.map → browser/chunk-4SRQFK76.mjs.map} +1 -1
  3. package/lib/browser/{chunk-LMBCDE7C.js → chunk-74GCTBGJ.js} +13 -18
  4. package/lib/browser/chunk-74GCTBGJ.js.map +1 -0
  5. package/lib/browser/chunk-CANMNIJA.js +73 -0
  6. package/lib/browser/chunk-CANMNIJA.js.map +1 -0
  7. package/lib/browser/{chunk-RKQSZCUD.js → chunk-D4JUAYEL.js} +11 -10
  8. package/lib/browser/chunk-D4JUAYEL.js.map +1 -0
  9. package/lib/browser/chunk-F4BN745U.mjs +73 -0
  10. package/lib/browser/chunk-F4BN745U.mjs.map +1 -0
  11. package/lib/{node/chunk-VCUEA4PL.js → browser/chunk-FGSEOIC4.js} +48 -16
  12. package/lib/browser/chunk-FGSEOIC4.js.map +1 -0
  13. package/lib/browser/{chunk-4K55BZMG.mjs → chunk-H5O73WD2.mjs} +45 -13
  14. package/lib/browser/chunk-H5O73WD2.mjs.map +1 -0
  15. package/lib/browser/{chunk-C6BKAAQW.mjs → chunk-HER3NHBG.mjs} +8 -13
  16. package/lib/browser/chunk-HER3NHBG.mjs.map +1 -0
  17. package/lib/browser/index.d.ts +21 -6
  18. package/lib/browser/index.js +2 -2
  19. package/lib/browser/index.mjs +5 -5
  20. package/lib/browser/interceptors/XMLHttpRequest/index.js +4 -4
  21. package/lib/browser/interceptors/XMLHttpRequest/index.mjs +3 -3
  22. package/lib/browser/interceptors/fetch/index.js +4 -4
  23. package/lib/browser/interceptors/fetch/index.mjs +3 -3
  24. package/lib/browser/presets/browser.js +6 -6
  25. package/lib/browser/presets/browser.mjs +4 -4
  26. package/lib/node/RemoteHttpInterceptor.js +14 -12
  27. package/lib/node/RemoteHttpInterceptor.js.map +1 -1
  28. package/lib/node/RemoteHttpInterceptor.mjs +8 -6
  29. package/lib/node/RemoteHttpInterceptor.mjs.map +1 -1
  30. package/lib/node/{chunk-3NMVZQIH.mjs → chunk-3CPL565R.mjs} +2 -2
  31. package/lib/node/{chunk-FPLETXGA.js → chunk-4FKJVTJA.js} +21 -24
  32. package/lib/node/chunk-4FKJVTJA.js.map +1 -0
  33. package/lib/node/{chunk-M4WQE4TR.mjs → chunk-5KMS5CTP.mjs} +47 -13
  34. package/lib/node/chunk-5KMS5CTP.mjs.map +1 -0
  35. package/lib/{browser/chunk-UXPG527I.js → node/chunk-6L3PFBGT.js} +51 -17
  36. package/lib/node/chunk-6L3PFBGT.js.map +1 -0
  37. package/lib/node/{chunk-6DIWEMO7.mjs → chunk-7XUH4W74.mjs} +7 -12
  38. package/lib/node/chunk-7XUH4W74.mjs.map +1 -0
  39. package/lib/node/{chunk-X2CFRRWY.js → chunk-BY7XRUDY.js} +11 -10
  40. package/lib/node/chunk-BY7XRUDY.js.map +1 -0
  41. package/lib/node/{chunk-4YT2XSVO.js → chunk-C2QGGUHP.js} +12 -17
  42. package/lib/node/chunk-C2QGGUHP.js.map +1 -0
  43. package/lib/node/{chunk-FQQAJBI2.mjs → chunk-ELLF26MW.mjs} +63 -53
  44. package/lib/node/chunk-ELLF26MW.mjs.map +1 -0
  45. package/lib/node/{chunk-EBDS6VMR.mjs → chunk-MXNT7QYX.mjs} +8 -7
  46. package/lib/{browser/chunk-Q7PXVXSL.mjs.map → node/chunk-MXNT7QYX.mjs.map} +1 -1
  47. package/lib/node/{chunk-AABH3XLQ.js → chunk-WGMDPBIX.js} +63 -53
  48. package/lib/node/chunk-WGMDPBIX.js.map +1 -0
  49. package/lib/node/{chunk-MG3S53QP.mjs → chunk-WWCFTZ4L.mjs} +16 -19
  50. package/lib/node/chunk-WWCFTZ4L.mjs.map +1 -0
  51. package/lib/node/{chunk-PGTBKPWN.js → chunk-YMPTXPHD.js} +3 -3
  52. package/lib/node/index.d.ts +21 -6
  53. package/lib/node/index.js +3 -3
  54. package/lib/node/index.mjs +6 -6
  55. package/lib/node/interceptors/ClientRequest/index.js +4 -4
  56. package/lib/node/interceptors/ClientRequest/index.mjs +3 -3
  57. package/lib/node/interceptors/XMLHttpRequest/index.js +4 -4
  58. package/lib/node/interceptors/XMLHttpRequest/index.mjs +3 -3
  59. package/lib/node/interceptors/fetch/index.js +4 -4
  60. package/lib/node/interceptors/fetch/index.mjs +3 -3
  61. package/lib/node/presets/node.js +8 -8
  62. package/lib/node/presets/node.mjs +5 -5
  63. package/package.json +3 -2
  64. package/src/RemoteHttpInterceptor.ts +3 -1
  65. package/src/index.ts +1 -1
  66. package/src/interceptors/ClientRequest/MockHttpSocket.ts +16 -15
  67. package/src/interceptors/XMLHttpRequest/utils/createResponse.ts +6 -3
  68. package/src/interceptors/fetch/index.ts +5 -11
  69. package/src/utils/fetchUtils.ts +82 -0
  70. package/src/utils/handleRequest.ts +11 -7
  71. package/src/utils/responseUtils.ts +0 -20
  72. package/lib/browser/chunk-4K55BZMG.mjs.map +0 -1
  73. package/lib/browser/chunk-6MOMO77R.mjs +0 -61
  74. package/lib/browser/chunk-6MOMO77R.mjs.map +0 -1
  75. package/lib/browser/chunk-7TPGF5DM.js +0 -61
  76. package/lib/browser/chunk-7TPGF5DM.js.map +0 -1
  77. package/lib/browser/chunk-C6BKAAQW.mjs.map +0 -1
  78. package/lib/browser/chunk-LMBCDE7C.js.map +0 -1
  79. package/lib/browser/chunk-RKQSZCUD.js.map +0 -1
  80. package/lib/browser/chunk-UXPG527I.js.map +0 -1
  81. package/lib/node/chunk-4YT2XSVO.js.map +0 -1
  82. package/lib/node/chunk-6DIWEMO7.mjs.map +0 -1
  83. package/lib/node/chunk-AABH3XLQ.js.map +0 -1
  84. package/lib/node/chunk-FPLETXGA.js.map +0 -1
  85. package/lib/node/chunk-FQQAJBI2.mjs.map +0 -1
  86. package/lib/node/chunk-M4WQE4TR.mjs.map +0 -1
  87. package/lib/node/chunk-MG3S53QP.mjs.map +0 -1
  88. package/lib/node/chunk-VCUEA4PL.js.map +0 -1
  89. package/lib/node/chunk-X2CFRRWY.js.map +0 -1
  90. /package/lib/node/{chunk-3NMVZQIH.mjs.map → chunk-3CPL565R.mjs.map} +0 -0
  91. /package/lib/node/{chunk-PGTBKPWN.js.map → chunk-YMPTXPHD.js.map} +0 -0
@@ -3,9 +3,9 @@ import {
3
3
  encodeBuffer
4
4
  } from "./chunk-6HYIRFX2.mjs";
5
5
  import {
6
- IS_PATCHED_MODULE,
7
- isResponseWithoutBody
8
- } from "./chunk-6MOMO77R.mjs";
6
+ FetchResponse,
7
+ IS_PATCHED_MODULE
8
+ } from "./chunk-F4BN745U.mjs";
9
9
  import {
10
10
  INTERNAL_REQUEST_ID_HEADER_NAME,
11
11
  Interceptor,
@@ -64,6 +64,7 @@ function getCleanUrl(url, isAbsolute = true) {
64
64
  }
65
65
  export {
66
66
  BatchInterceptor,
67
+ FetchResponse,
67
68
  INTERNAL_REQUEST_ID_HEADER_NAME,
68
69
  IS_PATCHED_MODULE,
69
70
  Interceptor,
@@ -73,7 +74,6 @@ export {
73
74
  deleteGlobalSymbol,
74
75
  encodeBuffer,
75
76
  getCleanUrl,
76
- getGlobalSymbol,
77
- isResponseWithoutBody
77
+ getGlobalSymbol
78
78
  };
79
79
  //# sourceMappingURL=index.mjs.map
@@ -1,12 +1,12 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkRKQSZCUDjs = require('../../chunk-RKQSZCUD.js');
3
+ var _chunkD4JUAYELjs = require('../../chunk-D4JUAYEL.js');
4
4
  require('../../chunk-LK6DILFK.js');
5
- require('../../chunk-UXPG527I.js');
6
- require('../../chunk-7TPGF5DM.js');
5
+ require('../../chunk-FGSEOIC4.js');
6
+ require('../../chunk-CANMNIJA.js');
7
7
  require('../../chunk-PFGO5BSM.js');
8
8
  require('../../chunk-TIPR373R.js');
9
9
 
10
10
 
11
- exports.XMLHttpRequestInterceptor = _chunkRKQSZCUDjs.XMLHttpRequestInterceptor;
11
+ exports.XMLHttpRequestInterceptor = _chunkD4JUAYELjs.XMLHttpRequestInterceptor;
12
12
  //# sourceMappingURL=index.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  XMLHttpRequestInterceptor
3
- } from "../../chunk-Q7PXVXSL.mjs";
3
+ } from "../../chunk-4SRQFK76.mjs";
4
4
  import "../../chunk-6HYIRFX2.mjs";
5
- import "../../chunk-4K55BZMG.mjs";
6
- import "../../chunk-6MOMO77R.mjs";
5
+ import "../../chunk-H5O73WD2.mjs";
6
+ import "../../chunk-F4BN745U.mjs";
7
7
  import "../../chunk-TX5GBTFY.mjs";
8
8
  import "../../chunk-QED3Q6Z2.mjs";
9
9
  export {
@@ -1,11 +1,11 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkLMBCDE7Cjs = require('../../chunk-LMBCDE7C.js');
4
- require('../../chunk-UXPG527I.js');
5
- require('../../chunk-7TPGF5DM.js');
3
+ var _chunk74GCTBGJjs = require('../../chunk-74GCTBGJ.js');
4
+ require('../../chunk-FGSEOIC4.js');
5
+ require('../../chunk-CANMNIJA.js');
6
6
  require('../../chunk-PFGO5BSM.js');
7
7
  require('../../chunk-TIPR373R.js');
8
8
 
9
9
 
10
- exports.FetchInterceptor = _chunkLMBCDE7Cjs.FetchInterceptor;
10
+ exports.FetchInterceptor = _chunk74GCTBGJjs.FetchInterceptor;
11
11
  //# sourceMappingURL=index.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  FetchInterceptor
3
- } from "../../chunk-C6BKAAQW.mjs";
4
- import "../../chunk-4K55BZMG.mjs";
5
- import "../../chunk-6MOMO77R.mjs";
3
+ } from "../../chunk-HER3NHBG.mjs";
4
+ import "../../chunk-H5O73WD2.mjs";
5
+ import "../../chunk-F4BN745U.mjs";
6
6
  import "../../chunk-TX5GBTFY.mjs";
7
7
  import "../../chunk-QED3Q6Z2.mjs";
8
8
  export {
@@ -1,19 +1,19 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkRKQSZCUDjs = require('../chunk-RKQSZCUD.js');
3
+ var _chunkD4JUAYELjs = require('../chunk-D4JUAYEL.js');
4
4
  require('../chunk-LK6DILFK.js');
5
5
 
6
6
 
7
- var _chunkLMBCDE7Cjs = require('../chunk-LMBCDE7C.js');
8
- require('../chunk-UXPG527I.js');
9
- require('../chunk-7TPGF5DM.js');
7
+ var _chunk74GCTBGJjs = require('../chunk-74GCTBGJ.js');
8
+ require('../chunk-FGSEOIC4.js');
9
+ require('../chunk-CANMNIJA.js');
10
10
  require('../chunk-PFGO5BSM.js');
11
11
  require('../chunk-TIPR373R.js');
12
12
 
13
13
  // src/presets/browser.ts
14
14
  var browser_default = [
15
- new (0, _chunkLMBCDE7Cjs.FetchInterceptor)(),
16
- new (0, _chunkRKQSZCUDjs.XMLHttpRequestInterceptor)()
15
+ new (0, _chunk74GCTBGJjs.FetchInterceptor)(),
16
+ new (0, _chunkD4JUAYELjs.XMLHttpRequestInterceptor)()
17
17
  ];
18
18
 
19
19
 
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  XMLHttpRequestInterceptor
3
- } from "../chunk-Q7PXVXSL.mjs";
3
+ } from "../chunk-4SRQFK76.mjs";
4
4
  import "../chunk-6HYIRFX2.mjs";
5
5
  import {
6
6
  FetchInterceptor
7
- } from "../chunk-C6BKAAQW.mjs";
8
- import "../chunk-4K55BZMG.mjs";
9
- import "../chunk-6MOMO77R.mjs";
7
+ } from "../chunk-HER3NHBG.mjs";
8
+ import "../chunk-H5O73WD2.mjs";
9
+ import "../chunk-F4BN745U.mjs";
10
10
  import "../chunk-TX5GBTFY.mjs";
11
11
  import "../chunk-QED3Q6Z2.mjs";
12
12
 
@@ -1,31 +1,32 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkPGTBKPWNjs = require('./chunk-PGTBKPWN.js');
3
+ var _chunkYMPTXPHDjs = require('./chunk-YMPTXPHD.js');
4
4
 
5
5
 
6
- var _chunkFPLETXGAjs = require('./chunk-FPLETXGA.js');
6
+ var _chunk4FKJVTJAjs = require('./chunk-4FKJVTJA.js');
7
7
 
8
8
 
9
- var _chunkX2CFRRWYjs = require('./chunk-X2CFRRWY.js');
9
+ var _chunkBY7XRUDYjs = require('./chunk-BY7XRUDY.js');
10
10
  require('./chunk-LK6DILFK.js');
11
11
  require('./chunk-PFGO5BSM.js');
12
12
  require('./chunk-73NOP3T5.js');
13
13
 
14
14
 
15
15
 
16
- var _chunkVCUEA4PLjs = require('./chunk-VCUEA4PL.js');
16
+ var _chunk6L3PFBGTjs = require('./chunk-6L3PFBGT.js');
17
17
 
18
18
 
19
- var _chunkAABH3XLQjs = require('./chunk-AABH3XLQ.js');
19
+
20
+ var _chunkWGMDPBIXjs = require('./chunk-WGMDPBIX.js');
20
21
 
21
22
  // src/RemoteHttpInterceptor.ts
22
- var RemoteHttpInterceptor = class extends _chunkPGTBKPWNjs.BatchInterceptor {
23
+ var RemoteHttpInterceptor = class extends _chunkYMPTXPHDjs.BatchInterceptor {
23
24
  constructor() {
24
25
  super({
25
26
  name: "remote-interceptor",
26
27
  interceptors: [
27
- new (0, _chunkFPLETXGAjs.ClientRequestInterceptor)(),
28
- new (0, _chunkX2CFRRWYjs.XMLHttpRequestInterceptor)()
28
+ new (0, _chunk4FKJVTJAjs.ClientRequestInterceptor)(),
29
+ new (0, _chunkBY7XRUDYjs.XMLHttpRequestInterceptor)()
29
30
  ]
30
31
  });
31
32
  }
@@ -60,7 +61,8 @@ var RemoteHttpInterceptor = class extends _chunkPGTBKPWNjs.BatchInterceptor {
60
61
  const responseInit = JSON.parse(
61
62
  serializedResponse
62
63
  );
63
- const mockedResponse = new Response(responseInit.body, {
64
+ const mockedResponse = new (0, _chunkWGMDPBIXjs.FetchResponse)(responseInit.body, {
65
+ url: request.url,
64
66
  status: responseInit.status,
65
67
  statusText: responseInit.statusText,
66
68
  headers: responseInit.headers
@@ -92,7 +94,7 @@ function requestReviver(key, value) {
92
94
  return value;
93
95
  }
94
96
  }
95
- var _RemoteHttpResolver = class extends _chunkAABH3XLQjs.Interceptor {
97
+ var _RemoteHttpResolver = class extends _chunkWGMDPBIXjs.Interceptor {
96
98
  constructor(options) {
97
99
  super(_RemoteHttpResolver.symbol);
98
100
  this.process = options.process;
@@ -120,8 +122,8 @@ var _RemoteHttpResolver = class extends _chunkAABH3XLQjs.Interceptor {
120
122
  credentials: requestJson.credentials,
121
123
  body: requestJson.body
122
124
  });
123
- const controller = new (0, _chunkVCUEA4PLjs.RequestController)(request);
124
- await _chunkVCUEA4PLjs.handleRequest.call(void 0, {
125
+ const controller = new (0, _chunk6L3PFBGTjs.RequestController)(request);
126
+ await _chunk6L3PFBGTjs.handleRequest.call(void 0, {
125
127
  request,
126
128
  requestId: requestJson.id,
127
129
  controller,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/RemoteHttpInterceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AA8BO,IAAM,wBAAN,cAAoC,iBAEzC;AAAA,EACA,cAAc;AACZ,UAAM;AAAA,MACJ,MAAM;AAAA,MACN,cAAc;AAAA,QACZ,IAAI,yBAAyB;AAAA,QAC7B,IAAI,0BAA0B;AAAA,MAChC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEU,QAAQ;AAChB,UAAM,MAAM;AAEZ,QAAI;AAEJ,SAAK,GAAG,WAAW,OAAO,EAAE,SAAS,WAAW,WAAW,MAAM;AAhDrE;AAmDM,YAAM,oBAAoB,KAAK,UAAU;AAAA,QACvC,IAAI;AAAA,QACJ,QAAQ,QAAQ;AAAA,QAChB,KAAK,QAAQ;AAAA,QACb,SAAS,MAAM,KAAK,QAAQ,QAAQ,QAAQ,CAAC;AAAA,QAC7C,aAAa,QAAQ;AAAA,QACrB,MAAM,CAAC,OAAO,MAAM,EAAE,SAAS,QAAQ,MAAM,IACzC,OACA,MAAM,QAAQ,KAAK;AAAA,MACzB,CAAsB;AAEtB,WAAK,OAAO;AAAA,QACV;AAAA,QACA;AAAA,MACF;AAEA,oBAAQ,SAAR,iCAAe,WAAW;AAE1B,YAAM,kBAAkB,IAAI,QAAc,CAAC,YAAY;AACrD,8BAAsB,CAAC,YAAY;AACjC,cAAI,OAAO,YAAY,UAAU;AAC/B,mBAAO,QAAQ;AAAA,UACjB;AAEA,cAAI,QAAQ,WAAW,YAAY,WAAW,GAAG;AAC/C,kBAAM,CAAC,EAAE,kBAAkB,IACzB,QAAQ,MAAM,qBAAqB,KAAK,CAAC;AAE3C,gBAAI,CAAC,oBAAoB;AACvB,qBAAO,QAAQ;AAAA,YACjB;AAEA,kBAAM,eAAe,KAAK;AAAA,cACxB;AAAA,YACF;AAEA,kBAAM,iBAAiB,IAAI,SAAS,aAAa,MAAM;AAAA,cACrD,QAAQ,aAAa;AAAA,cACrB,YAAY,aAAa;AAAA,cACzB,SAAS,aAAa;AAAA,YACxB,CAAC;AAOD,uBAAW,YAAY,cAAc;AACrC,mBAAO,QAAQ;AAAA,UACjB;AAAA,QACF;AAAA,MACF,CAAC;AAGD,WAAK,OAAO;AAAA,QACV;AAAA,QACA;AAAA,MACF;AACA,cAAQ,YAAY,WAAW,mBAAmB;AAElD,aAAO;AAAA,IACT,CAAC;AAED,SAAK,cAAc,KAAK,MAAM;AAC5B,cAAQ,eAAe,WAAW,mBAAmB;AAAA,IACvD,CAAC;AAAA,EACH;AACF;AAEO,SAAS,eAAe,KAAa,OAAY;AACtD,UAAQ,KAAK;AAAA,IACX,KAAK;AACH,aAAO,IAAI,IAAI,KAAK;AAAA,IAEtB,KAAK;AACH,aAAO,IAAI,QAAQ,KAAK;AAAA,IAE1B;AACE,aAAO;AAAA,EACX;AACF;AAMO,IAAM,sBAAN,cAAiC,YAAiC;AAAA,EAIvE,YAAY,SAAgC;AAC1C,UAAM,oBAAmB,MAAM;AAC/B,SAAK,UAAU,QAAQ;AAAA,EACzB;AAAA,EAEU,QAAQ;AAChB,UAAM,SAAS,KAAK,OAAO,OAAO,OAAO;AAEzC,UAAM,qBAA6C,OAAO,YAAY;AACpE,aAAO,KAAK,gCAAgC,OAAO;AAEnD,UAAI,OAAO,YAAY,YAAY,CAAC,QAAQ,WAAW,UAAU,GAAG;AAClE,eAAO,KAAK,8BAA8B;AAC1C;AAAA,MACF;AAEA,YAAM,CAAC,EAAE,iBAAiB,IAAI,QAAQ,MAAM,gBAAgB,KAAK,CAAC;AAClE,UAAI,CAAC,mBAAmB;AACtB;AAAA,MACF;AAEA,YAAM,cAAc,KAAK;AAAA,QACvB;AAAA,QACA;AAAA,MACF;AAEA,aAAO,KAAK,8BAA8B,WAAW;AAErD,YAAM,UAAU,IAAI,QAAQ,YAAY,KAAK;AAAA,QAC3C,QAAQ,YAAY;AAAA,QACpB,SAAS,IAAI,QAAQ,YAAY,OAAO;AAAA,QACxC,aAAa,YAAY;AAAA,QACzB,MAAM,YAAY;AAAA,MACpB,CAAC;AAED,YAAM,aAAa,IAAI,kBAAkB,OAAO;AAChD,YAAM,cAAc;AAAA,QAClB;AAAA,QACA,WAAW,YAAY;AAAA,QACvB;AAAA,QACA,SAAS,KAAK;AAAA,QACd,YAAY,OAAO,aAAa;AAC9B,eAAK,OAAO,KAAK,6BAA6B,EAAE,SAAS,CAAC;AAE1D,gBAAM,gBAAgB,SAAS,MAAM;AACrC,gBAAM,eAAe,MAAM,cAAc,KAAK;AAG9C,gBAAM,qBAAqB,KAAK,UAAU;AAAA,YACxC,QAAQ,SAAS;AAAA,YACjB,YAAY,SAAS;AAAA,YACrB,SAAS,MAAM,KAAK,SAAS,QAAQ,QAAQ,CAAC;AAAA,YAC9C,MAAM;AAAA,UACR,CAAuB;AAEvB,eAAK,QAAQ;AAAA,YACX,YAAY,YAAY,MAAM;AAAA,YAC9B,CAAC,UAAU;AACT,kBAAI,OAAO;AACT;AAAA,cACF;AAIA,mBAAK,QAAQ,KAAK,YAAY;AAAA,gBAC5B;AAAA,gBACA,WAAW,YAAY;AAAA,gBACvB,UAAU;AAAA,gBACV,kBAAkB;AAAA,cACpB,CAAC;AAAA,YACH;AAAA,UACF;AAEA,iBAAO;AAAA,YACL;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,QACA,gBAAgB,CAAC,aAAa;AAC5B,eAAK,OAAO,KAAK,6BAA6B,EAAE,SAAS,CAAC;AAC1D,gBAAM,IAAI,MAAM,iBAAiB;AAAA,QACnC;AAAA,QACA,SAAS,CAAC,UAAU;AAClB,eAAK,OAAO,KAAK,wBAAwB,EAAE,MAAM,CAAC;AAClD,gBAAM,IAAI,MAAM,iBAAiB;AAAA,QACnC;AAAA,MACF,CAAC;AAAA,IACH;AAEA,SAAK,cAAc,KAAK,MAAM;AAC5B,WAAK,QAAQ,eAAe,WAAW,kBAAkB;AACzD,aAAO,KAAK,wDAAwD;AAAA,IACtE,CAAC;AAED,WAAO,KAAK,kDAAkD;AAC9D,SAAK,QAAQ,YAAY,WAAW,kBAAkB;AAEtD,SAAK,QAAQ,KAAK,SAAS,MAAM,KAAK,QAAQ,CAAC;AAC/C,SAAK,QAAQ,KAAK,QAAQ,MAAM,KAAK,QAAQ,CAAC;AAAA,EAChD;AACF;AAxGO,IAAM,qBAAN;AAAM,mBACJ,SAAS,OAAO,iBAAiB","sourcesContent":["import { ChildProcess } from 'child_process'\nimport { HttpRequestEventMap } from './glossary'\nimport { Interceptor } from './Interceptor'\nimport { BatchInterceptor } from './BatchInterceptor'\nimport { ClientRequestInterceptor } from './interceptors/ClientRequest'\nimport { XMLHttpRequestInterceptor } from './interceptors/XMLHttpRequest'\nimport { handleRequest } from './utils/handleRequest'\nimport { RequestController } from './RequestController'\n\nexport interface SerializedRequest {\n id: string\n url: string\n method: string\n headers: Array<[string, string]>\n credentials: RequestCredentials\n body: string\n}\n\ninterface RevivedRequest extends Omit<SerializedRequest, 'url' | 'headers'> {\n url: URL\n headers: Headers\n}\n\nexport interface SerializedResponse {\n status: number\n statusText: string\n headers: Array<[string, string]>\n body: string\n}\n\nexport class RemoteHttpInterceptor extends BatchInterceptor<\n [ClientRequestInterceptor, XMLHttpRequestInterceptor]\n> {\n constructor() {\n super({\n name: 'remote-interceptor',\n interceptors: [\n new ClientRequestInterceptor(),\n new XMLHttpRequestInterceptor(),\n ],\n })\n }\n\n protected setup() {\n super.setup()\n\n let handleParentMessage: NodeJS.MessageListener\n\n this.on('request', async ({ request, requestId, controller }) => {\n // Send the stringified intercepted request to\n // the parent process where the remote resolver is established.\n const serializedRequest = JSON.stringify({\n id: requestId,\n method: request.method,\n url: request.url,\n headers: Array.from(request.headers.entries()),\n credentials: request.credentials,\n body: ['GET', 'HEAD'].includes(request.method)\n ? null\n : await request.text(),\n } as SerializedRequest)\n\n this.logger.info(\n 'sent serialized request to the child:',\n serializedRequest\n )\n\n process.send?.(`request:${serializedRequest}`)\n\n const responsePromise = new Promise<void>((resolve) => {\n handleParentMessage = (message) => {\n if (typeof message !== 'string') {\n return resolve()\n }\n\n if (message.startsWith(`response:${requestId}`)) {\n const [, serializedResponse] =\n message.match(/^response:.+?:(.+)$/) || []\n\n if (!serializedResponse) {\n return resolve()\n }\n\n const responseInit = JSON.parse(\n serializedResponse\n ) as SerializedResponse\n\n const mockedResponse = new Response(responseInit.body, {\n status: responseInit.status,\n statusText: responseInit.statusText,\n headers: responseInit.headers,\n })\n\n /**\n * @todo Support \"errorWith\" as well.\n * This response handling from the child is incomplete.\n */\n\n controller.respondWith(mockedResponse)\n return resolve()\n }\n }\n })\n\n // Listen for the mocked response message from the parent.\n this.logger.info(\n 'add \"message\" listener to the parent process',\n handleParentMessage\n )\n process.addListener('message', handleParentMessage)\n\n return responsePromise\n })\n\n this.subscriptions.push(() => {\n process.removeListener('message', handleParentMessage)\n })\n }\n}\n\nexport function requestReviver(key: string, value: any) {\n switch (key) {\n case 'url':\n return new URL(value)\n\n case 'headers':\n return new Headers(value)\n\n default:\n return value\n }\n}\n\nexport interface RemoveResolverOptions {\n process: ChildProcess\n}\n\nexport class RemoteHttpResolver extends Interceptor<HttpRequestEventMap> {\n static symbol = Symbol('remote-resolver')\n private process: ChildProcess\n\n constructor(options: RemoveResolverOptions) {\n super(RemoteHttpResolver.symbol)\n this.process = options.process\n }\n\n protected setup() {\n const logger = this.logger.extend('setup')\n\n const handleChildMessage: NodeJS.MessageListener = async (message) => {\n logger.info('received message from child!', message)\n\n if (typeof message !== 'string' || !message.startsWith('request:')) {\n logger.info('unknown message, ignoring...')\n return\n }\n\n const [, serializedRequest] = message.match(/^request:(.+)$/) || []\n if (!serializedRequest) {\n return\n }\n\n const requestJson = JSON.parse(\n serializedRequest,\n requestReviver\n ) as RevivedRequest\n\n logger.info('parsed intercepted request', requestJson)\n\n const request = new Request(requestJson.url, {\n method: requestJson.method,\n headers: new Headers(requestJson.headers),\n credentials: requestJson.credentials,\n body: requestJson.body,\n })\n\n const controller = new RequestController(request)\n await handleRequest({\n request,\n requestId: requestJson.id,\n controller,\n emitter: this.emitter,\n onResponse: async (response) => {\n this.logger.info('received mocked response!', { response })\n\n const responseClone = response.clone()\n const responseText = await responseClone.text()\n\n // // Send the mocked response to the child process.\n const serializedResponse = JSON.stringify({\n status: response.status,\n statusText: response.statusText,\n headers: Array.from(response.headers.entries()),\n body: responseText,\n } as SerializedResponse)\n\n this.process.send(\n `response:${requestJson.id}:${serializedResponse}`,\n (error) => {\n if (error) {\n return\n }\n\n // Emit an optimistic \"response\" event at this point,\n // not to rely on the back-and-forth signaling for the sake of the event.\n this.emitter.emit('response', {\n request,\n requestId: requestJson.id,\n response: responseClone,\n isMockedResponse: true,\n })\n }\n )\n\n logger.info(\n 'sent serialized mocked response to the parent:',\n serializedResponse\n )\n },\n onRequestError: (response) => {\n this.logger.info('received a network error!', { response })\n throw new Error('Not implemented')\n },\n onError: (error) => {\n this.logger.info('request has errored!', { error })\n throw new Error('Not implemented')\n },\n })\n }\n\n this.subscriptions.push(() => {\n this.process.removeListener('message', handleChildMessage)\n logger.info('removed the \"message\" listener from the child process!')\n })\n\n logger.info('adding a \"message\" listener to the child process')\n this.process.addListener('message', handleChildMessage)\n\n this.process.once('error', () => this.dispose())\n this.process.once('exit', () => this.dispose())\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/RemoteHttpInterceptor.ts"],"names":[],"mappings":"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","sourcesContent":["import { ChildProcess } from 'child_process'\nimport { HttpRequestEventMap } from './glossary'\nimport { Interceptor } from './Interceptor'\nimport { BatchInterceptor } from './BatchInterceptor'\nimport { ClientRequestInterceptor } from './interceptors/ClientRequest'\nimport { XMLHttpRequestInterceptor } from './interceptors/XMLHttpRequest'\nimport { handleRequest } from './utils/handleRequest'\nimport { RequestController } from './RequestController'\nimport { FetchResponse } from './utils/fetchUtils'\n\nexport interface SerializedRequest {\n id: string\n url: string\n method: string\n headers: Array<[string, string]>\n credentials: RequestCredentials\n body: string\n}\n\ninterface RevivedRequest extends Omit<SerializedRequest, 'url' | 'headers'> {\n url: URL\n headers: Headers\n}\n\nexport interface SerializedResponse {\n status: number\n statusText: string\n headers: Array<[string, string]>\n body: string\n}\n\nexport class RemoteHttpInterceptor extends BatchInterceptor<\n [ClientRequestInterceptor, XMLHttpRequestInterceptor]\n> {\n constructor() {\n super({\n name: 'remote-interceptor',\n interceptors: [\n new ClientRequestInterceptor(),\n new XMLHttpRequestInterceptor(),\n ],\n })\n }\n\n protected setup() {\n super.setup()\n\n let handleParentMessage: NodeJS.MessageListener\n\n this.on('request', async ({ request, requestId, controller }) => {\n // Send the stringified intercepted request to\n // the parent process where the remote resolver is established.\n const serializedRequest = JSON.stringify({\n id: requestId,\n method: request.method,\n url: request.url,\n headers: Array.from(request.headers.entries()),\n credentials: request.credentials,\n body: ['GET', 'HEAD'].includes(request.method)\n ? null\n : await request.text(),\n } as SerializedRequest)\n\n this.logger.info(\n 'sent serialized request to the child:',\n serializedRequest\n )\n\n process.send?.(`request:${serializedRequest}`)\n\n const responsePromise = new Promise<void>((resolve) => {\n handleParentMessage = (message) => {\n if (typeof message !== 'string') {\n return resolve()\n }\n\n if (message.startsWith(`response:${requestId}`)) {\n const [, serializedResponse] =\n message.match(/^response:.+?:(.+)$/) || []\n\n if (!serializedResponse) {\n return resolve()\n }\n\n const responseInit = JSON.parse(\n serializedResponse\n ) as SerializedResponse\n\n const mockedResponse = new FetchResponse(responseInit.body, {\n url: request.url,\n status: responseInit.status,\n statusText: responseInit.statusText,\n headers: responseInit.headers,\n })\n\n /**\n * @todo Support \"errorWith\" as well.\n * This response handling from the child is incomplete.\n */\n\n controller.respondWith(mockedResponse)\n return resolve()\n }\n }\n })\n\n // Listen for the mocked response message from the parent.\n this.logger.info(\n 'add \"message\" listener to the parent process',\n handleParentMessage\n )\n process.addListener('message', handleParentMessage)\n\n return responsePromise\n })\n\n this.subscriptions.push(() => {\n process.removeListener('message', handleParentMessage)\n })\n }\n}\n\nexport function requestReviver(key: string, value: any) {\n switch (key) {\n case 'url':\n return new URL(value)\n\n case 'headers':\n return new Headers(value)\n\n default:\n return value\n }\n}\n\nexport interface RemoveResolverOptions {\n process: ChildProcess\n}\n\nexport class RemoteHttpResolver extends Interceptor<HttpRequestEventMap> {\n static symbol = Symbol('remote-resolver')\n private process: ChildProcess\n\n constructor(options: RemoveResolverOptions) {\n super(RemoteHttpResolver.symbol)\n this.process = options.process\n }\n\n protected setup() {\n const logger = this.logger.extend('setup')\n\n const handleChildMessage: NodeJS.MessageListener = async (message) => {\n logger.info('received message from child!', message)\n\n if (typeof message !== 'string' || !message.startsWith('request:')) {\n logger.info('unknown message, ignoring...')\n return\n }\n\n const [, serializedRequest] = message.match(/^request:(.+)$/) || []\n if (!serializedRequest) {\n return\n }\n\n const requestJson = JSON.parse(\n serializedRequest,\n requestReviver\n ) as RevivedRequest\n\n logger.info('parsed intercepted request', requestJson)\n\n const request = new Request(requestJson.url, {\n method: requestJson.method,\n headers: new Headers(requestJson.headers),\n credentials: requestJson.credentials,\n body: requestJson.body,\n })\n\n const controller = new RequestController(request)\n await handleRequest({\n request,\n requestId: requestJson.id,\n controller,\n emitter: this.emitter,\n onResponse: async (response) => {\n this.logger.info('received mocked response!', { response })\n\n const responseClone = response.clone()\n const responseText = await responseClone.text()\n\n // // Send the mocked response to the child process.\n const serializedResponse = JSON.stringify({\n status: response.status,\n statusText: response.statusText,\n headers: Array.from(response.headers.entries()),\n body: responseText,\n } as SerializedResponse)\n\n this.process.send(\n `response:${requestJson.id}:${serializedResponse}`,\n (error) => {\n if (error) {\n return\n }\n\n // Emit an optimistic \"response\" event at this point,\n // not to rely on the back-and-forth signaling for the sake of the event.\n this.emitter.emit('response', {\n request,\n requestId: requestJson.id,\n response: responseClone,\n isMockedResponse: true,\n })\n }\n )\n\n logger.info(\n 'sent serialized mocked response to the parent:',\n serializedResponse\n )\n },\n onRequestError: (response) => {\n this.logger.info('received a network error!', { response })\n throw new Error('Not implemented')\n },\n onError: (error) => {\n this.logger.info('request has errored!', { error })\n throw new Error('Not implemented')\n },\n })\n }\n\n this.subscriptions.push(() => {\n this.process.removeListener('message', handleChildMessage)\n logger.info('removed the \"message\" listener from the child process!')\n })\n\n logger.info('adding a \"message\" listener to the child process')\n this.process.addListener('message', handleChildMessage)\n\n this.process.once('error', () => this.dispose())\n this.process.once('exit', () => this.dispose())\n }\n}\n"]}
@@ -1,22 +1,23 @@
1
1
  import {
2
2
  BatchInterceptor
3
- } from "./chunk-3NMVZQIH.mjs";
3
+ } from "./chunk-3CPL565R.mjs";
4
4
  import {
5
5
  ClientRequestInterceptor
6
- } from "./chunk-MG3S53QP.mjs";
6
+ } from "./chunk-WWCFTZ4L.mjs";
7
7
  import {
8
8
  XMLHttpRequestInterceptor
9
- } from "./chunk-EBDS6VMR.mjs";
9
+ } from "./chunk-MXNT7QYX.mjs";
10
10
  import "./chunk-6HYIRFX2.mjs";
11
11
  import "./chunk-TX5GBTFY.mjs";
12
12
  import "./chunk-6YM4PLBI.mjs";
13
13
  import {
14
14
  RequestController,
15
15
  handleRequest
16
- } from "./chunk-M4WQE4TR.mjs";
16
+ } from "./chunk-5KMS5CTP.mjs";
17
17
  import {
18
+ FetchResponse,
18
19
  Interceptor
19
- } from "./chunk-FQQAJBI2.mjs";
20
+ } from "./chunk-ELLF26MW.mjs";
20
21
 
21
22
  // src/RemoteHttpInterceptor.ts
22
23
  var RemoteHttpInterceptor = class extends BatchInterceptor {
@@ -60,7 +61,8 @@ var RemoteHttpInterceptor = class extends BatchInterceptor {
60
61
  const responseInit = JSON.parse(
61
62
  serializedResponse
62
63
  );
63
- const mockedResponse = new Response(responseInit.body, {
64
+ const mockedResponse = new FetchResponse(responseInit.body, {
65
+ url: request.url,
64
66
  status: responseInit.status,
65
67
  statusText: responseInit.statusText,
66
68
  headers: responseInit.headers
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/RemoteHttpInterceptor.ts"],"sourcesContent":["import { ChildProcess } from 'child_process'\nimport { HttpRequestEventMap } from './glossary'\nimport { Interceptor } from './Interceptor'\nimport { BatchInterceptor } from './BatchInterceptor'\nimport { ClientRequestInterceptor } from './interceptors/ClientRequest'\nimport { XMLHttpRequestInterceptor } from './interceptors/XMLHttpRequest'\nimport { handleRequest } from './utils/handleRequest'\nimport { RequestController } from './RequestController'\n\nexport interface SerializedRequest {\n id: string\n url: string\n method: string\n headers: Array<[string, string]>\n credentials: RequestCredentials\n body: string\n}\n\ninterface RevivedRequest extends Omit<SerializedRequest, 'url' | 'headers'> {\n url: URL\n headers: Headers\n}\n\nexport interface SerializedResponse {\n status: number\n statusText: string\n headers: Array<[string, string]>\n body: string\n}\n\nexport class RemoteHttpInterceptor extends BatchInterceptor<\n [ClientRequestInterceptor, XMLHttpRequestInterceptor]\n> {\n constructor() {\n super({\n name: 'remote-interceptor',\n interceptors: [\n new ClientRequestInterceptor(),\n new XMLHttpRequestInterceptor(),\n ],\n })\n }\n\n protected setup() {\n super.setup()\n\n let handleParentMessage: NodeJS.MessageListener\n\n this.on('request', async ({ request, requestId, controller }) => {\n // Send the stringified intercepted request to\n // the parent process where the remote resolver is established.\n const serializedRequest = JSON.stringify({\n id: requestId,\n method: request.method,\n url: request.url,\n headers: Array.from(request.headers.entries()),\n credentials: request.credentials,\n body: ['GET', 'HEAD'].includes(request.method)\n ? null\n : await request.text(),\n } as SerializedRequest)\n\n this.logger.info(\n 'sent serialized request to the child:',\n serializedRequest\n )\n\n process.send?.(`request:${serializedRequest}`)\n\n const responsePromise = new Promise<void>((resolve) => {\n handleParentMessage = (message) => {\n if (typeof message !== 'string') {\n return resolve()\n }\n\n if (message.startsWith(`response:${requestId}`)) {\n const [, serializedResponse] =\n message.match(/^response:.+?:(.+)$/) || []\n\n if (!serializedResponse) {\n return resolve()\n }\n\n const responseInit = JSON.parse(\n serializedResponse\n ) as SerializedResponse\n\n const mockedResponse = new Response(responseInit.body, {\n status: responseInit.status,\n statusText: responseInit.statusText,\n headers: responseInit.headers,\n })\n\n /**\n * @todo Support \"errorWith\" as well.\n * This response handling from the child is incomplete.\n */\n\n controller.respondWith(mockedResponse)\n return resolve()\n }\n }\n })\n\n // Listen for the mocked response message from the parent.\n this.logger.info(\n 'add \"message\" listener to the parent process',\n handleParentMessage\n )\n process.addListener('message', handleParentMessage)\n\n return responsePromise\n })\n\n this.subscriptions.push(() => {\n process.removeListener('message', handleParentMessage)\n })\n }\n}\n\nexport function requestReviver(key: string, value: any) {\n switch (key) {\n case 'url':\n return new URL(value)\n\n case 'headers':\n return new Headers(value)\n\n default:\n return value\n }\n}\n\nexport interface RemoveResolverOptions {\n process: ChildProcess\n}\n\nexport class RemoteHttpResolver extends Interceptor<HttpRequestEventMap> {\n static symbol = Symbol('remote-resolver')\n private process: ChildProcess\n\n constructor(options: RemoveResolverOptions) {\n super(RemoteHttpResolver.symbol)\n this.process = options.process\n }\n\n protected setup() {\n const logger = this.logger.extend('setup')\n\n const handleChildMessage: NodeJS.MessageListener = async (message) => {\n logger.info('received message from child!', message)\n\n if (typeof message !== 'string' || !message.startsWith('request:')) {\n logger.info('unknown message, ignoring...')\n return\n }\n\n const [, serializedRequest] = message.match(/^request:(.+)$/) || []\n if (!serializedRequest) {\n return\n }\n\n const requestJson = JSON.parse(\n serializedRequest,\n requestReviver\n ) as RevivedRequest\n\n logger.info('parsed intercepted request', requestJson)\n\n const request = new Request(requestJson.url, {\n method: requestJson.method,\n headers: new Headers(requestJson.headers),\n credentials: requestJson.credentials,\n body: requestJson.body,\n })\n\n const controller = new RequestController(request)\n await handleRequest({\n request,\n requestId: requestJson.id,\n controller,\n emitter: this.emitter,\n onResponse: async (response) => {\n this.logger.info('received mocked response!', { response })\n\n const responseClone = response.clone()\n const responseText = await responseClone.text()\n\n // // Send the mocked response to the child process.\n const serializedResponse = JSON.stringify({\n status: response.status,\n statusText: response.statusText,\n headers: Array.from(response.headers.entries()),\n body: responseText,\n } as SerializedResponse)\n\n this.process.send(\n `response:${requestJson.id}:${serializedResponse}`,\n (error) => {\n if (error) {\n return\n }\n\n // Emit an optimistic \"response\" event at this point,\n // not to rely on the back-and-forth signaling for the sake of the event.\n this.emitter.emit('response', {\n request,\n requestId: requestJson.id,\n response: responseClone,\n isMockedResponse: true,\n })\n }\n )\n\n logger.info(\n 'sent serialized mocked response to the parent:',\n serializedResponse\n )\n },\n onRequestError: (response) => {\n this.logger.info('received a network error!', { response })\n throw new Error('Not implemented')\n },\n onError: (error) => {\n this.logger.info('request has errored!', { error })\n throw new Error('Not implemented')\n },\n })\n }\n\n this.subscriptions.push(() => {\n this.process.removeListener('message', handleChildMessage)\n logger.info('removed the \"message\" listener from the child process!')\n })\n\n logger.info('adding a \"message\" listener to the child process')\n this.process.addListener('message', handleChildMessage)\n\n this.process.once('error', () => this.dispose())\n this.process.once('exit', () => this.dispose())\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/RemoteHttpInterceptor.ts"],"sourcesContent":["import { ChildProcess } from 'child_process'\nimport { HttpRequestEventMap } from './glossary'\nimport { Interceptor } from './Interceptor'\nimport { BatchInterceptor } from './BatchInterceptor'\nimport { ClientRequestInterceptor } from './interceptors/ClientRequest'\nimport { XMLHttpRequestInterceptor } from './interceptors/XMLHttpRequest'\nimport { handleRequest } from './utils/handleRequest'\nimport { RequestController } from './RequestController'\nimport { FetchResponse } from './utils/fetchUtils'\n\nexport interface SerializedRequest {\n id: string\n url: string\n method: string\n headers: Array<[string, string]>\n credentials: RequestCredentials\n body: string\n}\n\ninterface RevivedRequest extends Omit<SerializedRequest, 'url' | 'headers'> {\n url: URL\n headers: Headers\n}\n\nexport interface SerializedResponse {\n status: number\n statusText: string\n headers: Array<[string, string]>\n body: string\n}\n\nexport class RemoteHttpInterceptor extends BatchInterceptor<\n [ClientRequestInterceptor, XMLHttpRequestInterceptor]\n> {\n constructor() {\n super({\n name: 'remote-interceptor',\n interceptors: [\n new ClientRequestInterceptor(),\n new XMLHttpRequestInterceptor(),\n ],\n })\n }\n\n protected setup() {\n super.setup()\n\n let handleParentMessage: NodeJS.MessageListener\n\n this.on('request', async ({ request, requestId, controller }) => {\n // Send the stringified intercepted request to\n // the parent process where the remote resolver is established.\n const serializedRequest = JSON.stringify({\n id: requestId,\n method: request.method,\n url: request.url,\n headers: Array.from(request.headers.entries()),\n credentials: request.credentials,\n body: ['GET', 'HEAD'].includes(request.method)\n ? null\n : await request.text(),\n } as SerializedRequest)\n\n this.logger.info(\n 'sent serialized request to the child:',\n serializedRequest\n )\n\n process.send?.(`request:${serializedRequest}`)\n\n const responsePromise = new Promise<void>((resolve) => {\n handleParentMessage = (message) => {\n if (typeof message !== 'string') {\n return resolve()\n }\n\n if (message.startsWith(`response:${requestId}`)) {\n const [, serializedResponse] =\n message.match(/^response:.+?:(.+)$/) || []\n\n if (!serializedResponse) {\n return resolve()\n }\n\n const responseInit = JSON.parse(\n serializedResponse\n ) as SerializedResponse\n\n const mockedResponse = new FetchResponse(responseInit.body, {\n url: request.url,\n status: responseInit.status,\n statusText: responseInit.statusText,\n headers: responseInit.headers,\n })\n\n /**\n * @todo Support \"errorWith\" as well.\n * This response handling from the child is incomplete.\n */\n\n controller.respondWith(mockedResponse)\n return resolve()\n }\n }\n })\n\n // Listen for the mocked response message from the parent.\n this.logger.info(\n 'add \"message\" listener to the parent process',\n handleParentMessage\n )\n process.addListener('message', handleParentMessage)\n\n return responsePromise\n })\n\n this.subscriptions.push(() => {\n process.removeListener('message', handleParentMessage)\n })\n }\n}\n\nexport function requestReviver(key: string, value: any) {\n switch (key) {\n case 'url':\n return new URL(value)\n\n case 'headers':\n return new Headers(value)\n\n default:\n return value\n }\n}\n\nexport interface RemoveResolverOptions {\n process: ChildProcess\n}\n\nexport class RemoteHttpResolver extends Interceptor<HttpRequestEventMap> {\n static symbol = Symbol('remote-resolver')\n private process: ChildProcess\n\n constructor(options: RemoveResolverOptions) {\n super(RemoteHttpResolver.symbol)\n this.process = options.process\n }\n\n protected setup() {\n const logger = this.logger.extend('setup')\n\n const handleChildMessage: NodeJS.MessageListener = async (message) => {\n logger.info('received message from child!', message)\n\n if (typeof message !== 'string' || !message.startsWith('request:')) {\n logger.info('unknown message, ignoring...')\n return\n }\n\n const [, serializedRequest] = message.match(/^request:(.+)$/) || []\n if (!serializedRequest) {\n return\n }\n\n const requestJson = JSON.parse(\n serializedRequest,\n requestReviver\n ) as RevivedRequest\n\n logger.info('parsed intercepted request', requestJson)\n\n const request = new Request(requestJson.url, {\n method: requestJson.method,\n headers: new Headers(requestJson.headers),\n credentials: requestJson.credentials,\n body: requestJson.body,\n })\n\n const controller = new RequestController(request)\n await handleRequest({\n request,\n requestId: requestJson.id,\n controller,\n emitter: this.emitter,\n onResponse: async (response) => {\n this.logger.info('received mocked response!', { response })\n\n const responseClone = response.clone()\n const responseText = await responseClone.text()\n\n // // Send the mocked response to the child process.\n const serializedResponse = JSON.stringify({\n status: response.status,\n statusText: response.statusText,\n headers: Array.from(response.headers.entries()),\n body: responseText,\n } as SerializedResponse)\n\n this.process.send(\n `response:${requestJson.id}:${serializedResponse}`,\n (error) => {\n if (error) {\n return\n }\n\n // Emit an optimistic \"response\" event at this point,\n // not to rely on the back-and-forth signaling for the sake of the event.\n this.emitter.emit('response', {\n request,\n requestId: requestJson.id,\n response: responseClone,\n isMockedResponse: true,\n })\n }\n )\n\n logger.info(\n 'sent serialized mocked response to the parent:',\n serializedResponse\n )\n },\n onRequestError: (response) => {\n this.logger.info('received a network error!', { response })\n throw new Error('Not implemented')\n },\n onError: (error) => {\n this.logger.info('request has errored!', { error })\n throw new Error('Not implemented')\n },\n })\n }\n\n this.subscriptions.push(() => {\n this.process.removeListener('message', handleChildMessage)\n logger.info('removed the \"message\" listener from the child process!')\n })\n\n logger.info('adding a \"message\" listener to the child process')\n this.process.addListener('message', handleChildMessage)\n\n this.process.once('error', () => this.dispose())\n this.process.once('exit', () => this.dispose())\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Interceptor
3
- } from "./chunk-FQQAJBI2.mjs";
3
+ } from "./chunk-ELLF26MW.mjs";
4
4
 
5
5
  // src/BatchInterceptor.ts
6
6
  var BatchInterceptor = class extends Interceptor {
@@ -48,4 +48,4 @@ var BatchInterceptor = class extends Interceptor {
48
48
  export {
49
49
  BatchInterceptor
50
50
  };
51
- //# sourceMappingURL=chunk-3NMVZQIH.mjs.map
51
+ //# sourceMappingURL=chunk-3CPL565R.mjs.map
@@ -2,15 +2,15 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkVCUEA4PLjs = require('./chunk-VCUEA4PL.js');
6
5
 
7
6
 
7
+ var _chunk6L3PFBGTjs = require('./chunk-6L3PFBGT.js');
8
8
 
9
9
 
10
10
 
11
11
 
12
12
 
13
- var _chunkAABH3XLQjs = require('./chunk-AABH3XLQ.js');
13
+ var _chunkWGMDPBIXjs = require('./chunk-WGMDPBIX.js');
14
14
 
15
15
  // src/interceptors/ClientRequest/index.ts
16
16
  var _http = require('http'); var _http2 = _interopRequireDefault(_http);
@@ -321,7 +321,7 @@ var MockHttpSocket = class extends MockSocket {
321
321
  }
322
322
  });
323
323
  }
324
- const requestId = _chunkAABH3XLQjs.createRequestId.call(void 0, );
324
+ const requestId = _chunkWGMDPBIXjs.createRequestId.call(void 0, );
325
325
  this.request = new Request(url, {
326
326
  method,
327
327
  headers,
@@ -331,7 +331,7 @@ var MockHttpSocket = class extends MockSocket {
331
331
  body: canHaveBody ? _stream.Readable.toWeb(this.requestStream) : null
332
332
  });
333
333
  Reflect.set(this.request, kRequestId, requestId);
334
- if (this.request.headers.has(_chunkAABH3XLQjs.INTERNAL_REQUEST_ID_HEADER_NAME)) {
334
+ if (this.request.headers.has(_chunkWGMDPBIXjs.INTERNAL_REQUEST_ID_HEADER_NAME)) {
335
335
  this.passthrough();
336
336
  return;
337
337
  }
@@ -343,12 +343,7 @@ var MockHttpSocket = class extends MockSocket {
343
343
  };
344
344
  this.onResponseStart = (versionMajor, versionMinor, rawHeaders, method, url, status, statusText) => {
345
345
  const headers = parseRawHeaders(rawHeaders);
346
- const canHaveBody = !_chunkAABH3XLQjs.RESPONSE_STATUS_CODES_WITHOUT_BODY.has(status);
347
- if (canHaveBody) {
348
- this.responseStream = new (0, _stream.Readable)({ read() {
349
- } });
350
- }
351
- const response = new Response(
346
+ const response = new (0, _chunkWGMDPBIXjs.FetchResponse)(
352
347
  /**
353
348
  * @note The Fetch API response instance exposed to the consumer
354
349
  * is created over the response stream of the HTTP parser. It is NOT
@@ -356,8 +351,12 @@ var MockHttpSocket = class extends MockSocket {
356
351
  * in response listener while the Socket instance delays the emission
357
352
  * of "end" and other events until those response listeners are finished.
358
353
  */
359
- canHaveBody ? _stream.Readable.toWeb(this.responseStream) : null,
354
+ _chunkWGMDPBIXjs.FetchResponse.isResponseWithBody(status) ? _stream.Readable.toWeb(
355
+ this.responseStream = new (0, _stream.Readable)({ read() {
356
+ } })
357
+ ) : null,
360
358
  {
359
+ url,
361
360
  status,
362
361
  statusText,
363
362
  headers
@@ -367,7 +366,7 @@ var MockHttpSocket = class extends MockSocket {
367
366
  this.request,
368
367
  "Failed to handle a response: request does not exist"
369
368
  );
370
- if (this.request.headers.has(_chunkAABH3XLQjs.INTERNAL_REQUEST_ID_HEADER_NAME)) {
369
+ if (this.request.headers.has(_chunkWGMDPBIXjs.INTERNAL_REQUEST_ID_HEADER_NAME)) {
371
370
  return;
372
371
  }
373
372
  this.responseListenersPromise = this.onResponse({
@@ -446,7 +445,7 @@ var MockHttpSocket = class extends MockSocket {
446
445
  );
447
446
  const rawRequestHeaders = getRawFetchHeaders(this.request.headers);
448
447
  const requestHeadersString = rawRequestHeaders.filter(([name]) => {
449
- return name.toLowerCase() !== _chunkAABH3XLQjs.INTERNAL_REQUEST_ID_HEADER_NAME;
448
+ return name.toLowerCase() !== _chunkWGMDPBIXjs.INTERNAL_REQUEST_ID_HEADER_NAME;
450
449
  }).map(([name, value]) => `${name}: ${value}`).join("\r\n");
451
450
  const headersChunk = `${chunkBeforeRequestHeaders}${requestHeadersString}${chunkAfterRequestHeaders}`;
452
451
  socket.write(headersChunk, encoding, callback);
@@ -493,7 +492,7 @@ var MockHttpSocket = class extends MockSocket {
493
492
  if (this.destroyed) {
494
493
  return;
495
494
  }
496
- if (_chunkAABH3XLQjs.isPropertyAccessible.call(void 0, response, "type") && response.type === "error") {
495
+ if (_chunk6L3PFBGTjs.isPropertyAccessible.call(void 0, response, "type") && response.type === "error") {
497
496
  this.errorWith(new TypeError("Network error"));
498
497
  return;
499
498
  }
@@ -534,7 +533,7 @@ var MockHttpSocket = class extends MockSocket {
534
533
  serverResponse.write(value);
535
534
  }
536
535
  } catch (error) {
537
- this.respondWith(_chunkAABH3XLQjs.createServerErrorResponse.call(void 0, error));
536
+ this.respondWith(_chunk6L3PFBGTjs.createServerErrorResponse.call(void 0, error));
538
537
  return;
539
538
  }
540
539
  } else {
@@ -581,10 +580,8 @@ var MockHttpSocket = class extends MockSocket {
581
580
  }
582
581
  }
583
582
  flushWriteBuffer() {
584
- var _a;
585
- let args;
586
- while (args = this.writeBuffer.shift()) {
587
- (_a = args == null ? void 0 : args[2]) == null ? void 0 : _a.call(args);
583
+ for (const [, , callback] of this.writeBuffer) {
584
+ callback == null ? void 0 : callback();
588
585
  }
589
586
  }
590
587
  onRequestBody(chunk) {
@@ -919,7 +916,7 @@ function normalizeClientRequestArgs(defaultProtocol, args) {
919
916
  }
920
917
 
921
918
  // src/interceptors/ClientRequest/index.ts
922
- var _ClientRequestInterceptor = class extends _chunkAABH3XLQjs.Interceptor {
919
+ var _ClientRequestInterceptor = class extends _chunkWGMDPBIXjs.Interceptor {
923
920
  constructor() {
924
921
  super(_ClientRequestInterceptor.symbol);
925
922
  this.onRequest = async ({
@@ -927,8 +924,8 @@ var _ClientRequestInterceptor = class extends _chunkAABH3XLQjs.Interceptor {
927
924
  socket
928
925
  }) => {
929
926
  const requestId = Reflect.get(request, kRequestId);
930
- const controller = new (0, _chunkVCUEA4PLjs.RequestController)(request);
931
- const isRequestHandled = await _chunkVCUEA4PLjs.handleRequest.call(void 0, {
927
+ const controller = new (0, _chunk6L3PFBGTjs.RequestController)(request);
928
+ const isRequestHandled = await _chunk6L3PFBGTjs.handleRequest.call(void 0, {
932
929
  request,
933
930
  requestId,
934
931
  controller,
@@ -955,7 +952,7 @@ var _ClientRequestInterceptor = class extends _chunkAABH3XLQjs.Interceptor {
955
952
  response,
956
953
  isMockedResponse
957
954
  }) => {
958
- return _chunkVCUEA4PLjs.emitAsync.call(void 0, this.emitter, "response", {
955
+ return _chunk6L3PFBGTjs.emitAsync.call(void 0, this.emitter, "response", {
959
956
  requestId,
960
957
  request,
961
958
  response,
@@ -1044,4 +1041,4 @@ ClientRequestInterceptor.symbol = Symbol("client-request-interceptor");
1044
1041
 
1045
1042
 
1046
1043
  exports.ClientRequestInterceptor = ClientRequestInterceptor;
1047
- //# sourceMappingURL=chunk-FPLETXGA.js.map
1044
+ //# sourceMappingURL=chunk-4FKJVTJA.js.map