msw 2.8.7 → 2.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/lib/browser/index.js +13 -17
  2. package/lib/browser/index.js.map +1 -1
  3. package/lib/browser/index.mjs +13 -17
  4. package/lib/browser/index.mjs.map +1 -1
  5. package/lib/core/handlers/WebSocketHandler.d.mts +5 -5
  6. package/lib/core/handlers/WebSocketHandler.d.ts +5 -5
  7. package/lib/core/handlers/WebSocketHandler.js +12 -8
  8. package/lib/core/handlers/WebSocketHandler.js.map +1 -1
  9. package/lib/core/handlers/WebSocketHandler.mjs +12 -8
  10. package/lib/core/handlers/WebSocketHandler.mjs.map +1 -1
  11. package/lib/core/ws/handleWebSocketEvent.js +26 -39
  12. package/lib/core/ws/handleWebSocketEvent.js.map +1 -1
  13. package/lib/core/ws/handleWebSocketEvent.mjs +26 -39
  14. package/lib/core/ws/handleWebSocketEvent.mjs.map +1 -1
  15. package/lib/core/ws/utils/getMessageLength.js.map +1 -1
  16. package/lib/core/ws/utils/getMessageLength.mjs.map +1 -1
  17. package/lib/core/ws/utils/getPublicData.js.map +1 -1
  18. package/lib/core/ws/utils/getPublicData.mjs.map +1 -1
  19. package/lib/iife/index.js +51 -62
  20. package/lib/iife/index.js.map +1 -1
  21. package/lib/mockServiceWorker.js +91 -54
  22. package/package.json +3 -2
  23. package/src/browser/setupWorker/glossary.ts +7 -7
  24. package/src/browser/setupWorker/setupWorker.ts +0 -1
  25. package/src/browser/setupWorker/start/createRequestListener.ts +3 -4
  26. package/src/browser/setupWorker/start/createResponseListener.ts +8 -12
  27. package/src/browser/utils/{parseWorkerRequest.ts → deserializeRequest.ts} +5 -5
  28. package/src/core/handlers/WebSocketHandler.test.ts +12 -61
  29. package/src/core/handlers/WebSocketHandler.ts +16 -13
  30. package/src/core/ws/handleWebSocketEvent.ts +36 -55
  31. package/src/core/ws/utils/getMessageLength.ts +1 -1
  32. package/src/core/ws/utils/getPublicData.ts +1 -1
  33. package/src/mockServiceWorker.js +89 -52
  34. package/src/tsconfig.worker.json +13 -0
package/lib/iife/index.js CHANGED
@@ -28038,7 +28038,6 @@ Consider naming this operation or using "graphql.operation()" request handler to
28038
28038
 
28039
28039
  // src/core/handlers/WebSocketHandler.ts
28040
28040
  var kEmitter = Symbol("kEmitter");
28041
- var kDispatchEvent = Symbol("kDispatchEvent");
28042
28041
  var kSender = Symbol("kSender");
28043
28042
  var kStopPropagationPatched = Symbol("kStopPropagationPatched");
28044
28043
  var KOnStopPropagation = Symbol("KOnStopPropagation");
@@ -28055,8 +28054,7 @@ Consider naming this operation or using "graphql.operation()" request handler to
28055
28054
  callFrame;
28056
28055
  [kEmitter];
