msw 2.0.12 → 2.0.14

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 (404) hide show
  1. package/lib/browser/index.d.mts +104 -0
  2. package/lib/browser/index.d.ts +1 -1
  3. package/lib/browser/index.js +1 -0
  4. package/lib/browser/index.js.map +1 -0
  5. package/lib/browser/index.mjs +1 -0
  6. package/lib/browser/index.mjs.map +1 -0
  7. package/lib/core/{GraphQLHandler-da09c680.d.ts → GraphQLHandler-JB4bsrLF.d.ts} +4 -2
  8. package/lib/core/GraphQLHandler-mT-MmgeB.d.mts +99 -0
  9. package/lib/core/HttpResponse.d.mts +2 -0
  10. package/lib/core/HttpResponse.d.ts +1 -1
  11. package/lib/core/HttpResponse.js +1 -0
  12. package/lib/core/HttpResponse.js.map +1 -0
  13. package/lib/core/HttpResponse.mjs +1 -0
  14. package/lib/core/HttpResponse.mjs.map +1 -0
  15. package/lib/core/RequestHandler-YiqamK0M.d.mts +179 -0
  16. package/lib/core/{RequestHandler-25f9cfd1.d.ts → RequestHandler-rmY-HeFN.d.ts} +4 -4
  17. package/lib/core/SetupApi.d.mts +26 -0
  18. package/lib/core/SetupApi.d.ts +1 -1
  19. package/lib/core/SetupApi.js +1 -0
  20. package/lib/core/SetupApi.js.map +1 -0
  21. package/lib/core/SetupApi.mjs +1 -0
  22. package/lib/core/SetupApi.mjs.map +1 -0
  23. package/lib/core/bypass.d.mts +16 -0
  24. package/lib/core/bypass.d.ts +1 -1
  25. package/lib/core/bypass.js +1 -0
  26. package/lib/core/bypass.js.map +1 -0
  27. package/lib/core/bypass.mjs +1 -0
  28. package/lib/core/bypass.mjs.map +1 -0
  29. package/lib/core/delay.d.mts +18 -0
  30. package/lib/core/delay.d.ts +1 -1
  31. package/lib/core/delay.js +1 -0
  32. package/lib/core/delay.js.map +1 -0
  33. package/lib/core/delay.mjs +1 -0
  34. package/lib/core/delay.mjs.map +1 -0
  35. package/lib/core/graphql.d.mts +111 -0
  36. package/lib/core/graphql.d.ts +11 -9
  37. package/lib/core/graphql.js +1 -0
  38. package/lib/core/graphql.js.map +1 -0
  39. package/lib/core/graphql.mjs +1 -0
  40. package/lib/core/graphql.mjs.map +1 -0
  41. package/lib/core/handlers/GraphQLHandler.d.mts +5 -0
  42. package/lib/core/handlers/GraphQLHandler.d.ts +2 -2
  43. package/lib/core/handlers/GraphQLHandler.js +8 -6
  44. package/lib/core/handlers/GraphQLHandler.js.map +1 -0
  45. package/lib/core/handlers/GraphQLHandler.mjs +8 -6
  46. package/lib/core/handlers/GraphQLHandler.mjs.map +1 -0
  47. package/lib/core/handlers/HttpHandler.d.mts +62 -0
  48. package/lib/core/handlers/HttpHandler.d.ts +2 -2
  49. package/lib/core/handlers/HttpHandler.js +1 -0
  50. package/lib/core/handlers/HttpHandler.js.map +1 -0
  51. package/lib/core/handlers/HttpHandler.mjs +1 -0
  52. package/lib/core/handlers/HttpHandler.mjs.map +1 -0
  53. package/lib/core/handlers/RequestHandler.d.mts +2 -0
  54. package/lib/core/handlers/RequestHandler.d.ts +1 -1
  55. package/lib/core/handlers/RequestHandler.js +3 -2
  56. package/lib/core/handlers/RequestHandler.js.map +1 -0
  57. package/lib/core/handlers/RequestHandler.mjs +3 -2
  58. package/lib/core/handlers/RequestHandler.mjs.map +1 -0
  59. package/lib/core/http.d.mts +28 -0
  60. package/lib/core/http.d.ts +13 -11
  61. package/lib/core/http.js +1 -0
  62. package/lib/core/http.js.map +1 -0
  63. package/lib/core/http.mjs +1 -0
  64. package/lib/core/http.mjs.map +1 -0
  65. package/lib/core/index.d.mts +18 -0
  66. package/lib/core/index.d.ts +4 -4
  67. package/lib/core/index.js +1 -0
  68. package/lib/core/index.js.map +1 -0
  69. package/lib/core/index.mjs +1 -0
  70. package/lib/core/index.mjs.map +1 -0
  71. package/lib/core/passthrough.d.mts +17 -0
  72. package/lib/core/passthrough.js +1 -0
  73. package/lib/core/passthrough.js.map +1 -0
  74. package/lib/core/passthrough.mjs +1 -0
  75. package/lib/core/passthrough.mjs.map +1 -0
  76. package/lib/core/sharedOptions.d.mts +66 -0
  77. package/lib/core/sharedOptions.d.ts +2 -2
  78. package/lib/core/sharedOptions.js +1 -0
  79. package/lib/core/sharedOptions.js.map +1 -0
  80. package/lib/core/sharedOptions.mjs +1 -0
  81. package/lib/core/sharedOptions.mjs.map +1 -0
  82. package/lib/core/typeUtils.d.mts +7 -0
  83. package/lib/core/typeUtils.d.ts +1 -1
  84. package/lib/core/typeUtils.js +1 -0
  85. package/lib/core/typeUtils.js.map +1 -0
  86. package/lib/core/typeUtils.mjs +1 -0
  87. package/lib/core/typeUtils.mjs.map +1 -0
  88. package/lib/core/utils/HttpResponse/decorators.d.mts +12 -0
  89. package/lib/core/utils/HttpResponse/decorators.d.ts +2 -2
  90. package/lib/core/utils/HttpResponse/decorators.js +1 -0
  91. package/lib/core/utils/HttpResponse/decorators.js.map +1 -0
  92. package/lib/core/utils/HttpResponse/decorators.mjs +1 -0
  93. package/lib/core/utils/HttpResponse/decorators.mjs.map +1 -0
  94. package/lib/core/utils/getResponse.d.mts +2 -0
  95. package/lib/core/utils/getResponse.d.ts +1 -1
  96. package/lib/core/utils/getResponse.js +1 -0
  97. package/lib/core/utils/getResponse.js.map +1 -0
  98. package/lib/core/utils/getResponse.mjs +1 -0
  99. package/lib/core/utils/getResponse.mjs.map +1 -0
  100. package/lib/core/utils/handleRequest.d.mts +37 -0
  101. package/lib/core/utils/handleRequest.d.ts +2 -2
  102. package/lib/core/utils/handleRequest.js +1 -0
  103. package/lib/core/utils/handleRequest.js.map +1 -0
  104. package/lib/core/utils/handleRequest.mjs +1 -0
  105. package/lib/core/utils/handleRequest.mjs.map +1 -0
  106. package/lib/core/utils/internal/Disposable.d.mts +7 -0
  107. package/lib/core/utils/internal/Disposable.d.ts +1 -1
  108. package/lib/core/utils/internal/Disposable.js +1 -0
  109. package/lib/core/utils/internal/Disposable.js.map +1 -0
  110. package/lib/core/utils/internal/Disposable.mjs +1 -0
  111. package/lib/core/utils/internal/Disposable.mjs.map +1 -0
  112. package/lib/core/utils/internal/checkGlobals.d.mts +3 -0
  113. package/lib/core/utils/internal/checkGlobals.js +1 -0
  114. package/lib/core/utils/internal/checkGlobals.js.map +1 -0
  115. package/lib/core/utils/internal/checkGlobals.mjs +1 -0
  116. package/lib/core/utils/internal/checkGlobals.mjs.map +1 -0
  117. package/lib/core/utils/internal/devUtils.d.mts +19 -0
  118. package/lib/core/utils/internal/devUtils.js +1 -0
  119. package/lib/core/utils/internal/devUtils.js.map +1 -0
  120. package/lib/core/utils/internal/devUtils.mjs +1 -0
  121. package/lib/core/utils/internal/devUtils.mjs.map +1 -0
  122. package/lib/core/utils/internal/getCallFrame.d.mts +6 -0
  123. package/lib/core/utils/internal/getCallFrame.js +1 -0
  124. package/lib/core/utils/internal/getCallFrame.js.map +1 -0
  125. package/lib/core/utils/internal/getCallFrame.mjs +1 -0
  126. package/lib/core/utils/internal/getCallFrame.mjs.map +1 -0
  127. package/lib/core/utils/internal/isIterable.d.mts +6 -0
  128. package/lib/core/utils/internal/isIterable.js +1 -0
  129. package/lib/core/utils/internal/isIterable.js.map +1 -0
  130. package/lib/core/utils/internal/isIterable.mjs +1 -0
  131. package/lib/core/utils/internal/isIterable.mjs.map +1 -0
  132. package/lib/core/utils/internal/isObject.d.mts +6 -0
  133. package/lib/core/utils/internal/isObject.js +1 -0
  134. package/lib/core/utils/internal/isObject.js.map +1 -0
  135. package/lib/core/utils/internal/isObject.mjs +1 -0
  136. package/lib/core/utils/internal/isObject.mjs.map +1 -0
  137. package/lib/core/utils/internal/isStringEqual.d.mts +6 -0
  138. package/lib/core/utils/internal/isStringEqual.js +1 -0
  139. package/lib/core/utils/internal/isStringEqual.js.map +1 -0
  140. package/lib/core/utils/internal/isStringEqual.mjs +1 -0
  141. package/lib/core/utils/internal/isStringEqual.mjs.map +1 -0
  142. package/lib/core/utils/internal/jsonParse.d.mts +7 -0
  143. package/lib/core/utils/internal/jsonParse.js +1 -0
  144. package/lib/core/utils/internal/jsonParse.js.map +1 -0
  145. package/lib/core/utils/internal/jsonParse.mjs +1 -0
  146. package/lib/core/utils/internal/jsonParse.mjs.map +1 -0
  147. package/lib/core/utils/internal/mergeRight.d.mts +7 -0
  148. package/lib/core/utils/internal/mergeRight.js +1 -0
  149. package/lib/core/utils/internal/mergeRight.js.map +1 -0
  150. package/lib/core/utils/internal/mergeRight.mjs +1 -0
  151. package/lib/core/utils/internal/mergeRight.mjs.map +1 -0
  152. package/lib/core/utils/internal/parseGraphQLRequest.d.mts +5 -0
  153. package/lib/core/utils/internal/parseGraphQLRequest.d.ts +2 -2
  154. package/lib/core/utils/internal/parseGraphQLRequest.js +1 -0
  155. package/lib/core/utils/internal/parseGraphQLRequest.js.map +1 -0
  156. package/lib/core/utils/internal/parseGraphQLRequest.mjs +1 -0
  157. package/lib/core/utils/internal/parseGraphQLRequest.mjs.map +1 -0
  158. package/lib/core/utils/internal/parseMultipartData.d.mts +10 -0
  159. package/lib/core/utils/internal/parseMultipartData.d.ts +1 -1
  160. package/lib/core/utils/internal/parseMultipartData.js +1 -0
  161. package/lib/core/utils/internal/parseMultipartData.js.map +1 -0
  162. package/lib/core/utils/internal/parseMultipartData.mjs +1 -0
  163. package/lib/core/utils/internal/parseMultipartData.mjs.map +1 -0
  164. package/lib/core/utils/internal/pipeEvents.d.mts +8 -0
  165. package/lib/core/utils/internal/pipeEvents.js +1 -0
  166. package/lib/core/utils/internal/pipeEvents.js.map +1 -0
  167. package/lib/core/utils/internal/pipeEvents.mjs +1 -0
  168. package/lib/core/utils/internal/pipeEvents.mjs.map +1 -0
  169. package/lib/core/utils/internal/requestHandlerUtils.d.mts +8 -0
  170. package/lib/core/utils/internal/requestHandlerUtils.d.ts +1 -1
  171. package/lib/core/utils/internal/requestHandlerUtils.js +1 -0
  172. package/lib/core/utils/internal/requestHandlerUtils.js.map +1 -0
  173. package/lib/core/utils/internal/requestHandlerUtils.mjs +1 -0
  174. package/lib/core/utils/internal/requestHandlerUtils.mjs.map +1 -0
  175. package/lib/core/utils/internal/toReadonlyArray.d.mts +6 -0
  176. package/lib/core/utils/internal/toReadonlyArray.js +1 -0
  177. package/lib/core/utils/internal/toReadonlyArray.js.map +1 -0
  178. package/lib/core/utils/internal/toReadonlyArray.mjs +1 -0
  179. package/lib/core/utils/internal/toReadonlyArray.mjs.map +1 -0
  180. package/lib/core/utils/internal/tryCatch.d.mts +3 -0
  181. package/lib/core/utils/internal/tryCatch.js +1 -0
  182. package/lib/core/utils/internal/tryCatch.js.map +1 -0
  183. package/lib/core/utils/internal/tryCatch.mjs +1 -0
  184. package/lib/core/utils/internal/tryCatch.mjs.map +1 -0
  185. package/lib/core/utils/internal/uuidv4.d.mts +3 -0
  186. package/lib/core/utils/internal/uuidv4.js +1 -0
  187. package/lib/core/utils/internal/uuidv4.js.map +1 -0
  188. package/lib/core/utils/internal/uuidv4.mjs +1 -0
  189. package/lib/core/utils/internal/uuidv4.mjs.map +1 -0
  190. package/lib/core/utils/logging/getStatusCodeColor.d.mts +11 -0
  191. package/lib/core/utils/logging/getStatusCodeColor.js +1 -0
  192. package/lib/core/utils/logging/getStatusCodeColor.js.map +1 -0
  193. package/lib/core/utils/logging/getStatusCodeColor.mjs +1 -0
  194. package/lib/core/utils/logging/getStatusCodeColor.mjs.map +1 -0
  195. package/lib/core/utils/logging/getTimestamp.d.mts +6 -0
  196. package/lib/core/utils/logging/getTimestamp.js +1 -0
  197. package/lib/core/utils/logging/getTimestamp.js.map +1 -0
  198. package/lib/core/utils/logging/getTimestamp.mjs +1 -0
  199. package/lib/core/utils/logging/getTimestamp.mjs.map +1 -0
  200. package/lib/core/utils/logging/serializeRequest.d.mts +12 -0
  201. package/lib/core/utils/logging/serializeRequest.d.ts +1 -1
  202. package/lib/core/utils/logging/serializeRequest.js +1 -0
  203. package/lib/core/utils/logging/serializeRequest.js.map +1 -0
  204. package/lib/core/utils/logging/serializeRequest.mjs +1 -0
  205. package/lib/core/utils/logging/serializeRequest.mjs.map +1 -0
  206. package/lib/core/utils/logging/serializeResponse.d.mts +9 -0
  207. package/lib/core/utils/logging/serializeResponse.d.ts +1 -1
  208. package/lib/core/utils/logging/serializeResponse.js +1 -0
  209. package/lib/core/utils/logging/serializeResponse.js.map +1 -0
  210. package/lib/core/utils/logging/serializeResponse.mjs +1 -0
  211. package/lib/core/utils/logging/serializeResponse.mjs.map +1 -0
  212. package/lib/core/utils/matching/matchRequestUrl.d.mts +19 -0
  213. package/lib/core/utils/matching/matchRequestUrl.d.ts +1 -1
  214. package/lib/core/utils/matching/matchRequestUrl.js +1 -0
  215. package/lib/core/utils/matching/matchRequestUrl.js.map +1 -0
  216. package/lib/core/utils/matching/matchRequestUrl.mjs +1 -0
  217. package/lib/core/utils/matching/matchRequestUrl.mjs.map +1 -0
  218. package/lib/core/utils/matching/normalizePath.d.mts +12 -0
  219. package/lib/core/utils/matching/normalizePath.js +1 -0
  220. package/lib/core/utils/matching/normalizePath.js.map +1 -0
  221. package/lib/core/utils/matching/normalizePath.mjs +1 -0
  222. package/lib/core/utils/matching/normalizePath.mjs.map +1 -0
  223. package/lib/core/utils/request/getPublicUrlFromRequest.d.mts +7 -0
  224. package/lib/core/utils/request/getPublicUrlFromRequest.js +1 -0
  225. package/lib/core/utils/request/getPublicUrlFromRequest.js.map +1 -0
  226. package/lib/core/utils/request/getPublicUrlFromRequest.mjs +1 -0
  227. package/lib/core/utils/request/getPublicUrlFromRequest.mjs.map +1 -0
  228. package/lib/core/utils/request/getRequestCookies.d.mts +8 -0
  229. package/lib/core/utils/request/getRequestCookies.js +1 -0
  230. package/lib/core/utils/request/getRequestCookies.js.map +1 -0
  231. package/lib/core/utils/request/getRequestCookies.mjs +1 -0
  232. package/lib/core/utils/request/getRequestCookies.mjs.map +1 -0
  233. package/lib/core/utils/request/onUnhandledRequest.d.mts +12 -0
  234. package/lib/core/utils/request/onUnhandledRequest.d.ts +2 -2
  235. package/lib/core/utils/request/onUnhandledRequest.js +1 -0
  236. package/lib/core/utils/request/onUnhandledRequest.js.map +1 -0
  237. package/lib/core/utils/request/onUnhandledRequest.mjs +1 -0
  238. package/lib/core/utils/request/onUnhandledRequest.mjs.map +1 -0
  239. package/lib/core/utils/request/readResponseCookies.d.mts +3 -0
  240. package/lib/core/utils/request/readResponseCookies.js +1 -0
  241. package/lib/core/utils/request/readResponseCookies.js.map +1 -0
  242. package/lib/core/utils/request/readResponseCookies.mjs +1 -0
  243. package/lib/core/utils/request/readResponseCookies.mjs.map +1 -0
  244. package/lib/core/utils/toResponseInit.d.mts +3 -0
  245. package/lib/core/utils/toResponseInit.js +1 -0
  246. package/lib/core/utils/toResponseInit.js.map +1 -0
  247. package/lib/core/utils/toResponseInit.mjs +1 -0
  248. package/lib/core/utils/toResponseInit.mjs.map +1 -0
  249. package/lib/core/utils/url/cleanUrl.d.mts +7 -0
  250. package/lib/core/utils/url/cleanUrl.js +1 -0
  251. package/lib/core/utils/url/cleanUrl.js.map +1 -0
  252. package/lib/core/utils/url/cleanUrl.mjs +1 -0
  253. package/lib/core/utils/url/cleanUrl.mjs.map +1 -0
  254. package/lib/core/utils/url/getAbsoluteUrl.d.mts +6 -0
  255. package/lib/core/utils/url/getAbsoluteUrl.js +1 -0
  256. package/lib/core/utils/url/getAbsoluteUrl.js.map +1 -0
  257. package/lib/core/utils/url/getAbsoluteUrl.mjs +1 -0
  258. package/lib/core/utils/url/getAbsoluteUrl.mjs.map +1 -0
  259. package/lib/core/utils/url/isAbsoluteUrl.d.mts +6 -0
  260. package/lib/core/utils/url/isAbsoluteUrl.js +1 -0
  261. package/lib/core/utils/url/isAbsoluteUrl.js.map +1 -0
  262. package/lib/core/utils/url/isAbsoluteUrl.mjs +1 -0
  263. package/lib/core/utils/url/isAbsoluteUrl.mjs.map +1 -0
  264. package/lib/iife/index.js +25 -23
  265. package/lib/iife/index.js.map +1 -0
  266. package/lib/mockServiceWorker.js +1 -1
  267. package/lib/native/index.d.mts +75 -0
  268. package/lib/native/index.js +1 -0
  269. package/lib/native/index.js.map +1 -0
  270. package/lib/native/index.mjs +1 -0
  271. package/lib/native/index.mjs.map +1 -0
  272. package/lib/node/index.d.mts +75 -0
  273. package/lib/node/index.d.ts +1 -1
  274. package/lib/node/index.js +1 -0
  275. package/lib/node/index.js.map +1 -0
  276. package/lib/node/index.mjs +1 -0
  277. package/lib/node/index.mjs.map +1 -0
  278. package/package.json +5 -4
  279. package/src/browser/global.browser.d.ts +1 -0
  280. package/src/browser/index.ts +3 -0
  281. package/src/browser/setupWorker/glossary.ts +259 -0
  282. package/src/browser/setupWorker/setupWorker.node.test.ts +10 -0
  283. package/src/browser/setupWorker/setupWorker.ts +199 -0
  284. package/src/browser/setupWorker/start/createFallbackRequestListener.ts +67 -0
  285. package/src/browser/setupWorker/start/createFallbackStart.ts +21 -0
  286. package/src/browser/setupWorker/start/createRequestListener.ts +127 -0
  287. package/src/browser/setupWorker/start/createResponseListener.ts +58 -0
  288. package/src/browser/setupWorker/start/createStartHandler.ts +143 -0
  289. package/src/browser/setupWorker/start/utils/createMessageChannel.ts +32 -0
  290. package/src/browser/setupWorker/start/utils/enableMocking.ts +32 -0
  291. package/src/browser/setupWorker/start/utils/getWorkerByRegistration.ts +25 -0
  292. package/src/browser/setupWorker/start/utils/getWorkerInstance.ts +94 -0
  293. package/src/browser/setupWorker/start/utils/prepareStartHandler.test.ts +59 -0
  294. package/src/browser/setupWorker/start/utils/prepareStartHandler.ts +44 -0
  295. package/src/browser/setupWorker/start/utils/printStartMessage.test.ts +84 -0
  296. package/src/browser/setupWorker/start/utils/printStartMessage.ts +40 -0
  297. package/src/browser/setupWorker/start/utils/validateWorkerScope.ts +18 -0
  298. package/src/browser/setupWorker/stop/createFallbackStop.ts +11 -0
  299. package/src/browser/setupWorker/stop/createStop.ts +29 -0
  300. package/src/browser/setupWorker/stop/utils/printStopMessage.test.ts +26 -0
  301. package/src/browser/setupWorker/stop/utils/printStopMessage.ts +12 -0
  302. package/src/browser/tsconfig.browser.build.json +6 -0
  303. package/src/browser/tsconfig.browser.json +9 -0
  304. package/src/browser/utils/deferNetworkRequestsUntil.test.ts +48 -0
  305. package/src/browser/utils/deferNetworkRequestsUntil.ts +29 -0
  306. package/src/browser/utils/getAbsoluteWorkerUrl.test.ts +31 -0
  307. package/src/browser/utils/getAbsoluteWorkerUrl.ts +7 -0
  308. package/src/browser/utils/parseWorkerRequest.ts +15 -0
  309. package/src/browser/utils/pruneGetRequestBody.test.ts +53 -0
  310. package/src/browser/utils/pruneGetRequestBody.ts +21 -0
  311. package/src/browser/utils/requestIntegrityCheck.ts +23 -0
  312. package/src/browser/utils/supportsReadableStreamTransfer.ts +17 -0
  313. package/src/core/HttpResponse.test.ts +200 -0
  314. package/src/core/HttpResponse.ts +134 -0
  315. package/src/core/SetupApi.ts +95 -0
  316. package/src/core/bypass.test.ts +47 -0
  317. package/src/core/bypass.ts +36 -0
  318. package/src/core/delay.ts +70 -0
  319. package/src/core/graphql.test.ts +11 -0
  320. package/src/core/graphql.ts +146 -0
  321. package/src/core/handlers/GraphQLHandler.test.ts +835 -0
  322. package/src/core/handlers/GraphQLHandler.ts +266 -0
  323. package/src/core/handlers/HttpHandler.test.ts +218 -0
  324. package/src/core/handlers/HttpHandler.ts +169 -0
  325. package/src/core/handlers/RequestHandler.ts +343 -0
  326. package/src/core/http.test.ts +15 -0
  327. package/src/core/http.ts +64 -0
  328. package/src/core/index.ts +59 -0
  329. package/src/core/passthrough.test.ts +13 -0
  330. package/src/core/passthrough.ts +23 -0
  331. package/src/core/sharedOptions.ts +66 -0
  332. package/src/core/typeUtils.ts +20 -0
  333. package/src/core/utils/HttpResponse/decorators.ts +56 -0
  334. package/src/core/utils/getResponse.ts +55 -0
  335. package/src/core/utils/handleRequest.test.ts +554 -0
  336. package/src/core/utils/handleRequest.ts +132 -0
  337. package/src/core/utils/internal/Disposable.ts +9 -0
  338. package/src/core/utils/internal/checkGlobals.ts +17 -0
  339. package/src/core/utils/internal/devUtils.ts +31 -0
  340. package/src/core/utils/internal/getCallFrame.test.ts +154 -0
  341. package/src/core/utils/internal/getCallFrame.ts +35 -0
  342. package/src/core/utils/internal/isIterable.test.ts +23 -0
  343. package/src/core/utils/internal/isIterable.ts +12 -0
  344. package/src/core/utils/internal/isObject.test.ts +20 -0
  345. package/src/core/utils/internal/isObject.ts +6 -0
  346. package/src/core/utils/internal/isStringEqual.test.ts +45 -0
  347. package/src/core/utils/internal/isStringEqual.ts +6 -0
  348. package/src/core/utils/internal/jsonParse.test.ts +13 -0
  349. package/src/core/utils/internal/jsonParse.ts +13 -0
  350. package/src/core/utils/internal/mergeRight.test.ts +43 -0
  351. package/src/core/utils/internal/mergeRight.ts +27 -0
  352. package/src/core/utils/internal/parseGraphQLRequest.test.ts +99 -0
  353. package/src/core/utils/internal/parseGraphQLRequest.ts +205 -0
  354. package/src/core/utils/internal/parseMultipartData.test.ts +76 -0
  355. package/src/core/utils/internal/parseMultipartData.ts +104 -0
  356. package/src/core/utils/internal/pipeEvents.test.ts +14 -0
  357. package/src/core/utils/internal/pipeEvents.ts +25 -0
  358. package/src/core/utils/internal/requestHandlerUtils.ts +21 -0
  359. package/src/core/utils/internal/toReadonlyArray.test.ts +30 -0
  360. package/src/core/utils/internal/toReadonlyArray.ts +8 -0
  361. package/src/core/utils/internal/tryCatch.test.ts +29 -0
  362. package/src/core/utils/internal/tryCatch.ts +11 -0
  363. package/src/core/utils/internal/uuidv4.ts +3 -0
  364. package/src/core/utils/logging/getStatusCodeColor.test.ts +22 -0
  365. package/src/core/utils/logging/getStatusCodeColor.ts +20 -0
  366. package/src/core/utils/logging/getTimestamp.test.ts +18 -0
  367. package/src/core/utils/logging/getTimestamp.ts +12 -0
  368. package/src/core/utils/logging/serializeRequest.test.ts +23 -0
  369. package/src/core/utils/logging/serializeRequest.ts +23 -0
  370. package/src/core/utils/logging/serializeResponse.test.ts +77 -0
  371. package/src/core/utils/logging/serializeResponse.ts +31 -0
  372. package/src/core/utils/matching/matchRequestUrl.test.ts +114 -0
  373. package/src/core/utils/matching/matchRequestUrl.ts +73 -0
  374. package/src/core/utils/matching/normalizePath.node.test.ts +44 -0
  375. package/src/core/utils/matching/normalizePath.test.ts +50 -0
  376. package/src/core/utils/matching/normalizePath.ts +21 -0
  377. package/src/core/utils/request/getPublicUrlFromRequest.test.ts +26 -0
  378. package/src/core/utils/request/getPublicUrlFromRequest.ts +15 -0
  379. package/src/core/utils/request/getRequestCookies.node.test.ts +29 -0
  380. package/src/core/utils/request/getRequestCookies.test.ts +64 -0
  381. package/src/core/utils/request/getRequestCookies.ts +75 -0
  382. package/src/core/utils/request/onUnhandledRequest.test.ts +215 -0
  383. package/src/core/utils/request/onUnhandledRequest.ts +247 -0
  384. package/src/core/utils/request/readResponseCookies.ts +9 -0
  385. package/src/core/utils/toResponseInit.ts +7 -0
  386. package/src/core/utils/url/cleanUrl.test.ts +17 -0
  387. package/src/core/utils/url/cleanUrl.ts +12 -0
  388. package/src/core/utils/url/getAbsoluteUrl.node.test.ts +19 -0
  389. package/src/core/utils/url/getAbsoluteUrl.test.ts +29 -0
  390. package/src/core/utils/url/getAbsoluteUrl.ts +26 -0
  391. package/src/core/utils/url/isAbsoluteUrl.test.ts +32 -0
  392. package/src/core/utils/url/isAbsoluteUrl.ts +6 -0
  393. package/src/iife/index.ts +2 -0
  394. package/src/mockServiceWorker.js +287 -0
  395. package/src/native/index.ts +17 -0
  396. package/src/node/SetupServerApi.ts +113 -0
  397. package/src/node/glossary.ts +62 -0
  398. package/src/node/index.ts +3 -0
  399. package/src/node/setupServer.ts +21 -0
  400. package/src/node/utils/isNodeExceptionLike.ts +14 -0
  401. package/src/tsconfig.core.build.json +6 -0
  402. package/src/tsconfig.node.build.json +6 -0
  403. package/src/tsconfig.node.json +8 -0
  404. package/src/tsconfig.src.json +15 -0
