msw 2.0.11 → 2.0.13

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 (405) 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-907fc607.d.ts → GraphQLHandler-SHlRCcy4.d.ts} +9 -2
  8. package/lib/core/GraphQLHandler-zlmUDnN6.d.mts +97 -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-50ddea0c.d.ts → RequestHandler-rBDJQrEf.d.ts} +3 -1
  16. package/lib/core/RequestHandler-vxZdj6Tw.d.mts +179 -0
  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 +109 -0
  36. package/lib/core/graphql.d.ts +3 -3
  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 +28 -8
  44. package/lib/core/handlers/GraphQLHandler.js.map +1 -0
  45. package/lib/core/handlers/GraphQLHandler.mjs +28 -8
  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 +19 -4
  56. package/lib/core/handlers/RequestHandler.js.map +1 -0
  57. package/lib/core/handlers/RequestHandler.mjs +19 -4
  58. package/lib/core/handlers/RequestHandler.mjs.map +1 -0
  59. package/lib/core/http.d.mts +26 -0
  60. package/lib/core/http.d.ts +1 -1
  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 +2 -2
  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 +59 -25
  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.d.ts +0 -1
  269. package/lib/native/index.js +1 -3
  270. package/lib/native/index.js.map +1 -0
  271. package/lib/native/index.mjs +1 -3
  272. package/lib/native/index.mjs.map +1 -0
  273. package/lib/node/index.d.mts +75 -0
  274. package/lib/node/index.d.ts +1 -2
  275. package/lib/node/index.js +2 -35
  276. package/lib/node/index.js.map +1 -0
  277. package/lib/node/index.mjs +2 -35
  278. package/lib/node/index.mjs.map +1 -0
  279. package/package.json +6 -5
  280. package/src/browser/global.browser.d.ts +1 -0
  281. package/src/browser/index.ts +3 -0
  282. package/src/browser/setupWorker/glossary.ts +259 -0
  283. package/src/browser/setupWorker/setupWorker.node.test.ts +10 -0
  284. package/src/browser/setupWorker/setupWorker.ts +199 -0
  285. package/src/browser/setupWorker/start/createFallbackRequestListener.ts +67 -0
  286. package/src/browser/setupWorker/start/createFallbackStart.ts +21 -0
  287. package/src/browser/setupWorker/start/createRequestListener.ts +127 -0
  288. package/src/browser/setupWorker/start/createResponseListener.ts +58 -0
  289. package/src/browser/setupWorker/start/createStartHandler.ts +143 -0
  290. package/src/browser/setupWorker/start/utils/createMessageChannel.ts +32 -0
  291. package/src/browser/setupWorker/start/utils/enableMocking.ts +32 -0
  292. package/src/browser/setupWorker/start/utils/getWorkerByRegistration.ts +25 -0
  293. package/src/browser/setupWorker/start/utils/getWorkerInstance.ts +94 -0
  294. package/src/browser/setupWorker/start/utils/prepareStartHandler.test.ts +59 -0
  295. package/src/browser/setupWorker/start/utils/prepareStartHandler.ts +44 -0
  296. package/src/browser/setupWorker/start/utils/printStartMessage.test.ts +84 -0
  297. package/src/browser/setupWorker/start/utils/printStartMessage.ts +40 -0
  298. package/src/browser/setupWorker/start/utils/validateWorkerScope.ts +18 -0
  299. package/src/browser/setupWorker/stop/createFallbackStop.ts +11 -0
  300. package/src/browser/setupWorker/stop/createStop.ts +29 -0
  301. package/src/browser/setupWorker/stop/utils/printStopMessage.test.ts +26 -0
  302. package/src/browser/setupWorker/stop/utils/printStopMessage.ts +12 -0
  303. package/src/browser/tsconfig.browser.build.json +6 -0
  304. package/src/browser/tsconfig.browser.json +9 -0
  305. package/src/browser/utils/deferNetworkRequestsUntil.test.ts +48 -0
  306. package/src/browser/utils/deferNetworkRequestsUntil.ts +29 -0
  307. package/src/browser/utils/getAbsoluteWorkerUrl.test.ts +31 -0
  308. package/src/browser/utils/getAbsoluteWorkerUrl.ts +7 -0
  309. package/src/browser/utils/parseWorkerRequest.ts +15 -0
  310. package/src/browser/utils/pruneGetRequestBody.test.ts +53 -0
  311. package/src/browser/utils/pruneGetRequestBody.ts +21 -0
  312. package/src/browser/utils/requestIntegrityCheck.ts +23 -0
  313. package/src/browser/utils/supportsReadableStreamTransfer.ts +17 -0
  314. package/src/core/HttpResponse.test.ts +200 -0
  315. package/src/core/HttpResponse.ts +134 -0
  316. package/src/core/SetupApi.ts +95 -0
  317. package/src/core/bypass.test.ts +47 -0
  318. package/src/core/bypass.ts +36 -0
  319. package/src/core/delay.ts +70 -0
  320. package/src/core/graphql.test.ts +11 -0
  321. package/src/core/graphql.ts +138 -0
  322. package/src/core/handlers/GraphQLHandler.test.ts +820 -0
  323. package/src/core/handlers/GraphQLHandler.ts +263 -0
  324. package/src/core/handlers/HttpHandler.test.ts +218 -0
  325. package/src/core/handlers/HttpHandler.ts +169 -0
  326. package/src/core/handlers/RequestHandler.ts +338 -0
  327. package/src/core/http.test.ts +15 -0
  328. package/src/core/http.ts +51 -0
  329. package/src/core/index.ts +56 -0
  330. package/src/core/passthrough.test.ts +13 -0
  331. package/src/core/passthrough.ts +23 -0
  332. package/src/core/sharedOptions.ts +66 -0
  333. package/src/core/typeUtils.ts +20 -0
  334. package/src/core/utils/HttpResponse/decorators.ts +56 -0
  335. package/src/core/utils/getResponse.ts +55 -0
  336. package/src/core/utils/handleRequest.test.ts +554 -0
  337. package/src/core/utils/handleRequest.ts +132 -0
  338. package/src/core/utils/internal/Disposable.ts +9 -0
  339. package/src/core/utils/internal/checkGlobals.ts +17 -0
  340. package/src/core/utils/internal/devUtils.ts +31 -0
  341. package/src/core/utils/internal/getCallFrame.test.ts +154 -0
  342. package/src/core/utils/internal/getCallFrame.ts +35 -0
  343. package/src/core/utils/internal/isIterable.test.ts +23 -0
  344. package/src/core/utils/internal/isIterable.ts +12 -0
  345. package/src/core/utils/internal/isObject.test.ts +20 -0
  346. package/src/core/utils/internal/isObject.ts +6 -0
  347. package/src/core/utils/internal/isStringEqual.test.ts +45 -0
  348. package/src/core/utils/internal/isStringEqual.ts +6 -0
  349. package/src/core/utils/internal/jsonParse.test.ts +13 -0
  350. package/src/core/utils/internal/jsonParse.ts +13 -0
  351. package/src/core/utils/internal/mergeRight.test.ts +43 -0
  352. package/src/core/utils/internal/mergeRight.ts +27 -0
  353. package/src/core/utils/internal/parseGraphQLRequest.test.ts +99 -0
  354. package/src/core/utils/internal/parseGraphQLRequest.ts +205 -0
  355. package/src/core/utils/internal/parseMultipartData.test.ts +76 -0
  356. package/src/core/utils/internal/parseMultipartData.ts +104 -0
  357. package/src/core/utils/internal/pipeEvents.test.ts +14 -0
  358. package/src/core/utils/internal/pipeEvents.ts +25 -0
  359. package/src/core/utils/internal/requestHandlerUtils.ts +21 -0
  360. package/src/core/utils/internal/toReadonlyArray.test.ts +30 -0
  361. package/src/core/utils/internal/toReadonlyArray.ts +8 -0
  362. package/src/core/utils/internal/tryCatch.test.ts +29 -0
  363. package/src/core/utils/internal/tryCatch.ts +11 -0
  364. package/src/core/utils/internal/uuidv4.ts +3 -0
  365. package/src/core/utils/logging/getStatusCodeColor.test.ts +22 -0
  366. package/src/core/utils/logging/getStatusCodeColor.ts +20 -0
  367. package/src/core/utils/logging/getTimestamp.test.ts +18 -0
  368. package/src/core/utils/logging/getTimestamp.ts +12 -0
  369. package/src/core/utils/logging/serializeRequest.test.ts +23 -0
  370. package/src/core/utils/logging/serializeRequest.ts +23 -0
  371. package/src/core/utils/logging/serializeResponse.test.ts +77 -0
  372. package/src/core/utils/logging/serializeResponse.ts +31 -0
  373. package/src/core/utils/matching/matchRequestUrl.test.ts +114 -0
  374. package/src/core/utils/matching/matchRequestUrl.ts +73 -0
  375. package/src/core/utils/matching/normalizePath.node.test.ts +44 -0
  376. package/src/core/utils/matching/normalizePath.test.ts +50 -0
  377. package/src/core/utils/matching/normalizePath.ts +21 -0
  378. package/src/core/utils/request/getPublicUrlFromRequest.test.ts +26 -0
  379. package/src/core/utils/request/getPublicUrlFromRequest.ts +15 -0
  380. package/src/core/utils/request/getRequestCookies.node.test.ts +29 -0
  381. package/src/core/utils/request/getRequestCookies.test.ts +64 -0
  382. package/src/core/utils/request/getRequestCookies.ts +75 -0
  383. package/src/core/utils/request/onUnhandledRequest.test.ts +215 -0
  384. package/src/core/utils/request/onUnhandledRequest.ts +247 -0
  385. package/src/core/utils/request/readResponseCookies.ts +9 -0
  386. package/src/core/utils/toResponseInit.ts +7 -0
  387. package/src/core/utils/url/cleanUrl.test.ts +17 -0
  388. package/src/core/utils/url/cleanUrl.ts +12 -0
  389. package/src/core/utils/url/getAbsoluteUrl.node.test.ts +19 -0
  390. package/src/core/utils/url/getAbsoluteUrl.test.ts +29 -0
  391. package/src/core/utils/url/getAbsoluteUrl.ts +26 -0
  392. package/src/core/utils/url/isAbsoluteUrl.test.ts +32 -0
  393. package/src/core/utils/url/isAbsoluteUrl.ts +6 -0
  394. package/src/iife/index.ts +2 -0
  395. package/src/mockServiceWorker.js +287 -0
  396. package/src/native/index.ts +17 -0
  397. package/src/node/SetupServerApi.ts +113 -0
  398. package/src/node/glossary.ts +62 -0
  399. package/src/node/index.ts +3 -0
  400. package/src/node/setupServer.ts +21 -0
  401. package/src/node/utils/isNodeExceptionLike.ts +14 -0
  402. package/src/tsconfig.core.build.json +6 -0
  403. package/src/tsconfig.node.build.json +6 -0
  404. package/src/tsconfig.node.json +8 -0
  405. package/src/tsconfig.src.json +15 -0
