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
@@ -124,6 +124,72 @@ function isNodeProcess() {
124
124
  return false;
125
125
  }
126
126
 
127
+ // node_modules/.pnpm/@open-draft+deferred-promise@2.2.0/node_modules/@open-draft/deferred-promise/build/index.mjs
128
+ function createDeferredExecutor() {
129
+ const executor = (resolve, reject) => {
130
+ executor.state = "pending";
131
+ executor.resolve = (data) => {
132
+ if (executor.state !== "pending") {
133
+ return;
134
+ }
135
+ executor.result = data;
136
+ const onFulfilled = (value) => {
137
+ executor.state = "fulfilled";
138
+ return value;
139
+ };
140
+ return resolve(
141
+ data instanceof Promise ? data : Promise.resolve(data).then(onFulfilled)
142
+ );
143
+ };
144
+ executor.reject = (reason) => {
145
+ if (executor.state !== "pending") {
146
+ return;
147
+ }
148
+ queueMicrotask(() => {
149
+ executor.state = "rejected";
150
+ });
151
+ return reject(executor.rejectionReason = reason);
152
+ };
153
+ };
154
+ return executor;
155
+ }
156
+ var DeferredPromise = class extends Promise {
157
+ #executor;
158
+ resolve;
159
+ reject;
160
+ constructor(executor = null) {
161
+ const deferredExecutor = createDeferredExecutor();
162
+ super((originalResolve, originalReject) => {
163
+ deferredExecutor(originalResolve, originalReject);
164
+ executor?.(deferredExecutor.resolve, deferredExecutor.reject);
165
+ });
166
+ this.#executor = deferredExecutor;
167
+ this.resolve = this.#executor.resolve;
168
+ this.reject = this.#executor.reject;
169
+ }
170
+ get state() {
171
+ return this.#executor.state;
172
+ }
173
+ get rejectionReason() {
174
+ return this.#executor.rejectionReason;
175
+ }
176
+ then(onFulfilled, onRejected) {
177
+ return this.#decorate(super.then(onFulfilled, onRejected));
178
+ }
179
+ catch(onRejected) {
180
+ return this.#decorate(super.catch(onRejected));
181
+ }
182
+ finally(onfinally) {
183
+ return this.#decorate(super.finally(onfinally));
184
+ }
185
+ #decorate(promise) {
186
+ return Object.defineProperties(promise, {
187
+ resolve: { configurable: true, value: this.resolve },
188
+ reject: { configurable: true, value: this.reject }
189
+ });
190
+ }
191
+ };
192
+
127
193
  // src/browser/setupWorker/start/utils/prepareStartHandler.ts
128
194
  var import_mergeRight = require("../core/utils/internal/mergeRight");
129
195
  var DEFAULT_START_OPTIONS = {
@@ -231,72 +297,6 @@ Learn more about creating the Service Worker script: https://mswjs.io/docs/cli/i
231
297
  return registrationResult;
232
298
  };
233
299
 
