@mswjs/interceptors 0.20.0 → 0.21.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.
Files changed (178) hide show
  1. package/README.md +7 -7
  2. package/lib/browser/Interceptor-959f650e.d.ts +104 -0
  3. package/lib/browser/chunk-5B525MKF.mjs +2139 -0
  4. package/lib/browser/chunk-BQYA7ER5.mjs +258 -0
  5. package/lib/browser/chunk-IIY3SHU3.js +2139 -0
  6. package/lib/browser/chunk-QWL3EOEY.js +258 -0
  7. package/lib/browser/chunk-STA6QBYM.mjs +64 -0
  8. package/lib/browser/chunk-ZJOF5MEZ.js +64 -0
  9. package/lib/browser/index.d.ts +31 -0
  10. package/lib/browser/index.js +51 -0
  11. package/lib/browser/index.mjs +51 -0
  12. package/lib/browser/interceptors/XMLHttpRequest/index.d.ts +14 -0
  13. package/lib/browser/interceptors/XMLHttpRequest/index.js +657 -0
  14. package/lib/browser/interceptors/XMLHttpRequest/index.mjs +657 -0
  15. package/lib/browser/interceptors/fetch/index.d.ts +12 -0
  16. package/lib/browser/interceptors/fetch/index.js +94 -0
  17. package/lib/browser/interceptors/fetch/index.mjs +94 -0
  18. package/lib/node/BatchInterceptor-a7261b26.d.ts +21 -0
  19. package/lib/node/Interceptor-997045eb.d.ts +104 -0
  20. package/lib/{RemoteHttpInterceptor.d.ts → node/RemoteHttpInterceptor.d.ts} +17 -12
  21. package/lib/node/RemoteHttpInterceptor.js +176 -0
  22. package/lib/node/RemoteHttpInterceptor.mjs +176 -0
  23. package/lib/node/chunk-6GWWOJ23.js +29 -0
  24. package/lib/node/chunk-6V3JXLBF.js +6093 -0
  25. package/lib/node/chunk-CIN5URNI.mjs +29 -0
  26. package/lib/node/chunk-GFH37L5D.mjs +6 -0
  27. package/lib/node/chunk-HDUJCCWF.js +661 -0
  28. package/lib/node/chunk-JISWS3Y3.mjs +31 -0
  29. package/lib/node/chunk-KZJG2UW7.js +31 -0
  30. package/lib/node/chunk-NNVTJLQA.mjs +6093 -0
  31. package/lib/node/chunk-QMIXLBOU.js +291 -0
  32. package/lib/node/chunk-STA6QBYM.mjs +64 -0
  33. package/lib/node/chunk-UVNTVJHD.js +667 -0
  34. package/lib/node/chunk-VQ4DZOBB.js +6 -0
  35. package/lib/node/chunk-Z5JAVEOB.mjs +667 -0
  36. package/lib/node/chunk-ZJOF5MEZ.js +64 -0
  37. package/lib/node/chunk-ZSI7MX3V.mjs +291 -0
  38. package/lib/node/chunk-ZWCZGO3W.mjs +661 -0
  39. package/lib/node/index.d.ts +14 -0
  40. package/lib/node/index.js +32 -0
  41. package/lib/node/index.mjs +32 -0
  42. package/lib/node/interceptors/ClientRequest/index.d.ts +22 -0
  43. package/lib/node/interceptors/ClientRequest/index.js +9 -0
  44. package/lib/node/interceptors/ClientRequest/index.mjs +9 -0
  45. package/lib/node/interceptors/XMLHttpRequest/index.d.ts +14 -0
  46. package/lib/node/interceptors/XMLHttpRequest/index.js +11 -0
  47. package/lib/node/interceptors/XMLHttpRequest/index.mjs +11 -0
  48. package/lib/node/interceptors/fetch/index.d.ts +12 -0
  49. package/lib/node/interceptors/fetch/index.js +96 -0
  50. package/lib/node/interceptors/fetch/index.mjs +96 -0
  51. package/package.json +63 -10
  52. package/src/interceptors/ClientRequest/NodeClientRequest.test.ts +1 -1
  53. package/src/interceptors/ClientRequest/NodeClientRequest.ts +26 -16
  54. package/src/interceptors/ClientRequest/utils/normalizeClientRequestArgs.ts +1 -1
  55. package/src/shims/webEncoding.ts +9 -0
  56. package/src/utils/bufferUtils.ts +1 -1
  57. package/lib/BatchInterceptor.d.ts +0 -18
  58. package/lib/BatchInterceptor.js +0 -34
  59. package/lib/BatchInterceptor.js.map +0 -1
  60. package/lib/Interceptor.d.ts +0 -50
  61. package/lib/Interceptor.js +0 -172
  62. package/lib/Interceptor.js.map +0 -1
  63. package/lib/RemoteHttpInterceptor.js +0 -158
  64. package/lib/RemoteHttpInterceptor.js.map +0 -1
  65. package/lib/glossary.d.ts +0 -7
  66. package/lib/glossary.js +0 -5
  67. package/lib/glossary.js.map +0 -1
  68. package/lib/index.d.ts +0 -5
  69. package/lib/index.js +0 -23
  70. package/lib/index.js.map +0 -1
  71. package/lib/interceptors/ClientRequest/NodeClientRequest.d.ts +0 -46
  72. package/lib/interceptors/ClientRequest/NodeClientRequest.js +0 -325
  73. package/lib/interceptors/ClientRequest/NodeClientRequest.js.map +0 -1
  74. package/lib/interceptors/ClientRequest/http.get.d.ts +0 -4
  75. package/lib/interceptors/ClientRequest/http.get.js +0 -19
  76. package/lib/interceptors/ClientRequest/http.get.js.map +0 -1
  77. package/lib/interceptors/ClientRequest/http.request.d.ts +0 -4
  78. package/lib/interceptors/ClientRequest/http.request.js +0 -16
  79. package/lib/interceptors/ClientRequest/http.request.js.map +0 -1
  80. package/lib/interceptors/ClientRequest/index.d.ts +0 -19
  81. package/lib/interceptors/ClientRequest/index.js +0 -50
  82. package/lib/interceptors/ClientRequest/index.js.map +0 -1
  83. package/lib/interceptors/ClientRequest/utils/cloneIncomingMessage.d.ts +0 -10
  84. package/lib/interceptors/ClientRequest/utils/cloneIncomingMessage.js +0 -60
  85. package/lib/interceptors/ClientRequest/utils/cloneIncomingMessage.js.map +0 -1
  86. package/lib/interceptors/ClientRequest/utils/createRequest.d.ts +0 -6
  87. package/lib/interceptors/ClientRequest/utils/createRequest.js +0 -30
  88. package/lib/interceptors/ClientRequest/utils/createRequest.js.map +0 -1
  89. package/lib/interceptors/ClientRequest/utils/createResponse.d.ts +0 -8
  90. package/lib/interceptors/ClientRequest/utils/createResponse.js +0 -24
  91. package/lib/interceptors/ClientRequest/utils/createResponse.js.map +0 -1
  92. package/lib/interceptors/ClientRequest/utils/getIncomingMessageBody.d.ts +0 -3
  93. package/lib/interceptors/ClientRequest/utils/getIncomingMessageBody.js +0 -57
  94. package/lib/interceptors/ClientRequest/utils/getIncomingMessageBody.js.map +0 -1
  95. package/lib/interceptors/ClientRequest/utils/normalizeClientRequestArgs.d.ts +0 -17
  96. package/lib/interceptors/ClientRequest/utils/normalizeClientRequestArgs.js +0 -151
  97. package/lib/interceptors/ClientRequest/utils/normalizeClientRequestArgs.js.map +0 -1
  98. package/lib/interceptors/ClientRequest/utils/normalizeClientRequestEndArgs.d.ts +0 -15
  99. package/lib/interceptors/ClientRequest/utils/normalizeClientRequestEndArgs.js +0 -33
  100. package/lib/interceptors/ClientRequest/utils/normalizeClientRequestEndArgs.js.map +0 -1
  101. package/lib/interceptors/ClientRequest/utils/normalizeClientRequestWriteArgs.d.ts +0 -13
  102. package/lib/interceptors/ClientRequest/utils/normalizeClientRequestWriteArgs.js +0 -20
  103. package/lib/interceptors/ClientRequest/utils/normalizeClientRequestWriteArgs.js.map +0 -1
  104. package/lib/interceptors/XMLHttpRequest/XMLHttpRequestController.d.ts +0 -44
  105. package/lib/interceptors/XMLHttpRequest/XMLHttpRequestController.js +0 -413
  106. package/lib/interceptors/XMLHttpRequest/XMLHttpRequestController.js.map +0 -1
  107. package/lib/interceptors/XMLHttpRequest/XMLHttpRequestProxy.d.ts +0 -20
  108. package/lib/interceptors/XMLHttpRequest/XMLHttpRequestProxy.js +0 -75
  109. package/lib/interceptors/XMLHttpRequest/XMLHttpRequestProxy.js.map +0 -1
  110. package/lib/interceptors/XMLHttpRequest/index.d.ts +0 -12
  111. package/lib/interceptors/XMLHttpRequest/index.js +0 -41
  112. package/lib/interceptors/XMLHttpRequest/index.js.map +0 -1
  113. package/lib/interceptors/XMLHttpRequest/polyfills/EventPolyfill.d.ts +0 -31
  114. package/lib/interceptors/XMLHttpRequest/polyfills/EventPolyfill.js +0 -44
  115. package/lib/interceptors/XMLHttpRequest/polyfills/EventPolyfill.js.map +0 -1
  116. package/lib/interceptors/XMLHttpRequest/polyfills/ProgressEventPolyfill.d.ts +0 -8
  117. package/lib/interceptors/XMLHttpRequest/polyfills/ProgressEventPolyfill.js +0 -15
  118. package/lib/interceptors/XMLHttpRequest/polyfills/ProgressEventPolyfill.js.map +0 -1
  119. package/lib/interceptors/XMLHttpRequest/utils/concatArrayBuffer.d.ts +0 -4
  120. package/lib/interceptors/XMLHttpRequest/utils/concatArrayBuffer.js +0 -14
  121. package/lib/interceptors/XMLHttpRequest/utils/concatArrayBuffer.js.map +0 -1
  122. package/lib/interceptors/XMLHttpRequest/utils/createEvent.d.ts +0 -2
  123. package/lib/interceptors/XMLHttpRequest/utils/createEvent.js +0 -37
  124. package/lib/interceptors/XMLHttpRequest/utils/createEvent.js.map +0 -1
  125. package/lib/interceptors/XMLHttpRequest/utils/createResponse.d.ts +0 -2
  126. package/lib/interceptors/XMLHttpRequest/utils/createResponse.js +0 -14
  127. package/lib/interceptors/XMLHttpRequest/utils/createResponse.js.map +0 -1
  128. package/lib/interceptors/XMLHttpRequest/utils/isDomParserSupportedType.d.ts +0 -1
  129. package/lib/interceptors/XMLHttpRequest/utils/isDomParserSupportedType.js +0 -17
  130. package/lib/interceptors/XMLHttpRequest/utils/isDomParserSupportedType.js.map +0 -1
  131. package/lib/interceptors/fetch/index.d.ts +0 -8
  132. package/lib/interceptors/fetch/index.js +0 -81
  133. package/lib/interceptors/fetch/index.js.map +0 -1
  134. package/lib/presets/browser.d.ts +0 -8
  135. package/lib/presets/browser.js +0 -10
  136. package/lib/presets/browser.js.map +0 -1
  137. package/lib/presets/node.d.ts +0 -8
  138. package/lib/presets/node.js +0 -10
  139. package/lib/presets/node.js.map +0 -1
  140. package/lib/utils/AsyncEventEmitter.d.ts +0 -33
  141. package/lib/utils/AsyncEventEmitter.js +0 -148
  142. package/lib/utils/AsyncEventEmitter.js.map +0 -1
  143. package/lib/utils/bufferUtils.d.ts +0 -8
  144. package/lib/utils/bufferUtils.js +0 -24
  145. package/lib/utils/bufferUtils.js.map +0 -1
  146. package/lib/utils/cloneObject.d.ts +0 -1
  147. package/lib/utils/cloneObject.js +0 -28
  148. package/lib/utils/cloneObject.js.map +0 -1
  149. package/lib/utils/createLazyCallback.d.ts +0 -11
  150. package/lib/utils/createLazyCallback.js +0 -40
  151. package/lib/utils/createLazyCallback.js.map +0 -1
  152. package/lib/utils/createProxy.d.ts +0 -8
  153. package/lib/utils/createProxy.js +0 -45
  154. package/lib/utils/createProxy.js.map +0 -1
  155. package/lib/utils/getCleanUrl.d.ts +0 -4
  156. package/lib/utils/getCleanUrl.js +0 -11
  157. package/lib/utils/getCleanUrl.js.map +0 -1
  158. package/lib/utils/getRequestOptionsByUrl.d.ts +0 -8
  159. package/lib/utils/getRequestOptionsByUrl.js +0 -28
  160. package/lib/utils/getRequestOptionsByUrl.js.map +0 -1
  161. package/lib/utils/getUrlByRequestOptions.d.ts +0 -11
  162. package/lib/utils/getUrlByRequestOptions.js +0 -78
  163. package/lib/utils/getUrlByRequestOptions.js.map +0 -1
  164. package/lib/utils/isObject.d.ts +0 -4
  165. package/lib/utils/isObject.js +0 -11
  166. package/lib/utils/isObject.js.map +0 -1
  167. package/lib/utils/nextTick.d.ts +0 -2
  168. package/lib/utils/nextTick.js +0 -16
  169. package/lib/utils/nextTick.js.map +0 -1
  170. package/lib/utils/parseJson.d.ts +0 -5
  171. package/lib/utils/parseJson.js +0 -18
  172. package/lib/utils/parseJson.js.map +0 -1
  173. package/lib/utils/toInteractiveRequest.d.ts +0 -7
  174. package/lib/utils/toInteractiveRequest.js +0 -20
  175. package/lib/utils/toInteractiveRequest.js.map +0 -1
  176. package/lib/utils/uuid.d.ts +0 -1
  177. package/lib/utils/uuid.js +0 -12
  178. package/lib/utils/uuid.js.map +0 -1
