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.
Files changed (118) hide show
  1. package/lib/browser/index.js +96 -90
  2. package/lib/browser/index.js.map +1 -1
  3. package/lib/browser/index.mjs +96 -90
  4. package/lib/browser/index.mjs.map +1 -1
  5. package/lib/core/{HttpResponse-BbwAqLE_.d.ts → HttpResponse-BpT5A_2L.d.ts} +1 -0
  6. package/lib/core/{HttpResponse-B4YmE-GJ.d.mts → HttpResponse-DGUjNQHG.d.mts} +1 -0
  7. package/lib/core/HttpResponse.d.mts +1 -1
  8. package/lib/core/HttpResponse.d.ts +1 -1
  9. package/lib/core/HttpResponse.js.map +1 -1
  10. package/lib/core/HttpResponse.mjs.map +1 -1
  11. package/lib/core/SetupApi.d.mts +1 -1
  12. package/lib/core/SetupApi.d.ts +1 -1
  13. package/lib/core/getResponse.d.mts +1 -1
  14. package/lib/core/getResponse.d.ts +1 -1
  15. package/lib/core/graphql.d.mts +1 -1
  16. package/lib/core/graphql.d.ts +1 -1
  17. package/lib/core/handlers/GraphQLHandler.d.mts +1 -1
  18. package/lib/core/handlers/GraphQLHandler.d.ts +1 -1
  19. package/lib/core/handlers/HttpHandler.d.mts +1 -1
  20. package/lib/core/handlers/HttpHandler.d.ts +1 -1
  21. package/lib/core/handlers/HttpHandler.js +0 -5
  22. package/lib/core/handlers/HttpHandler.js.map +1 -1
  23. package/lib/core/handlers/HttpHandler.mjs +1 -6
  24. package/lib/core/handlers/HttpHandler.mjs.map +1 -1
  25. package/lib/core/handlers/RequestHandler.d.mts +1 -1
  26. package/lib/core/handlers/RequestHandler.d.ts +1 -1
  27. package/lib/core/http.d.mts +1 -1
  28. package/lib/core/http.d.ts +1 -1
  29. package/lib/core/index.d.mts +2 -2
  30. package/lib/core/index.d.ts +2 -2
  31. package/lib/core/index.js +2 -0
  32. package/lib/core/index.js.map +1 -1
  33. package/lib/core/index.mjs +4 -0
  34. package/lib/core/index.mjs.map +1 -1
  35. package/lib/core/passthrough.d.mts +1 -1
  36. package/lib/core/passthrough.d.ts +1 -1
  37. package/lib/core/utils/HttpResponse/decorators.d.mts +1 -1
  38. package/lib/core/utils/HttpResponse/decorators.d.ts +1 -1
  39. package/lib/core/utils/HttpResponse/decorators.js +1 -1
  40. package/lib/core/utils/HttpResponse/decorators.js.map +1 -1
  41. package/lib/core/utils/HttpResponse/decorators.mjs +1 -1
  42. package/lib/core/utils/HttpResponse/decorators.mjs.map +1 -1
  43. package/lib/core/utils/executeHandlers.d.mts +1 -1
  44. package/lib/core/utils/executeHandlers.d.ts +1 -1
  45. package/lib/core/utils/handleRequest.d.mts +1 -1
  46. package/lib/core/utils/handleRequest.d.ts +1 -1
  47. package/lib/core/utils/internal/isHandlerKind.d.mts +1 -1
  48. package/lib/core/utils/internal/isHandlerKind.d.ts +1 -1
  49. package/lib/core/utils/internal/parseGraphQLRequest.d.mts +1 -1
  50. package/lib/core/utils/internal/parseGraphQLRequest.d.ts +1 -1
  51. package/lib/core/utils/internal/parseMultipartData.d.mts +1 -1
  52. package/lib/core/utils/internal/parseMultipartData.d.ts +1 -1
  53. package/lib/core/utils/internal/requestHandlerUtils.d.mts +1 -1
  54. package/lib/core/utils/internal/requestHandlerUtils.d.ts +1 -1
  55. package/lib/core/utils/logging/serializeResponse.js +1 -1
  56. package/lib/core/utils/logging/serializeResponse.js.map +1 -1
  57. package/lib/core/utils/logging/serializeResponse.mjs +1 -1
  58. package/lib/core/utils/logging/serializeResponse.mjs.map +1 -1
  59. package/lib/core/utils/request/getRequestCookies.js +3 -13
  60. package/lib/core/utils/request/getRequestCookies.js.map +1 -1
  61. package/lib/core/utils/request/getRequestCookies.mjs +6 -3
  62. package/lib/core/utils/request/getRequestCookies.mjs.map +1 -1
  63. package/lib/core/utils/url/cleanUrl.d.mts +1 -2
  64. package/lib/core/utils/url/cleanUrl.d.ts +1 -2
  65. package/lib/core/utils/url/cleanUrl.js +1 -5
  66. package/lib/core/utils/url/cleanUrl.js.map +1 -1
  67. package/lib/core/utils/url/cleanUrl.mjs +1 -5
  68. package/lib/core/utils/url/cleanUrl.mjs.map +1 -1
  69. package/lib/core/ws/WebSocketIndexedDBClientStore.d.mts +1 -2
  70. package/lib/core/ws/WebSocketIndexedDBClientStore.d.ts +1 -2
  71. package/lib/core/ws/WebSocketIndexedDBClientStore.js.map +1 -1
  72. package/lib/core/ws/WebSocketIndexedDBClientStore.mjs.map +1 -1
  73. package/lib/core/ws/WebSocketMemoryClientStore.d.mts +1 -2
  74. package/lib/core/ws/WebSocketMemoryClientStore.d.ts +1 -2
  75. package/lib/core/ws/WebSocketMemoryClientStore.js.map +1 -1
  76. package/lib/core/ws/WebSocketMemoryClientStore.mjs.map +1 -1
  77. package/lib/core/ws/handleWebSocketEvent.d.mts +2 -3
  78. package/lib/core/ws/handleWebSocketEvent.d.ts +2 -3
  79. package/lib/core/ws/handleWebSocketEvent.js.map +1 -1
  80. package/lib/core/ws/handleWebSocketEvent.mjs.map +1 -1
  81. package/lib/core/ws/utils/getMessageLength.d.mts +1 -1
  82. package/lib/core/ws/utils/getMessageLength.d.ts +1 -1
  83. package/lib/core/ws/utils/getMessageLength.js.map +1 -1
  84. package/lib/core/ws/utils/getMessageLength.mjs.map +1 -1
  85. package/lib/iife/index.js +556 -605
  86. package/lib/iife/index.js.map +1 -1
  87. package/lib/mockServiceWorker.js +2 -1
  88. package/lib/shims/cookie.d.mts +7 -0
  89. package/lib/shims/cookie.d.ts +7 -0
  90. package/lib/shims/cookie.js +204 -0
  91. package/lib/shims/cookie.mjs +196 -0
  92. package/lib/shims/statuses.d.mts +6 -0
  93. package/lib/shims/statuses.d.ts +6 -0
  94. package/lib/shims/statuses.js +195 -0
  95. package/lib/shims/statuses.mjs +187 -0
  96. package/package.json +5 -6
  97. package/src/browser/setupWorker/glossary.ts +1 -5
  98. package/src/browser/setupWorker/setupWorker.ts +4 -9
  99. package/src/browser/setupWorker/start/createRequestListener.ts +4 -1
  100. package/src/browser/utils/{supportsReadableStreamTransfer.ts → supports.ts} +13 -0
  101. package/src/browser/utils/workerChannel.ts +13 -0
  102. package/src/core/HttpResponse.ts +1 -0
  103. package/src/core/handlers/HttpHandler.ts +1 -8
  104. package/src/core/index.ts +5 -0
  105. package/src/core/utils/HttpResponse/decorators.ts +1 -1
  106. package/src/core/utils/logging/serializeResponse.ts +1 -1
  107. package/src/core/utils/request/getRequestCookies.ts +6 -3
  108. package/src/core/utils/url/cleanUrl.ts +0 -4
  109. package/src/core/ws/WebSocketIndexedDBClientStore.ts +1 -1
  110. package/src/core/ws/WebSocketMemoryClientStore.ts +1 -1
  111. package/src/core/ws/handleWebSocketEvent.ts +1 -1
  112. package/src/core/ws/utils/getMessageLength.ts +1 -1
  113. package/src/mockServiceWorker.js +1 -0
  114. package/src/shims/cookie.ts +7 -0
  115. package/src/shims/statuses.ts +6 -0
  116. package/src/tsconfig.src.json +1 -6
  117. package/src/browser/utils/deferNetworkRequestsUntil.test.ts +0 -48
  118. package/src/browser/utils/deferNetworkRequestsUntil.ts +0 -29
@@ -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 (context.supports.readableStreamTransfer) {
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 (!this.context.supports.serviceWorkerApi) {
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 (this.context.supports.serviceWorkerApi) {
3092
+ if (supportsServiceWorker()) {
3087
3093
  this.context.workerChannel.removeAllListeners("RESPONSE");
3088
3094
  window.clearInterval(this.context.keepAliveInterval);
3089
3095
  }