234
- // node_modules/.pnpm/@open-draft+deferred-promise@2.2.0/node_modules/@open-draft/deferred-promise/build/index.mjs
235
- function createDeferredExecutor() {
236
- const executor = (resolve, reject) => {
237
- executor.state = "pending";
238
- executor.resolve = (data) => {
239
- if (executor.state !== "pending") {
240
- return;
241
- }
242
- executor.result = data;
243
- const onFulfilled = (value) => {
244
- executor.state = "fulfilled";
245
- return value;
246
- };
247
- return resolve(
248
- data instanceof Promise ? data : Promise.resolve(data).then(onFulfilled)
249
- );
250
- };
251
- executor.reject = (reason) => {
252
- if (executor.state !== "pending") {
253
- return;
254
- }
255
- queueMicrotask(() => {
256
- executor.state = "rejected";
257
- });
258
- return reject(executor.rejectionReason = reason);
259
- };
260
- };
261
- return executor;
262
- }
263
- var DeferredPromise = class extends Promise {
264
- #executor;
265
- resolve;
266
- reject;
267
- constructor(executor = null) {
268
- const deferredExecutor = createDeferredExecutor();
269
- super((originalResolve, originalReject) => {
270
- deferredExecutor(originalResolve, originalReject);
271
- executor?.(deferredExecutor.resolve, deferredExecutor.reject);
272
- });
273
- this.#executor = deferredExecutor;
274
- this.resolve = this.#executor.resolve;
275
- this.reject = this.#executor.reject;
276
- }
277
- get state() {
278
- return this.#executor.state;
279
- }
280
- get rejectionReason() {
281
- return this.#executor.rejectionReason;
282
- }
283
- then(onFulfilled, onRejected) {
284
- return this.#decorate(super.then(onFulfilled, onRejected));
285
- }
286
- catch(onRejected) {
287
- return this.#decorate(super.catch(onRejected));
288
- }
289
- finally(onfinally) {
290
- return this.#decorate(super.finally(onfinally));
291
- }
292
- #decorate(promise) {
293
- return Object.defineProperties(promise, {
294
- resolve: { configurable: true, value: this.resolve },
295
- reject: { configurable: true, value: this.reject }
296
- });
297
- }
298
- };
299
-
300
300
  // src/browser/setupWorker/start/utils/printStartMessage.ts
301
301
  var import_devUtils2 = require("../core/utils/internal/devUtils");
302
302
  function printStartMessage(args = {}) {
@@ -360,12 +360,30 @@ function deserializeRequest(serializedRequest) {
360
360
  });
361
361
  }
362
362
 
363
+ // src/browser/utils/supports.ts
364
+ function supportsServiceWorker() {
365
+ return typeof navigator !== "undefined" && "serviceWorker" in navigator && typeof location !== "undefined" && location.protocol !== "file:";
366
+ }
367
+ function supportsReadableStreamTransfer() {
368
+ try {
369
+ const stream = new ReadableStream({
370
+ start: (controller) => controller.close()
371
+ });
372
+ const message = new MessageChannel();
373
+ message.port1.postMessage(stream, [stream]);
374
+ return true;
375
+ } catch {
376
+ return false;
377
+ }
378
+ }
379
+
363
380
  // src/browser/setupWorker/start/createRequestListener.ts
364
381
  var import_RequestHandler = require("../core/handlers/RequestHandler");
365
382
  var import_handleRequest = require("../core/utils/handleRequest");
366
383
  var import_devUtils3 = require("../core/utils/internal/devUtils");
367
384
  var import_toResponseInit = require("../core/utils/toResponseInit");
368
385
  var import_isHandlerKind = require("../core/utils/internal/isHandlerKind");
