msw 0.39.1 → 0.39.2

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/esm/index.js CHANGED
@@ -745,13 +745,36 @@ function getRequestCookies(request) {
745
745
  }
746
746
  }
747
747
 
748
+ /**
749
+ * Sets relevant cookies on the request.
750
+ * Request cookies are taken from the following sources:
751
+ * - Immediate (own) request cookies (those in the "Cookie" request header);
752
+ * - From the `document.cookie` based on the request's `credentials` value;
753
+ * - From the internal cookie store that persists/hydrates cookies in Node.js
754
+ */
748
755
  function setRequestCookies(request) {
749
756
  var _a;
757
+ // Set mocked request cookies from the `cookie` header of the original request.
758
+ // No need to take `credentials` into account, because in Node.js requests are intercepted
759
+ // _after_ they happen. Request issuer should have already taken care of sending relevant cookies.
760
+ // Unlike browser, where interception is on the worker level, _before_ the request happens.
761
+ const requestCookiesString = request.headers.get('cookie');
750
762
  store.hydrate();
751
- request.cookies = Object.assign(Object.assign({}, getRequestCookies(request)), Array.from((_a = store.get(Object.assign(Object.assign({}, request), { url: request.url.toString() }))) === null || _a === void 0 ? void 0 : _a.entries()).reduce((cookies, [name, { value }]) => Object.assign(cookies, { [name]: value }), {}));
752
- request.headers.set('cookie', Object.entries(request.cookies)
753
- .map(([name, value]) => `${name}=${value}`)
754
- .join('; '));
763
+ const cookiesFromStore = Array.from((_a = store.get(Object.assign(Object.assign({}, request), { url: request.url.toString() }))) === null || _a === void 0 ? void 0 : _a.entries()).reduce((cookies, [name, { value }]) => {
764
+ return Object.assign(cookies, { [name.trim()]: value });
765
+ }, {});
766
+ const cookiesFromDocument = getRequestCookies(request);
767
+ const forwardedCookies = Object.assign(Object.assign({}, cookiesFromDocument), cookiesFromStore);
768
+ // Ensure the persisted (document) cookies are propagated to the request.
769
+ // Propagated the cookies persisted in the Cookuie Store to the request headers.
770
+ // This forwards relevant request cookies based on the request's credentials.
771
+ for (const [name, value] of Object.entries(forwardedCookies)) {
772
+ request.headers.append('cookie', `${name}=${value}`);
773
+ }
774
+ const ownCookies = requestCookiesString
775
+ ? parse_1(requestCookiesString)
776
+ : {};
777
+ request.cookies = Object.assign(Object.assign(Object.assign({}, request.cookies), forwardedCookies), ownCookies);
755
778
  }
756
779
 
757
780
  /**
@@ -1437,6 +1460,7 @@ function parseIsomorphicRequest(request) {
1437
1460
  url: request.url,
1438
1461
  method: request.method,
1439
1462
  body: parseBody(request.body, request.headers),
1463
+ credentials: request.credentials || 'same-origin',
1440
1464
  headers: request.headers,
1441
1465
  cookies: {},
1442
1466
  redirect: 'manual',
@@ -1448,21 +1472,9 @@ function parseIsomorphicRequest(request) {
1448
1472
  integrity: '',
1449
1473
  destination: 'document',
1450
1474
  bodyUsed: false,
1451
- credentials: 'same-origin',
1452
1475
  };
1453
- // Set mocked request cookies from the `cookie` header of the original request.
1454
- // No need to take `credentials` into account, because in Node.js requests are intercepted
1455
- // _after_ they happen. Request issuer should have already taken care of sending relevant cookies.
1456
- // Unlike browser, where interception is on the worker level, _before_ the request happens.
1457
- const requestCookiesString = request.headers.get('cookie');
1458
1476
  // Attach all the cookies from the virtual cookie store.
1459
1477
  setRequestCookies(mockedRequest);
1460
- const requestCookies = requestCookiesString
1461
- ? parse_1(requestCookiesString)
1462
- : {};
1463
- // Merge both direct request cookies and the cookies inherited
1464
- // from other same-origin requests in the cookie store.
1465
- mockedRequest.cookies = Object.assign(Object.assign({}, mockedRequest.cookies), requestCookies);
1466
1478
  return mockedRequest;
1467
1479
  }
1468
1480
 
@@ -2,7 +2,7 @@
2
2
  /* tslint:disable */
3
3
 
4
4
  /**
5
- * Mock Service Worker (0.39.1).
5
+ * Mock Service Worker (0.39.2).
6
6
  * @see https://github.com/mswjs/msw
7
7
  * - Please do NOT modify this file.
8
8
  * - Please do NOT serve this file on production.