@@ -0,0 +1,95 @@
1
+ import { invariant } from 'outvariant'
2
+ import { EventMap, Emitter } from 'strict-event-emitter'
3
+ import {
4
+ RequestHandler,
5
+ RequestHandlerDefaultInfo,
6
+ } from './handlers/RequestHandler'
7
+ import { LifeCycleEventEmitter } from './sharedOptions'
8
+ import { devUtils } from './utils/internal/devUtils'
9
+ import { pipeEvents } from './utils/internal/pipeEvents'
10
+ import { toReadonlyArray } from './utils/internal/toReadonlyArray'
11
+ import { Disposable } from './utils/internal/Disposable'
12
+
13
+ /**
14
+ * Generic class for the mock API setup.
15
+ */
16
+ export abstract class SetupApi<EventsMap extends EventMap> extends Disposable {
17
+ protected initialHandlers: ReadonlyArray<RequestHandler>
18
+ protected currentHandlers: Array<RequestHandler>
19
+ protected readonly emitter: Emitter<EventsMap>
20
+ protected readonly publicEmitter: Emitter<EventsMap>
21
+
22
+ public readonly events: LifeCycleEventEmitter<EventsMap>
23
+
24
+ constructor(...initialHandlers: Array<RequestHandler>) {
25
+ super()
26
+
27
+ invariant(
28
+ this.validateHandlers(initialHandlers),
29
+ devUtils.formatMessage(
30
+ `Failed to apply given request handlers: invalid input. Did you forget to spread the request handlers Array?`,
31
+ ),
32
+ )
33
+
34
+ this.initialHandlers = toReadonlyArray(initialHandlers)
35
+ this.currentHandlers = [...initialHandlers]
36
+
37
+ this.emitter = new Emitter<EventsMap>()
38
+ this.publicEmitter = new Emitter<EventsMap>()
39
+ pipeEvents(this.emitter, this.publicEmitter)
40
+
41
+ this.events = this.createLifeCycleEvents()
42
+
43
+ this.subscriptions.push(() => {
44
+ this.emitter.removeAllListeners()
45
+ this.publicEmitter.removeAllListeners()
46
+ })
47
+ }
48
+
49
+ private validateHandlers(handlers: ReadonlyArray<RequestHandler>): boolean {
50
+ // Guard against incorrect call signature of the setup API.
51
+ return handlers.every((handler) => !Array.isArray(handler))
52
+ }
53
+
54
+ public use(...runtimeHandlers: Array<RequestHandler>): void {
55
+ invariant(
56
+ this.validateHandlers(runtimeHandlers),
57
+ devUtils.formatMessage(
58
+ `Failed to call "use()" with the given request handlers: invalid input. Did you forget to spread the array of request handlers?`,
59
+ ),
60
+ )
61
+
62
+ this.currentHandlers.unshift(...runtimeHandlers)
63
+ }
64
+
65
+ public restoreHandlers(): void {
66
+ this.currentHandlers.forEach((handler) => {
67
+ handler.isUsed = false
68
+ })
69
+ }
70
+
71
+ public resetHandlers(...nextHandlers: Array<RequestHandler>): void {
72
+ this.currentHandlers =
73
+ nextHandlers.length > 0 ? [...nextHandlers] : [...this.initialHandlers]
74
+ }
75
+
76
+ public listHandlers(): ReadonlyArray<
77
+ RequestHandler<RequestHandlerDefaultInfo, any, any>
78
+ > {
79
+ return toReadonlyArray(this.currentHandlers)
80
+ }
81
+
82
+ private createLifeCycleEvents(): LifeCycleEventEmitter<EventsMap> {
83
+ return {
84
+ on: (...args: any[]) => {
85
+ return (this.publicEmitter.on as any)(...args)
86
+ },
87
+ removeListener: (...args: any[]) => {
88
+ return (this.publicEmitter.removeListener as any)(...args)
89
+ },
90
+ removeAllListeners: (...args: any[]) => {
91
+ return this.publicEmitter.removeAllListeners(...args)
92
+ },
93
+ }
94
+ }
95
+ }
@@ -0,0 +1,47 @@
1
+ /**
2
+ * @vitest-environment jsdom
3
+ */
4
+ import { bypass } from './bypass'
5
+
6
+ it('returns bypassed request given a request url string', async () => {
7
+ const request = bypass('https://api.example.com/resource')
8
+
9
+ // Relative URLs are rebased against the current location.
10
+ expect(request.method).toBe('GET')
11
+ expect(request.url).toBe('https://api.example.com/resource')
12
+ expect(Object.fromEntries(request.headers.entries())).toEqual({
13
+ 'x-msw-intention': 'bypass',
14
+ })
15
+ })
16
+
17
+ it('returns bypassed request given a request url', async () => {
18
+ const request = bypass(new URL('/resource', 'https://api.example.com'))
19
+
20
+ expect(request.url).toBe('https://api.example.com/resource')
21
+ expect(Object.fromEntries(request.headers)).toEqual({
22
+ 'x-msw-intention': 'bypass',
23
+ })
24
+ })
25
+
26
+ it('returns bypassed request given request instance', async () => {
27
+ const original = new Request('http://localhost/resource', {
28
+ method: 'POST',
29
+ headers: {
30
+ 'X-My-Header': 'value',
31
+ },
32
+ body: 'hello world',
33
+ })
34
+ const request = bypass(original)
35
+
36
+ expect(request.method).toBe('POST')
37
+ expect(request.url).toBe('http://localhost/resource')
38
+
39
+ const bypassedRequestBody = await request.text()
40
+ expect(original.bodyUsed).toBe(false)
41
+
42
+ expect(bypassedRequestBody).toEqual(await original.text())
43
+ expect(Object.fromEntries(request.headers.entries())).toEqual({
44
+ ...Object.fromEntries(original.headers.entries()),
45
+ 'x-msw-intention': 'bypass',
46
+ })
47
+ })
@@ -0,0 +1,36 @@
1
+ import { invariant } from 'outvariant'
2
+
3
+ export type BypassRequestInput = string | URL | Request
4
+
5
+ /**
6
+ * Creates a `Request` instance that will always be ignored by MSW.
7
+ *
8
+ * @example
9
+ * import { bypass } from 'msw'
10
+ *
11
+ * fetch(bypass('/resource'))
12
+ * fetch(bypass(new URL('/resource', 'https://example.com)))
13
+ * fetch(bypass(new Request('https://example.com/resource')))
14
+ *
15
+ * @see {@link https://mswjs.io/docs/api/bypass `bypass()` API reference}
16
+ */
17
+ export function bypass(input: BypassRequestInput, init?: RequestInit): Request {
18
+ const request = input instanceof Request ? input : new Request(input, init)
19
+
20
+ invariant(
21
+ !request.bodyUsed,
22
+ 'Failed to create a bypassed request to "%s %s": given request instance already has its body read. Make sure to clone the intercepted request if you wish to read its body before bypassing it.',
23
+ request.method,
24
+ request.url,
25
+ )
26
+
27
+ const requestClone = request.clone()
28
+
29
+ // Set the internal header that would instruct MSW
30
+ // to bypass this request from any further request matching.
31
+ // Unlike "passthrough()", bypass is meant for performing
32
+ // additional requests within pending request resolution.
33
+ requestClone.headers.set('x-msw-intention', 'bypass')
34
+
35
+ return requestClone
36
+ }
@@ -0,0 +1,70 @@
1
+ import { isNodeProcess } from 'is-node-process'
2
+
3
+ export const SET_TIMEOUT_MAX_ALLOWED_INT = 2147483647
4
+ export const MIN_SERVER_RESPONSE_TIME = 100
5
+ export const MAX_SERVER_RESPONSE_TIME = 400
6
+ export const NODE_SERVER_RESPONSE_TIME = 5
7
+
8
+ function getRealisticResponseTime(): number {
9
+ if (isNodeProcess()) {
10
+ return NODE_SERVER_RESPONSE_TIME
11
+ }
12
+
13
+ return Math.floor(
14
+ Math.random() * (MAX_SERVER_RESPONSE_TIME - MIN_SERVER_RESPONSE_TIME) +
15
+ MIN_SERVER_RESPONSE_TIME,
16
+ )
17
+ }
18
+
19
+ export type DelayMode = 'real' | 'infinite'
20
+
21
+ /**
22
+ * Delays the response by the given duration (ms).
23
+ *
24
+ * @example
25
+ * await delay() // emulate realistic server response time
26
+ * await delay(1200) // delay response by 1200ms
27
+ * await delay('infinite') // delay response infinitely
28
+ *
29
+ * @see {@link https://mswjs.io/docs/api/delay `delay()` API reference}
30
+ */
31
+ export async function delay(
32
+ durationOrMode?: DelayMode | number,
33
+ ): Promise<void> {
34
+ let delayTime: number
35
+
36
+ if (typeof durationOrMode === 'string') {
37
+ switch (durationOrMode) {
38
+ case 'infinite': {
39
+ // Using `Infinity` as a delay value executes the response timeout immediately.
40
+ // Instead, use the maximum allowed integer for `setTimeout`.
41
+ delayTime = SET_TIMEOUT_MAX_ALLOWED_INT
42
+ break
43
+ }
44
+ case 'real': {
45
+ delayTime = getRealisticResponseTime()
46
+ break
47
+ }
48
+ default: {
49
+ throw new Error(
50
+ `Failed to delay a response: unknown delay mode "${durationOrMode}". Please make sure you provide one of the supported modes ("real", "infinite") or a number.`,
51
+ )
52
+ }
53
+ }
54
+ } else if (typeof durationOrMode === 'undefined') {
55
+ // Use random realistic server response time when no explicit delay duration was provided.
56
+ delayTime = getRealisticResponseTime()
57
+ } else {
58
+ // Guard against passing values like `Infinity` or `Number.MAX_VALUE`
59
+ // as the response delay duration. They don't produce the result you may expect.
60
+ if (durationOrMode > SET_TIMEOUT_MAX_ALLOWED_INT) {
61
+ throw new Error(
62
+ `Failed to delay a response: provided delay duration (${durationOrMode}) exceeds the maximum allowed duration for "setTimeout" (${SET_TIMEOUT_MAX_ALLOWED_INT}). This will cause the response to be returned immediately. Please use a number within the allowed range to delay the response by exact duration, or consider the "infinite" delay mode to delay the response indefinitely.`,
63
+ )
64
+ }
65
+
66
+ delayTime = durationOrMode
67
+ }
68
+
69
+ return new Promise((resolve) => setTimeout(resolve, delayTime))
70
+ }
@@ -0,0 +1,11 @@
1
+ import { graphql } from './graphql'
2
+
3
+ test('exports supported GraphQL operation types', () => {
4
+ expect(graphql).toBeDefined()
5
+ expect(Object.keys(graphql)).toEqual([
6
+ 'query',
7
+ 'mutation',
8
+ 'operation',
9
+ 'link',
10
+ ])
11
+ })
@@ -0,0 +1,138 @@
1
+ import type { DocumentNode, OperationTypeNode } from 'graphql'
2
+ import {
3
+ ResponseResolver,
4
+ RequestHandlerOptions,
5
+ } from './handlers/RequestHandler'
6
+ import {
7
+ GraphQLHandler,
8
+ GraphQLVariables,
9
+ ExpectedOperationTypeNode,
10
+ GraphQLHandlerNameSelector,
11
+ GraphQLResolverExtras,
12
+ GraphQLResponseBody,
13
+ } from './handlers/GraphQLHandler'
14
+ import type { Path } from './utils/matching/matchRequestUrl'
15
+
16
+ export interface TypedDocumentNode<
17
+ Result = { [key: string]: any },
18
+ Variables = { [key: string]: any },
19
+ > extends DocumentNode {
20
+ __apiType?: (variables: Variables) => Result
21
+ __resultType?: Result
22
+ __variablesType?: Variables
23
+ }
24
+
25
+ function createScopedGraphQLHandler(
26
+ operationType: ExpectedOperationTypeNode,
27
+ url: Path,
28
+ ) {
29
+ return <
30
+ Query extends Record<string, any>,
31
+ Variables extends GraphQLVariables = GraphQLVariables,
32
+ >(
33
+ operationName:
34
+ | GraphQLHandlerNameSelector
35
+ | DocumentNode
36
+ | TypedDocumentNode<Query, Variables>,
37
+ resolver: ResponseResolver<
38
+ GraphQLResolverExtras<Variables>,
39
+ null,
40
+ GraphQLResponseBody<Query>
41
+ >,
42
+ options: RequestHandlerOptions = {},
43
+ ) => {
44
+ return new GraphQLHandler(
45
+ operationType,
46
+ operationName,
47
+ url,
48
+ resolver,
49
+ options,
50
+ )
51
+ }
52
+ }
53
+
54
+ function createGraphQLOperationHandler(url: Path) {
55
+ return <
56
+ Query extends Record<string, any>,
57
+ Variables extends GraphQLVariables = GraphQLVariables,
58
+ >(
59
+ resolver: ResponseResolver<
60
+ GraphQLResolverExtras<Variables>,
61
+ null,
62
+ GraphQLResponseBody<Query>
63
+ >,
64
+ ) => {
65
+ return new GraphQLHandler('all', new RegExp('.*'), url, resolver)
66
+ }
67
+ }
68
+
69
+ const standardGraphQLHandlers = {
70
+ /**
71
+ * Intercepts a GraphQL query by a given name.
72
+ *
73
+ * @example
74
+ * graphql.query('GetUser', () => {
75
+ * return HttpResponse.json({ data: { user: { name: 'John' } } })
76
+ * })
77
+ *
78
+ * @see {@link https://mswjs.io/docs/api/graphql#graphqlqueryqueryname-resolver `graphql.query()` API reference}
79
+ */
80
+ query: createScopedGraphQLHandler('query' as OperationTypeNode, '*'),
81
+
82
+ /**
83
+ * Intercepts a GraphQL mutation by its name.
84
+ *
85
+ * @example
86
+ * graphql.mutation('SavePost', () => {
87
+ * return HttpResponse.json({ data: { post: { id: 'abc-123 } } })
88
+ * })
89
+ *
90
+ * @see {@link https://mswjs.io/docs/api/graphql#graphqlmutationmutationname-resolver `graphql.query()` API reference}
91
+ *
92
+ */
93
+ mutation: createScopedGraphQLHandler('mutation' as OperationTypeNode, '*'),
94
+
95
+ /**
96
+ * Intercepts any GraphQL operation, regardless of its type or name.
97
+ *
98
+ * @example
99
+ * graphql.operation(() => {
100
+ * return HttpResponse.json({ data: { name: 'John' } })
101
+ * })
102
+ *
103
+ * @see {@link https://mswjs.io/docs/api/graphql#graphloperationresolver `graphql.operation()` API reference}
104
+ */
105
+ operation: createGraphQLOperationHandler('*'),
106
+ }
107
+
108
+ function createGraphQLLink(url: Path): typeof standardGraphQLHandlers {
109
+ return {
110
+ operation: createGraphQLOperationHandler(url),
111
+ query: createScopedGraphQLHandler('query' as OperationTypeNode, url),
112
+ mutation: createScopedGraphQLHandler('mutation' as OperationTypeNode, url),
113
+ }
114
+ }
115
+
116
+ /**
117
+ * A namespace to intercept and mock GraphQL operations
118
+ *
119
+ * @example
120
+ * graphql.query('GetUser', resolver)
121
+ * graphql.mutation('DeletePost', resolver)
122
+ *
123
+ * @see {@link https://mswjs.io/docs/api/graphql `graphql` API reference}
124
+ */
125
+ export const graphql = {
126
+ ...standardGraphQLHandlers,
127
+
128
+ /**
129
+ * Intercepts GraphQL operations scoped by the given URL.
130
+ *
131
+ * @example
132
+ * const github = graphql.link('https://api.github.com/graphql')
133
+ * github.query('GetRepo', resolver)
134
+ *
135
+ * @see {@link https://mswjs.io/docs/api/graphql#graphqllinkurl `graphql.link()` API reference}
136
+ */
137
+ link: createGraphQLLink,
138
+ }