msw 2.0.14 → 2.1.1

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 (135) hide show
  1. package/cli/index.js +11 -3
  2. package/cli/init.js +126 -73
  3. package/config/scripts/postinstall.js +8 -20
  4. package/lib/browser/index.js +111 -176
  5. package/lib/browser/index.js.map +1 -1
  6. package/lib/browser/index.mjs +111 -179
  7. package/lib/browser/index.mjs.map +1 -1
  8. package/lib/core/{GraphQLHandler-JB4bsrLF.d.ts → GraphQLHandler-2guuZL5R.d.ts} +1 -1
  9. package/lib/core/{GraphQLHandler-mT-MmgeB.d.mts → GraphQLHandler-fe5IYUg3.d.mts} +1 -1
  10. package/lib/core/HttpResponse.d.mts +1 -1
  11. package/lib/core/HttpResponse.d.ts +1 -1
  12. package/lib/core/{RequestHandler-rmY-HeFN.d.ts → RequestHandler-TRh8Eh4H.d.ts} +9 -1
  13. package/lib/core/{RequestHandler-YiqamK0M.d.mts → RequestHandler-nfjVJ8Tp.d.mts} +9 -1
  14. package/lib/core/SetupApi.d.mts +1 -1
  15. package/lib/core/SetupApi.d.ts +1 -1
  16. package/lib/core/SetupApi.js +5 -0
  17. package/lib/core/SetupApi.js.map +1 -1
  18. package/lib/core/SetupApi.mjs +5 -0
  19. package/lib/core/SetupApi.mjs.map +1 -1
  20. package/lib/core/delay.js +24 -46
  21. package/lib/core/delay.js.map +1 -1
  22. package/lib/core/delay.mjs +24 -46
  23. package/lib/core/delay.mjs.map +1 -1
  24. package/lib/core/graphql.d.mts +2 -2
  25. package/lib/core/graphql.d.ts +2 -2
  26. package/lib/core/graphql.js +3 -19
  27. package/lib/core/graphql.js.map +1 -1
  28. package/lib/core/graphql.mjs +3 -21
  29. package/lib/core/graphql.mjs.map +1 -1
  30. package/lib/core/handlers/GraphQLHandler.d.mts +2 -2
  31. package/lib/core/handlers/GraphQLHandler.d.ts +2 -2
  32. package/lib/core/handlers/GraphQLHandler.js +51 -77
  33. package/lib/core/handlers/GraphQLHandler.js.map +1 -1
  34. package/lib/core/handlers/GraphQLHandler.mjs +51 -77
  35. package/lib/core/handlers/GraphQLHandler.mjs.map +1 -1
  36. package/lib/core/handlers/HttpHandler.d.mts +1 -1
  37. package/lib/core/handlers/HttpHandler.d.ts +1 -1
  38. package/lib/core/handlers/HttpHandler.js +29 -55
  39. package/lib/core/handlers/HttpHandler.js.map +1 -1
  40. package/lib/core/handlers/HttpHandler.mjs +29 -55
  41. package/lib/core/handlers/HttpHandler.mjs.map +1 -1
  42. package/lib/core/handlers/RequestHandler.d.mts +1 -1
  43. package/lib/core/handlers/RequestHandler.d.ts +1 -1
  44. package/lib/core/handlers/RequestHandler.js +79 -103
  45. package/lib/core/handlers/RequestHandler.js.map +1 -1
  46. package/lib/core/handlers/RequestHandler.mjs +79 -105
  47. package/lib/core/handlers/RequestHandler.mjs.map +1 -1
  48. package/lib/core/http.d.mts +1 -1
  49. package/lib/core/http.d.ts +1 -1
  50. package/lib/core/index.d.mts +2 -2
  51. package/lib/core/index.d.ts +2 -2
  52. package/lib/core/sharedOptions.d.mts +1 -1
  53. package/lib/core/sharedOptions.d.ts +1 -1
  54. package/lib/core/utils/HttpResponse/decorators.d.mts +1 -1
  55. package/lib/core/utils/HttpResponse/decorators.d.ts +1 -1
  56. package/lib/core/utils/HttpResponse/decorators.js +7 -24
  57. package/lib/core/utils/HttpResponse/decorators.js.map +1 -1
  58. package/lib/core/utils/HttpResponse/decorators.mjs +7 -26
  59. package/lib/core/utils/HttpResponse/decorators.mjs.map +1 -1
  60. package/lib/core/utils/getResponse.d.mts +1 -1
  61. package/lib/core/utils/getResponse.d.ts +1 -1
  62. package/lib/core/utils/getResponse.js +11 -26
  63. package/lib/core/utils/getResponse.js.map +1 -1
  64. package/lib/core/utils/getResponse.mjs +11 -26
  65. package/lib/core/utils/getResponse.mjs.map +1 -1
  66. package/lib/core/utils/handleRequest.d.mts +1 -1
  67. package/lib/core/utils/handleRequest.d.ts +1 -1
  68. package/lib/core/utils/handleRequest.js +49 -72
  69. package/lib/core/utils/handleRequest.js.map +1 -1
  70. package/lib/core/utils/handleRequest.mjs +49 -72
  71. package/lib/core/utils/handleRequest.mjs.map +1 -1
  72. package/lib/core/utils/internal/Disposable.js +3 -27
  73. package/lib/core/utils/internal/Disposable.js.map +1 -1
  74. package/lib/core/utils/internal/Disposable.mjs +3 -27
  75. package/lib/core/utils/internal/Disposable.mjs.map +1 -1
  76. package/lib/core/utils/internal/parseGraphQLRequest.d.mts +2 -2
  77. package/lib/core/utils/internal/parseGraphQLRequest.d.ts +2 -2
  78. package/lib/core/utils/internal/parseGraphQLRequest.js +72 -112
  79. package/lib/core/utils/internal/parseGraphQLRequest.js.map +1 -1
  80. package/lib/core/utils/internal/parseGraphQLRequest.mjs +72 -113
  81. package/lib/core/utils/internal/parseGraphQLRequest.mjs.map +1 -1
  82. package/lib/core/utils/internal/parseMultipartData.d.mts +1 -1
  83. package/lib/core/utils/internal/parseMultipartData.d.ts +1 -1
  84. package/lib/core/utils/internal/parseMultipartData.js +3 -4
  85. package/lib/core/utils/internal/parseMultipartData.js.map +1 -1
  86. package/lib/core/utils/internal/parseMultipartData.mjs +3 -4
  87. package/lib/core/utils/internal/parseMultipartData.mjs.map +1 -1
  88. package/lib/core/utils/internal/requestHandlerUtils.d.mts +1 -1
  89. package/lib/core/utils/internal/requestHandlerUtils.d.ts +1 -1
  90. package/lib/core/utils/internal/tryCatch.js +1 -1
  91. package/lib/core/utils/internal/tryCatch.js.map +1 -1
  92. package/lib/core/utils/internal/tryCatch.mjs +1 -1
  93. package/lib/core/utils/internal/tryCatch.mjs.map +1 -1
  94. package/lib/core/utils/logging/serializeRequest.js +9 -31
  95. package/lib/core/utils/logging/serializeRequest.js.map +1 -1
  96. package/lib/core/utils/logging/serializeRequest.mjs +9 -31
  97. package/lib/core/utils/logging/serializeRequest.mjs.map +1 -1
  98. package/lib/core/utils/logging/serializeResponse.js +11 -33
  99. package/lib/core/utils/logging/serializeResponse.js.map +1 -1
  100. package/lib/core/utils/logging/serializeResponse.mjs +11 -33
  101. package/lib/core/utils/logging/serializeResponse.mjs.map +1 -1
  102. package/lib/core/utils/request/getRequestCookies.js +9 -18
  103. package/lib/core/utils/request/getRequestCookies.js.map +1 -1
  104. package/lib/core/utils/request/getRequestCookies.mjs +9 -20
  105. package/lib/core/utils/request/getRequestCookies.mjs.map +1 -1
  106. package/lib/core/utils/request/onUnhandledRequest.d.mts +1 -1
  107. package/lib/core/utils/request/onUnhandledRequest.d.ts +1 -1
  108. package/lib/core/utils/request/onUnhandledRequest.js +62 -84
  109. package/lib/core/utils/request/onUnhandledRequest.js.map +1 -1
  110. package/lib/core/utils/request/onUnhandledRequest.mjs +62 -84
  111. package/lib/core/utils/request/onUnhandledRequest.mjs.map +1 -1
  112. package/lib/core/utils/request/readResponseCookies.js +1 -18
  113. package/lib/core/utils/request/readResponseCookies.js.map +1 -1
  114. package/lib/core/utils/request/readResponseCookies.mjs +1 -20
  115. package/lib/core/utils/request/readResponseCookies.mjs.map +1 -1
  116. package/lib/iife/index.js +678 -958
  117. package/lib/iife/index.js.map +1 -1
  118. package/lib/mockServiceWorker.js +2 -2
  119. package/lib/native/index.js +5 -23
  120. package/lib/native/index.js.map +1 -1
  121. package/lib/native/index.mjs +5 -24
  122. package/lib/native/index.mjs.map +1 -1
  123. package/lib/node/index.js +5 -23
  124. package/lib/node/index.js.map +1 -1
  125. package/lib/node/index.mjs +5 -24
  126. package/lib/node/index.mjs.map +1 -1
  127. package/package.json +32 -37
  128. package/src/browser/setupWorker/setupWorker.ts +6 -0
  129. package/src/browser/setupWorker/start/createStartHandler.ts +0 -8
  130. package/src/core/handlers/GraphQLHandler.test.ts +7 -3
  131. package/src/core/handlers/HttpHandler.test.ts +7 -2
  132. package/src/core/handlers/RequestHandler.ts +24 -4
  133. package/src/core/utils/getResponse.ts +12 -6
  134. package/src/core/utils/handleRequest.test.ts +20 -0
  135. package/src/core/utils/handleRequest.ts +4 -3
