msw 2.14.5 → 2.14.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/lib/browser/index.js +232 -92
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/index.mjs +232 -92
- package/lib/browser/index.mjs.map +1 -1
- package/lib/core/{HttpResponse-CQwYpuKo.d.mts → HttpResponse-BTyqrRB6.d.mts} +1 -1
- package/lib/core/{HttpResponse-BFS34nkx.d.ts → HttpResponse-BXyXQFMJ.d.ts} +1 -1
- package/lib/core/HttpResponse.d.mts +1 -1
- package/lib/core/HttpResponse.d.ts +1 -1
- package/lib/core/HttpResponse.js +2 -2
- package/lib/core/HttpResponse.js.map +1 -1
- package/lib/core/HttpResponse.mjs +2 -2
- package/lib/core/HttpResponse.mjs.map +1 -1
- package/lib/core/experimental/compat.d.mts +2 -2
- package/lib/core/experimental/compat.d.ts +2 -2
- package/lib/core/experimental/define-network.d.mts +2 -2
- package/lib/core/experimental/define-network.d.ts +2 -2
- package/lib/core/experimental/define-network.js +16 -6
- package/lib/core/experimental/define-network.js.map +1 -1
- package/lib/core/experimental/define-network.mjs +16 -6
- package/lib/core/experimental/define-network.mjs.map +1 -1
- package/lib/core/experimental/frames/http-frame.d.mts +2 -2
- package/lib/core/experimental/frames/http-frame.d.ts +2 -2
- package/lib/core/experimental/frames/network-frame.d.mts +2 -2
- package/lib/core/experimental/frames/network-frame.d.ts +2 -2
- package/lib/core/experimental/frames/network-frame.js +2 -0
- package/lib/core/experimental/frames/network-frame.js.map +1 -1
- package/lib/core/experimental/frames/network-frame.mjs +2 -0
- package/lib/core/experimental/frames/network-frame.mjs.map +1 -1
- package/lib/core/experimental/frames/websocket-frame.d.mts +2 -2
- package/lib/core/experimental/frames/websocket-frame.d.ts +2 -2
- package/lib/core/experimental/handlers-controller.d.mts +1 -1
- package/lib/core/experimental/handlers-controller.d.ts +1 -1
- package/lib/core/experimental/index.d.mts +2 -2
- package/lib/core/experimental/index.d.ts +2 -2
- package/lib/core/experimental/on-unhandled-frame.d.mts +2 -2
- package/lib/core/experimental/on-unhandled-frame.d.ts +2 -2
- package/lib/core/experimental/setup-api.d.mts +1 -1
- package/lib/core/experimental/setup-api.d.ts +1 -1
- package/lib/core/experimental/sources/interceptor-source.d.mts +2 -2
- package/lib/core/experimental/sources/interceptor-source.d.ts +2 -2
- package/lib/core/experimental/sources/network-source.d.mts +2 -2
- package/lib/core/experimental/sources/network-source.d.ts +2 -2
- package/lib/core/getResponse.d.mts +1 -1
- package/lib/core/getResponse.d.ts +1 -1
- package/lib/core/graphql.d.mts +1 -1
- package/lib/core/graphql.d.ts +1 -1
- package/lib/core/handlers/GraphQLHandler.d.mts +1 -1
- package/lib/core/handlers/GraphQLHandler.d.ts +1 -1
- package/lib/core/handlers/HttpHandler.d.mts +1 -1
- package/lib/core/handlers/HttpHandler.d.ts +1 -1
- package/lib/core/handlers/RequestHandler.d.mts +1 -1
- package/lib/core/handlers/RequestHandler.d.ts +1 -1
- package/lib/core/handlers/WebSocketHandler.js +7 -6
- package/lib/core/handlers/WebSocketHandler.js.map +1 -1
- package/lib/core/handlers/WebSocketHandler.mjs +7 -6
- package/lib/core/handlers/WebSocketHandler.mjs.map +1 -1
- package/lib/core/http.d.mts +1 -1
- package/lib/core/http.d.ts +1 -1
- package/lib/core/index.d.mts +1 -1
- package/lib/core/index.d.ts +1 -1
- package/lib/core/{on-unhandled-frame-BBR-P3kV.d.ts → on-unhandled-frame-0KmwUmeV.d.ts} +1 -1
- package/lib/core/{on-unhandled-frame-Cr1KOZ0I.d.mts → on-unhandled-frame-gkokW4Rr.d.mts} +1 -1
- package/lib/core/passthrough.d.mts +1 -1
- package/lib/core/passthrough.d.ts +1 -1
- package/lib/core/sse.d.mts +1 -1
- package/lib/core/sse.d.ts +1 -1
- package/lib/core/sse.js +18 -13
- package/lib/core/sse.js.map +1 -1
- package/lib/core/sse.mjs +18 -13
- package/lib/core/sse.mjs.map +1 -1
- package/lib/core/utils/HttpResponse/decorators.d.mts +1 -1
- package/lib/core/utils/HttpResponse/decorators.d.ts +1 -1
- package/lib/core/utils/HttpResponse/decorators.js +1 -1
- package/lib/core/utils/HttpResponse/decorators.js.map +1 -1
- package/lib/core/utils/HttpResponse/decorators.mjs +1 -1
- package/lib/core/utils/HttpResponse/decorators.mjs.map +1 -1
- package/lib/core/utils/executeHandlers.d.mts +1 -1
- package/lib/core/utils/executeHandlers.d.ts +1 -1
- package/lib/core/utils/handleRequest.d.mts +1 -1
- package/lib/core/utils/handleRequest.d.ts +1 -1
- package/lib/core/utils/internal/Disposable.js +19 -1
- package/lib/core/utils/internal/Disposable.js.map +1 -1
- package/lib/core/utils/internal/Disposable.mjs +19 -1
- package/lib/core/utils/internal/Disposable.mjs.map +1 -1
- package/lib/core/utils/internal/attachSiblingHandlers.d.mts +1 -1
- package/lib/core/utils/internal/attachSiblingHandlers.d.ts +1 -1
- package/lib/core/utils/internal/attachSiblingHandlers.js +1 -1
- package/lib/core/utils/internal/attachSiblingHandlers.js.map +1 -1
- package/lib/core/utils/internal/attachSiblingHandlers.mjs +1 -1
- package/lib/core/utils/internal/attachSiblingHandlers.mjs.map +1 -1
- package/lib/core/utils/internal/isHandlerKind.d.mts +1 -1
- package/lib/core/utils/internal/isHandlerKind.d.ts +1 -1
- package/lib/core/utils/internal/parseGraphQLRequest.d.mts +1 -1
- package/lib/core/utils/internal/parseGraphQLRequest.d.ts +1 -1
- package/lib/core/utils/internal/parseMultipartData.d.mts +1 -1
- package/lib/core/utils/internal/parseMultipartData.d.ts +1 -1
- package/lib/core/ws/WebSocketClientManager.js +4 -0
- package/lib/core/ws/WebSocketClientManager.js.map +1 -1
- package/lib/core/ws/WebSocketClientManager.mjs +4 -0
- package/lib/core/ws/WebSocketClientManager.mjs.map +1 -1
- package/lib/core/ws/handleWebSocketEvent.d.mts +1 -1
- package/lib/core/ws/handleWebSocketEvent.d.ts +1 -1
- package/lib/iife/index.js +4435 -979
- package/lib/iife/index.js.map +1 -1
- package/lib/mockServiceWorker.js +1 -1
- package/package.json +4 -5
- package/src/core/experimental/define-network.ts +30 -6
- package/src/core/sse.ts +15 -4
- package/src/core/utils/internal/Disposable.ts +22 -1
package/README.md
CHANGED
|
@@ -172,11 +172,6 @@ Mock Service Worker is trusted by hundreds of thousands of engineers around the
|
|
|
172
172
|
</picture>
|
|
173
173
|
</a>
|
|
174
174
|
</td>
|
|
175
|
-
<td>
|
|
176
|
-
<a href="https://www.codacy.com/" target="_blank">
|
|
177
|
-
<img src="media/sponsors/codacy.svg" alt="Codacy" height="64" />
|
|
178
|
-
</a>
|
|
179
|
-
</td>
|
|
180
175
|
<td>
|
|
181
176
|
<a href="https://workleap.com/" target="_blank">
|
|
182
177
|
<img src="media/sponsors/workleap.svg" alt="Workleap" height="64" width="174" />
|
|
@@ -194,6 +189,11 @@ Mock Service Worker is trusted by hundreds of thousands of engineers around the
|
|
|
194
189
|
<img src="media/sponsors/stackblitz.svg" alt="StackBlitz" height="64" />
|
|
195
190
|
</a>
|
|
196
191
|
</td>
|
|
192
|
+
<td align="center">
|
|
193
|
+
<a href="https://coderabbit.link/mswjs" target="_blank">
|
|
194
|
+
<img src="media/sponsors/coderabbit.svg" alt="CodeRabbit" height="64" />
|
|
195
|
+
</a>
|
|
196
|
+
</td>
|
|
197
197
|
</tr>
|
|
198
198
|
</table>
|
|
199
199
|
|
package/lib/browser/index.js
CHANGED
|
@@ -561,7 +561,7 @@ var _Emitter = class {
|
|
|
561
561
|
var Emitter = _Emitter;
|
|
562
562
|
Emitter.defaultMaxListeners = 10;
|
|
563
563
|
|
|
564
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.41.
|
|
564
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.41.9/node_modules/@mswjs/interceptors/lib/browser/createRequestId-DYCsFHOi.mjs
|
|
565
565
|
var INTERNAL_REQUEST_ID_HEADER_NAME = "x-interceptors-internal-request-id";
|
|
566
566
|
function getGlobalSymbol(symbol) {
|
|
567
567
|
return globalThis[symbol] || void 0;
|
|
@@ -710,7 +710,7 @@ function createRequestId() {
|
|
|
710
710
|
return Math.random().toString(16).slice(2);
|
|
711
711
|
}
|
|
712
712
|
|
|
713
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.41.
|
|
713
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.41.9/node_modules/@mswjs/interceptors/lib/browser/resolveWebSocketUrl-C83-x9iE.mjs
|
|
714
714
|
function resolveWebSocketUrl(url) {
|
|
715
715
|
if (typeof url === "string") return resolveWebSocketUrl(new URL(url, typeof location !== "undefined" ? location.href : void 0));
|
|
716
716
|
if (url.protocol === "http:") url.protocol = "ws:";
|
|
@@ -721,15 +721,72 @@ function resolveWebSocketUrl(url) {
|
|
|
721
721
|
return url.href;
|
|
722
722
|
}
|
|
723
723
|
|
|
724
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.41.
|
|
724
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.41.9/node_modules/@mswjs/interceptors/lib/browser/hasConfigurableGlobal-C8zq1MCg.mjs
|
|
725
725
|
async function emitAsync(emitter, eventName, ...data) {
|
|
726
726
|
const listeners = emitter.listeners(eventName);
|
|
727
727
|
if (listeners.length === 0) return;
|
|
728
728
|
for (const listener of listeners) await listener.apply(emitter, data);
|
|
729
729
|
}
|
|
730
|
+
var PatchesRegistry = class {
|
|
731
|
+
#replacements = /* @__PURE__ */ new Map();
|
|
732
|
+
applyPatch(owner, key, getNextValue) {
|
|
733
|
+
const ownerReplacements = this.#replacements.get(owner);
|
|
734
|
+
invariant(!ownerReplacements?.has(key), `Failed to replace a global value at "${String(key)}": already replaced.`);
|
|
735
|
+
const match = getDeepPropertyDescriptor(owner, key);
|
|
736
|
+
if (typeof match === "undefined") {
|
|
737
|
+
console.warn(`Failed to replace a global value at "${String(key)}": not a global value.`);
|
|
738
|
+
return () => {
|
|
739
|
+
};
|
|
740
|
+
}
|
|
741
|
+
if (match.descriptor.configurable) Object.defineProperty(owner, key, {
|
|
742
|
+
value: getNextValue(owner[key]),
|
|
743
|
+
enumerable: true,
|
|
744
|
+
configurable: true
|
|
745
|
+
});
|
|
746
|
+
else if (match.descriptor.writable) owner[key] = getNextValue(owner[key]);
|
|
747
|
+
else throw new Error(`Failed to patch a non-configurable non-writable property "${key.toString()}"`);
|
|
748
|
+
const restorePatch = () => {
|
|
749
|
+
const currentReplacements = this.#replacements.get(owner);
|
|
750
|
+
if (!currentReplacements?.has(key)) return;
|
|
751
|
+
if (match.owner === owner)
|
|
752
|
+
Object.defineProperty(match.owner, key, match.descriptor);
|
|
753
|
+
else
|
|
754
|
+
Reflect.deleteProperty(owner, key);
|
|
755
|
+
currentReplacements.delete(key);
|
|
756
|
+
if (currentReplacements.size === 0) this.#replacements.delete(owner);
|
|
757
|
+
};
|
|
758
|
+
if (ownerReplacements) ownerReplacements.set(key, restorePatch);
|
|
759
|
+
else this.#replacements.set(owner, /* @__PURE__ */ new Map([[key, restorePatch]]));
|
|
760
|
+
return restorePatch;
|
|
761
|
+
}
|
|
762
|
+
restoreAllPatches() {
|
|
763
|
+
const errors = [];
|
|
764
|
+
for (const [, ownerReplacements] of this.#replacements) for (const [, restorePatch] of ownerReplacements) try {
|
|
765
|
+
restorePatch();
|
|
766
|
+
} catch (error2) {
|
|
767
|
+
if (error2 instanceof Error) errors.push(error2);
|
|
768
|
+
else throw error2;
|
|
769
|
+
}
|
|
770
|
+
if (errors.length > 0) throw new AggregateError(errors, "FOO!");
|
|
771
|
+
}
|
|
772
|
+
};
|
|
773
|
+
var patchesRegistry = new PatchesRegistry();
|
|
774
|
+
function getDeepPropertyDescriptor(owner, key) {
|
|
775
|
+
let currentOwner = owner;
|
|
776
|
+
let descriptor;
|
|
777
|
+
while (currentOwner) {
|
|
778
|
+
descriptor = Object.getOwnPropertyDescriptor(currentOwner, key);
|
|
779
|
+
if (descriptor) return {
|
|
780
|
+
owner: currentOwner,
|
|
781
|
+
descriptor
|
|
782
|
+
};
|
|
783
|
+
currentOwner = Object.getPrototypeOf(currentOwner);
|
|
784
|
+
}
|
|
785
|
+
}
|
|
730
786
|
function hasConfigurableGlobal(propertyName) {
|
|
731
|
-
const
|
|
732
|
-
if (typeof
|
|
787
|
+
const match = getDeepPropertyDescriptor(globalThis, propertyName);
|
|
788
|
+
if (typeof match === "undefined") return false;
|
|
789
|
+
const { descriptor } = match;
|
|
733
790
|
if (typeof descriptor.get === "function" && typeof descriptor.get() === "undefined") return false;
|
|
734
791
|
if (typeof descriptor.get === "undefined" && descriptor.value == null) return false;
|
|
735
792
|
if (typeof descriptor.set === "undefined" && !descriptor.configurable) {
|
|
@@ -805,7 +862,7 @@ var DeferredPromise = class extends Promise {
|
|
|
805
862
|
}
|
|
806
863
|
};
|
|
807
864
|
|
|
808
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.41.
|
|
865
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.41.9/node_modules/@mswjs/interceptors/lib/browser/interceptors/WebSocket/index.mjs
|
|
809
866
|
function bindEvent(target, event) {
|
|
810
867
|
Object.defineProperties(event, {
|
|
811
868
|
target: {
|
|
@@ -821,8 +878,8 @@ function bindEvent(target, event) {
|
|
|
821
878
|
});
|
|
822
879
|
return event;
|
|
823
880
|
}
|
|
824
|
-
var kCancelable = Symbol("kCancelable");
|
|
825
|
-
var kDefaultPrevented = Symbol("kDefaultPrevented");
|
|
881
|
+
var kCancelable = /* @__PURE__ */ Symbol("kCancelable");
|
|
882
|
+
var kDefaultPrevented = /* @__PURE__ */ Symbol("kDefaultPrevented");
|
|
826
883
|
var CancelableMessageEvent = class extends MessageEvent {
|
|
827
884
|
constructor(type, init) {
|
|
828
885
|
super(type, init);
|
|
@@ -875,8 +932,8 @@ var CancelableCloseEvent = class extends CloseEvent {
|
|
|
875
932
|
if (this.cancelable && !this[kDefaultPrevented]) this[kDefaultPrevented] = true;
|
|
876
933
|
}
|
|
877
934
|
};
|
|
878
|
-
var kEmitter$1 = Symbol("kEmitter");
|
|
879
|
-
var kBoundListener$1 = Symbol("kBoundListener");
|
|
935
|
+
var kEmitter$1 = /* @__PURE__ */ Symbol("kEmitter");
|
|
936
|
+
var kBoundListener$1 = /* @__PURE__ */ Symbol("kBoundListener");
|
|
880
937
|
var WebSocketClientConnection = class {
|
|
881
938
|
constructor(socket, transport) {
|
|
882
939
|
this.socket = socket;
|
|
@@ -933,9 +990,9 @@ var WebSocketClientConnection = class {
|
|
|
933
990
|
}
|
|
934
991
|
};
|
|
935
992
|
var WEBSOCKET_CLOSE_CODE_RANGE_ERROR = "InvalidAccessError: close code out of user configurable range";
|
|
936
|
-
var kPassthroughPromise = Symbol("kPassthroughPromise");
|
|
937
|
-
var kOnSend = Symbol("kOnSend");
|
|
938
|
-
var kClose = Symbol("kClose");
|
|
993
|
+
var kPassthroughPromise = /* @__PURE__ */ Symbol("kPassthroughPromise");
|
|
994
|
+
var kOnSend = /* @__PURE__ */ Symbol("kOnSend");
|
|
995
|
+
var kClose = /* @__PURE__ */ Symbol("kClose");
|
|
939
996
|
var WebSocketOverride = class extends EventTarget {
|
|
940
997
|
static {
|
|
941
998
|
this.CONNECTING = 0;
|
|
@@ -1055,9 +1112,9 @@ function getDataSize(data) {
|
|
|
1055
1112
|
if (data instanceof Blob) return data.size;
|
|
1056
1113
|
return data.byteLength;
|
|
1057
1114
|
}
|
|
1058
|
-
var kEmitter = Symbol("kEmitter");
|
|
1059
|
-
var kBoundListener = Symbol("kBoundListener");
|
|
1060
|
-
var kSend = Symbol("kSend");
|
|
1115
|
+
var kEmitter = /* @__PURE__ */ Symbol("kEmitter");
|
|
1116
|
+
var kBoundListener = /* @__PURE__ */ Symbol("kBoundListener");
|
|
1117
|
+
var kSend = /* @__PURE__ */ Symbol("kSend");
|
|
1061
1118
|
var WebSocketServerConnection = class {
|
|
1062
1119
|
constructor(client, transport, createConnection) {
|
|
1063
1120
|
this.client = client;
|
|
@@ -1257,7 +1314,7 @@ var WebSocketClassTransport = class extends EventTarget {
|
|
|
1257
1314
|
};
|
|
1258
1315
|
var WebSocketInterceptor = class WebSocketInterceptor2 extends Interceptor {
|
|
1259
1316
|
static {
|
|
1260
|
-
this.symbol = Symbol("websocket");
|
|
1317
|
+
this.symbol = /* @__PURE__ */ Symbol.for("websocket-interceptor");
|
|
1261
1318
|
}
|
|
1262
1319
|
constructor() {
|
|
1263
1320
|
super(WebSocketInterceptor2.symbol);
|
|
@@ -1266,7 +1323,7 @@ var WebSocketInterceptor = class WebSocketInterceptor2 extends Interceptor {
|
|
|
1266
1323
|
return hasConfigurableGlobal("WebSocket");
|
|
1267
1324
|
}
|
|
1268
1325
|
setup() {
|
|
1269
|
-
const
|
|
1326
|
+
const logger = this.logger.extend("setup");
|
|
1270
1327
|
const WebSocketProxy = new Proxy(globalThis.WebSocket, { construct: (target, args, newTarget) => {
|
|
1271
1328
|
const [url, protocols] = args;
|
|
1272
1329
|
const createConnection = () => {
|
|
@@ -1302,13 +1359,9 @@ var WebSocketInterceptor = class WebSocketInterceptor2 extends Interceptor {
|
|
|
1302
1359
|
});
|
|
1303
1360
|
return socket;
|
|
1304
1361
|
} });
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
});
|
|
1309
|
-
this.subscriptions.push(() => {
|
|
1310
|
-
Object.defineProperty(globalThis, "WebSocket", originalWebSocketDescriptor);
|
|
1311
|
-
});
|
|
1362
|
+
logger.info("patching global WebSocket...");
|
|
1363
|
+
this.subscriptions.push(patchesRegistry.applyPatch(globalThis, "WebSocket", () => WebSocketProxy));
|
|
1364
|
+
logger.info("global WebSocket patched!", globalThis.WebSocket.name);
|
|
1312
1365
|
}
|
|
1313
1366
|
};
|
|
1314
1367
|
|
|
@@ -1401,8 +1454,7 @@ var DeferredPromise2 = class extends Promise {
|
|
|
1401
1454
|
}
|
|
1402
1455
|
};
|
|
1403
1456
|
|
|
1404
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.41.
|
|
1405
|
-
var IS_PATCHED_MODULE = Symbol("isPatchedModule");
|
|
1457
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.41.9/node_modules/@mswjs/interceptors/lib/browser/getRawRequest-B1BqgWG6.mjs
|
|
1406
1458
|
var InterceptorError = class InterceptorError2 extends Error {
|
|
1407
1459
|
constructor(message) {
|
|
1408
1460
|
super(message);
|
|
@@ -1484,6 +1536,68 @@ function getValueBySymbol(symbolName, source) {
|
|
|
1484
1536
|
});
|
|
1485
1537
|
if (symbol) return Reflect.get(source, symbol);
|
|
1486
1538
|
}
|
|
1539
|
+
var FetchRequest = class FetchRequest2 extends Request {
|
|
1540
|
+
static #resolveProperty(input, init = {}, key) {
|
|
1541
|
+
return init[key] ?? (input instanceof Request ? input[key] : void 0);
|
|
1542
|
+
}
|
|
1543
|
+
/**
|
|
1544
|
+
* Check if the given request method is configurable.
|
|
1545
|
+
* @see https://fetch.spec.whatwg.org/#methods
|
|
1546
|
+
*/
|
|
1547
|
+
static isConfigurableMethod(method) {
|
|
1548
|
+
return method !== "CONNECT" && method !== "TRACE" && method !== "TRACK";
|
|
1549
|
+
}
|
|
1550
|
+
static isMethodWithBody(method) {
|
|
1551
|
+
return method !== "HEAD" && method !== "GET" && FetchRequest2.isConfigurableMethod(method);
|
|
1552
|
+
}
|
|
1553
|
+
/**
|
|
1554
|
+
* Check if the given request `mode` is configurable.
|
|
1555
|
+
* @see https://fetch.spec.whatwg.org/#concept-request-mode
|
|
1556
|
+
*/
|
|
1557
|
+
static isConfigurableMode(mode) {
|
|
1558
|
+
return mode !== "navigate" && mode !== "websocket" && mode !== "webtransport";
|
|
1559
|
+
}
|
|
1560
|
+
constructor(input, init) {
|
|
1561
|
+
const method = FetchRequest2.#resolveProperty(input, init, "method") || "GET";
|
|
1562
|
+
const safeMethod = FetchRequest2.isConfigurableMethod(method) ? method : "GET";
|
|
1563
|
+
const hasExplicitBody = init != null && "body" in init;
|
|
1564
|
+
const bodyInit = !FetchRequest2.isMethodWithBody(method) ? { body: void 0 } : hasExplicitBody ? { body: init.body } : {};
|
|
1565
|
+
const mode = FetchRequest2.#resolveProperty(input, init, "mode") ?? void 0;
|
|
1566
|
+
const safeMode = FetchRequest2.isConfigurableMode(mode) ? mode : void 0;
|
|
1567
|
+
super(input, {
|
|
1568
|
+
...init || {},
|
|
1569
|
+
method: safeMethod,
|
|
1570
|
+
mode: safeMode,
|
|
1571
|
+
duplex: init?.duplex ?? (FetchRequest2.isMethodWithBody(method) ? "half" : void 0),
|
|
1572
|
+
...bodyInit
|
|
1573
|
+
});
|
|
1574
|
+
if (method !== safeMethod) this.#setInternalProperty("method", method);
|
|
1575
|
+
if (method === "CONNECT") {
|
|
1576
|
+
const url = new URL(input instanceof Request ? input.url : input);
|
|
1577
|
+
let authority;
|
|
1578
|
+
if (url.protocol === "localhost:") authority = url.href;
|
|
1579
|
+
else authority = url.pathname.replace(/^\/+/, "");
|
|
1580
|
+
Object.defineProperty(this, "url", {
|
|
1581
|
+
get: () => authority,
|
|
1582
|
+
enumerable: true,
|
|
1583
|
+
configurable: true
|
|
1584
|
+
});
|
|
1585
|
+
}
|
|
1586
|
+
if (mode != null && mode !== safeMode) this.#setInternalProperty("mode", mode);
|
|
1587
|
+
}
|
|
1588
|
+
#setInternalProperty(key, value) {
|
|
1589
|
+
const internalState = getValueBySymbol("state", this);
|
|
1590
|
+
if (internalState) Reflect.set(internalState, key, value);
|
|
1591
|
+
else Object.defineProperty(this, key, {
|
|
1592
|
+
value,
|
|
1593
|
+
enumerable: true,
|
|
1594
|
+
configurable: true,
|
|
1595
|
+
writable: false
|
|
1596
|
+
});
|
|
1597
|
+
}
|
|
1598
|
+
};
|
|
1599
|
+
var kStatus = /* @__PURE__ */ Symbol("kStatus");
|
|
1600
|
+
var kUrl = /* @__PURE__ */ Symbol("kUrl");
|
|
1487
1601
|
var FetchResponse = class FetchResponse2 extends Response {
|
|
1488
1602
|
static {
|
|
1489
1603
|
this.STATUS_CODES_WITHOUT_BODY = [
|
|
@@ -1516,6 +1630,20 @@ var FetchResponse = class FetchResponse2 extends Response {
|
|
|
1516
1630
|
static isResponseWithBody(status) {
|
|
1517
1631
|
return !FetchResponse2.STATUS_CODES_WITHOUT_BODY.includes(status);
|
|
1518
1632
|
}
|
|
1633
|
+
static setStatus(status, response) {
|
|
1634
|
+
const internalState = getValueBySymbol("state", response);
|
|
1635
|
+
if (internalState) internalState.status = status;
|
|
1636
|
+
else Object.defineProperty(response, "status", {
|
|
1637
|
+
value: status,
|
|
1638
|
+
enumerable: true,
|
|
1639
|
+
configurable: true,
|
|
1640
|
+
writable: false
|
|
1641
|
+
});
|
|
1642
|
+
Object.defineProperty(response, kStatus, {
|
|
1643
|
+
value: status,
|
|
1644
|
+
enumerable: false
|
|
1645
|
+
});
|
|
1646
|
+
}
|
|
1519
1647
|
static setUrl(url, response) {
|
|
1520
1648
|
if (!url || url === "about:" || !canParseUrl(url)) return;
|
|
1521
1649
|
const state = getValueBySymbol("state", response);
|
|
@@ -1526,6 +1654,10 @@ var FetchResponse = class FetchResponse2 extends Response {
|
|
|
1526
1654
|
configurable: true,
|
|
1527
1655
|
writable: false
|
|
1528
1656
|
});
|
|
1657
|
+
Object.defineProperty(response, kUrl, {
|
|
1658
|
+
value: url,
|
|
1659
|
+
enumerable: false
|
|
1660
|
+
});
|
|
1529
1661
|
}
|
|
1530
1662
|
/**
|
|
1531
1663
|
* Parses the given raw HTTP headers into a Fetch API `Headers` instance.
|
|
@@ -1535,6 +1667,27 @@ var FetchResponse = class FetchResponse2 extends Response {
|
|
|
1535
1667
|
for (let line = 0; line < rawHeaders.length; line += 2) headers.append(rawHeaders[line], rawHeaders[line + 1]);
|
|
1536
1668
|
return headers;
|
|
1537
1669
|
}
|
|
1670
|
+
/**
|
|
1671
|
+
* Safely clones the given `Response`.
|
|
1672
|
+
* Coerces response clone exceptions into 500 mocked responses.
|
|
1673
|
+
* Handy in the environments that introduce arbitrary response
|
|
1674
|
+
* cloning restrictions, like "101 Switching Protocols" cloning
|
|
1675
|
+
* in "miniflare".
|
|
1676
|
+
*/
|
|
1677
|
+
static clone(response) {
|
|
1678
|
+
try {
|
|
1679
|
+
return response.clone();
|
|
1680
|
+
} catch (error2) {
|
|
1681
|
+
return Response.json(error2 instanceof Error ? {
|
|
1682
|
+
name: error2.name,
|
|
1683
|
+
message: error2.message,
|
|
1684
|
+
stack: error2.stack
|
|
1685
|
+
} : {}, {
|
|
1686
|
+
status: 500,
|
|
1687
|
+
statusText: "Unclonable Response"
|
|
1688
|
+
});
|
|
1689
|
+
}
|
|
1690
|
+
}
|
|
1538
1691
|
constructor(body, init = {}) {
|
|
1539
1692
|
const status = init.status ?? 200;
|
|
1540
1693
|
const safeStatus = FetchResponse2.isConfigurableStatusCode(status) ? status : 200;
|
|
@@ -1544,25 +1697,24 @@ var FetchResponse = class FetchResponse2 extends Response {
|
|
|
1544
1697
|
statusText: init.statusText,
|
|
1545
1698
|
headers: init.headers
|
|
1546
1699
|
});
|
|
1547
|
-
if (status !== safeStatus)
|
|
1548
|
-
const state = getValueBySymbol("state", this);
|
|
1549
|
-
if (state) state.status = status;
|
|
1550
|
-
else Object.defineProperty(this, "status", {
|
|
1551
|
-
value: status,
|
|
1552
|
-
enumerable: true,
|
|
1553
|
-
configurable: true,
|
|
1554
|
-
writable: false
|
|
1555
|
-
});
|
|
1556
|
-
}
|
|
1700
|
+
if (status !== safeStatus) FetchResponse2.setStatus(status, this);
|
|
1557
1701
|
FetchResponse2.setUrl(init.url, this);
|
|
1558
1702
|
}
|
|
1703
|
+
clone() {
|
|
1704
|
+
const clonedResponse = super.clone();
|
|
1705
|
+
const customStatus = Reflect.get(this, kStatus);
|
|
1706
|
+
if (customStatus) FetchResponse2.setStatus(customStatus, clonedResponse);
|
|
1707
|
+
const customUrl = Reflect.get(this, kUrl);
|
|
1708
|
+
if (customUrl) FetchResponse2.setUrl(customUrl, clonedResponse);
|
|
1709
|
+
return clonedResponse;
|
|
1710
|
+
}
|
|
1559
1711
|
};
|
|
1560
|
-
var kRawRequest = Symbol("kRawRequest");
|
|
1712
|
+
var kRawRequest = /* @__PURE__ */ Symbol("kRawRequest");
|
|
1561
1713
|
function setRawRequest(request, rawRequest) {
|
|
1562
1714
|
Reflect.set(request, kRawRequest, rawRequest);
|
|
1563
1715
|
}
|
|
1564
1716
|
|
|
1565
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.41.
|
|
1717
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.41.9/node_modules/@mswjs/interceptors/lib/browser/bufferUtils-BiiO6HZv.mjs
|
|
1566
1718
|
var encoder = new TextEncoder();
|
|
1567
1719
|
function encodeBuffer(text) {
|
|
1568
1720
|
return encoder.encode(text);
|
|
@@ -1747,9 +1899,9 @@ var LensList = class {
|
|
|
1747
1899
|
};
|
|
1748
1900
|
|
|
1749
1901
|
// node_modules/.pnpm/rettime@0.11.11/node_modules/rettime/build/index.mjs
|
|
1750
|
-
var kDefaultPrevented2 = Symbol("kDefaultPrevented");
|
|
1751
|
-
var kPropagationStopped = Symbol("kPropagationStopped");
|
|
1752
|
-
var kImmediatePropagationStopped = Symbol("kImmediatePropagationStopped");
|
|
1902
|
+
var kDefaultPrevented2 = /* @__PURE__ */ Symbol("kDefaultPrevented");
|
|
1903
|
+
var kPropagationStopped = /* @__PURE__ */ Symbol("kPropagationStopped");
|
|
1904
|
+
var kImmediatePropagationStopped = /* @__PURE__ */ Symbol("kImmediatePropagationStopped");
|
|
1753
1905
|
var TypedEvent = class extends MessageEvent {
|
|
1754
1906
|
/**
|
|
1755
1907
|
* @note Keep a placeholder property with the return type
|
|
@@ -2513,7 +2665,7 @@ var until2 = async (promise) => {
|
|
|
2513
2665
|
}
|
|
2514
2666
|
};
|
|
2515
2667
|
|
|
2516
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.41.
|
|
2668
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.41.9/node_modules/@mswjs/interceptors/lib/browser/handleRequest-CPPgsG7s.mjs
|
|
2517
2669
|
function isObject2(value, loose = false) {
|
|
2518
2670
|
return loose ? Object.prototype.toString.call(value).startsWith("[object ") : Object.prototype.toString.call(value) === "[object Object]";
|
|
2519
2671
|
}
|
|
@@ -2577,14 +2729,15 @@ async function handleRequest(options) {
|
|
|
2577
2729
|
return false;
|
|
2578
2730
|
};
|
|
2579
2731
|
const requestAbortPromise = new DeferredPromise();
|
|
2732
|
+
const onAbort = () => {
|
|
2733
|
+
requestAbortPromise.reject(options.request.signal?.reason);
|
|
2734
|
+
};
|
|
2580
2735
|
if (options.request.signal) {
|
|
2581
2736
|
if (options.request.signal.aborted) {
|
|
2582
2737
|
await options.controller.errorWith(options.request.signal.reason);
|
|
2583
2738
|
return;
|
|
2584
2739
|
}
|
|
2585
|
-
options.request.signal.addEventListener("abort",
|
|
2586
|
-
requestAbortPromise.reject(options.request.signal.reason);
|
|
2587
|
-
}, { once: true });
|
|
2740
|
+
options.request.signal.addEventListener("abort", onAbort, { once: true });
|
|
2588
2741
|
}
|
|
2589
2742
|
const result = await until2(async () => {
|
|
2590
2743
|
const requestListenersPromise = emitAsync(options.emitter, "request", {
|
|
@@ -2598,6 +2751,7 @@ async function handleRequest(options) {
|
|
|
2598
2751
|
options.controller.handled
|
|
2599
2752
|
]);
|
|
2600
2753
|
});
|
|
2754
|
+
options.request.signal?.removeEventListener("abort", onAbort);
|
|
2601
2755
|
if (requestAbortPromise.state === "rejected") {
|
|
2602
2756
|
await options.controller.errorWith(requestAbortPromise.rejectionReason);
|
|
2603
2757
|
return;
|
|
@@ -2630,7 +2784,7 @@ async function handleRequest(options) {
|
|
|
2630
2784
|
return options.controller.handled;
|
|
2631
2785
|
}
|
|
2632
2786
|
|
|
2633
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.41.
|
|
2787
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.41.9/node_modules/@mswjs/interceptors/lib/browser/fetch-5IMPqr9e.mjs
|
|
2634
2788
|
function createNetworkError(cause) {
|
|
2635
2789
|
return Object.assign(/* @__PURE__ */ new TypeError("Failed to fetch"), { cause });
|
|
2636
2790
|
}
|
|
@@ -2641,7 +2795,7 @@ var REQUEST_BODY_HEADERS = [
|
|
|
2641
2795
|
"content-type",
|
|
2642
2796
|
"content-length"
|
|
2643
2797
|
];
|
|
2644
|
-
var kRedirectCount = Symbol("kRedirectCount");
|
|
2798
|
+
var kRedirectCount = /* @__PURE__ */ Symbol("kRedirectCount");
|
|
2645
2799
|
async function followFetchRedirect(request, response) {
|
|
2646
2800
|
if (response.status !== 303 && request.body != null) return Promise.reject(createNetworkError());
|
|
2647
2801
|
const requestUrl = new URL(request.url);
|
|
@@ -2723,7 +2877,7 @@ function decompressResponse(response) {
|
|
|
2723
2877
|
}
|
|
2724
2878
|
var FetchInterceptor = class FetchInterceptor2 extends Interceptor {
|
|
2725
2879
|
static {
|
|
2726
|
-
this.symbol = Symbol("fetch");
|
|
2880
|
+
this.symbol = /* @__PURE__ */ Symbol.for("fetch-interceptor");
|
|
2727
2881
|
}
|
|
2728
2882
|
constructor() {
|
|
2729
2883
|
super(FetchInterceptor2.symbol);
|
|
@@ -2732,12 +2886,11 @@ var FetchInterceptor = class FetchInterceptor2 extends Interceptor {
|
|
|
2732
2886
|
return hasConfigurableGlobal("fetch");
|
|
2733
2887
|
}
|
|
2734
2888
|
async setup() {
|
|
2889
|
+
const logger = this.logger.extend("setup");
|
|
2735
2890
|
const pureFetch = globalThis.fetch;
|
|
2736
|
-
|
|
2737
|
-
globalThis.fetch = async (input, init) => {
|
|
2891
|
+
const fetchProxy = async (input, init) => {
|
|
2738
2892
|
const requestId = createRequestId();
|
|
2739
|
-
const
|
|
2740
|
-
const request = new Request(resolvedInput, init);
|
|
2893
|
+
const request = new FetchRequest(typeof input === "string" && typeof location !== "undefined" && !canParseUrl(input) ? new URL(input, location.href) : input, init);
|
|
2741
2894
|
if (input instanceof Request) setRawRequest(request, input);
|
|
2742
2895
|
const responsePromise = new DeferredPromise();
|
|
2743
2896
|
const controller = new RequestController(request, {
|
|
@@ -2749,7 +2902,7 @@ var FetchInterceptor = class FetchInterceptor2 extends Interceptor {
|
|
|
2749
2902
|
this.logger.info("original fetch performed", originalResponse);
|
|
2750
2903
|
if (this.emitter.listenerCount("response") > 0) {
|
|
2751
2904
|
this.logger.info('emitting the "response" event...');
|
|
2752
|
-
const responseClone =
|
|
2905
|
+
const responseClone = FetchResponse.clone(originalResponse);
|
|
2753
2906
|
await emitAsync(this.emitter, "response", {
|
|
2754
2907
|
response: responseClone,
|
|
2755
2908
|
isMockedResponse: false,
|
|
@@ -2766,9 +2919,12 @@ var FetchInterceptor = class FetchInterceptor2 extends Interceptor {
|
|
|
2766
2919
|
return;
|
|
2767
2920
|
}
|
|
2768
2921
|
this.logger.info("received mocked response!", { rawResponse });
|
|
2769
|
-
const
|
|
2770
|
-
|
|
2771
|
-
|
|
2922
|
+
const response = new FetchResponse(decompressResponse(rawResponse) || rawResponse.body, {
|
|
2923
|
+
url: request.url,
|
|
2924
|
+
status: rawResponse.status,
|
|
2925
|
+
statusText: rawResponse.statusText,
|
|
2926
|
+
headers: rawResponse.headers
|
|
2927
|
+
});
|
|
2772
2928
|
if (FetchResponse.isRedirectResponse(response.status)) {
|
|
2773
2929
|
if (request.redirect === "error") {
|
|
2774
2930
|
responsePromise.reject(createNetworkError("unexpected redirect"));
|
|
@@ -2786,7 +2942,7 @@ var FetchInterceptor = class FetchInterceptor2 extends Interceptor {
|
|
|
2786
2942
|
if (this.emitter.listenerCount("response") > 0) {
|
|
2787
2943
|
this.logger.info('emitting the "response" event...');
|
|
2788
2944
|
await emitAsync(this.emitter, "response", {
|
|
2789
|
-
response:
|
|
2945
|
+
response: FetchResponse.clone(response),
|
|
2790
2946
|
isMockedResponse: true,
|
|
2791
2947
|
request,
|
|
2792
2948
|
requestId
|
|
@@ -2810,20 +2966,13 @@ var FetchInterceptor = class FetchInterceptor2 extends Interceptor {
|
|
|
2810
2966
|
});
|
|
2811
2967
|
return responsePromise;
|
|
2812
2968
|
};
|
|
2813
|
-
|
|
2814
|
-
|
|
2815
|
-
|
|
2816
|
-
value: true
|
|
2817
|
-
});
|
|
2818
|
-
this.subscriptions.push(() => {
|
|
2819
|
-
Object.defineProperty(globalThis.fetch, IS_PATCHED_MODULE, { value: void 0 });
|
|
2820
|
-
globalThis.fetch = pureFetch;
|
|
2821
|
-
this.logger.info('restored native "globalThis.fetch"!', globalThis.fetch.name);
|
|
2822
|
-
});
|
|
2969
|
+
logger.info("patching global fetch...");
|
|
2970
|
+
this.subscriptions.push(patchesRegistry.applyPatch(globalThis, "fetch", () => fetchProxy));
|
|
2971
|
+
logger.info("global fetch patched!", globalThis.fetch.name);
|
|
2823
2972
|
}
|
|
2824
2973
|
};
|
|
2825
2974
|
|
|
2826
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.41.
|
|
2975
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.41.9/node_modules/@mswjs/interceptors/lib/browser/XMLHttpRequest-DrZAf3w6.mjs
|
|
2827
2976
|
function concatArrayBuffer(left, right) {
|
|
2828
2977
|
const result = new Uint8Array(left.byteLength + right.byteLength);
|
|
2829
2978
|
result.set(left, 0);
|
|
@@ -2989,9 +3138,9 @@ async function getBodyByteLength(input) {
|
|
|
2989
3138
|
if (explicitContentLength != null && explicitContentLength !== "") return Number(explicitContentLength);
|
|
2990
3139
|
return (await input.arrayBuffer()).byteLength;
|
|
2991
3140
|
}
|
|
2992
|
-
var kIsRequestHandled = Symbol("kIsRequestHandled");
|
|
3141
|
+
var kIsRequestHandled = /* @__PURE__ */ Symbol("kIsRequestHandled");
|
|
2993
3142
|
var IS_NODE2 = isNodeProcess();
|
|
2994
|
-
var kFetchRequest = Symbol("kFetchRequest");
|
|
3143
|
+
var kFetchRequest = /* @__PURE__ */ Symbol("kFetchRequest");
|
|
2995
3144
|
var XMLHttpRequestController = class {
|
|
2996
3145
|
constructor(initialRequest, logger) {
|
|
2997
3146
|
this.initialRequest = initialRequest;
|
|
@@ -3329,7 +3478,7 @@ var XMLHttpRequestController = class {
|
|
|
3329
3478
|
toFetchApiRequest(body) {
|
|
3330
3479
|
this.logger.info("converting request to a Fetch API Request...");
|
|
3331
3480
|
const resolvedBody = body instanceof Document ? body.documentElement.innerText : body;
|
|
3332
|
-
const fetchRequest = new
|
|
3481
|
+
const fetchRequest = new FetchRequest(this.url.href, {
|
|
3333
3482
|
method: this.method,
|
|
3334
3483
|
headers: this.requestHeaders,
|
|
3335
3484
|
credentials: this.request.withCredentials ? "include" : "same-origin",
|
|
@@ -3414,34 +3563,24 @@ function createXMLHttpRequestProxy({ emitter, logger }) {
|
|
|
3414
3563
|
}
|
|
3415
3564
|
var XMLHttpRequestInterceptor = class XMLHttpRequestInterceptor2 extends Interceptor {
|
|
3416
3565
|
static {
|
|
3417
|
-
this.
|
|
3566
|
+
this.symbol = /* @__PURE__ */ Symbol.for("xhr-interceptor");
|
|
3418
3567
|
}
|
|
3419
3568
|
constructor() {
|
|
3420
|
-
super(XMLHttpRequestInterceptor2.
|
|
3569
|
+
super(XMLHttpRequestInterceptor2.symbol);
|
|
3421
3570
|
}
|
|
3422
3571
|
checkEnvironment() {
|
|
3423
3572
|
return hasConfigurableGlobal("XMLHttpRequest");
|
|
3424
3573
|
}
|
|
3425
3574
|
setup() {
|
|
3426
3575
|
const logger = this.logger.extend("setup");
|
|
3427
|
-
logger.info(
|
|
3428
|
-
|
|
3429
|
-
|
|
3430
|
-
|
|
3431
|
-
|
|
3432
|
-
|
|
3433
|
-
});
|
|
3434
|
-
logger.info(
|
|
3435
|
-
Object.defineProperty(globalThis.XMLHttpRequest, IS_PATCHED_MODULE, {
|
|
3436
|
-
enumerable: true,
|
|
3437
|
-
configurable: true,
|
|
3438
|
-
value: true
|
|
3439
|
-
});
|
|
3440
|
-
this.subscriptions.push(() => {
|
|
3441
|
-
Object.defineProperty(globalThis.XMLHttpRequest, IS_PATCHED_MODULE, { value: void 0 });
|
|
3442
|
-
globalThis.XMLHttpRequest = PureXMLHttpRequest;
|
|
3443
|
-
logger.info('native "XMLHttpRequest" module restored!', globalThis.XMLHttpRequest.name);
|
|
3444
|
-
});
|
|
3576
|
+
logger.info("patching global XMLHttpRequest...");
|
|
3577
|
+
this.subscriptions.push(patchesRegistry.applyPatch(globalThis, "XMLHttpRequest", () => {
|
|
3578
|
+
return createXMLHttpRequestProxy({
|
|
3579
|
+
emitter: this.emitter,
|
|
3580
|
+
logger: this.logger
|
|
3581
|
+
});
|
|
3582
|
+
}));
|
|
3583
|
+
logger.info("global XMLHttpRequest patched!", globalThis.XMLHttpRequest.name);
|
|
3445
3584
|
}
|
|
3446
3585
|
};
|
|
3447
3586
|
|
|
@@ -3455,6 +3594,7 @@ var FallbackHttpSource = class extends import_interceptor_source.InterceptorSour
|
|
|
3455
3594
|
});
|
|
3456
3595
|
this.options = options;
|
|
3457
3596
|
}
|
|
3597
|
+
options;
|
|
3458
3598
|
enable() {
|
|
3459
3599
|
super.enable();
|
|
3460
3600
|
if (!this.options.quiet) {
|