msw 2.11.3 → 2.11.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browser/index.js +96 -90
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/index.mjs +96 -90
- package/lib/browser/index.mjs.map +1 -1
- package/lib/core/{HttpResponse-BbwAqLE_.d.ts → HttpResponse-BpT5A_2L.d.ts} +1 -0
- package/lib/core/{HttpResponse-B4YmE-GJ.d.mts → HttpResponse-DGUjNQHG.d.mts} +1 -0
- package/lib/core/HttpResponse.d.mts +1 -1
- package/lib/core/HttpResponse.d.ts +1 -1
- package/lib/core/HttpResponse.js.map +1 -1
- package/lib/core/HttpResponse.mjs.map +1 -1
- package/lib/core/SetupApi.d.mts +1 -1
- package/lib/core/SetupApi.d.ts +1 -1
- 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/HttpHandler.js +0 -5
- package/lib/core/handlers/HttpHandler.js.map +1 -1
- package/lib/core/handlers/HttpHandler.mjs +1 -6
- package/lib/core/handlers/HttpHandler.mjs.map +1 -1
- package/lib/core/handlers/RequestHandler.d.mts +1 -1
- package/lib/core/handlers/RequestHandler.d.ts +1 -1
- package/lib/core/http.d.mts +1 -1
- package/lib/core/http.d.ts +1 -1
- package/lib/core/index.d.mts +2 -2
- package/lib/core/index.d.ts +2 -2
- package/lib/core/index.js +2 -0
- package/lib/core/index.js.map +1 -1
- package/lib/core/index.mjs +4 -0
- package/lib/core/index.mjs.map +1 -1
- package/lib/core/passthrough.d.mts +1 -1
- package/lib/core/passthrough.d.ts +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/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/utils/internal/requestHandlerUtils.d.mts +1 -1
- package/lib/core/utils/internal/requestHandlerUtils.d.ts +1 -1
- package/lib/core/utils/logging/serializeResponse.js +1 -1
- package/lib/core/utils/logging/serializeResponse.js.map +1 -1
- package/lib/core/utils/logging/serializeResponse.mjs +1 -1
- package/lib/core/utils/logging/serializeResponse.mjs.map +1 -1
- package/lib/core/utils/request/getRequestCookies.js +3 -13
- package/lib/core/utils/request/getRequestCookies.js.map +1 -1
- package/lib/core/utils/request/getRequestCookies.mjs +6 -3
- package/lib/core/utils/request/getRequestCookies.mjs.map +1 -1
- package/lib/core/utils/url/cleanUrl.d.mts +1 -2
- package/lib/core/utils/url/cleanUrl.d.ts +1 -2
- package/lib/core/utils/url/cleanUrl.js +1 -5
- package/lib/core/utils/url/cleanUrl.js.map +1 -1
- package/lib/core/utils/url/cleanUrl.mjs +1 -5
- package/lib/core/utils/url/cleanUrl.mjs.map +1 -1
- package/lib/core/ws/WebSocketIndexedDBClientStore.d.mts +1 -2
- package/lib/core/ws/WebSocketIndexedDBClientStore.d.ts +1 -2
- package/lib/core/ws/WebSocketIndexedDBClientStore.js.map +1 -1
- package/lib/core/ws/WebSocketIndexedDBClientStore.mjs.map +1 -1
- package/lib/core/ws/WebSocketMemoryClientStore.d.mts +1 -2
- package/lib/core/ws/WebSocketMemoryClientStore.d.ts +1 -2
- package/lib/core/ws/WebSocketMemoryClientStore.js.map +1 -1
- package/lib/core/ws/WebSocketMemoryClientStore.mjs.map +1 -1
- package/lib/core/ws/handleWebSocketEvent.d.mts +2 -3
- package/lib/core/ws/handleWebSocketEvent.d.ts +2 -3
- package/lib/core/ws/handleWebSocketEvent.js.map +1 -1
- package/lib/core/ws/handleWebSocketEvent.mjs.map +1 -1
- package/lib/core/ws/utils/getMessageLength.d.mts +1 -1
- package/lib/core/ws/utils/getMessageLength.d.ts +1 -1
- package/lib/core/ws/utils/getMessageLength.js.map +1 -1
- package/lib/core/ws/utils/getMessageLength.mjs.map +1 -1
- package/lib/iife/index.js +556 -605
- package/lib/iife/index.js.map +1 -1
- package/lib/mockServiceWorker.js +2 -1
- package/lib/shims/cookie.d.mts +7 -0
- package/lib/shims/cookie.d.ts +7 -0
- package/lib/shims/cookie.js +204 -0
- package/lib/shims/cookie.mjs +196 -0
- package/lib/shims/statuses.d.mts +6 -0
- package/lib/shims/statuses.d.ts +6 -0
- package/lib/shims/statuses.js +195 -0
- package/lib/shims/statuses.mjs +187 -0
- package/package.json +5 -6
- package/src/browser/setupWorker/glossary.ts +1 -5
- package/src/browser/setupWorker/setupWorker.ts +4 -9
- package/src/browser/setupWorker/start/createRequestListener.ts +4 -1
- package/src/browser/utils/{supportsReadableStreamTransfer.ts → supports.ts} +13 -0
- package/src/browser/utils/workerChannel.ts +13 -0
- package/src/core/HttpResponse.ts +1 -0
- package/src/core/handlers/HttpHandler.ts +1 -8
- package/src/core/index.ts +5 -0
- package/src/core/utils/HttpResponse/decorators.ts +1 -1
- package/src/core/utils/logging/serializeResponse.ts +1 -1
- package/src/core/utils/request/getRequestCookies.ts +6 -3
- package/src/core/utils/url/cleanUrl.ts +0 -4
- package/src/core/ws/WebSocketIndexedDBClientStore.ts +1 -1
- package/src/core/ws/WebSocketMemoryClientStore.ts +1 -1
- package/src/core/ws/handleWebSocketEvent.ts +1 -1
- package/src/core/ws/utils/getMessageLength.ts +1 -1
- package/src/mockServiceWorker.js +1 -0
- package/src/shims/cookie.ts +7 -0
- package/src/shims/statuses.ts +6 -0
- package/src/tsconfig.src.json +1 -6
- package/src/browser/utils/deferNetworkRequestsUntil.test.ts +0 -48
- package/src/browser/utils/deferNetworkRequestsUntil.ts +0 -29
package/lib/browser/index.mjs
CHANGED
|
@@ -97,6 +97,72 @@ function isNodeProcess() {
|
|
|
97
97
|
return false;
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
+
// node_modules/.pnpm/@open-draft+deferred-promise@2.2.0/node_modules/@open-draft/deferred-promise/build/index.mjs
|
|
101
|
+
function createDeferredExecutor() {
|
|
102
|
+
const executor = (resolve, reject) => {
|
|
103
|
+
executor.state = "pending";
|
|
104
|
+
executor.resolve = (data) => {
|
|
105
|
+
if (executor.state !== "pending") {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
executor.result = data;
|
|
109
|
+
const onFulfilled = (value) => {
|
|
110
|
+
executor.state = "fulfilled";
|
|
111
|
+
return value;
|
|
112
|
+
};
|
|
113
|
+
return resolve(
|
|
114
|
+
data instanceof Promise ? data : Promise.resolve(data).then(onFulfilled)
|
|
115
|
+
);
|
|
116
|
+
};
|
|
117
|
+
executor.reject = (reason) => {
|
|
118
|
+
if (executor.state !== "pending") {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
queueMicrotask(() => {
|
|
122
|
+
executor.state = "rejected";
|
|
123
|
+
});
|
|
124
|
+
return reject(executor.rejectionReason = reason);
|
|
125
|
+
};
|
|
126
|
+
};
|
|
127
|
+
return executor;
|
|
128
|
+
}
|
|
129
|
+
var DeferredPromise = class extends Promise {
|
|
130
|
+
#executor;
|
|
131
|
+
resolve;
|
|
132
|
+
reject;
|
|
133
|
+
constructor(executor = null) {
|
|
134
|
+
const deferredExecutor = createDeferredExecutor();
|
|
135
|
+
super((originalResolve, originalReject) => {
|
|
136
|
+
deferredExecutor(originalResolve, originalReject);
|
|
137
|
+
executor?.(deferredExecutor.resolve, deferredExecutor.reject);
|
|
138
|
+
});
|
|
139
|
+
this.#executor = deferredExecutor;
|
|
140
|
+
this.resolve = this.#executor.resolve;
|
|
141
|
+
this.reject = this.#executor.reject;
|
|
142
|
+
}
|
|
143
|
+
get state() {
|
|
144
|
+
return this.#executor.state;
|
|
145
|
+
}
|
|
146
|
+
get rejectionReason() {
|
|
147
|
+
return this.#executor.rejectionReason;
|
|
148
|
+
}
|
|
149
|
+
then(onFulfilled, onRejected) {
|
|
150
|
+
return this.#decorate(super.then(onFulfilled, onRejected));
|
|
151
|
+
}
|
|
152
|
+
catch(onRejected) {
|
|
153
|
+
return this.#decorate(super.catch(onRejected));
|
|
154
|
+
}
|
|
155
|
+
finally(onfinally) {
|
|
156
|
+
return this.#decorate(super.finally(onfinally));
|
|
157
|
+
}
|
|
158
|
+
#decorate(promise) {
|
|
159
|
+
return Object.defineProperties(promise, {
|
|
160
|
+
resolve: { configurable: true, value: this.resolve },
|
|
161
|
+
reject: { configurable: true, value: this.reject }
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
|
|
100
166
|
// src/browser/setupWorker/start/utils/prepareStartHandler.ts
|
|
101
167
|
import { mergeRight } from '../core/utils/internal/mergeRight.mjs';
|
|
102
168
|
var DEFAULT_START_OPTIONS = {
|
|
@@ -204,72 +270,6 @@ Learn more about creating the Service Worker script: https://mswjs.io/docs/cli/i
|
|
|
204
270
|
return registrationResult;
|
|
205
271
|
};
|
|
206
272
|
|
|
207
|
-
// node_modules/.pnpm/@open-draft+deferred-promise@2.2.0/node_modules/@open-draft/deferred-promise/build/index.mjs
|
|
208
|
-
function createDeferredExecutor() {
|
|
209
|
-
const executor = (resolve, reject) => {
|
|
210
|
-
executor.state = "pending";
|
|
211
|
-
executor.resolve = (data) => {
|
|
212
|
-
if (executor.state !== "pending") {
|
|
213
|
-
return;
|
|
214
|
-
}
|
|
215
|
-
executor.result = data;
|
|
216
|
-
const onFulfilled = (value) => {
|
|
217
|
-
executor.state = "fulfilled";
|
|
218
|
-
return value;
|
|
219
|
-
};
|
|
220
|
-
return resolve(
|
|
221
|
-
data instanceof Promise ? data : Promise.resolve(data).then(onFulfilled)
|
|
222
|
-
);
|
|
223
|
-
};
|
|
224
|
-
executor.reject = (reason) => {
|
|
225
|
-
if (executor.state !== "pending") {
|
|
226
|
-
return;
|
|
227
|
-
}
|
|
228
|
-
queueMicrotask(() => {
|
|
229
|
-
executor.state = "rejected";
|
|
230
|
-
});
|
|
231
|
-
return reject(executor.rejectionReason = reason);
|
|
232
|
-
};
|
|
233
|
-
};
|
|
234
|
-
return executor;
|
|
235
|
-
}
|
|
236
|
-
var DeferredPromise = class extends Promise {
|
|
237
|
-
#executor;
|
|
238
|
-
resolve;
|
|
239
|
-
reject;
|
|
240
|
-
constructor(executor = null) {
|
|
241
|
-
const deferredExecutor = createDeferredExecutor();
|
|
242
|
-
super((originalResolve, originalReject) => {
|
|
243
|
-
deferredExecutor(originalResolve, originalReject);
|
|
244
|
-
executor?.(deferredExecutor.resolve, deferredExecutor.reject);
|
|
245
|
-
});
|
|
246
|
-
this.#executor = deferredExecutor;
|
|
247
|
-
this.resolve = this.#executor.resolve;
|
|
248
|
-
this.reject = this.#executor.reject;
|
|
249
|
-
}
|
|
250
|
-
get state() {
|
|
251
|
-
return this.#executor.state;
|
|
252
|
-
}
|
|
253
|
-
get rejectionReason() {
|
|
254
|
-
return this.#executor.rejectionReason;
|
|
255
|
-
}
|
|
256
|
-
then(onFulfilled, onRejected) {
|
|
257
|
-
return this.#decorate(super.then(onFulfilled, onRejected));
|
|
258
|
-
}
|
|
259
|
-
catch(onRejected) {
|
|
260
|
-
return this.#decorate(super.catch(onRejected));
|
|
261
|
-
}
|
|
262
|
-
finally(onfinally) {
|
|
263
|
-
return this.#decorate(super.finally(onfinally));
|
|
264
|
-
}
|
|
265
|
-
#decorate(promise) {
|
|
266
|
-
return Object.defineProperties(promise, {
|
|
267
|
-
resolve: { configurable: true, value: this.resolve },
|
|
268
|
-
reject: { configurable: true, value: this.reject }
|
|
269
|
-
});
|
|
270
|
-
}
|
|
271
|
-
};
|
|
272
|
-
|
|
273
273
|
// src/browser/setupWorker/start/utils/printStartMessage.ts
|
|
274
274
|
import { devUtils as devUtils2 } from '../core/utils/internal/devUtils.mjs';
|
|
275
275
|
function printStartMessage(args = {}) {
|
|
@@ -333,12 +333,30 @@ function deserializeRequest(serializedRequest) {
|
|
|
333
333
|
});
|
|
334
334
|
}
|
|
335
335
|
|
|
336
|
+
// src/browser/utils/supports.ts
|
|
337
|
+
function supportsServiceWorker() {
|
|
338
|
+
return typeof navigator !== "undefined" && "serviceWorker" in navigator && typeof location !== "undefined" && location.protocol !== "file:";
|
|
339
|
+
}
|
|
340
|
+
function supportsReadableStreamTransfer() {
|
|
341
|
+
try {
|
|
342
|
+
const stream = new ReadableStream({
|
|
343
|
+
start: (controller) => controller.close()
|
|
344
|
+
});
|
|
345
|
+
const message = new MessageChannel();
|
|
346
|
+
message.port1.postMessage(stream, [stream]);
|
|
347
|
+
return true;
|
|
348
|
+
} catch {
|
|
349
|
+
return false;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
|
|
336
353
|
// src/browser/setupWorker/start/createRequestListener.ts
|
|
337
354
|
import { RequestHandler } from '../core/handlers/RequestHandler.mjs';
|
|
338
355
|
import { handleRequest } from '../core/utils/handleRequest.mjs';
|
|
339
356
|
import { devUtils as devUtils3 } from '../core/utils/internal/devUtils.mjs';
|
|
340
357
|
import { toResponseInit } from '../core/utils/toResponseInit.mjs';
|
|
341
358
|
import { isHandlerKind } from '../core/utils/internal/isHandlerKind.mjs';
|
|
359
|
+
var SUPPORTS_READABLE_STREAM_TRANSFER = supportsReadableStreamTransfer();
|
|
342
360
|
var createRequestListener = (context, options) => {
|
|
343
361
|
return async (event) => {
|
|
344
362
|
if (!context.isMockingEnabled && context.workerStoppedAt && event.data.interceptedAt > context.workerStoppedAt) {
|
|
@@ -365,7 +383,7 @@ var createRequestListener = (context, options) => {
|
|
|
365
383
|
const responseClone = response.clone();
|
|
366
384
|
const responseCloneForLogs = response.clone();
|
|
367
385
|
const responseInit = toResponseInit(response);
|
|
368
|
-
if (
|
|
386
|
+
if (SUPPORTS_READABLE_STREAM_TRANSFER) {
|
|
369
387
|
const responseStreamOrNull = response.body;
|
|
370
388
|
event.postMessage(
|
|
371
389
|
"MOCK_RESPONSE",
|
|
@@ -1320,22 +1338,6 @@ Please consider using a custom "serviceWorker.url" option to point to the actual
|
|
|
1320
1338
|
import { devUtils as devUtils8 } from '../core/utils/internal/devUtils.mjs';
|
|
1321
1339
|
import { SetupApi } from '../core/SetupApi.mjs';
|
|
1322
1340
|
import { mergeRight as mergeRight2 } from '../core/utils/internal/mergeRight.mjs';
|
|
1323
|
-
|
|
1324
|
-
// src/browser/utils/supportsReadableStreamTransfer.ts
|
|
1325
|
-
function supportsReadableStreamTransfer() {
|
|
1326
|
-
try {
|
|
1327
|
-
const stream = new ReadableStream({
|
|
1328
|
-
start: (controller) => controller.close()
|
|
1329
|
-
});
|
|
1330
|
-
const message = new MessageChannel();
|
|
1331
|
-
message.port1.postMessage(stream, [stream]);
|
|
1332
|
-
return true;
|
|
1333
|
-
} catch {
|
|
1334
|
-
return false;
|
|
1335
|
-
}
|
|
1336
|
-
}
|
|
1337
|
-
|
|
1338
|
-
// src/browser/setupWorker/setupWorker.ts
|
|
1339
1341
|
import { webSocketInterceptor } from '../core/ws/webSocketInterceptor.mjs';
|
|
1340
1342
|
import { handleWebSocketEvent } from '../core/ws/handleWebSocketEvent.mjs';
|
|
1341
1343
|
import { attachWebSocketLogger } from '../core/ws/utils/attachWebSocketLogger.mjs';
|
|
@@ -1575,6 +1577,7 @@ var Emitter2 = class {
|
|
|
1575
1577
|
|
|
1576
1578
|
// src/browser/utils/workerChannel.ts
|
|
1577
1579
|
import { isObject } from '../core/utils/internal/isObject.mjs';
|
|
1580
|
+
var SUPPORTS_SERVICE_WORKER = supportsServiceWorker();
|
|
1578
1581
|
var WorkerEvent = class extends TypedEvent {
|
|
1579
1582
|
#workerEvent;
|
|
1580
1583
|
constructor(workerEvent) {
|
|
@@ -1604,6 +1607,9 @@ var WorkerChannel = class extends Emitter2 {
|
|
|
1604
1607
|
constructor(options) {
|
|
1605
1608
|
super();
|
|
1606
1609
|
this.options = options;
|
|
1610
|
+
if (!SUPPORTS_SERVICE_WORKER) {
|
|
1611
|
+
return;
|
|
1612
|
+
}
|
|
1607
1613
|
navigator.serviceWorker.addEventListener("message", async (event) => {
|
|
1608
1614
|
const worker = await this.options.worker;
|
|
1609
1615
|
if (event.source != null && event.source !== worker) {
|
|
@@ -1619,6 +1625,10 @@ var WorkerChannel = class extends Emitter2 {
|
|
|
1619
1625
|
* This triggers the `message` event listener on ServiceWorkerGlobalScope.
|
|
1620
1626
|
*/
|
|
1621
1627
|
postMessage(type) {
|
|
1628
|
+
invariant(
|
|
1629
|
+
SUPPORTS_SERVICE_WORKER,
|
|
1630
|
+
"Failed to post message on a WorkerChannel: the Service Worker API is unavailable in this context. This is likely an issue with MSW. Please report it on GitHub: https://github.com/mswjs/msw/issues"
|
|
1631
|
+
);
|
|
1622
1632
|
this.options.worker.then((worker) => {
|
|
1623
1633
|
worker.postMessage(type);
|
|
1624
1634
|
});
|
|
@@ -3009,11 +3019,7 @@ var SetupWorkerApi = class extends SetupApi {
|
|
|
3009
3019
|
emitter: this.emitter,
|
|
3010
3020
|
workerChannel: new WorkerChannel({
|
|
3011
3021
|
worker: workerPromise
|
|
3012
|
-
})
|
|
3013
|
-
supports: {
|
|
3014
|
-
serviceWorkerApi: "serviceWorker" in navigator && location.protocol !== "file:",
|
|
3015
|
-
readableStreamTransfer: supportsReadableStreamTransfer()
|
|
3016
|
-
}
|
|
3022
|
+
})
|
|
3017
3023
|
};
|
|
3018
3024
|
}
|
|
3019
3025
|
async start(options = {}) {
|
|
@@ -3052,7 +3058,7 @@ var SetupWorkerApi = class extends SetupApi {
|
|
|
3052
3058
|
this.subscriptions.push(() => {
|
|
3053
3059
|
webSocketInterceptor.dispose();
|
|
3054
3060
|
});
|
|
3055
|
-
if (!
|
|
3061
|
+
if (!supportsServiceWorker()) {
|
|
3056
3062
|
const fallbackInterceptor = createFallbackRequestListener(
|
|
3057
3063
|
this.context,
|
|
3058
3064
|
this.context.startOptions
|
|
@@ -3083,7 +3089,7 @@ var SetupWorkerApi = class extends SetupApi {
|
|
|
3083
3089
|
this.context.isMockingEnabled = false;
|
|
3084
3090
|
this.context.workerStoppedAt = Date.now();
|
|
3085
3091
|
this.context.emitter.removeAllListeners();
|
|
3086
|
-
if (
|
|
3092
|
+
if (supportsServiceWorker()) {
|
|
3087
3093
|
this.context.workerChannel.removeAllListeners("RESPONSE");
|
|
3088
3094
|
window.clearInterval(this.context.keepAliveInterval);
|
|
3089
3095
|
}
|