@@ -1,38 +1,16 @@
1
- var __async = (__this, __arguments, generator) => {
2
- return new Promise((resolve, reject) => {
3
- var fulfilled = (value) => {
4
- try {
5
- step(generator.next(value));
6
- } catch (e) {
7
- reject(e);
8
- }
9
- };
10
- var rejected = (value) => {
11
- try {
12
- step(generator.throw(value));
13
- } catch (e) {
14
- reject(e);
15
- }
16
- };
17
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
- step((generator = generator.apply(__this, __arguments)).next());
19
- });
20
- };
21
1
  import statuses from "@bundled-es-modules/statuses";
22
2
  const { message } = statuses;
23
- function serializeResponse(response) {
24
- return __async(this, null, function* () {
25
- const responseClone = response.clone();
26
- const responseText = yield responseClone.text();
27
- const responseStatus = responseClone.status || 200;
28
- const responseStatusText = responseClone.statusText || message[responseStatus] || "OK";
29
- return {
30
- status: responseStatus,
31
- statusText: responseStatusText,
32
- headers: Object.fromEntries(responseClone.headers.entries()),
33
- body: responseText
34
- };
35
- });
3
+ async function serializeResponse(response) {
4
+ const responseClone = response.clone();
5
+ const responseText = await responseClone.text();
6
+ const responseStatus = responseClone.status || 200;
7
+ const responseStatusText = responseClone.statusText || message[responseStatus] || "OK";
8
+ return {
9
+ status: responseStatus,
10
+ statusText: responseStatusText,
11
+ headers: Object.fromEntries(responseClone.headers.entries()),
12
+ body: responseText
13
+ };
36
14
  }
37
15
  export {
38
16
  serializeResponse
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/core/utils/logging/serializeResponse.ts"],"sourcesContent":["import statuses from '@bundled-es-modules/statuses'\n\nconst { message } = statuses\n\nexport interface SerializedResponse {\n status: number\n statusText: string\n headers: Record<string, any>\n body: string\n}\n\nexport async function serializeResponse(\n response: Response,\n): Promise<SerializedResponse> {\n const responseClone = response.clone()\n const responseText = await responseClone.text()\n\n // Normalize the response status and status text when logging\n // since the default Response instance doesn't infer status texts\n // from status codes. This has no effect on the actual response instance.\n const responseStatus = responseClone.status || 200\n const responseStatusText =\n responseClone.statusText || message[responseStatus] || 'OK'\n\n return {\n status: responseStatus,\n statusText: responseStatusText,\n headers: Object.fromEntries(responseClone.headers.entries()),\n body: responseText,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,OAAO,cAAc;AAErB,MAAM,EAAE,QAAQ,IAAI;AASpB,SAAsB,kBACpB,UAC6B;AAAA;AAC7B,UAAM,gBAAgB,SAAS,MAAM;AACrC,UAAM,eAAe,MAAM,cAAc,KAAK;AAK9C,UAAM,iBAAiB,cAAc,UAAU;AAC/C,UAAM,qBACJ,cAAc,cAAc,QAAQ,cAAc,KAAK;AAEzD,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,SAAS,OAAO,YAAY,cAAc,QAAQ,QAAQ,CAAC;AAAA,MAC3D,MAAM;AAAA,IACR;AAAA,EACF;AAAA;","names":[]}
1
+ {"version":3,"sources":["../../../../src/core/utils/logging/serializeResponse.ts"],"sourcesContent":["import statuses from '@bundled-es-modules/statuses'\n\nconst { message } = statuses\n\nexport interface SerializedResponse {\n status: number\n statusText: string\n headers: Record<string, any>\n body: string\n}\n\nexport async function serializeResponse(\n response: Response,\n): Promise<SerializedResponse> {\n const responseClone = response.clone()\n const responseText = await responseClone.text()\n\n // Normalize the response status and status text when logging\n // since the default Response instance doesn't infer status texts\n // from status codes. This has no effect on the actual response instance.\n const responseStatus = responseClone.status || 200\n const responseStatusText =\n responseClone.statusText || message[responseStatus] || 'OK'\n\n return {\n status: responseStatus,\n statusText: responseStatusText,\n headers: Object.fromEntries(responseClone.headers.entries()),\n body: responseText,\n }\n}\n"],"mappings":"AAAA,OAAO,cAAc;AAErB,MAAM,EAAE,QAAQ,IAAI;AASpB,eAAsB,kBACpB,UAC6B;AAC7B,QAAM,gBAAgB,SAAS,MAAM;AACrC,QAAM,eAAe,MAAM,cAAc,KAAK;AAK9C,QAAM,iBAAiB,cAAc,UAAU;AAC/C,QAAM,qBACJ,cAAc,cAAc,QAAQ,cAAc,KAAK;AAEzD,SAAO;AAAA,IACL,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,SAAS,OAAO,YAAY,cAAc,QAAQ,QAAQ,CAAC;AAAA,IAC3D,MAAM;AAAA,EACR;AACF;","names":[]}
@@ -3,22 +3,8 @@ var __create = Object.create;
3
3
  var __defProp = Object.defineProperty;
4
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
7
6
  var __getProtoOf = Object.getPrototypeOf;
8
7
  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
8
  var __export = (target, all) => {
23
9
  for (var name in all)
24
10
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -69,18 +55,23 @@ function getRequestCookies(request) {
69
55
  }
70
56
  }
71
57
  function getAllRequestCookies(request) {
72
- var _a;
73
58
  const requestCookiesString = request.headers.get("cookie");
74
59
  const cookiesFromHeaders = requestCookiesString ? import_cookie.default.parse(requestCookiesString) : {};
75
60
  import_cookies.store.hydrate();
76
- const cookiesFromStore = Array.from((_a = import_cookies.store.get(request)) == null ? void 0 : _a.entries()).reduce((cookies, [name, { value }]) => {
61
+ const cookiesFromStore = Array.from(import_cookies.store.get(request)?.entries()).reduce((cookies, [name, { value }]) => {
77
62
  return Object.assign(cookies, { [name.trim()]: value });
78
63
  }, {});
79
64
  const cookiesFromDocument = getRequestCookies(request);
80
- const forwardedCookies = __spreadValues(__spreadValues({}, cookiesFromDocument), cookiesFromStore);
65
+ const forwardedCookies = {
66
+ ...cookiesFromDocument,
67
+ ...cookiesFromStore
68
+ };
81
69
  for (const [name, value] of Object.entries(forwardedCookies)) {
82
70
  request.headers.append("cookie", import_cookie.default.serialize(name, value));
83
71
  }
84
- return __spreadValues(__spreadValues({}, forwardedCookies), cookiesFromHeaders);
72
+ return {
73
+ ...forwardedCookies,
74
+ ...cookiesFromHeaders
75
+ };
85
76
  }
86
77
  //# sourceMappingURL=getRequestCookies.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/core/utils/request/getRequestCookies.ts"],"sourcesContent":["import cookieUtils from '@bundled-es-modules/cookie'\nimport { store } from '@mswjs/cookies'\n\nfunction getAllDocumentCookies() {\n return cookieUtils.parse(document.cookie)\n}\n\n/** @todo Rename this to \"getDocumentCookies\" */\n/**\n * Returns relevant document cookies based on the request `credentials` option.\n */\nexport function getRequestCookies(request: Request): Record<string, string> {\n /**\n * @note No cookies persist on the document in Node.js: no document.\n */\n if (typeof document === 'undefined' || typeof location === 'undefined') {\n return {}\n }\n\n switch (request.credentials) {\n case 'same-origin': {\n const url = new URL(request.url)\n\n // Return document cookies only when requested a resource\n // from the same origin as the current document.\n return location.origin === url.origin ? getAllDocumentCookies() : {}\n }\n\n case 'include': {\n // Return all document cookies.\n return getAllDocumentCookies()\n }\n\n default: {\n return {}\n }\n }\n}\n\nexport function getAllRequestCookies(request: Request): Record<string, string> {\n const requestCookiesString = request.headers.get('cookie')\n const cookiesFromHeaders = requestCookiesString\n ? cookieUtils.parse(requestCookiesString)\n : {}\n\n store.hydrate()\n\n const cookiesFromStore = Array.from(store.get(request)?.entries()).reduce<\n Record<string, string>\n >((cookies, [name, { value }]) => {\n return Object.assign(cookies, { [name.trim()]: value })\n }, {})\n\n const cookiesFromDocument = getRequestCookies(request)\n\n const forwardedCookies = {\n ...cookiesFromDocument,\n ...cookiesFromStore,\n }\n\n // Set the inferred cookies from the cookie store and the document\n // on the request's headers.\n /**\n * @todo Consider making this a separate step so this function\n * is pure-er.\n */\n for (const [name, value] of Object.entries(forwardedCookies)) {\n request.headers.append('cookie', cookieUtils.serialize(name, value))\n }\n\n return {\n ...forwardedCookies,\n ...cookiesFromHeaders,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAwB;AACxB,qBAAsB;AAEtB,SAAS,wBAAwB;AAC/B,SAAO,cAAAA,QAAY,MAAM,SAAS,MAAM;AAC1C;AAMO,SAAS,kBAAkB,SAA0C;AAI1E,MAAI,OAAO,aAAa,eAAe,OAAO,aAAa,aAAa;AACtE,WAAO,CAAC;AAAA,EACV;AAEA,UAAQ,QAAQ,aAAa;AAAA,IAC3B,KAAK,eAAe;AAClB,YAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAI/B,aAAO,SAAS,WAAW,IAAI,SAAS,sBAAsB,IAAI,CAAC;AAAA,IACrE;AAAA,IAEA,KAAK,WAAW;AAEd,aAAO,sBAAsB;AAAA,IAC/B;AAAA,IAEA,SAAS;AACP,aAAO,CAAC;AAAA,IACV;AAAA,EACF;AACF;AAEO,SAAS,qBAAqB,SAA0C;AAvC/E;AAwCE,QAAM,uBAAuB,QAAQ,QAAQ,IAAI,QAAQ;AACzD,QAAM,qBAAqB,uBACvB,cAAAA,QAAY,MAAM,oBAAoB,IACtC,CAAC;AAEL,uBAAM,QAAQ;AAEd,QAAM,mBAAmB,MAAM,MAAK,0BAAM,IAAI,OAAO,MAAjB,mBAAoB,SAAS,EAAE,OAEjE,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM;AAChC,WAAO,OAAO,OAAO,SAAS,EAAE,CAAC,KAAK,KAAK,CAAC,GAAG,MAAM,CAAC;AAAA,EACxD,GAAG,CAAC,CAAC;AAEL,QAAM,sBAAsB,kBAAkB,OAAO;AAErD,QAAM,mBAAmB,kCACpB,sBACA;AASL,aAAW,CAAC,MAAM,KAAK,KAAK,OAAO,QAAQ,gBAAgB,GAAG;AAC5D,YAAQ,QAAQ,OAAO,UAAU,cAAAA,QAAY,UAAU,MAAM,KAAK,CAAC;AAAA,EACrE;AAEA,SAAO,kCACF,mBACA;AAEP;","names":["cookieUtils"]}
1
+ {"version":3,"sources":["../../../../src/core/utils/request/getRequestCookies.ts"],"sourcesContent":["import cookieUtils from '@bundled-es-modules/cookie'\nimport { store } from '@mswjs/cookies'\n\nfunction getAllDocumentCookies() {\n return cookieUtils.parse(document.cookie)\n}\n\n/** @todo Rename this to \"getDocumentCookies\" */\n/**\n * Returns relevant document cookies based on the request `credentials` option.\n */\nexport function getRequestCookies(request: Request): Record<string, string> {\n /**\n * @note No cookies persist on the document in Node.js: no document.\n */\n if (typeof document === 'undefined' || typeof location === 'undefined') {\n return {}\n }\n\n switch (request.credentials) {\n case 'same-origin': {\n const url = new URL(request.url)\n\n // Return document cookies only when requested a resource\n // from the same origin as the current document.\n return location.origin === url.origin ? getAllDocumentCookies() : {}\n }\n\n case 'include': {\n // Return all document cookies.\n return getAllDocumentCookies()\n }\n\n default: {\n return {}\n }\n }\n}\n\nexport function getAllRequestCookies(request: Request): Record<string, string> {\n const requestCookiesString = request.headers.get('cookie')\n const cookiesFromHeaders = requestCookiesString\n ? cookieUtils.parse(requestCookiesString)\n : {}\n\n store.hydrate()\n\n const cookiesFromStore = Array.from(store.get(request)?.entries()).reduce<\n Record<string, string>\n >((cookies, [name, { value }]) => {\n return Object.assign(cookies, { [name.trim()]: value })\n }, {})\n\n const cookiesFromDocument = getRequestCookies(request)\n\n const forwardedCookies = {\n ...cookiesFromDocument,\n ...cookiesFromStore,\n }\n\n // Set the inferred cookies from the cookie store and the document\n // on the request's headers.\n /**\n * @todo Consider making this a separate step so this function\n * is pure-er.\n */\n for (const [name, value] of Object.entries(forwardedCookies)) {\n request.headers.append('cookie', cookieUtils.serialize(name, value))\n }\n\n return {\n ...forwardedCookies,\n ...cookiesFromHeaders,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAwB;AACxB,qBAAsB;AAEtB,SAAS,wBAAwB;AAC/B,SAAO,cAAAA,QAAY,MAAM,SAAS,MAAM;AAC1C;AAMO,SAAS,kBAAkB,SAA0C;AAI1E,MAAI,OAAO,aAAa,eAAe,OAAO,aAAa,aAAa;AACtE,WAAO,CAAC;AAAA,EACV;AAEA,UAAQ,QAAQ,aAAa;AAAA,IAC3B,KAAK,eAAe;AAClB,YAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAI/B,aAAO,SAAS,WAAW,IAAI,SAAS,sBAAsB,IAAI,CAAC;AAAA,IACrE;AAAA,IAEA,KAAK,WAAW;AAEd,aAAO,sBAAsB;AAAA,IAC/B;AAAA,IAEA,SAAS;AACP,aAAO,CAAC;AAAA,IACV;AAAA,EACF;AACF;AAEO,SAAS,qBAAqB,SAA0C;AAC7E,QAAM,uBAAuB,QAAQ,QAAQ,IAAI,QAAQ;AACzD,QAAM,qBAAqB,uBACvB,cAAAA,QAAY,MAAM,oBAAoB,IACtC,CAAC;AAEL,uBAAM,QAAQ;AAEd,QAAM,mBAAmB,MAAM,KAAK,qBAAM,IAAI,OAAO,GAAG,QAAQ,CAAC,EAAE,OAEjE,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM;AAChC,WAAO,OAAO,OAAO,SAAS,EAAE,CAAC,KAAK,KAAK,CAAC,GAAG,MAAM,CAAC;AAAA,EACxD,GAAG,CAAC,CAAC;AAEL,QAAM,sBAAsB,kBAAkB,OAAO;AAErD,QAAM,mBAAmB;AAAA,IACvB,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAQA,aAAW,CAAC,MAAM,KAAK,KAAK,OAAO,QAAQ,gBAAgB,GAAG;AAC5D,YAAQ,QAAQ,OAAO,UAAU,cAAAA,QAAY,UAAU,MAAM,KAAK,CAAC;AAAA,EACrE;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACF;","names":["cookieUtils"]}
@@ -1,19 +1,3 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
- var __hasOwnProp = Object.prototype.hasOwnProperty;
4
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
- var __spreadValues = (a, b) => {
7
- for (var prop in b || (b = {}))
8
- if (__hasOwnProp.call(b, prop))
9
- __defNormalProp(a, prop, b[prop]);
10
- if (__getOwnPropSymbols)
11
- for (var prop of __getOwnPropSymbols(b)) {
12
- if (__propIsEnum.call(b, prop))
13
- __defNormalProp(a, prop, b[prop]);
14
- }
15
- return a;
16
- };
17
1
  import cookieUtils from "@bundled-es-modules/cookie";
18
2
  import { store } from "@mswjs/cookies";
19
3
  function getAllDocumentCookies() {
@@ -37,19 +21,24 @@ function getRequestCookies(request) {
37
21
  }
38
22
  }
39
23
  function getAllRequestCookies(request) {
40
- var _a;
41
24
  const requestCookiesString = request.headers.get("cookie");
42
25
  const cookiesFromHeaders = requestCookiesString ? cookieUtils.parse(requestCookiesString) : {};
43
26
  store.hydrate();
44
- const cookiesFromStore = Array.from((_a = store.get(request)) == null ? void 0 : _a.entries()).reduce((cookies, [name, { value }]) => {
27
+ const cookiesFromStore = Array.from(store.get(request)?.entries()).reduce((cookies, [name, { value }]) => {
45
28
  return Object.assign(cookies, { [name.trim()]: value });
46
29
  }, {});
47
30
  const cookiesFromDocument = getRequestCookies(request);
48
- const forwardedCookies = __spreadValues(__spreadValues({}, cookiesFromDocument), cookiesFromStore);
31
+ const forwardedCookies = {
32
+ ...cookiesFromDocument,
33
+ ...cookiesFromStore
34
+ };
49
35
  for (const [name, value] of Object.entries(forwardedCookies)) {
50
36
  request.headers.append("cookie", cookieUtils.serialize(name, value));
51
37
  }
52
- return __spreadValues(__spreadValues({}, forwardedCookies), cookiesFromHeaders);
38
+ return {
39
+ ...forwardedCookies,
40
+ ...cookiesFromHeaders
41
+ };
53
42
  }
54
43
  export {
55
44
  getAllRequestCookies,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/core/utils/request/getRequestCookies.ts"],"sourcesContent":["import cookieUtils from '@bundled-es-modules/cookie'\nimport { store } from '@mswjs/cookies'\n\nfunction getAllDocumentCookies() {\n return cookieUtils.parse(document.cookie)\n}\n\n/** @todo Rename this to \"getDocumentCookies\" */\n/**\n * Returns relevant document cookies based on the request `credentials` option.\n */\nexport function getRequestCookies(request: Request): Record<string, string> {\n /**\n * @note No cookies persist on the document in Node.js: no document.\n */\n if (typeof document === 'undefined' || typeof location === 'undefined') {\n return {}\n }\n\n switch (request.credentials) {\n case 'same-origin': {\n const url = new URL(request.url)\n\n // Return document cookies only when requested a resource\n // from the same origin as the current document.\n return location.origin === url.origin ? getAllDocumentCookies() : {}\n }\n\n case 'include': {\n // Return all document cookies.\n return getAllDocumentCookies()\n }\n\n default: {\n return {}\n }\n }\n}\n\nexport function getAllRequestCookies(request: Request): Record<string, string> {\n const requestCookiesString = request.headers.get('cookie')\n const cookiesFromHeaders = requestCookiesString\n ? cookieUtils.parse(requestCookiesString)\n : {}\n\n store.hydrate()\n\n const cookiesFromStore = Array.from(store.get(request)?.entries()).reduce<\n Record<string, string>\n >((cookies, [name, { value }]) => {\n return Object.assign(cookies, { [name.trim()]: value })\n }, {})\n\n const cookiesFromDocument = getRequestCookies(request)\n\n const forwardedCookies = {\n ...cookiesFromDocument,\n ...cookiesFromStore,\n }\n\n // Set the inferred cookies from the cookie store and the document\n // on the request's headers.\n /**\n * @todo Consider making this a separate step so this function\n * is pure-er.\n */\n for (const [name, value] of Object.entries(forwardedCookies)) {\n request.headers.append('cookie', cookieUtils.serialize(name, value))\n }\n\n return {\n ...forwardedCookies,\n ...cookiesFromHeaders,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA,OAAO,iBAAiB;AACxB,SAAS,aAAa;AAEtB,SAAS,wBAAwB;AAC/B,SAAO,YAAY,MAAM,SAAS,MAAM;AAC1C;AAMO,SAAS,kBAAkB,SAA0C;AAI1E,MAAI,OAAO,aAAa,eAAe,OAAO,aAAa,aAAa;AACtE,WAAO,CAAC;AAAA,EACV;AAEA,UAAQ,QAAQ,aAAa;AAAA,IAC3B,KAAK,eAAe;AAClB,YAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAI/B,aAAO,SAAS,WAAW,IAAI,SAAS,sBAAsB,IAAI,CAAC;AAAA,IACrE;AAAA,IAEA,KAAK,WAAW;AAEd,aAAO,sBAAsB;AAAA,IAC/B;AAAA,IAEA,SAAS;AACP,aAAO,CAAC;AAAA,IACV;AAAA,EACF;AACF;AAEO,SAAS,qBAAqB,SAA0C;AAvC/E;AAwCE,QAAM,uBAAuB,QAAQ,QAAQ,IAAI,QAAQ;AACzD,QAAM,qBAAqB,uBACvB,YAAY,MAAM,oBAAoB,IACtC,CAAC;AAEL,QAAM,QAAQ;AAEd,QAAM,mBAAmB,MAAM,MAAK,WAAM,IAAI,OAAO,MAAjB,mBAAoB,SAAS,EAAE,OAEjE,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM;AAChC,WAAO,OAAO,OAAO,SAAS,EAAE,CAAC,KAAK,KAAK,CAAC,GAAG,MAAM,CAAC;AAAA,EACxD,GAAG,CAAC,CAAC;AAEL,QAAM,sBAAsB,kBAAkB,OAAO;AAErD,QAAM,mBAAmB,kCACpB,sBACA;AASL,aAAW,CAAC,MAAM,KAAK,KAAK,OAAO,QAAQ,gBAAgB,GAAG;AAC5D,YAAQ,QAAQ,OAAO,UAAU,YAAY,UAAU,MAAM,KAAK,CAAC;AAAA,EACrE;AAEA,SAAO,kCACF,mBACA;AAEP;","names":[]}
1
+ {"version":3,"sources":["../../../../src/core/utils/request/getRequestCookies.ts"],"sourcesContent":["import cookieUtils from '@bundled-es-modules/cookie'\nimport { store } from '@mswjs/cookies'\n\nfunction getAllDocumentCookies() {\n return cookieUtils.parse(document.cookie)\n}\n\n/** @todo Rename this to \"getDocumentCookies\" */\n/**\n * Returns relevant document cookies based on the request `credentials` option.\n */\nexport function getRequestCookies(request: Request): Record<string, string> {\n /**\n * @note No cookies persist on the document in Node.js: no document.\n */\n if (typeof document === 'undefined' || typeof location === 'undefined') {\n return {}\n }\n\n switch (request.credentials) {\n case 'same-origin': {\n const url = new URL(request.url)\n\n // Return document cookies only when requested a resource\n // from the same origin as the current document.\n return location.origin === url.origin ? getAllDocumentCookies() : {}\n }\n\n case 'include': {\n // Return all document cookies.\n return getAllDocumentCookies()\n }\n\n default: {\n return {}\n }\n }\n}\n\nexport function getAllRequestCookies(request: Request): Record<string, string> {\n const requestCookiesString = request.headers.get('cookie')\n const cookiesFromHeaders = requestCookiesString\n ? cookieUtils.parse(requestCookiesString)\n : {}\n\n store.hydrate()\n\n const cookiesFromStore = Array.from(store.get(request)?.entries()).reduce<\n Record<string, string>\n >((cookies, [name, { value }]) => {\n return Object.assign(cookies, { [name.trim()]: value })\n }, {})\n\n const cookiesFromDocument = getRequestCookies(request)\n\n const forwardedCookies = {\n ...cookiesFromDocument,\n ...cookiesFromStore,\n }\n\n // Set the inferred cookies from the cookie store and the document\n // on the request's headers.\n /**\n * @todo Consider making this a separate step so this function\n * is pure-er.\n */\n for (const [name, value] of Object.entries(forwardedCookies)) {\n request.headers.append('cookie', cookieUtils.serialize(name, value))\n }\n\n return {\n ...forwardedCookies,\n ...cookiesFromHeaders,\n }\n}\n"],"mappings":"AAAA,OAAO,iBAAiB;AACxB,SAAS,aAAa;AAEtB,SAAS,wBAAwB;AAC/B,SAAO,YAAY,MAAM,SAAS,MAAM;AAC1C;AAMO,SAAS,kBAAkB,SAA0C;AAI1E,MAAI,OAAO,aAAa,eAAe,OAAO,aAAa,aAAa;AACtE,WAAO,CAAC;AAAA,EACV;AAEA,UAAQ,QAAQ,aAAa;AAAA,IAC3B,KAAK,eAAe;AAClB,YAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAI/B,aAAO,SAAS,WAAW,IAAI,SAAS,sBAAsB,IAAI,CAAC;AAAA,IACrE;AAAA,IAEA,KAAK,WAAW;AAEd,aAAO,sBAAsB;AAAA,IAC/B;AAAA,IAEA,SAAS;AACP,aAAO,CAAC;AAAA,IACV;AAAA,EACF;AACF;AAEO,SAAS,qBAAqB,SAA0C;AAC7E,QAAM,uBAAuB,QAAQ,QAAQ,IAAI,QAAQ;AACzD,QAAM,qBAAqB,uBACvB,YAAY,MAAM,oBAAoB,IACtC,CAAC;AAEL,QAAM,QAAQ;AAEd,QAAM,mBAAmB,MAAM,KAAK,MAAM,IAAI,OAAO,GAAG,QAAQ,CAAC,EAAE,OAEjE,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM;AAChC,WAAO,OAAO,OAAO,SAAS,EAAE,CAAC,KAAK,KAAK,CAAC,GAAG,MAAM,CAAC;AAAA,EACxD,GAAG,CAAC,CAAC;AAEL,QAAM,sBAAsB,kBAAkB,OAAO;AAErD,QAAM,mBAAmB;AAAA,IACvB,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAQA,aAAW,CAAC,MAAM,KAAK,KAAK,OAAO,QAAQ,gBAAgB,GAAG;AAC5D,YAAQ,QAAQ,OAAO,UAAU,YAAY,UAAU,MAAM,KAAK,CAAC;AAAA,EACrE;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACF;","names":[]}
@@ -1,4 +1,4 @@
1
- import { R as RequestHandler } from '../../RequestHandler-YiqamK0M.mjs';
1
+ import { R as RequestHandler } from '../../RequestHandler-nfjVJ8Tp.mjs';
2
2
  import '../../typeUtils.mjs';
3
3
 
4
4
  interface UnhandledRequestPrint {
@@ -1,4 +1,4 @@
1
- import { R as RequestHandler } from '../../RequestHandler-rmY-HeFN.js';
1
+ import { R as RequestHandler } from '../../RequestHandler-TRh8Eh4H.js';
2
2
  import '../../typeUtils.js';
3
3
 
4
4
  interface UnhandledRequestPrint {
@@ -26,26 +26,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var __async = (__this, __arguments, generator) => {
30
- return new Promise((resolve, reject) => {
31
- var fulfilled = (value) => {
32
- try {
33
- step(generator.next(value));
34
- } catch (e) {
35
- reject(e);
36
- }
37
- };
38
- var rejected = (value) => {
39
- try {
40
- step(generator.throw(value));
41
- } catch (e) {
42
- reject(e);
43
- }
44
- };
45
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
46
- step((generator = generator.apply(__this, __arguments)).next());
47
- });
48
- };
49
29
  var onUnhandledRequest_exports = {};
50
30
  __export(onUnhandledRequest_exports, {
51
31
  onUnhandledRequest: () => onUnhandledRequest
@@ -121,74 +101,72 @@ ${handlers.map((handler) => ` \u2022 ${handler.info.header}`).join("\n")}`;
121
101
  }
122
102
  return `Did you mean to request "${handlers[0].info.header}" instead?`;
123
103
  }
124
- function onUnhandledRequest(request, handlers, strategy = "warn") {
125
- return __async(this, null, function* () {
126
- const parsedGraphQLQuery = yield (0, import_parseGraphQLRequest.parseGraphQLRequest)(request).catch(
127
- () => null
104
+ async function onUnhandledRequest(request, handlers, strategy = "warn") {
105
+ const parsedGraphQLQuery = await (0, import_parseGraphQLRequest.parseGraphQLRequest)(request).catch(
106
+ () => null
107
+ );
108
+ const publicUrl = (0, import_getPublicUrlFromRequest.getPublicUrlFromRequest)(request);
109
+ function generateHandlerSuggestion() {
110
+ const handlerGroups = groupHandlersByType(handlers);
111
+ const relevantHandlers = parsedGraphQLQuery ? handlerGroups.graphql : handlerGroups.http;
112
+ const suggestedHandlers = getSuggestedHandler(
113
+ request,
114
+ relevantHandlers,
115
+ parsedGraphQLQuery ? getGraphQLHandlerScore(parsedGraphQLQuery) : getHttpHandlerScore()
128
116
  );
129
- const publicUrl = (0, import_getPublicUrlFromRequest.getPublicUrlFromRequest)(request);
130
- function generateHandlerSuggestion() {
131
- const handlerGroups = groupHandlersByType(handlers);
132
- const relevantHandlers = parsedGraphQLQuery ? handlerGroups.graphql : handlerGroups.http;
133
- const suggestedHandlers = getSuggestedHandler(
134
- request,
135
- relevantHandlers,
136
- parsedGraphQLQuery ? getGraphQLHandlerScore(parsedGraphQLQuery) : getHttpHandlerScore()
137
- );
138
- return suggestedHandlers.length > 0 ? getSuggestedHandlersMessage(suggestedHandlers) : "";
139
- }
140
- function getGraphQLRequestHeader(parsedGraphQLRequest) {
141
- if (!(parsedGraphQLRequest == null ? void 0 : parsedGraphQLRequest.operationName)) {
142
- return `anonymous ${parsedGraphQLRequest == null ? void 0 : parsedGraphQLRequest.operationType} (${request.method} ${publicUrl})`;
143
- }
144
- return `${parsedGraphQLRequest.operationType} ${parsedGraphQLRequest.operationName} (${request.method} ${publicUrl})`;
117
+ return suggestedHandlers.length > 0 ? getSuggestedHandlersMessage(suggestedHandlers) : "";
118
+ }
119
+ function getGraphQLRequestHeader(parsedGraphQLRequest) {
120
+ if (!parsedGraphQLRequest?.operationName) {
121
+ return `anonymous ${parsedGraphQLRequest?.operationType} (${request.method} ${publicUrl})`;
145
122
  }
146
- function generateUnhandledRequestMessage() {
147
- const requestHeader = parsedGraphQLQuery ? getGraphQLRequestHeader(parsedGraphQLQuery) : `${request.method} ${publicUrl}`;
148
- const handlerSuggestion = generateHandlerSuggestion();
149
- const messageTemplate = [
150
- `intercepted a request without a matching request handler:`,
151
- ` \u2022 ${requestHeader}`,
152
- handlerSuggestion,
153
- `If you still wish to intercept this unhandled request, please create a request handler for it.
123
+ return `${parsedGraphQLRequest.operationType} ${parsedGraphQLRequest.operationName} (${request.method} ${publicUrl})`;
124
+ }
125
+ function generateUnhandledRequestMessage() {
126
+ const requestHeader = parsedGraphQLQuery ? getGraphQLRequestHeader(parsedGraphQLQuery) : `${request.method} ${publicUrl}`;
127
+ const handlerSuggestion = generateHandlerSuggestion();
128
+ const messageTemplate = [
129
+ `intercepted a request without a matching request handler:`,
130
+ ` \u2022 ${requestHeader}`,
131
+ handlerSuggestion,
132
+ `If you still wish to intercept this unhandled request, please create a request handler for it.
154
133
  Read more: https://mswjs.io/docs/getting-started/mocks`
155
- ].filter(Boolean);
156
- return messageTemplate.join("\n\n");
157
- }
158
- function applyStrategy(strategy2) {
159
- const message = generateUnhandledRequestMessage();
160
- switch (strategy2) {
161
- case "error": {
162
- import_devUtils.devUtils.error("Error: %s", message);
163
- throw new Error(
164
- import_devUtils.devUtils.formatMessage(
165
- 'Cannot bypass a request when using the "error" strategy for the "onUnhandledRequest" option.'
166
- )
167
- );
168
- }
169
- case "warn": {
170
- import_devUtils.devUtils.warn("Warning: %s", message);
171
- break;
172
- }
173
- case "bypass":
174
- break;
175
- default:
176
- throw new Error(
177
- import_devUtils.devUtils.formatMessage(
178
- 'Failed to react to an unhandled request: unknown strategy "%s". Please provide one of the supported strategies ("bypass", "warn", "error") or a custom callback function as the value of the "onUnhandledRequest" option.',
179
- strategy2
180
- )
181
- );
134
+ ].filter(Boolean);
135
+ return messageTemplate.join("\n\n");
136
+ }
137
+ function applyStrategy(strategy2) {
138
+ const message = generateUnhandledRequestMessage();
139
+ switch (strategy2) {
140
+ case "error": {
141
+ import_devUtils.devUtils.error("Error: %s", message);
142
+ throw new Error(
143
+ import_devUtils.devUtils.formatMessage(
144
+ 'Cannot bypass a request when using the "error" strategy for the "onUnhandledRequest" option.'
145
+ )
146
+ );
182
147
  }
148
+ case "warn": {
149
+ import_devUtils.devUtils.warn("Warning: %s", message);
150
+ break;
151
+ }
152
+ case "bypass":
153
+ break;
154
+ default:
155
+ throw new Error(
156
+ import_devUtils.devUtils.formatMessage(
157
+ 'Failed to react to an unhandled request: unknown strategy "%s". Please provide one of the supported strategies ("bypass", "warn", "error") or a custom callback function as the value of the "onUnhandledRequest" option.',
158
+ strategy2
159
+ )
160
+ );
183
161
  }
184
- if (typeof strategy === "function") {
185
- strategy(request, {
186
- warning: applyStrategy.bind(null, "warn"),
187
- error: applyStrategy.bind(null, "error")
188
- });
189
- return;
190
- }
191
- applyStrategy(strategy);
192
- });
162
+ }
163
+ if (typeof strategy === "function") {
164
+ strategy(request, {
165
+ warning: applyStrategy.bind(null, "warn"),
166
+ error: applyStrategy.bind(null, "error")
167
+ });
168
+ return;
169
+ }
170
+ applyStrategy(strategy);
193
171
  }
194
172
  //# sourceMappingURL=onUnhandledRequest.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/core/utils/request/onUnhandledRequest.ts"],"sourcesContent":["import jsLevenshtein from '@bundled-es-modules/js-levenshtein'\nimport { RequestHandler, HttpHandler, GraphQLHandler } from '../..'\nimport {\n ParsedGraphQLQuery,\n ParsedGraphQLRequest,\n parseGraphQLRequest,\n} from '../internal/parseGraphQLRequest'\nimport { getPublicUrlFromRequest } from './getPublicUrlFromRequest'\nimport { isStringEqual } from '../internal/isStringEqual'\nimport { devUtils } from '../internal/devUtils'\n\nconst getStringMatchScore = jsLevenshtein\n\nconst MAX_MATCH_SCORE = 3\nconst MAX_SUGGESTION_COUNT = 4\nconst TYPE_MATCH_DELTA = 0.5\n\nexport interface UnhandledRequestPrint {\n warning(): void\n error(): void\n}\n\nexport type UnhandledRequestCallback = (\n request: Request,\n print: UnhandledRequestPrint,\n) => void\n\nexport type UnhandledRequestStrategy =\n | 'bypass'\n | 'warn'\n | 'error'\n | UnhandledRequestCallback\n\ninterface RequestHandlerGroups {\n http: Array<HttpHandler>\n graphql: Array<GraphQLHandler>\n}\n\nfunction groupHandlersByType(\n handlers: Array<RequestHandler>,\n): RequestHandlerGroups {\n return handlers.reduce<RequestHandlerGroups>(\n (groups, handler) => {\n if (handler instanceof HttpHandler) {\n groups.http.push(handler)\n }\n\n if (handler instanceof GraphQLHandler) {\n groups.graphql.push(handler)\n }\n\n return groups\n },\n {\n http: [],\n graphql: [],\n },\n )\n}\n\ntype RequestHandlerSuggestion = [number, RequestHandler]\n\ntype ScoreGetterFn<RequestHandlerType extends RequestHandler> = (\n request: Request,\n handler: RequestHandlerType,\n) => number\n\nfunction getHttpHandlerScore(): ScoreGetterFn<HttpHandler> {\n return (request, handler) => {\n const { path, method } = handler.info\n\n if (path instanceof RegExp || method instanceof RegExp) {\n return Infinity\n }\n\n const hasSameMethod = isStringEqual(request.method, method)\n\n // Always treat a handler with the same method as a more similar one.\n const methodScoreDelta = hasSameMethod ? TYPE_MATCH_DELTA : 0\n const requestPublicUrl = getPublicUrlFromRequest(request)\n const score = getStringMatchScore(requestPublicUrl, path)\n\n return score - methodScoreDelta\n }\n}\n\nfunction getGraphQLHandlerScore(\n parsedQuery: ParsedGraphQLQuery,\n): ScoreGetterFn<GraphQLHandler> {\n return (_, handler) => {\n if (typeof parsedQuery.operationName === 'undefined') {\n return Infinity\n }\n\n const { operationType, operationName } = handler.info\n\n if (typeof operationName !== 'string') {\n return Infinity\n }\n\n const hasSameOperationType = parsedQuery.operationType === operationType\n // Always treat a handler with the same operation type as a more similar one.\n const operationTypeScoreDelta = hasSameOperationType ? TYPE_MATCH_DELTA : 0\n const score = getStringMatchScore(parsedQuery.operationName, operationName)\n\n return score - operationTypeScoreDelta\n }\n}\n\nfunction getSuggestedHandler(\n request: Request,\n handlers: Array<HttpHandler> | Array<GraphQLHandler>,\n getScore: ScoreGetterFn<HttpHandler> | ScoreGetterFn<GraphQLHandler>,\n): Array<RequestHandler> {\n const suggestedHandlers = (handlers as Array<RequestHandler>)\n .reduce<Array<RequestHandlerSuggestion>>((suggestions, handler) => {\n const score = getScore(request, handler as any)\n return suggestions.concat([[score, handler]])\n }, [])\n .sort(([leftScore], [rightScore]) => leftScore - rightScore)\n .filter(([score]) => score <= MAX_MATCH_SCORE)\n .slice(0, MAX_SUGGESTION_COUNT)\n .map(([, handler]) => handler)\n\n return suggestedHandlers\n}\n\nfunction getSuggestedHandlersMessage(handlers: RequestHandler[]) {\n if (handlers.length > 1) {\n return `\\\nDid you mean to request one of the following resources instead?\n\n${handlers.map((handler) => ` • ${handler.info.header}`).join('\\n')}`\n }\n\n return `Did you mean to request \"${handlers[0].info.header}\" instead?`\n}\n\nexport async function onUnhandledRequest(\n request: Request,\n handlers: Array<RequestHandler>,\n strategy: UnhandledRequestStrategy = 'warn',\n): Promise<void> {\n const parsedGraphQLQuery = await parseGraphQLRequest(request).catch(\n () => null,\n )\n const publicUrl = getPublicUrlFromRequest(request)\n\n function generateHandlerSuggestion(): string {\n /**\n * @note Ignore exceptions during GraphQL request parsing because at this point\n * we cannot assume the unhandled request is a valid GraphQL request.\n * If the GraphQL parsing fails, just don't treat it as a GraphQL request.\n */\n const handlerGroups = groupHandlersByType(handlers)\n const relevantHandlers = parsedGraphQLQuery\n ? handlerGroups.graphql\n : handlerGroups.http\n\n const suggestedHandlers = getSuggestedHandler(\n request,\n relevantHandlers,\n parsedGraphQLQuery\n ? getGraphQLHandlerScore(parsedGraphQLQuery)\n : getHttpHandlerScore(),\n )\n\n return suggestedHandlers.length > 0\n ? getSuggestedHandlersMessage(suggestedHandlers)\n : ''\n }\n\n function getGraphQLRequestHeader(\n parsedGraphQLRequest: ParsedGraphQLRequest<any>,\n ): string {\n if (!parsedGraphQLRequest?.operationName) {\n return `anonymous ${parsedGraphQLRequest?.operationType} (${request.method} ${publicUrl})`\n }\n\n return `${parsedGraphQLRequest.operationType} ${parsedGraphQLRequest.operationName} (${request.method} ${publicUrl})`\n }\n\n function generateUnhandledRequestMessage(): string {\n const requestHeader = parsedGraphQLQuery\n ? getGraphQLRequestHeader(parsedGraphQLQuery)\n : `${request.method} ${publicUrl}`\n const handlerSuggestion = generateHandlerSuggestion()\n\n const messageTemplate = [\n `intercepted a request without a matching request handler:`,\n ` \\u2022 ${requestHeader}`,\n handlerSuggestion,\n `\\\nIf you still wish to intercept this unhandled request, please create a request handler for it.\nRead more: https://mswjs.io/docs/getting-started/mocks\\\n`,\n ].filter(Boolean)\n return messageTemplate.join('\\n\\n')\n }\n\n function applyStrategy(strategy: UnhandledRequestStrategy) {\n // Generate handler suggestions only when applying the strategy.\n // This saves bandwidth for scenarios when developers opt-out\n // from the default unhandled request handling strategy.\n const message = generateUnhandledRequestMessage()\n\n switch (strategy) {\n case 'error': {\n // Print a developer-friendly error.\n devUtils.error('Error: %s', message)\n\n // Throw an exception to halt request processing and not perform the original request.\n throw new Error(\n devUtils.formatMessage(\n 'Cannot bypass a request when using the \"error\" strategy for the \"onUnhandledRequest\" option.',\n ),\n )\n }\n\n case 'warn': {\n devUtils.warn('Warning: %s', message)\n break\n }\n\n case 'bypass':\n break\n\n default:\n throw new Error(\n devUtils.formatMessage(\n 'Failed to react to an unhandled request: unknown strategy \"%s\". Please provide one of the supported strategies (\"bypass\", \"warn\", \"error\") or a custom callback function as the value of the \"onUnhandledRequest\" option.',\n strategy,\n ),\n )\n }\n }\n\n if (typeof strategy === 'function') {\n strategy(request, {\n warning: applyStrategy.bind(null, 'warn'),\n error: applyStrategy.bind(null, 'error'),\n })\n return\n }\n\n applyStrategy(strategy)\n}\n"],"mappings":"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","names":["jsLevenshtein","strategy"]}
1
+ {"version":3,"sources":["../../../../src/core/utils/request/onUnhandledRequest.ts"],"sourcesContent":["import jsLevenshtein from '@bundled-es-modules/js-levenshtein'\nimport { RequestHandler, HttpHandler, GraphQLHandler } from '../..'\nimport {\n ParsedGraphQLQuery,\n ParsedGraphQLRequest,\n parseGraphQLRequest,\n} from '../internal/parseGraphQLRequest'\nimport { getPublicUrlFromRequest } from './getPublicUrlFromRequest'\nimport { isStringEqual } from '../internal/isStringEqual'\nimport { devUtils } from '../internal/devUtils'\n\nconst getStringMatchScore = jsLevenshtein\n\nconst MAX_MATCH_SCORE = 3\nconst MAX_SUGGESTION_COUNT = 4\nconst TYPE_MATCH_DELTA = 0.5\n\nexport interface UnhandledRequestPrint {\n warning(): void\n error(): void\n}\n\nexport type UnhandledRequestCallback = (\n request: Request,\n print: UnhandledRequestPrint,\n) => void\n\nexport type UnhandledRequestStrategy =\n | 'bypass'\n | 'warn'\n | 'error'\n | UnhandledRequestCallback\n\ninterface RequestHandlerGroups {\n http: Array<HttpHandler>\n graphql: Array<GraphQLHandler>\n}\n\nfunction groupHandlersByType(\n handlers: Array<RequestHandler>,\n): RequestHandlerGroups {\n return handlers.reduce<RequestHandlerGroups>(\n (groups, handler) => {\n if (handler instanceof HttpHandler) {\n groups.http.push(handler)\n }\n\n if (handler instanceof GraphQLHandler) {\n groups.graphql.push(handler)\n }\n\n return groups\n },\n {\n http: [],\n graphql: [],\n },\n )\n}\n\ntype RequestHandlerSuggestion = [number, RequestHandler]\n\ntype ScoreGetterFn<RequestHandlerType extends RequestHandler> = (\n request: Request,\n handler: RequestHandlerType,\n) => number\n\nfunction getHttpHandlerScore(): ScoreGetterFn<HttpHandler> {\n return (request, handler) => {\n const { path, method } = handler.info\n\n if (path instanceof RegExp || method instanceof RegExp) {\n return Infinity\n }\n\n const hasSameMethod = isStringEqual(request.method, method)\n\n // Always treat a handler with the same method as a more similar one.\n const methodScoreDelta = hasSameMethod ? TYPE_MATCH_DELTA : 0\n const requestPublicUrl = getPublicUrlFromRequest(request)\n const score = getStringMatchScore(requestPublicUrl, path)\n\n return score - methodScoreDelta\n }\n}\n\nfunction getGraphQLHandlerScore(\n parsedQuery: ParsedGraphQLQuery,\n): ScoreGetterFn<GraphQLHandler> {\n return (_, handler) => {\n if (typeof parsedQuery.operationName === 'undefined') {\n return Infinity\n }\n\n const { operationType, operationName } = handler.info\n\n if (typeof operationName !== 'string') {\n return Infinity\n }\n\n const hasSameOperationType = parsedQuery.operationType === operationType\n // Always treat a handler with the same operation type as a more similar one.\n const operationTypeScoreDelta = hasSameOperationType ? TYPE_MATCH_DELTA : 0\n const score = getStringMatchScore(parsedQuery.operationName, operationName)\n\n return score - operationTypeScoreDelta\n }\n}\n\nfunction getSuggestedHandler(\n request: Request,\n handlers: Array<HttpHandler> | Array<GraphQLHandler>,\n getScore: ScoreGetterFn<HttpHandler> | ScoreGetterFn<GraphQLHandler>,\n): Array<RequestHandler> {\n const suggestedHandlers = (handlers as Array<RequestHandler>)\n .reduce<Array<RequestHandlerSuggestion>>((suggestions, handler) => {\n const score = getScore(request, handler as any)\n return suggestions.concat([[score, handler]])\n }, [])\n .sort(([leftScore], [rightScore]) => leftScore - rightScore)\n .filter(([score]) => score <= MAX_MATCH_SCORE)\n .slice(0, MAX_SUGGESTION_COUNT)\n .map(([, handler]) => handler)\n\n return suggestedHandlers\n}\n\nfunction getSuggestedHandlersMessage(handlers: RequestHandler[]) {\n if (handlers.length > 1) {\n return `\\\nDid you mean to request one of the following resources instead?\n\n${handlers.map((handler) => ` • ${handler.info.header}`).join('\\n')}`\n }\n\n return `Did you mean to request \"${handlers[0].info.header}\" instead?`\n}\n\nexport async function onUnhandledRequest(\n request: Request,\n handlers: Array<RequestHandler>,\n strategy: UnhandledRequestStrategy = 'warn',\n): Promise<void> {\n const parsedGraphQLQuery = await parseGraphQLRequest(request).catch(\n () => null,\n )\n const publicUrl = getPublicUrlFromRequest(request)\n\n function generateHandlerSuggestion(): string {\n /**\n * @note Ignore exceptions during GraphQL request parsing because at this point\n * we cannot assume the unhandled request is a valid GraphQL request.\n * If the GraphQL parsing fails, just don't treat it as a GraphQL request.\n */\n const handlerGroups = groupHandlersByType(handlers)\n const relevantHandlers = parsedGraphQLQuery\n ? handlerGroups.graphql\n : handlerGroups.http\n\n const suggestedHandlers = getSuggestedHandler(\n request,\n relevantHandlers,\n parsedGraphQLQuery\n ? getGraphQLHandlerScore(parsedGraphQLQuery)\n : getHttpHandlerScore(),\n )\n\n return suggestedHandlers.length > 0\n ? getSuggestedHandlersMessage(suggestedHandlers)\n : ''\n }\n\n function getGraphQLRequestHeader(\n parsedGraphQLRequest: ParsedGraphQLRequest<any>,\n ): string {\n if (!parsedGraphQLRequest?.operationName) {\n return `anonymous ${parsedGraphQLRequest?.operationType} (${request.method} ${publicUrl})`\n }\n\n return `${parsedGraphQLRequest.operationType} ${parsedGraphQLRequest.operationName} (${request.method} ${publicUrl})`\n }\n\n function generateUnhandledRequestMessage(): string {\n const requestHeader = parsedGraphQLQuery\n ? getGraphQLRequestHeader(parsedGraphQLQuery)\n : `${request.method} ${publicUrl}`\n const handlerSuggestion = generateHandlerSuggestion()\n\n const messageTemplate = [\n `intercepted a request without a matching request handler:`,\n ` \\u2022 ${requestHeader}`,\n handlerSuggestion,\n `\\\nIf you still wish to intercept this unhandled request, please create a request handler for it.\nRead more: https://mswjs.io/docs/getting-started/mocks\\\n`,\n ].filter(Boolean)\n return messageTemplate.join('\\n\\n')\n }\n\n function applyStrategy(strategy: UnhandledRequestStrategy) {\n // Generate handler suggestions only when applying the strategy.\n // This saves bandwidth for scenarios when developers opt-out\n // from the default unhandled request handling strategy.\n const message = generateUnhandledRequestMessage()\n\n switch (strategy) {\n case 'error': {\n // Print a developer-friendly error.\n devUtils.error('Error: %s', message)\n\n // Throw an exception to halt request processing and not perform the original request.\n throw new Error(\n devUtils.formatMessage(\n 'Cannot bypass a request when using the \"error\" strategy for the \"onUnhandledRequest\" option.',\n ),\n )\n }\n\n case 'warn': {\n devUtils.warn('Warning: %s', message)\n break\n }\n\n case 'bypass':\n break\n\n default:\n throw new Error(\n devUtils.formatMessage(\n 'Failed to react to an unhandled request: unknown strategy \"%s\". Please provide one of the supported strategies (\"bypass\", \"warn\", \"error\") or a custom callback function as the value of the \"onUnhandledRequest\" option.',\n strategy,\n ),\n )\n }\n }\n\n if (typeof strategy === 'function') {\n strategy(request, {\n warning: applyStrategy.bind(null, 'warn'),\n error: applyStrategy.bind(null, 'error'),\n })\n return\n }\n\n applyStrategy(strategy)\n}\n"],"mappings":"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","names":["jsLevenshtein","strategy"]}
@@ -1,23 +1,3 @@
1
- var __async = (__this, __arguments, generator) => {
2
- return new Promise((resolve, reject) => {
3
- var fulfilled = (value) => {
4
- try {
5
- step(generator.next(value));
6
- } catch (e) {
7
- reject(e);
8
- }
9
- };
10
- var rejected = (value) => {
11
- try {
12
- step(generator.throw(value));
13
- } catch (e) {
14
- reject(e);
15
- }
16
- };
17
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
- step((generator = generator.apply(__this, __arguments)).next());
19
- });
20
- };
21
1
  import jsLevenshtein from "@bundled-es-modules/js-levenshtein";
22
2
  import { HttpHandler, GraphQLHandler } from '../../index.mjs';
23
3
  import {
@@ -90,75 +70,73 @@ ${handlers.map((handler) => ` \u2022 ${handler.info.header}`).join("\n")}`;
90
70
  }
91
71
  return `Did you mean to request "${handlers[0].info.header}" instead?`;
92
72
  }
93
- function onUnhandledRequest(request, handlers, strategy = "warn") {
94
- return __async(this, null, function* () {
95
- const parsedGraphQLQuery = yield parseGraphQLRequest(request).catch(
96
- () => null
73
+ async function onUnhandledRequest(request, handlers, strategy = "warn") {
74
+ const parsedGraphQLQuery = await parseGraphQLRequest(request).catch(
75
+ () => null
76
+ );
77
+ const publicUrl = getPublicUrlFromRequest(request);
78
+ function generateHandlerSuggestion() {
79
+ const handlerGroups = groupHandlersByType(handlers);
80
+ const relevantHandlers = parsedGraphQLQuery ? handlerGroups.graphql : handlerGroups.http;
81
+ const suggestedHandlers = getSuggestedHandler(
82
+ request,
83
+ relevantHandlers,
84
+ parsedGraphQLQuery ? getGraphQLHandlerScore(parsedGraphQLQuery) : getHttpHandlerScore()
97
85
  );
98
- const publicUrl = getPublicUrlFromRequest(request);
99
- function generateHandlerSuggestion() {
100
- const handlerGroups = groupHandlersByType(handlers);
101
- const relevantHandlers = parsedGraphQLQuery ? handlerGroups.graphql : handlerGroups.http;
102
- const suggestedHandlers = getSuggestedHandler(
103
- request,
104
- relevantHandlers,
105
- parsedGraphQLQuery ? getGraphQLHandlerScore(parsedGraphQLQuery) : getHttpHandlerScore()
106
- );
107
- return suggestedHandlers.length > 0 ? getSuggestedHandlersMessage(suggestedHandlers) : "";
108
- }
109
- function getGraphQLRequestHeader(parsedGraphQLRequest) {
110
- if (!(parsedGraphQLRequest == null ? void 0 : parsedGraphQLRequest.operationName)) {
111
- return `anonymous ${parsedGraphQLRequest == null ? void 0 : parsedGraphQLRequest.operationType} (${request.method} ${publicUrl})`;
112
- }
113
- return `${parsedGraphQLRequest.operationType} ${parsedGraphQLRequest.operationName} (${request.method} ${publicUrl})`;
86
+ return suggestedHandlers.length > 0 ? getSuggestedHandlersMessage(suggestedHandlers) : "";
87
+ }
88
+ function getGraphQLRequestHeader(parsedGraphQLRequest) {
89
+ if (!parsedGraphQLRequest?.operationName) {
90
+ return `anonymous ${parsedGraphQLRequest?.operationType} (${request.method} ${publicUrl})`;
114
91
  }
115
- function generateUnhandledRequestMessage() {
116
- const requestHeader = parsedGraphQLQuery ? getGraphQLRequestHeader(parsedGraphQLQuery) : `${request.method} ${publicUrl}`;
117
- const handlerSuggestion = generateHandlerSuggestion();
118
- const messageTemplate = [
119
- `intercepted a request without a matching request handler:`,
120
- ` \u2022 ${requestHeader}`,
121
- handlerSuggestion,
122
- `If you still wish to intercept this unhandled request, please create a request handler for it.
92
+ return `${parsedGraphQLRequest.operationType} ${parsedGraphQLRequest.operationName} (${request.method} ${publicUrl})`;
93
+ }
94
+ function generateUnhandledRequestMessage() {
95
+ const requestHeader = parsedGraphQLQuery ? getGraphQLRequestHeader(parsedGraphQLQuery) : `${request.method} ${publicUrl}`;
96
+ const handlerSuggestion = generateHandlerSuggestion();
97
+ const messageTemplate = [
98
+ `intercepted a request without a matching request handler:`,
99
+ ` \u2022 ${requestHeader}`,
100
+ handlerSuggestion,
101
+ `If you still wish to intercept this unhandled request, please create a request handler for it.
123
102
  Read more: https://mswjs.io/docs/getting-started/mocks`
124
- ].filter(Boolean);
125
- return messageTemplate.join("\n\n");
126
- }
127
- function applyStrategy(strategy2) {
128
- const message = generateUnhandledRequestMessage();
129
- switch (strategy2) {
130
- case "error": {
131
- devUtils.error("Error: %s", message);
132
- throw new Error(
133
- devUtils.formatMessage(
134
- 'Cannot bypass a request when using the "error" strategy for the "onUnhandledRequest" option.'
135
- )
136
- );
137
- }
138
- case "warn": {
139
- devUtils.warn("Warning: %s", message);
140
- break;
141
- }
142
- case "bypass":
143
- break;
144
- default:
145
- throw new Error(
146
- devUtils.formatMessage(
147
- 'Failed to react to an unhandled request: unknown strategy "%s". Please provide one of the supported strategies ("bypass", "warn", "error") or a custom callback function as the value of the "onUnhandledRequest" option.',
148
- strategy2
149
- )
150
- );
103
+ ].filter(Boolean);
104
+ return messageTemplate.join("\n\n");
105
+ }
106
+ function applyStrategy(strategy2) {
107
+ const message = generateUnhandledRequestMessage();
108
+ switch (strategy2) {
109
+ case "error": {
110
+ devUtils.error("Error: %s", message);
111
+ throw new Error(
112
+ devUtils.formatMessage(
113
+ 'Cannot bypass a request when using the "error" strategy for the "onUnhandledRequest" option.'
114
+ )
115
+ );
151
116
  }
117
+ case "warn": {
118
+ devUtils.warn("Warning: %s", message);
119
+ break;
120
+ }
121
+ case "bypass":
122
+ break;
123
+ default:
124
+ throw new Error(
125
+ devUtils.formatMessage(
126
+ 'Failed to react to an unhandled request: unknown strategy "%s". Please provide one of the supported strategies ("bypass", "warn", "error") or a custom callback function as the value of the "onUnhandledRequest" option.',
127
+ strategy2
128
+ )
129
+ );
152
130
  }
153
- if (typeof strategy === "function") {
154
- strategy(request, {
155
- warning: applyStrategy.bind(null, "warn"),
156
- error: applyStrategy.bind(null, "error")
157
- });
158
- return;
159
- }
160
- applyStrategy(strategy);
161
- });
131
+ }
132
+ if (typeof strategy === "function") {
133
+ strategy(request, {
134
+ warning: applyStrategy.bind(null, "warn"),
135
+ error: applyStrategy.bind(null, "error")
136
+ });
137
+ return;
138
+ }
139
+ applyStrategy(strategy);
162
140
  }
163
141
  export {
164
142
  onUnhandledRequest