msw 2.0.14 → 2.1.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.
- package/cli/index.js +11 -3
- package/cli/init.js +126 -73
- package/config/scripts/postinstall.js +8 -20
- package/lib/browser/index.js +111 -176
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/index.mjs +111 -179
- package/lib/browser/index.mjs.map +1 -1
- package/lib/core/{GraphQLHandler-JB4bsrLF.d.ts → GraphQLHandler-LZ8jH42-.d.ts} +1 -1
- package/lib/core/{GraphQLHandler-mT-MmgeB.d.mts → GraphQLHandler-c0pfLv8e.d.mts} +1 -1
- package/lib/core/HttpResponse.d.mts +1 -1
- package/lib/core/HttpResponse.d.ts +1 -1
- package/lib/core/{RequestHandler-rmY-HeFN.d.ts → RequestHandler-SdFwV297.d.ts} +8 -1
- package/lib/core/{RequestHandler-YiqamK0M.d.mts → RequestHandler-hEwneHZE.d.mts} +8 -1
- package/lib/core/SetupApi.d.mts +1 -1
- package/lib/core/SetupApi.d.ts +1 -1
- package/lib/core/SetupApi.js +5 -0
- package/lib/core/SetupApi.js.map +1 -1
- package/lib/core/SetupApi.mjs +5 -0
- package/lib/core/SetupApi.mjs.map +1 -1
- package/lib/core/delay.js +24 -46
- package/lib/core/delay.js.map +1 -1
- package/lib/core/delay.mjs +24 -46
- package/lib/core/delay.mjs.map +1 -1
- package/lib/core/graphql.d.mts +2 -2
- package/lib/core/graphql.d.ts +2 -2
- package/lib/core/graphql.js +3 -19
- package/lib/core/graphql.js.map +1 -1
- package/lib/core/graphql.mjs +3 -21
- package/lib/core/graphql.mjs.map +1 -1
- package/lib/core/handlers/GraphQLHandler.d.mts +2 -2
- package/lib/core/handlers/GraphQLHandler.d.ts +2 -2
- package/lib/core/handlers/GraphQLHandler.js +51 -77
- package/lib/core/handlers/GraphQLHandler.js.map +1 -1
- package/lib/core/handlers/GraphQLHandler.mjs +51 -77
- package/lib/core/handlers/GraphQLHandler.mjs.map +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 +29 -55
- package/lib/core/handlers/HttpHandler.js.map +1 -1
- package/lib/core/handlers/HttpHandler.mjs +29 -55
- 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/handlers/RequestHandler.js +79 -103
- package/lib/core/handlers/RequestHandler.js.map +1 -1
- package/lib/core/handlers/RequestHandler.mjs +79 -105
- package/lib/core/handlers/RequestHandler.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 +2 -2
- package/lib/core/index.d.ts +2 -2
- package/lib/core/sharedOptions.d.mts +1 -1
- package/lib/core/sharedOptions.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 +7 -24
- package/lib/core/utils/HttpResponse/decorators.js.map +1 -1
- package/lib/core/utils/HttpResponse/decorators.mjs +7 -26
- package/lib/core/utils/HttpResponse/decorators.mjs.map +1 -1
- package/lib/core/utils/getResponse.d.mts +1 -1
- package/lib/core/utils/getResponse.d.ts +1 -1
- package/lib/core/utils/getResponse.js +11 -26
- package/lib/core/utils/getResponse.js.map +1 -1
- package/lib/core/utils/getResponse.mjs +11 -26
- package/lib/core/utils/getResponse.mjs.map +1 -1
- package/lib/core/utils/handleRequest.d.mts +1 -1
- package/lib/core/utils/handleRequest.d.ts +1 -1
- package/lib/core/utils/handleRequest.js +49 -72
- package/lib/core/utils/handleRequest.js.map +1 -1
- package/lib/core/utils/handleRequest.mjs +49 -72
- package/lib/core/utils/handleRequest.mjs.map +1 -1
- package/lib/core/utils/internal/Disposable.js +3 -27
- package/lib/core/utils/internal/Disposable.js.map +1 -1
- package/lib/core/utils/internal/Disposable.mjs +3 -27
- package/lib/core/utils/internal/Disposable.mjs.map +1 -1
- package/lib/core/utils/internal/parseGraphQLRequest.d.mts +2 -2
- package/lib/core/utils/internal/parseGraphQLRequest.d.ts +2 -2
- package/lib/core/utils/internal/parseGraphQLRequest.js +72 -112
- package/lib/core/utils/internal/parseGraphQLRequest.js.map +1 -1
- package/lib/core/utils/internal/parseGraphQLRequest.mjs +72 -113
- package/lib/core/utils/internal/parseGraphQLRequest.mjs.map +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/parseMultipartData.js +3 -4
- package/lib/core/utils/internal/parseMultipartData.js.map +1 -1
- package/lib/core/utils/internal/parseMultipartData.mjs +3 -4
- package/lib/core/utils/internal/parseMultipartData.mjs.map +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/internal/tryCatch.js +1 -1
- package/lib/core/utils/internal/tryCatch.js.map +1 -1
- package/lib/core/utils/internal/tryCatch.mjs +1 -1
- package/lib/core/utils/internal/tryCatch.mjs.map +1 -1
- package/lib/core/utils/logging/serializeRequest.js +9 -31
- package/lib/core/utils/logging/serializeRequest.js.map +1 -1
- package/lib/core/utils/logging/serializeRequest.mjs +9 -31
- package/lib/core/utils/logging/serializeRequest.mjs.map +1 -1
- package/lib/core/utils/logging/serializeResponse.js +11 -33
- package/lib/core/utils/logging/serializeResponse.js.map +1 -1
- package/lib/core/utils/logging/serializeResponse.mjs +11 -33
- package/lib/core/utils/logging/serializeResponse.mjs.map +1 -1
- package/lib/core/utils/request/getRequestCookies.js +9 -18
- package/lib/core/utils/request/getRequestCookies.js.map +1 -1
- package/lib/core/utils/request/getRequestCookies.mjs +9 -20
- package/lib/core/utils/request/getRequestCookies.mjs.map +1 -1
- package/lib/core/utils/request/onUnhandledRequest.d.mts +1 -1
- package/lib/core/utils/request/onUnhandledRequest.d.ts +1 -1
- package/lib/core/utils/request/onUnhandledRequest.js +62 -84
- package/lib/core/utils/request/onUnhandledRequest.js.map +1 -1
- package/lib/core/utils/request/onUnhandledRequest.mjs +62 -84
- package/lib/core/utils/request/onUnhandledRequest.mjs.map +1 -1
- package/lib/core/utils/request/readResponseCookies.js +1 -18
- package/lib/core/utils/request/readResponseCookies.js.map +1 -1
- package/lib/core/utils/request/readResponseCookies.mjs +1 -20
- package/lib/core/utils/request/readResponseCookies.mjs.map +1 -1
- package/lib/iife/index.js +678 -958
- package/lib/iife/index.js.map +1 -1
- package/lib/mockServiceWorker.js +2 -2
- package/lib/native/index.js +5 -23
- package/lib/native/index.js.map +1 -1
- package/lib/native/index.mjs +5 -24
- package/lib/native/index.mjs.map +1 -1
- package/lib/node/index.js +5 -23
- package/lib/node/index.js.map +1 -1
- package/lib/node/index.mjs +5 -24
- package/lib/node/index.mjs.map +1 -1
- package/package.json +32 -37
- package/src/browser/setupWorker/setupWorker.ts +6 -0
- package/src/browser/setupWorker/start/createStartHandler.ts +0 -8
- package/src/core/handlers/RequestHandler.ts +23 -4
- package/src/core/utils/getResponse.ts +12 -6
- package/src/core/utils/handleRequest.test.ts +20 -0
- package/src/core/utils/handleRequest.ts +4 -3
package/lib/browser/index.js
CHANGED
|
@@ -1,25 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
|
-
var __defProps = Object.defineProperties;
|
|
4
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
6
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
8
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
10
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
11
|
-
var __spreadValues = (a, b) => {
|
|
12
|
-
for (var prop in b || (b = {}))
|
|
13
|
-
if (__hasOwnProp.call(b, prop))
|
|
14
|
-
__defNormalProp(a, prop, b[prop]);
|
|
15
|
-
if (__getOwnPropSymbols)
|
|
16
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
17
|
-
if (__propIsEnum.call(b, prop))
|
|
18
|
-
__defNormalProp(a, prop, b[prop]);
|
|
19
|
-
}
|
|
20
|
-
return a;
|
|
21
|
-
};
|
|
22
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
23
6
|
var __export = (target, all) => {
|
|
24
7
|
for (var name in all)
|
|
25
8
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -33,26 +16,6 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
33
16
|
return to;
|
|
34
17
|
};
|
|
35
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
36
|
-
var __async = (__this, __arguments, generator) => {
|
|
37
|
-
return new Promise((resolve, reject) => {
|
|
38
|
-
var fulfilled = (value) => {
|
|
39
|
-
try {
|
|
40
|
-
step(generator.next(value));
|
|
41
|
-
} catch (e) {
|
|
42
|
-
reject(e);
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
var rejected = (value) => {
|
|
46
|
-
try {
|
|
47
|
-
step(generator.throw(value));
|
|
48
|
-
} catch (e) {
|
|
49
|
-
reject(e);
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
53
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
54
|
-
});
|
|
55
|
-
};
|
|
56
19
|
|
|
57
20
|
// src/browser/index.ts
|
|
58
21
|
var browser_exports = {};
|
|
@@ -67,7 +30,7 @@ var import_outvariant = require("outvariant");
|
|
|
67
30
|
var import_is_node_process = require("is-node-process");
|
|
68
31
|
|
|
69
32
|
// src/browser/setupWorker/start/createStartHandler.ts
|
|
70
|
-
var
|
|
33
|
+
var import_until2 = require("@open-draft/until");
|
|
71
34
|
var import_devUtils6 = require("../core/utils/internal/devUtils.js");
|
|
72
35
|
|
|
73
36
|
// src/browser/setupWorker/start/utils/getWorkerInstance.ts
|
|
@@ -96,9 +59,9 @@ function getWorkerByRegistration(registration, absoluteWorkerUrl, findWorker) {
|
|
|
96
59
|
}
|
|
97
60
|
|
|
98
61
|
// src/browser/setupWorker/start/utils/getWorkerInstance.ts
|
|
99
|
-
var getWorkerInstance =
|
|
62
|
+
var getWorkerInstance = async (url, options = {}, findWorker) => {
|
|
100
63
|
const absoluteWorkerUrl = getAbsoluteWorkerUrl(url);
|
|
101
|
-
const mockRegistrations =
|
|
64
|
+
const mockRegistrations = await navigator.serviceWorker.getRegistrations().then(
|
|
102
65
|
(registrations) => registrations.filter(
|
|
103
66
|
(registration) => getWorkerByRegistration(registration, absoluteWorkerUrl, findWorker)
|
|
104
67
|
)
|
|
@@ -119,21 +82,21 @@ var getWorkerInstance = (_0, ..._1) => __async(void 0, [_0, ..._1], function* (u
|
|
|
119
82
|
];
|
|
120
83
|
});
|
|
121
84
|
}
|
|
122
|
-
const registrationResult =
|
|
123
|
-
() =>
|
|
124
|
-
const registration =
|
|
85
|
+
const registrationResult = await (0, import_until.until)(
|
|
86
|
+
async () => {
|
|
87
|
+
const registration = await navigator.serviceWorker.register(url, options);
|
|
125
88
|
return [
|
|
126
89
|
// Compare existing worker registration by its worker URL,
|
|
127
90
|
// to prevent irrelevant workers to resolve here (such as Codesandbox worker).
|
|
128
91
|
getWorkerByRegistration(registration, absoluteWorkerUrl, findWorker),
|
|
129
92
|
registration
|
|
130
93
|
];
|
|
131
|
-
}
|
|
94
|
+
}
|
|
132
95
|
);
|
|
133
96
|
if (registrationResult.error) {
|
|
134
97
|
const isWorkerMissing = registrationResult.error.message.includes("(404)");
|
|
135
98
|
if (isWorkerMissing) {
|
|
136
|
-
const scopeUrl = new URL(
|
|
99
|
+
const scopeUrl = new URL(options?.scope || "/", location.href);
|
|
137
100
|
throw new Error(
|
|
138
101
|
import_devUtils.devUtils.formatMessage(`Failed to register a Service Worker for scope ('${scopeUrl.href}') with script ('${absoluteWorkerUrl}'): Service Worker script does not exist at the given path.
|
|
139
102
|
|
|
@@ -150,7 +113,7 @@ Learn more about creating the Service Worker script: https://mswjs.io/docs/cli/i
|
|
|
150
113
|
);
|
|
151
114
|
}
|
|
152
115
|
return registrationResult.data;
|
|
153
|
-
}
|
|
116
|
+
};
|
|
154
117
|
|
|
155
118
|
// src/browser/setupWorker/start/utils/enableMocking.ts
|
|
156
119
|
var import_devUtils3 = require("../core/utils/internal/devUtils.js");
|
|
@@ -182,23 +145,20 @@ function printStartMessage(args = {}) {
|
|
|
182
145
|
}
|
|
183
146
|
|
|
184
147
|
// src/browser/setupWorker/start/utils/enableMocking.ts
|
|
185
|
-
function enableMocking(context, options) {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
workerScope: (_a = context.registration) == null ? void 0 : _a.scope,
|
|
200
|
-
workerUrl: (_b = context.worker) == null ? void 0 : _b.scriptURL
|
|
201
|
-
});
|
|
148
|
+
async function enableMocking(context, options) {
|
|
149
|
+
context.workerChannel.send("MOCK_ACTIVATE");
|
|
150
|
+
await context.events.once("MOCKING_ENABLED");
|
|
151
|
+
if (context.isMockingEnabled) {
|
|
152
|
+
import_devUtils3.devUtils.warn(
|
|
153
|
+
`Found a redundant "worker.start()" call. Note that starting the worker while mocking is already enabled will have no effect. Consider removing this "worker.start()" call.`
|
|
154
|
+
);
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
context.isMockingEnabled = true;
|
|
158
|
+
printStartMessage({
|
|
159
|
+
quiet: options.quiet,
|
|
160
|
+
workerScope: context.registration?.scope,
|
|
161
|
+
workerUrl: context.worker?.scriptURL
|
|
202
162
|
});
|
|
203
163
|
}
|
|
204
164
|
|
|
@@ -223,9 +183,10 @@ function pruneGetRequestBody(request) {
|
|
|
223
183
|
|
|
224
184
|
// src/browser/utils/parseWorkerRequest.ts
|
|
225
185
|
function parseWorkerRequest(incomingRequest) {
|
|
226
|
-
return new Request(incomingRequest.url,
|
|
186
|
+
return new Request(incomingRequest.url, {
|
|
187
|
+
...incomingRequest,
|
|
227
188
|
body: pruneGetRequestBody(incomingRequest)
|
|
228
|
-
})
|
|
189
|
+
});
|
|
229
190
|
}
|
|
230
191
|
|
|
231
192
|
// src/browser/setupWorker/start/createRequestListener.ts
|
|
@@ -233,15 +194,13 @@ var import_handleRequest = require("../core/utils/handleRequest.js");
|
|
|
233
194
|
var import_devUtils4 = require("../core/utils/internal/devUtils.js");
|
|
234
195
|
var import_toResponseInit = require("../core/utils/toResponseInit.js");
|
|
235
196
|
var createRequestListener = (context, options) => {
|
|
236
|
-
return (event, message) =>
|
|
237
|
-
var _b;
|
|
197
|
+
return async (event, message) => {
|
|
238
198
|
const messageChannel = new WorkerChannel(event.ports[0]);
|
|
239
199
|
const requestId = message.payload.id;
|
|
240
200
|
const request = parseWorkerRequest(message.payload);
|
|
241
201
|
const requestCloneForLogs = request.clone();
|
|
242
202
|
try {
|
|
243
|
-
|
|
244
|
-
yield (0, import_handleRequest.handleRequest)(
|
|
203
|
+
await (0, import_handleRequest.handleRequest)(
|
|
245
204
|
request,
|
|
246
205
|
requestId,
|
|
247
206
|
context.requestHandlers,
|
|
@@ -251,36 +210,36 @@ var createRequestListener = (context, options) => {
|
|
|
251
210
|
onPassthroughResponse() {
|
|
252
211
|
messageChannel.postMessage("NOT_FOUND");
|
|
253
212
|
},
|
|
254
|
-
onMockedResponse(
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
213
|
+
async onMockedResponse(response, { handler, parsedResult }) {
|
|
214
|
+
const responseClone = response.clone();
|
|
215
|
+
const responseCloneForLogs = response.clone();
|
|
216
|
+
const responseInit = (0, import_toResponseInit.toResponseInit)(response);
|
|
217
|
+
if (context.supports.readableStreamTransfer) {
|
|
218
|
+
const responseStreamOrNull = response.body;
|
|
219
|
+
messageChannel.postMessage(
|
|
220
|
+
"MOCK_RESPONSE",
|
|
221
|
+
{
|
|
222
|
+
...responseInit,
|
|
223
|
+
body: responseStreamOrNull
|
|
224
|
+
},
|
|
225
|
+
responseStreamOrNull ? [responseStreamOrNull] : void 0
|
|
226
|
+
);
|
|
227
|
+
} else {
|
|
228
|
+
const responseBufferOrNull = response.body === null ? null : await responseClone.arrayBuffer();
|
|
229
|
+
messageChannel.postMessage("MOCK_RESPONSE", {
|
|
230
|
+
...responseInit,
|
|
231
|
+
body: responseBufferOrNull
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
if (!options.quiet) {
|
|
235
|
+
context.emitter.once("response:mocked", () => {
|
|
236
|
+
handler.log({
|
|
237
|
+
request: requestCloneForLogs,
|
|
238
|
+
response: responseCloneForLogs,
|
|
239
|
+
parsedResult
|
|
281
240
|
});
|
|
282
|
-
}
|
|
283
|
-
}
|
|
241
|
+
});
|
|
242
|
+
}
|
|
284
243
|
}
|
|
285
244
|
}
|
|
286
245
|
);
|
|
@@ -294,7 +253,7 @@ var createRequestListener = (context, options) => {
|
|
|
294
253
|
This exception has been gracefully handled as a 500 response, however, it's strongly recommended to resolve this error, as it indicates a mistake in your code. If you wish to mock an error response, please see this guide: https://mswjs.io/docs/recipes/mocking-error-responses`,
|
|
295
254
|
request.method,
|
|
296
255
|
request.url,
|
|
297
|
-
|
|
256
|
+
error.stack ?? error
|
|
298
257
|
);
|
|
299
258
|
messageChannel.postMessage("MOCK_RESPONSE", {
|
|
300
259
|
status: 500,
|
|
@@ -310,50 +269,29 @@ This exception has been gracefully handled as a 500 response, however, it's stro
|
|
|
310
269
|
});
|
|
311
270
|
}
|
|
312
271
|
}
|
|
313
|
-
}
|
|
272
|
+
};
|
|
314
273
|
};
|
|
315
274
|
|
|
316
275
|
// src/browser/utils/requestIntegrityCheck.ts
|
|
317
|
-
function requestIntegrityCheck(context, serviceWorker) {
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
276
|
+
async function requestIntegrityCheck(context, serviceWorker) {
|
|
277
|
+
context.workerChannel.send("INTEGRITY_CHECK_REQUEST");
|
|
278
|
+
const { payload: actualChecksum } = await context.events.once(
|
|
279
|
+
"INTEGRITY_CHECK_RESPONSE"
|
|
280
|
+
);
|
|
281
|
+
if (actualChecksum !== "223d191a56023cd36aa88c802961b911") {
|
|
282
|
+
throw new Error(
|
|
283
|
+
`Currently active Service Worker (${actualChecksum}) is behind the latest published one (${"223d191a56023cd36aa88c802961b911"}).`
|
|
322
284
|
);
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
`Currently active Service Worker (${actualChecksum}) is behind the latest published one (${"c5f7f8e188b673ea4e677df7ea3c5a39"}).`
|
|
326
|
-
);
|
|
327
|
-
}
|
|
328
|
-
return serviceWorker;
|
|
329
|
-
});
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
// src/browser/utils/deferNetworkRequestsUntil.ts
|
|
333
|
-
var import_until2 = require("@open-draft/until");
|
|
334
|
-
function deferNetworkRequestsUntil(predicatePromise) {
|
|
335
|
-
const originalXhrSend = window.XMLHttpRequest.prototype.send;
|
|
336
|
-
window.XMLHttpRequest.prototype.send = function(...args) {
|
|
337
|
-
(0, import_until2.until)(() => predicatePromise).then(() => {
|
|
338
|
-
window.XMLHttpRequest.prototype.send = originalXhrSend;
|
|
339
|
-
this.send(...args);
|
|
340
|
-
});
|
|
341
|
-
};
|
|
342
|
-
const originalFetch = window.fetch;
|
|
343
|
-
window.fetch = (...args) => __async(this, null, function* () {
|
|
344
|
-
yield (0, import_until2.until)(() => predicatePromise);
|
|
345
|
-
window.fetch = originalFetch;
|
|
346
|
-
return window.fetch(...args);
|
|
347
|
-
});
|
|
285
|
+
}
|
|
286
|
+
return serviceWorker;
|
|
348
287
|
}
|
|
349
288
|
|
|
350
289
|
// src/browser/setupWorker/start/createResponseListener.ts
|
|
351
290
|
var import_interceptors = require("@mswjs/interceptors");
|
|
352
291
|
function createResponseListener(context) {
|
|
353
292
|
return (_, message) => {
|
|
354
|
-
var _a;
|
|
355
293
|
const { payload: responseJson } = message;
|
|
356
|
-
if (
|
|
294
|
+
if (responseJson.type?.includes("opaque")) {
|
|
357
295
|
return;
|
|
358
296
|
}
|
|
359
297
|
const response = responseJson.status === 0 ? Response.error() : new Response(
|
|
@@ -384,7 +322,7 @@ function createResponseListener(context) {
|
|
|
384
322
|
// src/browser/setupWorker/start/utils/validateWorkerScope.ts
|
|
385
323
|
var import_devUtils5 = require("../core/utils/internal/devUtils.js");
|
|
386
324
|
function validateWorkerScope(registration, options) {
|
|
387
|
-
if (!
|
|
325
|
+
if (!options?.quiet && !location.href.startsWith(registration.scope)) {
|
|
388
326
|
import_devUtils5.devUtils.warn(
|
|
389
327
|
`Cannot intercept requests on this page because it's outside of the worker's scope ("${registration.scope}"). If you wish to mock API requests on this page, you must resolve this scope issue.
|
|
390
328
|
|
|
@@ -397,21 +335,21 @@ function validateWorkerScope(registration, options) {
|
|
|
397
335
|
// src/browser/setupWorker/start/createStartHandler.ts
|
|
398
336
|
var createStartHandler = (context) => {
|
|
399
337
|
return function start(options, customOptions) {
|
|
400
|
-
const startWorkerInstance = () =>
|
|
338
|
+
const startWorkerInstance = async () => {
|
|
401
339
|
context.events.removeAllListeners();
|
|
402
340
|
context.workerChannel.on(
|
|
403
341
|
"REQUEST",
|
|
404
342
|
createRequestListener(context, options)
|
|
405
343
|
);
|
|
406
344
|
context.workerChannel.on("RESPONSE", createResponseListener(context));
|
|
407
|
-
const instance =
|
|
345
|
+
const instance = await getWorkerInstance(
|
|
408
346
|
options.serviceWorker.url,
|
|
409
347
|
options.serviceWorker.options,
|
|
410
348
|
options.findWorker
|
|
411
349
|
);
|
|
412
350
|
const [worker, registration] = instance;
|
|
413
351
|
if (!worker) {
|
|
414
|
-
const missingWorkerMessage =
|
|
352
|
+
const missingWorkerMessage = customOptions?.findWorker ? import_devUtils6.devUtils.formatMessage(
|
|
415
353
|
`Failed to locate the Service Worker registration using a custom "findWorker" predicate.
|
|
416
354
|
|
|
417
355
|
Please ensure that the custom predicate properly locates the Service Worker registration at "%s".
|
|
@@ -437,7 +375,7 @@ Please consider using a custom "serviceWorker.url" option to point to the actual
|
|
|
437
375
|
}
|
|
438
376
|
window.clearInterval(context.keepAliveInterval);
|
|
439
377
|
});
|
|
440
|
-
const integrityCheckResult =
|
|
378
|
+
const integrityCheckResult = await (0, import_until2.until)(
|
|
441
379
|
() => requestIntegrityCheck(context, worker)
|
|
442
380
|
);
|
|
443
381
|
if (integrityCheckResult.error) {
|
|
@@ -456,12 +394,12 @@ If this message still persists after updating, please report an issue: https://g
|
|
|
456
394
|
);
|
|
457
395
|
validateWorkerScope(registration, context.startOptions);
|
|
458
396
|
return registration;
|
|
459
|
-
}
|
|
397
|
+
};
|
|
460
398
|
const workerRegistration = startWorkerInstance().then(
|
|
461
|
-
(registration) =>
|
|
399
|
+
async (registration) => {
|
|
462
400
|
const pendingInstance = registration.installing || registration.waiting;
|
|
463
401
|
if (pendingInstance) {
|
|
464
|
-
|
|
402
|
+
await new Promise((resolve) => {
|
|
465
403
|
pendingInstance.addEventListener("statechange", () => {
|
|
466
404
|
if (pendingInstance.state === "activated") {
|
|
467
405
|
return resolve();
|
|
@@ -469,15 +407,12 @@ If this message still persists after updating, please report an issue: https://g
|
|
|
469
407
|
});
|
|
470
408
|
});
|
|
471
409
|
}
|
|
472
|
-
|
|
473
|
-
throw new Error(`Failed to enable mocking: ${error
|
|
410
|
+
await enableMocking(context, options).catch((error) => {
|
|
411
|
+
throw new Error(`Failed to enable mocking: ${error?.message}`);
|
|
474
412
|
});
|
|
475
413
|
return registration;
|
|
476
|
-
}
|
|
414
|
+
}
|
|
477
415
|
);
|
|
478
|
-
if (options.waitUntilReady) {
|
|
479
|
-
deferNetworkRequestsUntil(workerRegistration);
|
|
480
|
-
}
|
|
481
416
|
return workerRegistration;
|
|
482
417
|
};
|
|
483
418
|
};
|
|
@@ -500,7 +435,6 @@ function printStopMessage(args = {}) {
|
|
|
500
435
|
// src/browser/setupWorker/stop/createStop.ts
|
|
501
436
|
var createStop = (context) => {
|
|
502
437
|
return function stop() {
|
|
503
|
-
var _a;
|
|
504
438
|
if (!context.isMockingEnabled) {
|
|
505
439
|
import_devUtils8.devUtils.warn(
|
|
506
440
|
'Found a redundant "worker.stop()" call. Note that stopping the worker while mocking already stopped has no effect. Consider removing this "worker.stop()" call.'
|
|
@@ -510,7 +444,7 @@ var createStop = (context) => {
|
|
|
510
444
|
context.workerChannel.send("MOCK_DEACTIVATE");
|
|
511
445
|
context.isMockingEnabled = false;
|
|
512
446
|
window.clearInterval(context.keepAliveInterval);
|
|
513
|
-
printStopMessage({ quiet:
|
|
447
|
+
printStopMessage({ quiet: context.startOptions?.quiet });
|
|
514
448
|
};
|
|
515
449
|
};
|
|
516
450
|
|
|
@@ -539,9 +473,9 @@ function createFallbackRequestListener(context, options) {
|
|
|
539
473
|
name: "fallback",
|
|
540
474
|
interceptors: [new import_fetch.FetchInterceptor(), new import_XMLHttpRequest.XMLHttpRequestInterceptor()]
|
|
541
475
|
});
|
|
542
|
-
interceptor.on("request",
|
|
476
|
+
interceptor.on("request", async ({ request, requestId }) => {
|
|
543
477
|
const requestCloneForLogs = request.clone();
|
|
544
|
-
const response =
|
|
478
|
+
const response = await (0, import_handleRequest2.handleRequest)(
|
|
545
479
|
request,
|
|
546
480
|
requestId,
|
|
547
481
|
context.requestHandlers,
|
|
@@ -564,7 +498,7 @@ function createFallbackRequestListener(context, options) {
|
|
|
564
498
|
if (response) {
|
|
565
499
|
request.respondWith(response);
|
|
566
500
|
}
|
|
567
|
-
})
|
|
501
|
+
});
|
|
568
502
|
interceptor.on(
|
|
569
503
|
"response",
|
|
570
504
|
({ response, isMockedResponse, request, requestId }) => {
|
|
@@ -584,27 +518,24 @@ function createFallbackRequestListener(context, options) {
|
|
|
584
518
|
|
|
585
519
|
// src/browser/setupWorker/start/createFallbackStart.ts
|
|
586
520
|
function createFallbackStart(context) {
|
|
587
|
-
return function start(options) {
|
|
588
|
-
|
|
589
|
-
context
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
quiet: options.quiet
|
|
596
|
-
});
|
|
597
|
-
return void 0;
|
|
521
|
+
return async function start(options) {
|
|
522
|
+
context.fallbackInterceptor = createFallbackRequestListener(
|
|
523
|
+
context,
|
|
524
|
+
options
|
|
525
|
+
);
|
|
526
|
+
printStartMessage({
|
|
527
|
+
message: "Mocking enabled (fallback mode).",
|
|
528
|
+
quiet: options.quiet
|
|
598
529
|
});
|
|
530
|
+
return void 0;
|
|
599
531
|
};
|
|
600
532
|
}
|
|
601
533
|
|
|
602
534
|
// src/browser/setupWorker/stop/createFallbackStop.ts
|
|
603
535
|
function createFallbackStop(context) {
|
|
604
536
|
return function stop() {
|
|
605
|
-
|
|
606
|
-
(
|
|
607
|
-
printStopMessage({ quiet: (_b = context.startOptions) == null ? void 0 : _b.quiet });
|
|
537
|
+
context.fallbackInterceptor?.dispose();
|
|
538
|
+
printStopMessage({ quiet: context.startOptions?.quiet });
|
|
608
539
|
};
|
|
609
540
|
}
|
|
610
541
|
|
|
@@ -629,10 +560,12 @@ function supportsReadableStreamTransfer() {
|
|
|
629
560
|
|
|
630
561
|
// src/browser/setupWorker/setupWorker.ts
|
|
631
562
|
var SetupWorkerApi = class extends import_SetupApi.SetupApi {
|
|
563
|
+
context;
|
|
564
|
+
startHandler = null;
|
|
565
|
+
stopHandler = null;
|
|
566
|
+
listeners;
|
|
632
567
|
constructor(...handlers) {
|
|
633
568
|
super(...handlers);
|
|
634
|
-
this.startHandler = null;
|
|
635
|
-
this.stopHandler = null;
|
|
636
569
|
(0, import_outvariant.invariant)(
|
|
637
570
|
!(0, import_is_node_process.isNodeProcess)(),
|
|
638
571
|
import_devUtils9.devUtils.formatMessage(
|
|
@@ -668,8 +601,7 @@ var SetupWorkerApi = class extends import_SetupApi.SetupApi {
|
|
|
668
601
|
});
|
|
669
602
|
},
|
|
670
603
|
send: (type) => {
|
|
671
|
-
|
|
672
|
-
(_a = this.context.worker) == null ? void 0 : _a.postMessage(type);
|
|
604
|
+
this.context.worker?.postMessage(type);
|
|
673
605
|
}
|
|
674
606
|
},
|
|
675
607
|
events: {
|
|
@@ -734,14 +666,17 @@ var SetupWorkerApi = class extends import_SetupApi.SetupApi {
|
|
|
734
666
|
this.stopHandler = context.supports.serviceWorkerApi ? createFallbackStop(context) : createStop(context);
|
|
735
667
|
return context;
|
|
736
668
|
}
|
|
737
|
-
start() {
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
options
|
|
669
|
+
async start(options = {}) {
|
|
670
|
+
if (options.waitUntilReady === true) {
|
|
671
|
+
import_devUtils9.devUtils.warn(
|
|
672
|
+
'The "waitUntilReady" option has been deprecated. Please remove it from this "worker.start()" call. Follow the recommended Browser integration (https://mswjs.io/docs/integrations/browser) to eliminate any race conditions between the Service Worker registration and any requests made by your application on initial render.'
|
|
742
673
|
);
|
|
743
|
-
|
|
744
|
-
|
|
674
|
+
}
|
|
675
|
+
this.context.startOptions = (0, import_mergeRight2.mergeRight)(
|
|
676
|
+
DEFAULT_START_OPTIONS,
|
|
677
|
+
options
|
|
678
|
+
);
|
|
679
|
+
return await this.startHandler(this.context.startOptions, options);
|
|
745
680
|
}
|
|
746
681
|
stop() {
|
|
747
682
|
super.dispose();
|