28057
28056
  parse(args) {
28058
- const { data: connection } = args.event;
28059
- const { url: clientUrl } = connection.client;
28057
+ const clientUrl = new URL(args.url);
28060
28058
  clientUrl.pathname = clientUrl.pathname.replace(/^\/socket.io\//, "/");
28061
28059
  const match2 = matchRequestUrl(clientUrl, this.url);
28062
28060
  return {
@@ -28066,13 +28064,20 @@ Consider naming this operation or using "graphql.operation()" request handler to
28066
28064
  predicate(args) {
28067
28065
  return args.parsedResult.match.matches;
28068
28066
  }
28069
- async [kDispatchEvent](event) {
28070
- const parsedResult = this.parse({ event });
28071
- const connection = event.data;
28067
+ async run(connection) {
28068
+ const parsedResult = this.parse({
28069
+ url: connection.client.url
28070
+ });
28071
+ if (!this.predicate({ url: connection.client.url, parsedResult })) {
28072
+ return false;
28073
+ }
28072
28074
  const resolvedConnection = {
28073
28075
  ...connection,
28074
28076
  params: parsedResult.match.params || {}
28075
28077
  };
28078
+ return this.connect(resolvedConnection);
28079
+ }
28080
+ connect(connection) {
28076
28081
  connection.client.addEventListener(
28077
28082
  "message",
28078
28083
  createStopPropagationListener(this)
@@ -28097,7 +28102,7 @@ Consider naming this operation or using "graphql.operation()" request handler to
28097
28102
  "close",
28098
28103
  createStopPropagationListener(this)
28099
28104
  );
28100
- this[kEmitter].emit("connection", resolvedConnection);
28105
+ return this[kEmitter].emit("connection", connection);
28101
28106
  }
28102
28107
  };
28103
28108
  function createStopPropagationListener(handler) {
@@ -29038,11 +29043,11 @@ Learn more about creating the Service Worker script: https://mswjs.io/docs/cli/i
29038
29043
  return request.body;
29039
29044
  }
29040
29045
 
29041
- // src/browser/utils/parseWorkerRequest.ts
29042
- function parseWorkerRequest(incomingRequest) {
29043
- return new Request(incomingRequest.url, {
29044
- ...incomingRequest,
29045
- body: pruneGetRequestBody(incomingRequest)
29046
+ // src/browser/utils/deserializeRequest.ts
29047
+ function deserializeRequest(serializedRequest) {
29048
+ return new Request(serializedRequest.url, {
29049
+ ...serializedRequest,
29050
+ body: pruneGetRequestBody(serializedRequest)
29046
29051
  });
29047
29052
  }
29048
29053
 
@@ -29067,11 +29072,10 @@ Learn more about creating the Service Worker script: https://mswjs.io/docs/cli/i
29067
29072
  return async (event, message3) => {
29068
29073
  const messageChannel = new WorkerChannel(event.ports[0]);
29069
29074
  const requestId = message3.payload.id;
29070
- const request = parseWorkerRequest(message3.payload);
29075
+ const request = deserializeRequest(message3.payload);
29071
29076
  const requestCloneForLogs = request.clone();
29072
29077
  const requestClone = request.clone();
29073
29078
  RequestHandler.cache.set(request, requestClone);
29074
- context.requests.set(requestId, requestClone);
29075
29079
  try {
29076
29080
  await handleRequest(
29077
29081
  request,
@@ -29149,7 +29153,7 @@ This exception has been gracefully handled as a 500 response, however, it's stro
29149
29153
  async function checkWorkerIntegrity(context) {
29150
29154
  context.workerChannel.send("INTEGRITY_CHECK_REQUEST");
29151
29155
  const { payload } = await context.events.once("INTEGRITY_CHECK_RESPONSE");
29152
- if (payload.checksum !== "00729d72e3b82faf54ca8b9621dbb96f") {
29156
+ if (payload.checksum !== "f5825c521429caf22a4dd13b66e243af") {
29153
29157
  devUtils.warn(
29154
29158
  `The currently registered Service Worker has been generated by a different version of MSW (${payload.packageVersion}) and may not be fully compatible with the installed version.
29155
29159
 
@@ -29166,20 +29170,18 @@ You can also automate this process and make the worker script update automatical
29166
29170
  function createResponseListener(context) {
29167
29171
  return (_, message3) => {
29168
29172
  const { payload: responseJson } = message3;
29169
- const { requestId } = responseJson;
29170
- const request = context.requests.get(requestId);
29171
- context.requests.delete(requestId);
29172
- if (responseJson.type?.includes("opaque")) {
29173
+ const request = deserializeRequest(responseJson.request);
29174
+ if (responseJson.response.type?.includes("opaque")) {
29173
29175
  return;
29174
29176
  }
29175
- const response = responseJson.status === 0 ? Response.error() : new FetchResponse(
29177
+ const response = responseJson.response.status === 0 ? Response.error() : new FetchResponse(
29176
29178
  /**
29177
29179
  * Responses may be streams here, but when we create a response object
29178
29180
  * with null-body status codes, like 204, 205, 304 Response will
29179
29181
  * throw when passed a non-null body, so ensure it's null here
29180
29182
  * for those codes
29181
29183
  */
29182
- FetchResponse.isResponseWithBody(responseJson.status) ? responseJson.body : null,
29184
+ FetchResponse.isResponseWithBody(responseJson.response.status) ? responseJson.response.body : null,
29183
29185
  {
29184
29186
  ...responseJson,
29185
29187
  /**
@@ -29193,9 +29195,9 @@ You can also automate this process and make the worker script update automatical
29193
29195
  context.emitter.emit(
29194
29196
  responseJson.isMockedResponse ? "response:mocked" : "response:bypass",
29195
29197
  {
29196
- response,
29198
+ requestId: responseJson.request.id,
29197
29199
  request,
29198
- requestId: responseJson.requestId
29200
+ response
29199
29201
  }
29200
29202
  );
29201
29203
  };
@@ -31409,48 +31411,36 @@ Please consider using a custom "serviceWorker.url" option to point to the actual
31409
31411
  // src/core/ws/handleWebSocketEvent.ts
31410
31412
  function handleWebSocketEvent(options) {
31411
31413
  webSocketInterceptor.on("connection", async (connection) => {
31412
- const handlers = options.getHandlers();
31413
- const connectionEvent = new MessageEvent("connection", {
31414
- data: connection
31415
- });
31416
- const matchingHandlers = [];
31417
- for (const handler of handlers) {
31418
- if (isHandlerKind("EventHandler")(handler) && handler.predicate({
31419
- event: connectionEvent,
31420
- parsedResult: handler.parse({
31421
- event: connectionEvent
31414
+ const handlers = options.getHandlers().filter(isHandlerKind("EventHandler"));
31415
+ if (handlers.length > 0) {
31416
+ options?.onMockedConnection(connection);
31417
+ await Promise.all(
31418
+ handlers.map((handler) => {
31419
+ return handler.run(connection);
31422
31420
  })
31423
- })) {
31424
- matchingHandlers.push(handler);
31425
- }
31421
+ );
31422
+ return;
31426
31423
  }
31427
- if (matchingHandlers.length > 0) {
31428
- options?.onMockedConnection(connection);
31429
- for (const handler of matchingHandlers) {
31430
- handler[kDispatchEvent](connectionEvent);
31424
+ const request = new Request(connection.client.url, {
31425
+ headers: {
31426
+ upgrade: "websocket",
31427
+ connection: "upgrade"
31431
31428
  }
31432
- } else {
31433
- const request = new Request(connection.client.url, {
31434
- headers: {
31435
- upgrade: "websocket",
31436
- connection: "upgrade"
31437
- }
31438
- });
31439
- await onUnhandledRequest(
31440
- request,
31441
- options.getUnhandledRequestStrategy()
31442
- ).catch((error3) => {
31443
- const errorEvent = new Event("error");
31444
- Object.defineProperty(errorEvent, "cause", {
31445
- enumerable: true,
31446
- configurable: false,
31447
- value: error3
31448
- });
31449
- connection.client.socket.dispatchEvent(errorEvent);
31429
+ });
31430
+ await onUnhandledRequest(
31431
+ request,
31432
+ options.getUnhandledRequestStrategy()
31433
+ ).catch((error3) => {
31434
+ const errorEvent = new Event("error");
31435
+ Object.defineProperty(errorEvent, "cause", {
31436
+ enumerable: true,
31437
+ configurable: false,
31438
+ value: error3
31450
31439
  });
31451
- options?.onPassthroughConnection(connection);
31452
- connection.server.connect();
31453
- }
31440
+ connection.client.socket.dispatchEvent(errorEvent);
31441
+ });
31442
+ options?.onPassthroughConnection(connection);
31443
+ connection.server.connect();
31454
31444
  });
31455
31445
  }
31456
31446
 
@@ -31685,7 +31675,6 @@ Please consider using a custom "serviceWorker.url" option to point to the actual
31685
31675
  return this.handlersController.currentHandlers();
31686
31676
  },
31687
31677
  registration: null,
31688
- requests: /* @__PURE__ */ new Map(),
31689
31678
  emitter: this.emitter,
31690
31679
  workerChannel: {
31691
31680
  on: (eventType, callback) => {