@@ -0,0 +1,55 @@
1
+ import {
2
+ RequestHandler,
3
+ RequestHandlerExecutionResult,
4
+ } from '../handlers/RequestHandler'
5
+
6
+ export interface ResponseLookupResult {
7
+ handler: RequestHandler
8
+ parsedResult?: any
9
+ response?: Response
10
+ }
11
+
12
+ export interface ResponseResolutionContext {
13
+ baseUrl?: string
14
+ }
15
+
16
+ /**
17
+ * Returns a mocked response for a given request using following request handlers.
18
+ */
19
+ export const getResponse = async <Handler extends Array<RequestHandler>>(
20
+ request: Request,
21
+ handlers: Handler,
22
+ resolutionContext?: ResponseResolutionContext,
23
+ ): Promise<ResponseLookupResult | null> => {
24
+ let matchingHandler: RequestHandler | null = null
25
+ let result: RequestHandlerExecutionResult<any> | null = null
26
+
27
+ for (const handler of handlers) {
28
+ result = await handler.run({ request, resolutionContext })
29
+
30
+ // If the handler produces some result for this request,
31
+ // it automatically becomes matching.
32
+ if (result !== null) {
33
+ matchingHandler = handler
34
+ }
35
+
36
+ // Stop the lookup if this handler returns a mocked response.
37
+ // If it doesn't, it will still be considered the last matching
38
+ // handler until any of them returns a response. This way we can
39
+ // distinguish between fallthrough handlers without responses
40
+ // and the lack of a matching handler.
41
+ if (result?.response) {
42
+ break
43
+ }
44
+ }
45
+
46
+ if (matchingHandler) {
47
+ return {
48
+ handler: matchingHandler,
49
+ parsedResult: result?.parsedResult,
50
+ response: result?.response,
51
+ }
52
+ }
53
+
54
+ return null
55
+ }
@@ -0,0 +1,554 @@
1
+ /**
2
+ * @vitest-environment jsdom
3
+ */
4
+ import { Emitter } from 'strict-event-emitter'
5
+ import { LifeCycleEventsMap, SharedOptions } from '../sharedOptions'
6
+ import { RequestHandler } from '../handlers/RequestHandler'
7
+ import { http } from '../http'
8
+ import { handleRequest, HandleRequestOptions } from './handleRequest'
9
+ import { RequiredDeep } from '../typeUtils'
10
+ import { uuidv4 } from './internal/uuidv4'
11
+ import { HttpResponse } from '../HttpResponse'
12
+ import { passthrough } from '../passthrough'
13
+
14
+ const options: RequiredDeep<SharedOptions> = {
15
+ onUnhandledRequest: vi.fn(),
16
+ }
17
+ const handleRequestOptions: Partial<Record<keyof HandleRequestOptions, any>> = {
18
+ onPassthroughResponse: vi.fn(),
19
+ onMockedResponse: vi.fn(),
20
+ }
21
+
22
+ function setup() {
23
+ const emitter = new Emitter<LifeCycleEventsMap>()
24
+ const listener = vi.fn()
25
+
26
+ const createMockListener = (name: string) => {
27
+ return (...args: any) => {
28
+ listener(name, ...args)
29
+ }
30
+ }
31
+
32
+ emitter.on('request:start', createMockListener('request:start'))
33
+ emitter.on('request:match', createMockListener('request:match'))
34
+ emitter.on('request:unhandled', createMockListener('request:unhandled'))
35
+ emitter.on('request:end', createMockListener('request:end'))
36
+ emitter.on('response:mocked', createMockListener('response:mocked'))
37
+ emitter.on('response:bypass', createMockListener('response:bypass'))
38
+
39
+ const events = listener.mock.calls
40
+ return { emitter, events }
41
+ }
42
+
43
+ beforeEach(() => {
44
+ vi.spyOn(global.console, 'warn').mockImplementation(() => void 0)
45
+ })
46
+
47
+ afterEach(() => {
48
+ vi.resetAllMocks()
49
+ })
50
+
51
+ test('returns undefined for a request with the "x-msw-intention" header equal to "bypass"', async () => {
52
+ const { emitter, events } = setup()
53
+
54
+ const requestId = uuidv4()
55
+ const request = new Request(new URL('http://localhost/user'), {
56
+ headers: new Headers({
57
+ 'x-msw-intention': 'bypass',
58
+ }),
59
+ })
60
+ const handlers: Array<RequestHandler> = []
61
+
62
+ const result = await handleRequest(
63
+ request,
64
+ requestId,
65
+ handlers,
66
+ options,
67
+ emitter,
68
+ handleRequestOptions,
69
+ )
70
+
71
+ expect(result).toBeUndefined()
72
+ expect(events).toEqual([
73
+ ['request:start', { request, requestId }],
74
+ ['request:end', { request, requestId }],
75
+ ])
76
+ expect(options.onUnhandledRequest).not.toHaveBeenCalled()
77
+ expect(handleRequestOptions.onPassthroughResponse).toHaveBeenNthCalledWith(
78
+ 1,
79
+ request,
80
+ )
81
+ expect(handleRequestOptions.onMockedResponse).not.toHaveBeenCalled()
82
+ })
83
+
84
+ test('does not bypass a request with "x-msw-intention" header set to arbitrary value', async () => {
85
+ const { emitter } = setup()
86
+
87
+ const request = new Request(new URL('http://localhost/user'), {
88
+ headers: new Headers({
89
+ 'x-msw-intention': 'invalid',
90
+ }),
91
+ })
92
+ const handlers: Array<RequestHandler> = [
93
+ http.get('/user', () => {
94
+ return HttpResponse.text('hello world')
95
+ }),
96
+ ]
97
+
98
+ const result = await handleRequest(
99
+ request,
100
+ uuidv4(),
101
+ handlers,
102
+ options,
103
+ emitter,
104
+ handleRequestOptions,
105
+ )
106
+
107
+ expect(result).not.toBeUndefined()
108
+ expect(options.onUnhandledRequest).not.toHaveBeenCalled()
109
+ expect(handleRequestOptions.onMockedResponse).toHaveBeenCalledTimes(1)
110
+ })
111
+
112
+ test('reports request as unhandled when it has no matching request handlers', async () => {
113
+ const { emitter, events } = setup()
114
+
115
+ const requestId = uuidv4()
116
+ const request = new Request(new URL('http://localhost/user'))
117
+ const handlers: Array<RequestHandler> = []
118
+
119
+ const result = await handleRequest(
120
+ request,
121
+ requestId,
122
+ handlers,
123
+ options,
124
+ emitter,
125
+ handleRequestOptions,
126
+ )
127
+
128
+ expect(result).toBeUndefined()
129
+ expect(events).toEqual([
130
+ ['request:start', { request, requestId }],
131
+ ['request:unhandled', { request, requestId }],
132
+ ['request:end', { request, requestId }],
133
+ ])
134
+ expect(options.onUnhandledRequest).toHaveBeenNthCalledWith(1, request, {
135
+ warning: expect.any(Function),
136
+ error: expect.any(Function),
137
+ })
138
+ expect(handleRequestOptions.onPassthroughResponse).toHaveBeenNthCalledWith(
139
+ 1,
140
+ request,
141
+ )
142
+ expect(handleRequestOptions.onMockedResponse).not.toHaveBeenCalled()
143
+ })
144
+
145
+ test('returns undefined on a request handler that returns no response', async () => {
146
+ const { emitter, events } = setup()
147
+
148
+ const requestId = uuidv4()
149
+ const request = new Request(new URL('http://localhost/user'))
150
+ const handlers: Array<RequestHandler> = [
151
+ http.get('/user', () => {
152
+ // Intentionally blank response resolver.
153
+ return
154
+ }),
155
+ ]
156
+
157
+ const result = await handleRequest(
158
+ request,
159
+ requestId,
160
+ handlers,
161
+ options,
162
+ emitter,
163
+ handleRequestOptions,
164
+ )
165
+
166
+ expect(result).toBeUndefined()
167
+ expect(events).toEqual([
168
+ ['request:start', { request, requestId }],
169
+ ['request:end', { request, requestId }],
170
+ ])
171
+ expect(options.onUnhandledRequest).not.toHaveBeenCalled()
172
+ expect(handleRequestOptions.onPassthroughResponse).toHaveBeenNthCalledWith(
173
+ 1,
174
+ request,
175
+ )
176
+ expect(handleRequestOptions.onMockedResponse).not.toHaveBeenCalled()
177
+
178
+ /**
179
+ * @note Returning undefined from a resolver no longer prints a warning.
180
+ */
181
+ expect(console.warn).toHaveBeenCalledTimes(0)
182
+ })
183
+
184
+ test('returns the mocked response for a request with a matching request handler', async () => {
185
+ const { emitter, events } = setup()
186
+
187
+ const requestId = uuidv4()
188
+ const request = new Request(new URL('http://localhost/user'))
189
+ const mockedResponse = HttpResponse.json({ firstName: 'John' })
190
+ const handlers: Array<RequestHandler> = [
191
+ http.get('/user', () => {
192
+ return mockedResponse
193
+ }),
194
+ ]
195
+ const lookupResult = {
196
+ handler: handlers[0],
197
+ response: mockedResponse,
198
+ request,
199
+ parsedResult: {
200
+ match: { matches: true, params: {} },
201
+ cookies: {},
202
+ },
203
+ }
204
+
205
+ const result = await handleRequest(
206
+ request,
207
+ requestId,
208
+ handlers,
209
+ options,
210
+ emitter,
211
+ handleRequestOptions,
212
+ )
213
+
214
+ expect(result).toEqual(mockedResponse)
215
+ expect(events).toEqual([
216
+ ['request:start', { request, requestId }],
217
+ ['request:match', { request, requestId }],
218
+ ['request:end', { request, requestId }],
219
+ ])
220
+ expect(handleRequestOptions.onPassthroughResponse).not.toHaveBeenCalled()
221
+
222
+ expect(handleRequestOptions.onMockedResponse).toHaveBeenCalledTimes(1)
223
+ const [mockedResponseParam, lookupResultParam] =
224
+ handleRequestOptions.onMockedResponse.mock.calls[0]
225
+
226
+ expect(mockedResponseParam.status).toBe(mockedResponse.status)
227
+ expect(mockedResponseParam.statusText).toBe(mockedResponse.statusText)
228
+ expect(Object.fromEntries(mockedResponseParam.headers.entries())).toEqual(
229
+ Object.fromEntries(mockedResponse.headers.entries()),
230
+ )
231
+
232
+ expect(lookupResultParam).toEqual({
233
+ handler: lookupResult.handler,
234
+ parsedResult: lookupResult.parsedResult,
235
+ response: expect.objectContaining({
236
+ status: lookupResult.response.status,
237
+ statusText: lookupResult.response.statusText,
238
+ }),
239
+ })
240
+ })
241
+
242
+ test('returns a transformed response if the "transformResponse" option is provided', async () => {
243
+ const { emitter, events } = setup()
244
+
245
+ const requestId = uuidv4()
246
+ const request = new Request(new URL('http://localhost/user'))
247
+ const mockedResponse = HttpResponse.json({ firstName: 'John' })
248
+ const handlers: Array<RequestHandler> = [
249
+ http.get('/user', () => {
250
+ return mockedResponse
251
+ }),
252
+ ]
253
+ const transformResponseImpelemntation = (response: Response): Response => {
254
+ return new Response('transformed', response)
255
+ }
256
+ const transformResponse = vi
257
+ .fn<[Response], Response>()
258
+ .mockImplementation(transformResponseImpelemntation)
259
+ const finalResponse = transformResponseImpelemntation(mockedResponse)
260
+ const lookupResult = {
261
+ handler: handlers[0],
262
+ response: mockedResponse,
263
+ request,
264
+ parsedResult: {
265
+ match: { matches: true, params: {} },
266
+ cookies: {},
267
+ },
268
+ }
269
+
270
+ const result = await handleRequest(
271
+ request,
272
+ requestId,
273
+ handlers,
274
+ options,
275
+ emitter,
276
+ {
277
+ ...handleRequestOptions,
278
+ transformResponse,
279
+ },
280
+ )
281
+
282
+ expect(result?.status).toEqual(finalResponse.status)
283
+ expect(result?.statusText).toEqual(finalResponse.statusText)
284
+ expect(Object.fromEntries(result!.headers.entries())).toEqual(
285
+ Object.fromEntries(mockedResponse.headers.entries()),
286
+ )
287
+
288
+ expect(events).toEqual([
289
+ ['request:start', { request, requestId }],
290
+ ['request:match', { request, requestId }],
291
+ ['request:end', { request, requestId }],
292
+ ])
293
+ expect(handleRequestOptions.onPassthroughResponse).not.toHaveBeenCalled()
294
+
295
+ expect(transformResponse).toHaveBeenCalledTimes(1)
296
+ const [responseParam] = transformResponse.mock.calls[0]
297
+
298
+ expect(responseParam.status).toBe(mockedResponse.status)
299
+ expect(responseParam.statusText).toBe(mockedResponse.statusText)
300
+ expect(Object.fromEntries(responseParam.headers.entries())).toEqual(
301
+ Object.fromEntries(mockedResponse.headers.entries()),
302
+ )
303
+
304
+ expect(handleRequestOptions.onMockedResponse).toHaveBeenCalledTimes(1)
305
+ const [mockedResponseParam, lookupResultParam] =
306
+ handleRequestOptions.onMockedResponse.mock.calls[0]
307
+
308
+ expect(mockedResponseParam.status).toBe(finalResponse.status)
309
+ expect(mockedResponseParam.statusText).toBe(finalResponse.statusText)
310
+ expect(Object.fromEntries(mockedResponseParam.headers.entries())).toEqual(
311
+ Object.fromEntries(mockedResponse.headers.entries()),
312
+ )
313
+ expect(await mockedResponseParam.text()).toBe('transformed')
314
+
315
+ expect(lookupResultParam).toEqual({
316
+ handler: lookupResult.handler,
317
+ parsedResult: lookupResult.parsedResult,
318
+ response: expect.objectContaining({
319
+ status: lookupResult.response.status,
320
+ statusText: lookupResult.response.statusText,
321
+ }),
322
+ })
323
+ })
324
+
325
+ it('returns undefined without warning on a passthrough request', async () => {
326
+ const { emitter, events } = setup()
327
+
328
+ const requestId = uuidv4()
329
+ const request = new Request(new URL('http://localhost/user'))
330
+ const handlers: Array<RequestHandler> = [
331
+ http.get('/user', () => {
332
+ return passthrough()
333
+ }),
334
+ ]
335
+
336
+ const result = await handleRequest(
337
+ request,
338
+ requestId,
339
+ handlers,
340
+ options,
341
+ emitter,
342
+ handleRequestOptions,
343
+ )
344
+
345
+ expect(result).toBeUndefined()
346
+ expect(events).toEqual([
347
+ ['request:start', { request, requestId }],
348
+ ['request:end', { request, requestId }],
349
+ ])
350
+ expect(options.onUnhandledRequest).not.toHaveBeenCalled()
351
+ expect(handleRequestOptions.onPassthroughResponse).toHaveBeenNthCalledWith(
352
+ 1,
353
+ request,
354
+ )
355
+ expect(handleRequestOptions.onMockedResponse).not.toHaveBeenCalled()
356
+ })
357
+
358
+ it('marks the first matching one-time handler as used', async () => {
359
+ const { emitter } = setup()
360
+
361
+ const oneTimeHandler = http.get(
362
+ '/resource',
363
+ () => {
364
+ return HttpResponse.text('One-time')
365
+ },
366
+ { once: true },
367
+ )
368
+ const anotherHandler = http.get('/resource', () => {
369
+ return HttpResponse.text('Another')
370
+ })
371
+ const handlers: Array<RequestHandler> = [oneTimeHandler, anotherHandler]
372
+
373
+ const requestId = uuidv4()
374
+ const request = new Request('http://localhost/resource')
375
+ const firstResult = await handleRequest(
376
+ request,
377
+ requestId,
378
+ handlers,
379
+ options,
380
+ emitter,
381
+ handleRequestOptions,
382
+ )
383
+
384
+ expect(await firstResult?.text()).toBe('One-time')
385
+ expect(oneTimeHandler.isUsed).toBe(true)
386
+ expect(anotherHandler.isUsed).toBe(false)
387
+
388
+ const secondResult = await handleRequest(
389
+ request,
390
+ requestId,
391
+ handlers,
392
+ options,
393
+ emitter,
394
+ handleRequestOptions,
395
+ )
396
+
397
+ expect(await secondResult?.text()).toBe('Another')
398
+ expect(anotherHandler.isUsed).toBe(true)
399
+ expect(oneTimeHandler.isUsed).toBe(true)
400
+ })
401
+
402
+ it('does not mark non-matching one-time handlers as used', async () => {
403
+ const { emitter } = setup()
404
+
405
+ const oneTimeHandler = http.get(
406
+ '/resource',
407
+ () => {
408
+ return HttpResponse.text('One-time')
409
+ },
410
+ { once: true },
411
+ )
412
+ const anotherHandler = http.get(
413
+ '/another',
414
+ () => {
415
+ return HttpResponse.text('Another')
416
+ },
417
+ { once: true },
418
+ )
419
+ const handlers: Array<RequestHandler> = [oneTimeHandler, anotherHandler]
420
+
421
+ const requestId = uuidv4()
422
+ const firstResult = await handleRequest(
423
+ new Request('http://localhost/another'),
424
+ requestId,
425
+ handlers,
426
+ options,
427
+ emitter,
428
+ handleRequestOptions,
429
+ )
430
+
431
+ expect(await firstResult?.text()).toBe('Another')
432
+ expect(oneTimeHandler.isUsed).toBe(false)
433
+ expect(anotherHandler.isUsed).toBe(true)
434
+
435
+ const secondResult = await handleRequest(
436
+ new Request('http://localhost/resource'),
437
+ requestId,
438
+ handlers,
439
+ options,
440
+ emitter,
441
+ handleRequestOptions,
442
+ )
443
+
444
+ expect(await secondResult?.text()).toBe('One-time')
445
+ expect(anotherHandler.isUsed).toBe(true)
446
+ expect(oneTimeHandler.isUsed).toBe(true)
447
+ })
448
+
449
+ it('handles parallel requests with one-time handlers', async () => {
450
+ const { emitter } = setup()
451
+
452
+ const oneTimeHandler = http.get(
453
+ '/resource',
454
+ () => {
455
+ return HttpResponse.text('One-time')
456
+ },
457
+ { once: true },
458
+ )
459
+ const anotherHandler = http.get('/resource', () => {
460
+ return HttpResponse.text('Another')
461
+ })
462
+ const handlers: Array<RequestHandler> = [oneTimeHandler, anotherHandler]
463
+
464
+ const requestId = uuidv4()
465
+ const request = new Request('http://localhost/resource')
466
+ const firstResultPromise = handleRequest(
467
+ request,
468
+ requestId,
469
+ handlers,
470
+ options,
471
+ emitter,
472
+ handleRequestOptions,
473
+ )
474
+ const secondResultPromise = handleRequest(
475
+ request,
476
+ requestId,
477
+ handlers,
478
+ options,
479
+ emitter,
480
+ handleRequestOptions,
481
+ )
482
+
483
+ const firstResult = await firstResultPromise
484
+ const secondResult = await secondResultPromise
485
+
486
+ expect(await firstResult?.text()).toBe('One-time')
487
+ expect(await secondResult?.text()).toBe('Another')
488
+ expect(oneTimeHandler.isUsed).toBe(true)
489
+ expect(anotherHandler.isUsed).toBe(true)
490
+ })
491
+
492
+ describe('[Private] - resolutionContext - used for extensions', () => {
493
+ describe('#baseUrl', () => {
494
+ test('when defined, handle requests to that base url only defining pathnames in the handler', async () => {
495
+ const { emitter } = setup()
496
+
497
+ const baseUrl = 'http://this-base-url-works.com'
498
+ const handleRequestOptionsWithBaseUrl: HandleRequestOptions = {
499
+ ...handleRequestOptions,
500
+ resolutionContext: { baseUrl },
501
+ }
502
+
503
+ const handler = http.get('/resource', () => {
504
+ return HttpResponse.text('Mocked response')
505
+ })
506
+
507
+ const handlers: Array<RequestHandler> = [handler]
508
+
509
+ const requestId = uuidv4()
510
+ const request = new Request(new URL('/resource', baseUrl))
511
+ const response = await handleRequest(
512
+ request,
513
+ requestId,
514
+ handlers,
515
+ options,
516
+ emitter,
517
+ handleRequestOptionsWithBaseUrl,
518
+ )
519
+
520
+ expect(await response?.text()).toBe('Mocked response')
521
+ })
522
+
523
+ test('when defined, do not handle requests to different base urls when defining pathnames in the handler', async () => {
524
+ const { emitter } = setup()
525
+
526
+ const baseUrl = 'http://this-base-url-works.com'
527
+ const handleRequestOptionsWithBaseUrl: HandleRequestOptions = {
528
+ ...handleRequestOptions,
529
+ resolutionContext: { baseUrl },
530
+ }
531
+
532
+ const handler = http.get('/resource', () => {
533
+ return HttpResponse.text('Mocked response')
534
+ })
535
+
536
+ const handlers: Array<RequestHandler> = [handler]
537
+
538
+ const requestId = uuidv4()
539
+ const request = new Request(
540
+ new URL('/resource', `http://not-the-base-url.com`),
541
+ )
542
+ const response = await handleRequest(
543
+ request,
544
+ requestId,
545
+ handlers,
546
+ options,
547
+ emitter,
548
+ handleRequestOptionsWithBaseUrl,
549
+ )
550
+
551
+ expect(response).toBeUndefined()
552
+ })
553
+ })
554
+ })