386
+ var SUPPORTS_READABLE_STREAM_TRANSFER = supportsReadableStreamTransfer();
369
387
  var createRequestListener = (context, options) => {
370
388
  return async (event) => {
371
389
  if (!context.isMockingEnabled && context.workerStoppedAt && event.data.interceptedAt > context.workerStoppedAt) {
@@ -392,7 +410,7 @@ var createRequestListener = (context, options) => {
392
410
  const responseClone = response.clone();
393
411
  const responseCloneForLogs = response.clone();
394
412
  const responseInit = (0, import_toResponseInit.toResponseInit)(response);
395
- if (context.supports.readableStreamTransfer) {
413
+ if (SUPPORTS_READABLE_STREAM_TRANSFER) {
396
414
  const responseStreamOrNull = response.body;
397
415
  event.postMessage(
398
416
  "MOCK_RESPONSE",
@@ -1347,22 +1365,6 @@ Please consider using a custom "serviceWorker.url" option to point to the actual
1347
1365
  var import_devUtils8 = require("../core/utils/internal/devUtils");
1348
1366
  var import_SetupApi = require("../core/SetupApi");
1349
1367
  var import_mergeRight2 = require("../core/utils/internal/mergeRight");
1350
-
1351
- // src/browser/utils/supportsReadableStreamTransfer.ts
1352
- function supportsReadableStreamTransfer() {
1353
- try {
1354
- const stream = new ReadableStream({
1355
- start: (controller) => controller.close()
1356
- });
1357
- const message = new MessageChannel();
1358
- message.port1.postMessage(stream, [stream]);
1359
- return true;
1360
- } catch {
1361
- return false;
1362
- }
1363
- }
1364
-
1365
- // src/browser/setupWorker/setupWorker.ts
1366
1368
  var import_webSocketInterceptor = require("../core/ws/webSocketInterceptor");
1367
1369
  var import_handleWebSocketEvent = require("../core/ws/handleWebSocketEvent");
1368
1370
  var import_attachWebSocketLogger = require("../core/ws/utils/attachWebSocketLogger");
@@ -1602,6 +1604,7 @@ var Emitter2 = class {
1602
1604
 
1603
1605
  // src/browser/utils/workerChannel.ts
1604
1606
  var import_isObject = require("../core/utils/internal/isObject");
1607
+ var SUPPORTS_SERVICE_WORKER = supportsServiceWorker();
1605
1608
  var WorkerEvent = class extends TypedEvent {
1606
1609
  #workerEvent;
1607
1610
  constructor(workerEvent) {
@@ -1631,6 +1634,9 @@ var WorkerChannel = class extends Emitter2 {
1631
1634
  constructor(options) {
1632
1635
  super();
1633
1636
  this.options = options;
1637
+ if (!SUPPORTS_SERVICE_WORKER) {
1638
+ return;
1639
+ }
1634
1640
  navigator.serviceWorker.addEventListener("message", async (event) => {
1635
1641
  const worker = await this.options.worker;
1636
1642
  if (event.source != null && event.source !== worker) {
@@ -1646,6 +1652,10 @@ var WorkerChannel = class extends Emitter2 {
1646
1652
  * This triggers the `message` event listener on ServiceWorkerGlobalScope.
1647
1653
  */
1648
1654
  postMessage(type) {
1655
+ invariant(
1656
+ SUPPORTS_SERVICE_WORKER,
1657
+ "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"
1658
+ );
1649
1659
  this.options.worker.then((worker) => {
1650
1660
  worker.postMessage(type);
1651
1661
  });
@@ -3036,11 +3046,7 @@ var SetupWorkerApi = class extends import_SetupApi.SetupApi {
3036
3046
  emitter: this.emitter,
3037
3047
  workerChannel: new WorkerChannel({
3038
3048
  worker: workerPromise
3039
- }),
3040
- supports: {
3041
- serviceWorkerApi: "serviceWorker" in navigator && location.protocol !== "file:",
3042
- readableStreamTransfer: supportsReadableStreamTransfer()
3043
- }
3049
+ })
3044
3050
  };
3045
3051
  }
3046
3052
  async start(options = {}) {
@@ -3079,7 +3085,7 @@ var SetupWorkerApi = class extends import_SetupApi.SetupApi {
3079
3085
  this.subscriptions.push(() => {
3080
3086
  import_webSocketInterceptor.webSocketInterceptor.dispose();
3081
3087
  });
3082
- if (!this.context.supports.serviceWorkerApi) {
3088
+ if (!supportsServiceWorker()) {
3083
3089
  const fallbackInterceptor = createFallbackRequestListener(
3084
3090
  this.context,
3085
3091
  this.context.startOptions
@@ -3110,7 +3116,7 @@ var SetupWorkerApi = class extends import_SetupApi.SetupApi {
3110
3116
  this.context.isMockingEnabled = false;
3111
3117
  this.context.workerStoppedAt = Date.now();
3112
3118
  this.context.emitter.removeAllListeners();
3113
- if (this.context.supports.serviceWorkerApi) {
3119
+ if (supportsServiceWorker()) {
3114
3120
  this.context.workerChannel.removeAllListeners("RESPONSE");
3115
3121
  window.clearInterval(this.context.keepAliveInterval);
3116
3122
  }