@@ -0,0 +1,29 @@
1
+ import {
2
+ __require
3
+ } from "./chunk-ZSI7MX3V.mjs";
4
+
5
+ // src/shims/webEncoding.ts
6
+ var TextEncoder = typeof globalThis.TextEncoder === "undefined" ? __require("util").TextEncoder : globalThis.TextEncoder;
7
+ var TextDecoder = typeof globalThis.TextDecoder === "undefined" ? __require("util").TextDecoder : globalThis.TextDecoder;
8
+
9
+ // src/utils/bufferUtils.ts
10
+ var encoder = new TextEncoder();
11
+ function encodeBuffer(text) {
12
+ return encoder.encode(text);
13
+ }
14
+ function decodeBuffer(buffer, encoding) {
15
+ const decoder = new TextDecoder(encoding);
16
+ return decoder.decode(buffer);
17
+ }
18
+ function toArrayBuffer(array) {
19
+ return array.buffer.slice(
20
+ array.byteOffset,
21
+ array.byteOffset + array.byteLength
22
+ );
23
+ }
24
+
25
+ export {
26
+ encodeBuffer,
27
+ decodeBuffer,
28
+ toArrayBuffer
29
+ };
@@ -0,0 +1,6 @@
1
+ // src/glossary.ts
2
+ var IS_PATCHED_MODULE = Symbol("isPatchedModule");
3
+
4
+ export {
5
+ IS_PATCHED_MODULE
6
+ };
@@ -0,0 +1,661 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+
5
+ var _chunk6GWWOJ23js = require('./chunk-6GWWOJ23.js');
6
+
7
+
8
+
9
+
10
+ var _chunk6V3JXLBFjs = require('./chunk-6V3JXLBF.js');
11
+
12
+
13
+ var _chunkVQ4DZOBBjs = require('./chunk-VQ4DZOBB.js');
14
+
15
+
16
+
17
+ var _chunkZJOF5MEZjs = require('./chunk-ZJOF5MEZ.js');
18
+
19
+
20
+ var _chunkQMIXLBOUjs = require('./chunk-QMIXLBOU.js');
21
+
22
+ // src/interceptors/XMLHttpRequest/index.ts
23
+ var _outvariant = require('outvariant');
24
+
25
+ // src/interceptors/XMLHttpRequest/XMLHttpRequestProxy.ts
26
+ var _until = require('@open-draft/until');
27
+
28
+ // src/interceptors/XMLHttpRequest/XMLHttpRequestController.ts
29
+ var _headerspolyfill = require('headers-polyfill');
30
+
31
+ // src/interceptors/XMLHttpRequest/utils/concatArrayBuffer.ts
32
+ function concatArrayBuffer(left, right) {
33
+ const result = new Uint8Array(left.byteLength + right.byteLength);
34
+ result.set(left, 0);
35
+ result.set(right, left.byteLength);
36
+ return result;
37
+ }
38
+
39
+ // src/interceptors/XMLHttpRequest/polyfills/EventPolyfill.ts
40
+ var EventPolyfill = class {
41
+ constructor(type, options) {
42
+ this.AT_TARGET = 0;
43
+ this.BUBBLING_PHASE = 0;
44
+ this.CAPTURING_PHASE = 0;
45
+ this.NONE = 0;
46
+ this.type = "";
47
+ this.srcElement = null;
48
+ this.currentTarget = null;
49
+ this.eventPhase = 0;
50
+ this.isTrusted = true;
51
+ this.composed = false;
52
+ this.cancelable = true;
53
+ this.defaultPrevented = false;
54
+ this.bubbles = true;
55
+ this.lengthComputable = true;
56
+ this.loaded = 0;
57
+ this.total = 0;
58
+ this.cancelBubble = false;
59
+ this.returnValue = true;
60
+ this.type = type;
61
+ this.target = (options == null ? void 0 : options.target) || null;
62
+ this.currentTarget = (options == null ? void 0 : options.currentTarget) || null;
63
+ this.timeStamp = Date.now();
64
+ }
65
+ composedPath() {
66
+ return [];
67
+ }
68
+ initEvent(type, bubbles, cancelable) {
69
+ this.type = type;
70
+ this.bubbles = !!bubbles;
71
+ this.cancelable = !!cancelable;
72
+ }
73
+ preventDefault() {
74
+ this.defaultPrevented = true;
75
+ }
76
+ stopPropagation() {
77
+ }
78
+ stopImmediatePropagation() {
79
+ }
80
+ };
81
+
82
+ // src/interceptors/XMLHttpRequest/polyfills/ProgressEventPolyfill.ts
83
+ var ProgressEventPolyfill = class extends EventPolyfill {
84
+ constructor(type, init) {
85
+ super(type);
86
+ this.lengthComputable = (init == null ? void 0 : init.lengthComputable) || false;
87
+ this.composed = (init == null ? void 0 : init.composed) || false;
88
+ this.loaded = (init == null ? void 0 : init.loaded) || 0;
89
+ this.total = (init == null ? void 0 : init.total) || 0;
90
+ }
91
+ };
92
+
93
+ // src/interceptors/XMLHttpRequest/utils/createEvent.ts
94
+ var SUPPORTS_PROGRESS_EVENT = typeof ProgressEvent !== "undefined";
95
+ function createEvent(target, type, init) {
96
+ const progressEvents = [
97
+ "error",
98
+ "progress",
99
+ "loadstart",
100
+ "loadend",
101
+ "load",
102
+ "timeout",
103
+ "abort"
104
+ ];
105
+ const ProgressEventClass = SUPPORTS_PROGRESS_EVENT ? ProgressEvent : ProgressEventPolyfill;
106
+ const event = progressEvents.includes(type) ? new ProgressEventClass(type, {
107
+ lengthComputable: true,
108
+ loaded: (init == null ? void 0 : init.loaded) || 0,
109
+ total: (init == null ? void 0 : init.total) || 0
110
+ }) : new EventPolyfill(type, {
111
+ target,
112
+ currentTarget: target
113
+ });
114
+ return event;
115
+ }
116
+
117
+ // src/utils/createProxy.ts
118
+ function createProxy(target, options) {
119
+ const proxy = new Proxy(target, optionsToProxyHandler(options));
120
+ return proxy;
121
+ }
122
+ function optionsToProxyHandler(options) {
123
+ const { constructorCall, methodCall, getProperty, setProperty } = options;
124
+ const handler = {};
125
+ if (typeof constructorCall !== "undefined") {
126
+ handler.construct = function(target, args, newTarget) {
127
+ const next = Reflect.construct.bind(null, target, args, newTarget);
128
+ return constructorCall.call(newTarget, args, next);
129
+ };
130
+ }
131
+ if (typeof setProperty !== "undefined") {
132
+ handler.set = function(target, propertyName, nextValue, receiver) {
133
+ const next = () => Reflect.set(target, propertyName, nextValue, receiver);
134
+ return setProperty.call(target, [propertyName, nextValue], next);
135
+ };
136
+ }
137
+ handler.get = function(target, propertyName, receiver) {
138
+ const next = () => target[propertyName];
139
+ const value = typeof getProperty !== "undefined" ? getProperty.call(target, [propertyName, receiver], next) : next();
140
+ if (typeof value === "function") {
141
+ return (...args) => {
142
+ const next2 = value.bind(target, ...args);
143
+ if (typeof methodCall !== "undefined") {
144
+ return methodCall.call(target, [propertyName, args], next2);
145
+ }
146
+ return next2();
147
+ };
148
+ }
149
+ return value;
150
+ };
151
+ return handler;
152
+ }
153
+
154
+ // src/interceptors/XMLHttpRequest/utils/isDomParserSupportedType.ts
155
+ function isDomParserSupportedType(type) {
156
+ const supportedTypes = [
157
+ "application/xhtml+xml",
158
+ "application/xml",
159
+ "image/svg+xml",
160
+ "text/html",
161
+ "text/xml"
162
+ ];
163
+ return supportedTypes.some((supportedType) => {
164
+ return type.startsWith(supportedType);
165
+ });
166
+ }
167
+
168
+ // src/utils/parseJson.ts
169
+ function parseJson(data) {
170
+ try {
171
+ const json = JSON.parse(data);
172
+ return json;
173
+ } catch (_) {
174
+ return null;
175
+ }
176
+ }
177
+
178
+ // src/interceptors/XMLHttpRequest/utils/createResponse.ts
179
+
180
+ function createResponse(request, responseBody) {
181
+ return new (0, _chunk6V3JXLBFjs.Response)(responseBody, {
182
+ status: request.status,
183
+ statusText: request.statusText,
184
+ headers: _headerspolyfill.stringToHeaders.call(void 0, request.getAllResponseHeaders())
185
+ });
186
+ }
187
+
188
+ // src/interceptors/XMLHttpRequest/XMLHttpRequestController.ts
189
+
190
+ var XMLHttpRequestController = class {
191
+ constructor(initialRequest, log) {
192
+ this.initialRequest = initialRequest;
193
+ this.log = log;
194
+ this.method = "GET";
195
+ this.url = null;
196
+ this.events = /* @__PURE__ */ new Map();
197
+ this.requestHeaders = new (0, _chunk6V3JXLBFjs.Headers)();
198
+ this.responseBuffer = new Uint8Array();
199
+ this.request = createProxy(initialRequest, {
200
+ setProperty: ([propertyName, nextValue], invoke) => {
201
+ if (propertyName === "withCredentials") {
202
+ define(this.request, "withCredentials", nextValue);
203
+ return true;
204
+ }
205
+ return invoke();
206
+ },
207
+ methodCall: ([methodName, args], invoke) => {
208
+ var _a;
209
+ switch (methodName) {
210
+ case "open": {
211
+ const [method, url] = args;
212
+ this.requestId = _chunkZJOF5MEZjs.uuidv4.call(void 0, );
213
+ if (typeof url === "undefined") {
214
+ this.method = "GET";
215
+ this.url = toAbsoluteUrl(method);
216
+ } else {
217
+ this.method = method;
218
+ this.url = toAbsoluteUrl(url);
219
+ }
220
+ this.log = this.log.extend(`${this.method} ${this.url.href}`);
221
+ this.log("open", this.method, this.url.href);
222
+ return invoke();
223
+ }
224
+ case "addEventListener": {
225
+ const [eventName, listener] = args;
226
+ this.registerEvent(eventName, listener);
227
+ this.log("addEventListener", eventName, listener.name);
228
+ return invoke();
229
+ }
230
+ case "setRequestHeader": {
231
+ const [name, value] = args;
232
+ this.requestHeaders.set(name, value);
233
+ this.log("setRequestHeader", name, value);
234
+ return invoke();
235
+ }
236
+ case "send": {
237
+ const [body] = args;
238
+ if (body != null) {
239
+ this.requestBody = typeof body === "string" ? _chunk6GWWOJ23js.encodeBuffer.call(void 0, body) : body;
240
+ }
241
+ this.request.addEventListener("load", () => {
242
+ if (typeof this.onResponse !== "undefined") {
243
+ const fetchResponse = createResponse(
244
+ this.request,
245
+ this.request.response
246
+ );
247
+ this.onResponse.call(
248
+ this,
249
+ fetchResponse,
250
+ fetchRequest,
251
+ this.requestId
252
+ );
253
+ }
254
+ });
255
+ const fetchRequest = this.toFetchApiRequest();
256
+ const onceRequestSettled = ((_a = this.onRequest) == null ? void 0 : _a.call(this, fetchRequest, this.requestId)) || Promise.resolve();
257
+ onceRequestSettled.finally(() => {
258
+ if (this.request.readyState < this.request.LOADING) {
259
+ this.log(
260
+ "request callback settled but request has not been handled (readystate %d), performing as-is...",
261
+ this.request.readyState
262
+ );
263
+ this.request.setRequestHeader("X-Request-Id", this.requestId);
264
+ return invoke();
265
+ }
266
+ });
267
+ break;
268
+ }
269
+ case "onabort":
270
+ case "onerror":
271
+ case "onload":
272
+ case "onloadend":
273
+ case "onloadstart":
274
+ case "onprogress":
275
+ case "ontimeout":
276
+ case "onreadystatechange": {
277
+ const [listener] = args;
278
+ this.registerEvent(
279
+ methodName,
280
+ listener
281
+ );
282
+ return invoke();
283
+ }
284
+ default: {
285
+ return invoke();
286
+ }
287
+ }
288
+ }
289
+ });
290
+ }
291
+ registerEvent(eventName, listener) {
292
+ const prevEvents = this.events.get(eventName) || [];
293
+ const nextEvents = prevEvents.concat(listener);
294
+ this.events.set(eventName, nextEvents);
295
+ this.log('registered event "%s"', eventName, listener.name);
296
+ }
297
+ respondWith(response) {
298
+ this.log(
299
+ "responding with a mocked response: %d %s",
300
+ response.status,
301
+ response.statusText
302
+ );
303
+ define(this.request, "status", response.status);
304
+ define(this.request, "statusText", response.statusText);
305
+ define(this.request, "responseURL", this.url.href);
306
+ this.request.getResponseHeader = new Proxy(this.request.getResponseHeader, {
307
+ apply: (_, __, args) => {
308
+ this.log("getResponseHeader", args[0]);
309
+ if (this.request.readyState < this.request.HEADERS_RECEIVED) {
310
+ this.log("headers not received yet, returning null");
311
+ return null;
312
+ }
313
+ const headerValue = response.headers.get(args[0]);
314
+ this.log('resolved response header "%s" to', args[0], headerValue);
315
+ return headerValue;
316
+ }
317
+ });
318
+ this.request.getAllResponseHeaders = new Proxy(
319
+ this.request.getAllResponseHeaders,
320
+ {
321
+ apply: () => {
322
+ this.log("getAllResponseHeaders");
323
+ if (this.request.readyState < this.request.HEADERS_RECEIVED) {
324
+ this.log("headers not received yet, returning empty string");
325
+ return "";
326
+ }
327
+ const allHeaders = _headerspolyfill.headersToString.call(void 0, response.headers);
328
+ this.log("resolved all response headers to", allHeaders);
329
+ return allHeaders;
330
+ }
331
+ }
332
+ );
333
+ Object.defineProperties(this.request, {
334
+ response: {
335
+ enumerable: true,
336
+ get: () => this.response
337
+ },
338
+ responseText: {
339
+ enumerable: true,
340
+ get: () => this.responseText
341
+ },
342
+ responseXML: {
343
+ enumerable: true,
344
+ get: () => this.responseXML
345
+ }
346
+ });
347
+ const totalResponseBodyLength = response.headers.has("Content-Length") ? Number(response.headers.get("Content-Length")) : void 0;
348
+ this.log("calculated response body length", totalResponseBodyLength);
349
+ this.trigger("loadstart", {
350
+ loaded: 0,
351
+ total: totalResponseBodyLength
352
+ });
353
+ this.setReadyState(this.request.HEADERS_RECEIVED);
354
+ this.setReadyState(this.request.LOADING);
355
+ const finalizeResponse = () => {
356
+ this.log("finalizing the mocked response...");
357
+ this.setReadyState(this.request.DONE);
358
+ this.trigger("load", {
359
+ loaded: this.responseBuffer.byteLength,
360
+ total: totalResponseBodyLength
361
+ });
362
+ this.trigger("loadend", {
363
+ loaded: this.responseBuffer.byteLength,
364
+ total: totalResponseBodyLength
365
+ });
366
+ };
367
+ if (response.body) {
368
+ this.log("mocked response has body, streaming...");
369
+ const reader = response.body.getReader();
370
+ const readNextResponseBodyChunk = async () => {
371
+ const { value, done } = await reader.read();
372
+ if (done) {
373
+ this.log("response body stream done!");
374
+ finalizeResponse();
375
+ return;
376
+ }
377
+ if (value) {
378
+ this.log("read response body chunk:", value);
379
+ this.responseBuffer = concatArrayBuffer(this.responseBuffer, value);
380
+ this.trigger("progress", {
381
+ loaded: this.responseBuffer.byteLength,
382
+ total: totalResponseBodyLength
383
+ });
384
+ }
385
+ readNextResponseBodyChunk();
386
+ };
387
+ readNextResponseBodyChunk();
388
+ } else {
389
+ finalizeResponse();
390
+ }
391
+ }
392
+ responseBufferToText() {
393
+ return _chunk6GWWOJ23js.decodeBuffer.call(void 0, this.responseBuffer);
394
+ }
395
+ get response() {
396
+ this.log("getResponse (responseType: %s)", this.request.responseType);
397
+ if (this.request.readyState !== this.request.DONE) {
398
+ return null;
399
+ }
400
+ switch (this.request.responseType) {
401
+ case "json": {
402
+ const responseJson = parseJson(this.responseBufferToText());
403
+ this.log("resolved response JSON", responseJson);
404
+ return responseJson;
405
+ }
406
+ case "arraybuffer": {
407
+ const arrayBuffer = _chunk6GWWOJ23js.toArrayBuffer.call(void 0, this.responseBuffer);
408
+ this.log("resolved response ArrayBuffer", arrayBuffer);
409
+ return arrayBuffer;
410
+ }
411
+ case "blob": {
412
+ const mimeType = this.request.getResponseHeader("Content-Type") || "text/plain";
413
+ const responseBlob = new Blob([this.responseBufferToText()], {
414
+ type: mimeType
415
+ });
416
+ this.log(
417
+ "resolved response Blob (mime type: %s)",
418
+ responseBlob,
419
+ mimeType
420
+ );
421
+ return responseBlob;
422
+ }
423
+ default: {
424
+ const responseText = this.responseBufferToText();
425
+ this.log(
426
+ 'resolving "%s" response type as text',
427
+ this.request.responseType,
428
+ responseText
429
+ );
430
+ return responseText;
431
+ }
432
+ }
433
+ }
434
+ get responseText() {
435
+ _outvariant.invariant.call(void 0,
436
+ this.request.responseType === "" || this.request.responseType === "text",
437
+ "InvalidStateError: The object is in invalid state."
438
+ );
439
+ if (this.request.readyState !== this.request.LOADING && this.request.readyState !== this.request.DONE) {
440
+ return "";
441
+ }
442
+ const responseText = this.responseBufferToText();
443
+ this.log('getResponseText: "%s"', responseText);
444
+ return responseText;
445
+ }
446
+ get responseXML() {
447
+ _outvariant.invariant.call(void 0,
448
+ this.request.responseType === "" || this.request.responseType === "document",
449
+ "InvalidStateError: The object is in invalid state."
450
+ );
451
+ if (this.request.readyState !== this.request.DONE) {
452
+ return null;
453
+ }
454
+ const contentType = this.request.getResponseHeader("Content-Type") || "";
455
+ if (typeof DOMParser === "undefined") {
456
+ console.warn(
457
+ "Cannot retrieve XMLHttpRequest response body as XML: DOMParser is not defined. You are likely using an environment that is not browser or does not polyfill browser globals correctly."
458
+ );
459
+ return null;
460
+ }
461
+ if (isDomParserSupportedType(contentType)) {
462
+ return new DOMParser().parseFromString(
463
+ this.responseBufferToText(),
464
+ contentType
465
+ );
466
+ }
467
+ return null;
468
+ }
469
+ errorWith(error) {
470
+ this.log("responding with an error");
471
+ this.setReadyState(this.request.DONE);
472
+ this.trigger("error");
473
+ this.trigger("loadend");
474
+ }
475
+ setReadyState(nextReadyState) {
476
+ this.log("setReadyState: %d -> %d", this.request.readyState, nextReadyState);
477
+ if (this.request.readyState === nextReadyState) {
478
+ this.log("ready state identical, skipping transition...");
479
+ return;
480
+ }
481
+ define(this.request, "readyState", nextReadyState);
482
+ this.log("set readyState to: %d", nextReadyState);
483
+ if (nextReadyState !== this.request.UNSENT) {
484
+ this.log('triggerring "readystatechange" event...');
485
+ this.trigger("readystatechange");
486
+ }
487
+ }
488
+ trigger(eventName, options) {
489
+ const callback = this.request[`on${eventName}`];
490
+ const event = createEvent(this.request, eventName, options);
491
+ this.log('trigger "%s"', eventName, options || "");
492
+ if (typeof callback === "function") {
493
+ this.log('found a direct "%s" callback, calling...', eventName);
494
+ callback.call(this.request, event);
495
+ }
496
+ for (const [registeredEventName, listeners] of this.events) {
497
+ if (registeredEventName === eventName) {
498
+ this.log(
499
+ 'found %d listener(s) for "%s" event, calling...',
500
+ listeners.length,
501
+ eventName
502
+ );
503
+ listeners.forEach((listener) => listener.call(this.request, event));
504
+ }
505
+ }
506
+ }
507
+ toFetchApiRequest() {
508
+ this.log("converting request to a Fetch API Request...");
509
+ const fetchRequest = new (0, _chunk6V3JXLBFjs.Request)(this.url.href, {
510
+ method: this.method,
511
+ headers: this.requestHeaders,
512
+ credentials: this.request.withCredentials ? "include" : "same-origin",
513
+ body: this.requestBody
514
+ });
515
+ const proxyHeaders = createProxy(fetchRequest.headers, {
516
+ methodCall: ([methodName, args], invoke) => {
517
+ switch (methodName) {
518
+ case "append":
519
+ case "set": {
520
+ const [headerName, headerValue] = args;
521
+ this.request.setRequestHeader(headerName, headerValue);
522
+ break;
523
+ }
524
+ case "delete": {
525
+ const [headerName] = args;
526
+ console.warn(
527
+ `XMLHttpRequest: Cannot remove a "${headerName}" header from the Fetch API representation of the "${fetchRequest.method} ${fetchRequest.url}" request. XMLHttpRequest headers cannot be removed.`
528
+ );
529
+ break;
530
+ }
531
+ }
532
+ return invoke();
533
+ }
534
+ });
535
+ define(fetchRequest, "headers", proxyHeaders);
536
+ this.log("converted request to a Fetch API Request!", fetchRequest);
537
+ return fetchRequest;
538
+ }
539
+ };
540
+ function toAbsoluteUrl(url) {
541
+ return new URL(url.toString(), location.href);
542
+ }
543
+ function define(target, property, value) {
544
+ Reflect.defineProperty(target, property, {
545
+ writable: true,
546
+ enumerable: true,
547
+ value
548
+ });
549
+ }
550
+
551
+ // src/interceptors/XMLHttpRequest/XMLHttpRequestProxy.ts
552
+ function createXMLHttpRequestProxy({
553
+ emitter,
554
+ log
555
+ }) {
556
+ const XMLHttpRequestProxy = new Proxy(globalThis.XMLHttpRequest, {
557
+ construct(target, args) {
558
+ log("constructed new XMLHttpRequest");
559
+ const originalRequest = Reflect.construct(target, args);
560
+ const requestController = new XMLHttpRequestController(
561
+ originalRequest,
562
+ log
563
+ );
564
+ requestController.onRequest = async function(request, requestId) {
565
+ const interactiveRequest = _chunkZJOF5MEZjs.toInteractiveRequest.call(void 0, request);
566
+ this.log(
567
+ 'emitting the "request" event for %s listener(s)...',
568
+ emitter.listenerCount("request")
569
+ );
570
+ emitter.emit("request", interactiveRequest, requestId);
571
+ this.log("awaiting mocked response...");
572
+ const [middlewareException, mockedResponse] = await _until.until.call(void 0, async () => {
573
+ await emitter.untilIdle(
574
+ "request",
575
+ ({ args: [, pendingRequestId] }) => {
576
+ return pendingRequestId === requestId;
577
+ }
578
+ );
579
+ this.log('all "request" listeners settled!');
580
+ const [mockedResponse2] = await interactiveRequest.respondWith.invoked();
581
+ this.log("event.respondWith called with:", mockedResponse2);
582
+ return mockedResponse2;
583
+ });
584
+ if (middlewareException) {
585
+ this.log(
586
+ "request listener threw an exception, aborting request...",
587
+ middlewareException
588
+ );
589
+ requestController.errorWith(middlewareException);
590
+ return;
591
+ }
592
+ if (typeof mockedResponse !== "undefined") {
593
+ this.log(
594
+ "received mocked response: %d %s",
595
+ mockedResponse.status,
596
+ mockedResponse.statusText
597
+ );
598
+ return requestController.respondWith(mockedResponse);
599
+ }
600
+ this.log("no mocked response received, performing request as-is...");
601
+ };
602
+ requestController.onResponse = async function(response, request, requestId) {
603
+ this.log(
604
+ 'emitting the "response" event for %s listener(s)...',
605
+ emitter.listenerCount("response")
606
+ );
607
+ emitter.emit("response", response, request, requestId);
608
+ };
609
+ return requestController.request;
610
+ }
611
+ });
612
+ return XMLHttpRequestProxy;
613
+ }
614
+
615
+ // src/interceptors/XMLHttpRequest/index.ts
616
+ var _XMLHttpRequestInterceptor = class extends _chunkQMIXLBOUjs.Interceptor {
617
+ constructor() {
618
+ super(_XMLHttpRequestInterceptor.symbol);
619
+ }
620
+ checkEnvironment() {
621
+ return typeof globalThis.XMLHttpRequest !== "undefined";
622
+ }
623
+ setup() {
624
+ const log = this.log.extend("setup");
625
+ log('patching "XMLHttpRequest" module...');
626
+ const PureXMLHttpRequest = globalThis.XMLHttpRequest;
627
+ _outvariant.invariant.call(void 0,
628
+ !PureXMLHttpRequest[_chunkVQ4DZOBBjs.IS_PATCHED_MODULE],
629
+ 'Failed to patch the "XMLHttpRequest" module: already patched.'
630
+ );
631
+ globalThis.XMLHttpRequest = createXMLHttpRequestProxy({
632
+ emitter: this.emitter,
633
+ log: this.log
634
+ });
635
+ log(
636
+ 'native "XMLHttpRequest" module patched!',
637
+ globalThis.XMLHttpRequest.name
638
+ );
639
+ Object.defineProperty(globalThis.XMLHttpRequest, _chunkVQ4DZOBBjs.IS_PATCHED_MODULE, {
640
+ enumerable: true,
641
+ configurable: true,
642
+ value: true
643
+ });
644
+ this.subscriptions.push(() => {
645
+ Object.defineProperty(globalThis.XMLHttpRequest, _chunkVQ4DZOBBjs.IS_PATCHED_MODULE, {
646
+ value: void 0
647
+ });
648
+ globalThis.XMLHttpRequest = PureXMLHttpRequest;
649
+ log(
650
+ 'native "XMLHttpRequest" module restored!',
651
+ globalThis.XMLHttpRequest.name
652
+ );
653
+ });
654
+ }
655
+ };
656
+ var XMLHttpRequestInterceptor = _XMLHttpRequestInterceptor;
657
+ XMLHttpRequestInterceptor.symbol = Symbol("xhr");
658
+
659
+
660
+
661
+ exports.XMLHttpRequestInterceptor = XMLHttpRequestInterceptor;