@depup/msw 2.12.13-depup.0

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 (590) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +40 -0
  3. package/browser/package.json +31 -0
  4. package/changes.json +46 -0
  5. package/cli/index.js +35 -0
  6. package/cli/init.js +226 -0
  7. package/cli/invariant.js +9 -0
  8. package/cli/package.json +3 -0
  9. package/config/constants.js +13 -0
  10. package/config/package.json +3 -0
  11. package/config/scripts/postinstall.js +36 -0
  12. package/lib/browser/index.d.mts +102 -0
  13. package/lib/browser/index.d.ts +102 -0
  14. package/lib/browser/index.js +2911 -0
  15. package/lib/browser/index.js.map +1 -0
  16. package/lib/browser/index.mjs +2888 -0
  17. package/lib/browser/index.mjs.map +1 -0
  18. package/lib/core/HttpResponse-Be4eT3x6.d.mts +338 -0
  19. package/lib/core/HttpResponse-Dj6ibgFJ.d.ts +338 -0
  20. package/lib/core/HttpResponse.d.mts +6 -0
  21. package/lib/core/HttpResponse.d.ts +6 -0
  22. package/lib/core/HttpResponse.js +176 -0
  23. package/lib/core/HttpResponse.js.map +1 -0
  24. package/lib/core/HttpResponse.mjs +159 -0
  25. package/lib/core/HttpResponse.mjs.map +1 -0
  26. package/lib/core/SetupApi.d.mts +44 -0
  27. package/lib/core/SetupApi.d.ts +44 -0
  28. package/lib/core/SetupApi.js +112 -0
  29. package/lib/core/SetupApi.js.map +1 -0
  30. package/lib/core/SetupApi.mjs +92 -0
  31. package/lib/core/SetupApi.mjs.map +1 -0
  32. package/lib/core/bypass.d.mts +16 -0
  33. package/lib/core/bypass.d.ts +16 -0
  34. package/lib/core/bypass.js +42 -0
  35. package/lib/core/bypass.js.map +1 -0
  36. package/lib/core/bypass.mjs +22 -0
  37. package/lib/core/bypass.mjs.map +1 -0
  38. package/lib/core/delay.d.mts +18 -0
  39. package/lib/core/delay.d.ts +18 -0
  40. package/lib/core/delay.js +77 -0
  41. package/lib/core/delay.js.map +1 -0
  42. package/lib/core/delay.mjs +57 -0
  43. package/lib/core/delay.mjs.map +1 -0
  44. package/lib/core/getResponse.d.mts +18 -0
  45. package/lib/core/getResponse.d.ts +18 -0
  46. package/lib/core/getResponse.js +35 -0
  47. package/lib/core/getResponse.js.map +1 -0
  48. package/lib/core/getResponse.mjs +17 -0
  49. package/lib/core/getResponse.mjs.map +1 -0
  50. package/lib/core/graphql.d.mts +76 -0
  51. package/lib/core/graphql.d.ts +76 -0
  52. package/lib/core/graphql.js +90 -0
  53. package/lib/core/graphql.js.map +1 -0
  54. package/lib/core/graphql.mjs +72 -0
  55. package/lib/core/graphql.mjs.map +1 -0
  56. package/lib/core/handlers/GraphQLHandler.d.mts +6 -0
  57. package/lib/core/handlers/GraphQLHandler.d.ts +6 -0
  58. package/lib/core/handlers/GraphQLHandler.js +231 -0
  59. package/lib/core/handlers/GraphQLHandler.js.map +1 -0
  60. package/lib/core/handlers/GraphQLHandler.mjs +218 -0
  61. package/lib/core/handlers/GraphQLHandler.mjs.map +1 -0
  62. package/lib/core/handlers/HttpHandler.d.mts +75 -0
  63. package/lib/core/handlers/HttpHandler.d.ts +75 -0
  64. package/lib/core/handlers/HttpHandler.js +128 -0
  65. package/lib/core/handlers/HttpHandler.js.map +1 -0
  66. package/lib/core/handlers/HttpHandler.mjs +112 -0
  67. package/lib/core/handlers/HttpHandler.mjs.map +1 -0
  68. package/lib/core/handlers/RequestHandler.d.mts +6 -0
  69. package/lib/core/handlers/RequestHandler.d.ts +6 -0
  70. package/lib/core/handlers/RequestHandler.js +173 -0
  71. package/lib/core/handlers/RequestHandler.js.map +1 -0
  72. package/lib/core/handlers/RequestHandler.mjs +155 -0
  73. package/lib/core/handlers/RequestHandler.mjs.map +1 -0
  74. package/lib/core/handlers/WebSocketHandler.d.mts +42 -0
  75. package/lib/core/handlers/WebSocketHandler.d.ts +42 -0
  76. package/lib/core/handlers/WebSocketHandler.js +147 -0
  77. package/lib/core/handlers/WebSocketHandler.js.map +1 -0
  78. package/lib/core/handlers/WebSocketHandler.mjs +129 -0
  79. package/lib/core/handlers/WebSocketHandler.mjs.map +1 -0
  80. package/lib/core/handlers/common.d.mts +3 -0
  81. package/lib/core/handlers/common.d.ts +3 -0
  82. package/lib/core/handlers/common.js +17 -0
  83. package/lib/core/handlers/common.js.map +1 -0
  84. package/lib/core/handlers/common.mjs +1 -0
  85. package/lib/core/handlers/common.mjs.map +1 -0
  86. package/lib/core/http.d.mts +31 -0
  87. package/lib/core/http.d.ts +31 -0
  88. package/lib/core/http.js +40 -0
  89. package/lib/core/http.js.map +1 -0
  90. package/lib/core/http.mjs +23 -0
  91. package/lib/core/http.mjs.map +1 -0
  92. package/lib/core/index.d.mts +32 -0
  93. package/lib/core/index.d.ts +32 -0
  94. package/lib/core/index.js +64 -0
  95. package/lib/core/index.js.map +1 -0
  96. package/lib/core/index.mjs +52 -0
  97. package/lib/core/index.mjs.map +1 -0
  98. package/lib/core/isCommonAssetRequest.d.mts +20 -0
  99. package/lib/core/isCommonAssetRequest.d.ts +20 -0
  100. package/lib/core/isCommonAssetRequest.js +42 -0
  101. package/lib/core/isCommonAssetRequest.js.map +1 -0
  102. package/lib/core/isCommonAssetRequest.mjs +22 -0
  103. package/lib/core/isCommonAssetRequest.mjs.map +1 -0
  104. package/lib/core/passthrough.d.mts +24 -0
  105. package/lib/core/passthrough.d.ts +24 -0
  106. package/lib/core/passthrough.js +33 -0
  107. package/lib/core/passthrough.js.map +1 -0
  108. package/lib/core/passthrough.mjs +13 -0
  109. package/lib/core/passthrough.mjs.map +1 -0
  110. package/lib/core/sharedOptions.d.mts +64 -0
  111. package/lib/core/sharedOptions.d.ts +64 -0
  112. package/lib/core/sharedOptions.js +17 -0
  113. package/lib/core/sharedOptions.js.map +1 -0
  114. package/lib/core/sharedOptions.mjs +1 -0
  115. package/lib/core/sharedOptions.mjs.map +1 -0
  116. package/lib/core/sse.d.mts +116 -0
  117. package/lib/core/sse.d.ts +116 -0
  118. package/lib/core/sse.js +607 -0
  119. package/lib/core/sse.js.map +1 -0
  120. package/lib/core/sse.mjs +589 -0
  121. package/lib/core/sse.mjs.map +1 -0
  122. package/lib/core/typeUtils.d.mts +12 -0
  123. package/lib/core/typeUtils.d.ts +12 -0
  124. package/lib/core/typeUtils.js +17 -0
  125. package/lib/core/typeUtils.js.map +1 -0
  126. package/lib/core/typeUtils.mjs +1 -0
  127. package/lib/core/typeUtils.mjs.map +1 -0
  128. package/lib/core/utils/HttpResponse/decorators.d.mts +17 -0
  129. package/lib/core/utils/HttpResponse/decorators.d.ts +17 -0
  130. package/lib/core/utils/HttpResponse/decorators.js +77 -0
  131. package/lib/core/utils/HttpResponse/decorators.js.map +1 -0
  132. package/lib/core/utils/HttpResponse/decorators.mjs +47 -0
  133. package/lib/core/utils/HttpResponse/decorators.mjs.map +1 -0
  134. package/lib/core/utils/cookieStore.d.mts +13 -0
  135. package/lib/core/utils/cookieStore.d.ts +13 -0
  136. package/lib/core/utils/cookieStore.js +90 -0
  137. package/lib/core/utils/cookieStore.js.map +1 -0
  138. package/lib/core/utils/cookieStore.mjs +74 -0
  139. package/lib/core/utils/cookieStore.mjs.map +1 -0
  140. package/lib/core/utils/executeHandlers.d.mts +6 -0
  141. package/lib/core/utils/executeHandlers.d.ts +6 -0
  142. package/lib/core/utils/executeHandlers.js +50 -0
  143. package/lib/core/utils/executeHandlers.js.map +1 -0
  144. package/lib/core/utils/executeHandlers.mjs +30 -0
  145. package/lib/core/utils/executeHandlers.mjs.map +1 -0
  146. package/lib/core/utils/handleRequest.d.mts +29 -0
  147. package/lib/core/utils/handleRequest.d.ts +29 -0
  148. package/lib/core/utils/handleRequest.js +76 -0
  149. package/lib/core/utils/handleRequest.js.map +1 -0
  150. package/lib/core/utils/handleRequest.mjs +58 -0
  151. package/lib/core/utils/handleRequest.mjs.map +1 -0
  152. package/lib/core/utils/internal/Disposable.d.mts +7 -0
  153. package/lib/core/utils/internal/Disposable.d.ts +7 -0
  154. package/lib/core/utils/internal/Disposable.js +33 -0
  155. package/lib/core/utils/internal/Disposable.js.map +1 -0
  156. package/lib/core/utils/internal/Disposable.mjs +13 -0
  157. package/lib/core/utils/internal/Disposable.mjs.map +1 -0
  158. package/lib/core/utils/internal/checkGlobals.d.mts +3 -0
  159. package/lib/core/utils/internal/checkGlobals.d.ts +3 -0
  160. package/lib/core/utils/internal/checkGlobals.js +34 -0
  161. package/lib/core/utils/internal/checkGlobals.js.map +1 -0
  162. package/lib/core/utils/internal/checkGlobals.mjs +14 -0
  163. package/lib/core/utils/internal/checkGlobals.mjs.map +1 -0
  164. package/lib/core/utils/internal/devUtils.d.mts +28 -0
  165. package/lib/core/utils/internal/devUtils.d.ts +28 -0
  166. package/lib/core/utils/internal/devUtils.js +48 -0
  167. package/lib/core/utils/internal/devUtils.js.map +1 -0
  168. package/lib/core/utils/internal/devUtils.mjs +28 -0
  169. package/lib/core/utils/internal/devUtils.mjs.map +1 -0
  170. package/lib/core/utils/internal/getCallFrame.d.mts +6 -0
  171. package/lib/core/utils/internal/getCallFrame.d.ts +6 -0
  172. package/lib/core/utils/internal/getCallFrame.js +41 -0
  173. package/lib/core/utils/internal/getCallFrame.js.map +1 -0
  174. package/lib/core/utils/internal/getCallFrame.mjs +21 -0
  175. package/lib/core/utils/internal/getCallFrame.mjs.map +1 -0
  176. package/lib/core/utils/internal/hasRefCounted.d.mts +3 -0
  177. package/lib/core/utils/internal/hasRefCounted.d.ts +3 -0
  178. package/lib/core/utils/internal/hasRefCounted.js +27 -0
  179. package/lib/core/utils/internal/hasRefCounted.js.map +1 -0
  180. package/lib/core/utils/internal/hasRefCounted.mjs +7 -0
  181. package/lib/core/utils/internal/hasRefCounted.mjs.map +1 -0
  182. package/lib/core/utils/internal/isHandlerKind.d.mts +19 -0
  183. package/lib/core/utils/internal/isHandlerKind.d.ts +19 -0
  184. package/lib/core/utils/internal/isHandlerKind.js +29 -0
  185. package/lib/core/utils/internal/isHandlerKind.js.map +1 -0
  186. package/lib/core/utils/internal/isHandlerKind.mjs +9 -0
  187. package/lib/core/utils/internal/isHandlerKind.mjs.map +1 -0
  188. package/lib/core/utils/internal/isIterable.d.mts +20 -0
  189. package/lib/core/utils/internal/isIterable.d.ts +20 -0
  190. package/lib/core/utils/internal/isIterable.js +30 -0
  191. package/lib/core/utils/internal/isIterable.js.map +1 -0
  192. package/lib/core/utils/internal/isIterable.mjs +10 -0
  193. package/lib/core/utils/internal/isIterable.mjs.map +1 -0
  194. package/lib/core/utils/internal/isObject.d.mts +6 -0
  195. package/lib/core/utils/internal/isObject.d.ts +6 -0
  196. package/lib/core/utils/internal/isObject.js +27 -0
  197. package/lib/core/utils/internal/isObject.js.map +1 -0
  198. package/lib/core/utils/internal/isObject.mjs +7 -0
  199. package/lib/core/utils/internal/isObject.mjs.map +1 -0
  200. package/lib/core/utils/internal/isStringEqual.d.mts +6 -0
  201. package/lib/core/utils/internal/isStringEqual.d.ts +6 -0
  202. package/lib/core/utils/internal/isStringEqual.js +27 -0
  203. package/lib/core/utils/internal/isStringEqual.js.map +1 -0
  204. package/lib/core/utils/internal/isStringEqual.mjs +7 -0
  205. package/lib/core/utils/internal/isStringEqual.mjs.map +1 -0
  206. package/lib/core/utils/internal/jsonParse.d.mts +7 -0
  207. package/lib/core/utils/internal/jsonParse.d.ts +7 -0
  208. package/lib/core/utils/internal/jsonParse.js +31 -0
  209. package/lib/core/utils/internal/jsonParse.js.map +1 -0
  210. package/lib/core/utils/internal/jsonParse.mjs +11 -0
  211. package/lib/core/utils/internal/jsonParse.mjs.map +1 -0
  212. package/lib/core/utils/internal/mergeRight.d.mts +7 -0
  213. package/lib/core/utils/internal/mergeRight.d.ts +7 -0
  214. package/lib/core/utils/internal/mergeRight.js +43 -0
  215. package/lib/core/utils/internal/mergeRight.js.map +1 -0
  216. package/lib/core/utils/internal/mergeRight.mjs +23 -0
  217. package/lib/core/utils/internal/mergeRight.mjs.map +1 -0
  218. package/lib/core/utils/internal/parseGraphQLRequest.d.mts +6 -0
  219. package/lib/core/utils/internal/parseGraphQLRequest.d.ts +6 -0
  220. package/lib/core/utils/internal/parseGraphQLRequest.js +146 -0
  221. package/lib/core/utils/internal/parseGraphQLRequest.js.map +1 -0
  222. package/lib/core/utils/internal/parseGraphQLRequest.mjs +129 -0
  223. package/lib/core/utils/internal/parseGraphQLRequest.mjs.map +1 -0
  224. package/lib/core/utils/internal/parseMultipartData.d.mts +14 -0
  225. package/lib/core/utils/internal/parseMultipartData.d.ts +14 -0
  226. package/lib/core/utils/internal/parseMultipartData.js +83 -0
  227. package/lib/core/utils/internal/parseMultipartData.js.map +1 -0
  228. package/lib/core/utils/internal/parseMultipartData.mjs +63 -0
  229. package/lib/core/utils/internal/parseMultipartData.mjs.map +1 -0
  230. package/lib/core/utils/internal/pipeEvents.d.mts +8 -0
  231. package/lib/core/utils/internal/pipeEvents.d.ts +8 -0
  232. package/lib/core/utils/internal/pipeEvents.js +36 -0
  233. package/lib/core/utils/internal/pipeEvents.js.map +1 -0
  234. package/lib/core/utils/internal/pipeEvents.mjs +16 -0
  235. package/lib/core/utils/internal/pipeEvents.mjs.map +1 -0
  236. package/lib/core/utils/internal/requestHandlerUtils.d.mts +12 -0
  237. package/lib/core/utils/internal/requestHandlerUtils.d.ts +12 -0
  238. package/lib/core/utils/internal/requestHandlerUtils.js +37 -0
  239. package/lib/core/utils/internal/requestHandlerUtils.js.map +1 -0
  240. package/lib/core/utils/internal/requestHandlerUtils.mjs +17 -0
  241. package/lib/core/utils/internal/requestHandlerUtils.mjs.map +1 -0
  242. package/lib/core/utils/internal/toReadonlyArray.d.mts +6 -0
  243. package/lib/core/utils/internal/toReadonlyArray.d.ts +6 -0
  244. package/lib/core/utils/internal/toReadonlyArray.js +29 -0
  245. package/lib/core/utils/internal/toReadonlyArray.js.map +1 -0
  246. package/lib/core/utils/internal/toReadonlyArray.mjs +9 -0
  247. package/lib/core/utils/internal/toReadonlyArray.mjs.map +1 -0
  248. package/lib/core/utils/internal/tryCatch.d.mts +3 -0
  249. package/lib/core/utils/internal/tryCatch.d.ts +3 -0
  250. package/lib/core/utils/internal/tryCatch.js +32 -0
  251. package/lib/core/utils/internal/tryCatch.js.map +1 -0
  252. package/lib/core/utils/internal/tryCatch.mjs +12 -0
  253. package/lib/core/utils/internal/tryCatch.mjs.map +1 -0
  254. package/lib/core/utils/logging/getStatusCodeColor.d.mts +11 -0
  255. package/lib/core/utils/logging/getStatusCodeColor.d.ts +11 -0
  256. package/lib/core/utils/logging/getStatusCodeColor.js +40 -0
  257. package/lib/core/utils/logging/getStatusCodeColor.js.map +1 -0
  258. package/lib/core/utils/logging/getStatusCodeColor.mjs +20 -0
  259. package/lib/core/utils/logging/getStatusCodeColor.mjs.map +1 -0
  260. package/lib/core/utils/logging/getTimestamp.d.mts +9 -0
  261. package/lib/core/utils/logging/getTimestamp.d.ts +9 -0
  262. package/lib/core/utils/logging/getTimestamp.js +32 -0
  263. package/lib/core/utils/logging/getTimestamp.js.map +1 -0
  264. package/lib/core/utils/logging/getTimestamp.mjs +12 -0
  265. package/lib/core/utils/logging/getTimestamp.mjs.map +1 -0
  266. package/lib/core/utils/logging/serializeRequest.d.mts +12 -0
  267. package/lib/core/utils/logging/serializeRequest.d.ts +12 -0
  268. package/lib/core/utils/logging/serializeRequest.js +34 -0
  269. package/lib/core/utils/logging/serializeRequest.js.map +1 -0
  270. package/lib/core/utils/logging/serializeRequest.mjs +14 -0
  271. package/lib/core/utils/logging/serializeRequest.mjs.map +1 -0
  272. package/lib/core/utils/logging/serializeResponse.d.mts +9 -0
  273. package/lib/core/utils/logging/serializeResponse.d.ts +9 -0
  274. package/lib/core/utils/logging/serializeResponse.js +48 -0
  275. package/lib/core/utils/logging/serializeResponse.js.map +1 -0
  276. package/lib/core/utils/logging/serializeResponse.mjs +18 -0
  277. package/lib/core/utils/logging/serializeResponse.mjs.map +1 -0
  278. package/lib/core/utils/matching/matchRequestUrl.d.mts +20 -0
  279. package/lib/core/utils/matching/matchRequestUrl.d.ts +20 -0
  280. package/lib/core/utils/matching/matchRequestUrl.js +55 -0
  281. package/lib/core/utils/matching/matchRequestUrl.js.map +1 -0
  282. package/lib/core/utils/matching/matchRequestUrl.mjs +35 -0
  283. package/lib/core/utils/matching/matchRequestUrl.mjs.map +1 -0
  284. package/lib/core/utils/matching/normalizePath.d.mts +13 -0
  285. package/lib/core/utils/matching/normalizePath.d.ts +13 -0
  286. package/lib/core/utils/matching/normalizePath.js +33 -0
  287. package/lib/core/utils/matching/normalizePath.js.map +1 -0
  288. package/lib/core/utils/matching/normalizePath.mjs +13 -0
  289. package/lib/core/utils/matching/normalizePath.mjs.map +1 -0
  290. package/lib/core/utils/request/getAllAcceptedMimeTypes.d.mts +14 -0
  291. package/lib/core/utils/request/getAllAcceptedMimeTypes.d.ts +14 -0
  292. package/lib/core/utils/request/getAllAcceptedMimeTypes.js +61 -0
  293. package/lib/core/utils/request/getAllAcceptedMimeTypes.js.map +1 -0
  294. package/lib/core/utils/request/getAllAcceptedMimeTypes.mjs +41 -0
  295. package/lib/core/utils/request/getAllAcceptedMimeTypes.mjs.map +1 -0
  296. package/lib/core/utils/request/getRequestCookies.d.mts +3 -0
  297. package/lib/core/utils/request/getRequestCookies.d.ts +3 -0
  298. package/lib/core/utils/request/getRequestCookies.js +79 -0
  299. package/lib/core/utils/request/getRequestCookies.js.map +1 -0
  300. package/lib/core/utils/request/getRequestCookies.mjs +62 -0
  301. package/lib/core/utils/request/getRequestCookies.mjs.map +1 -0
  302. package/lib/core/utils/request/onUnhandledRequest.d.mts +9 -0
  303. package/lib/core/utils/request/onUnhandledRequest.d.ts +9 -0
  304. package/lib/core/utils/request/onUnhandledRequest.js +76 -0
  305. package/lib/core/utils/request/onUnhandledRequest.js.map +1 -0
  306. package/lib/core/utils/request/onUnhandledRequest.mjs +56 -0
  307. package/lib/core/utils/request/onUnhandledRequest.mjs.map +1 -0
  308. package/lib/core/utils/request/storeResponseCookies.d.mts +3 -0
  309. package/lib/core/utils/request/storeResponseCookies.d.ts +3 -0
  310. package/lib/core/utils/request/storeResponseCookies.js +32 -0
  311. package/lib/core/utils/request/storeResponseCookies.js.map +1 -0
  312. package/lib/core/utils/request/storeResponseCookies.mjs +12 -0
  313. package/lib/core/utils/request/storeResponseCookies.mjs.map +1 -0
  314. package/lib/core/utils/request/toPublicUrl.d.mts +7 -0
  315. package/lib/core/utils/request/toPublicUrl.d.ts +7 -0
  316. package/lib/core/utils/request/toPublicUrl.js +31 -0
  317. package/lib/core/utils/request/toPublicUrl.js.map +1 -0
  318. package/lib/core/utils/request/toPublicUrl.mjs +11 -0
  319. package/lib/core/utils/request/toPublicUrl.mjs.map +1 -0
  320. package/lib/core/utils/toResponseInit.d.mts +3 -0
  321. package/lib/core/utils/toResponseInit.d.ts +3 -0
  322. package/lib/core/utils/toResponseInit.js +31 -0
  323. package/lib/core/utils/toResponseInit.js.map +1 -0
  324. package/lib/core/utils/toResponseInit.mjs +11 -0
  325. package/lib/core/utils/toResponseInit.mjs.map +1 -0
  326. package/lib/core/utils/url/cleanUrl.d.mts +7 -0
  327. package/lib/core/utils/url/cleanUrl.d.ts +7 -0
  328. package/lib/core/utils/url/cleanUrl.js +31 -0
  329. package/lib/core/utils/url/cleanUrl.js.map +1 -0
  330. package/lib/core/utils/url/cleanUrl.mjs +11 -0
  331. package/lib/core/utils/url/cleanUrl.mjs.map +1 -0
  332. package/lib/core/utils/url/getAbsoluteUrl.d.mts +6 -0
  333. package/lib/core/utils/url/getAbsoluteUrl.d.ts +6 -0
  334. package/lib/core/utils/url/getAbsoluteUrl.js +38 -0
  335. package/lib/core/utils/url/getAbsoluteUrl.js.map +1 -0
  336. package/lib/core/utils/url/getAbsoluteUrl.mjs +18 -0
  337. package/lib/core/utils/url/getAbsoluteUrl.mjs.map +1 -0
  338. package/lib/core/utils/url/isAbsoluteUrl.d.mts +6 -0
  339. package/lib/core/utils/url/isAbsoluteUrl.d.ts +6 -0
  340. package/lib/core/utils/url/isAbsoluteUrl.js +27 -0
  341. package/lib/core/utils/url/isAbsoluteUrl.js.map +1 -0
  342. package/lib/core/utils/url/isAbsoluteUrl.mjs +7 -0
  343. package/lib/core/utils/url/isAbsoluteUrl.mjs.map +1 -0
  344. package/lib/core/ws/WebSocketClientManager.d.mts +65 -0
  345. package/lib/core/ws/WebSocketClientManager.d.ts +65 -0
  346. package/lib/core/ws/WebSocketClientManager.js +159 -0
  347. package/lib/core/ws/WebSocketClientManager.js.map +1 -0
  348. package/lib/core/ws/WebSocketClientManager.mjs +139 -0
  349. package/lib/core/ws/WebSocketClientManager.mjs.map +1 -0
  350. package/lib/core/ws/WebSocketClientStore.d.mts +13 -0
  351. package/lib/core/ws/WebSocketClientStore.d.ts +13 -0
  352. package/lib/core/ws/WebSocketClientStore.js +26 -0
  353. package/lib/core/ws/WebSocketClientStore.js.map +1 -0
  354. package/lib/core/ws/WebSocketClientStore.mjs +6 -0
  355. package/lib/core/ws/WebSocketClientStore.mjs.map +1 -0
  356. package/lib/core/ws/WebSocketIndexedDBClientStore.d.mts +14 -0
  357. package/lib/core/ws/WebSocketIndexedDBClientStore.d.ts +14 -0
  358. package/lib/core/ws/WebSocketIndexedDBClientStore.js +130 -0
  359. package/lib/core/ws/WebSocketIndexedDBClientStore.js.map +1 -0
  360. package/lib/core/ws/WebSocketIndexedDBClientStore.mjs +110 -0
  361. package/lib/core/ws/WebSocketIndexedDBClientStore.mjs.map +1 -0
  362. package/lib/core/ws/WebSocketMemoryClientStore.d.mts +12 -0
  363. package/lib/core/ws/WebSocketMemoryClientStore.d.ts +12 -0
  364. package/lib/core/ws/WebSocketMemoryClientStore.js +41 -0
  365. package/lib/core/ws/WebSocketMemoryClientStore.js.map +1 -0
  366. package/lib/core/ws/WebSocketMemoryClientStore.mjs +21 -0
  367. package/lib/core/ws/WebSocketMemoryClientStore.mjs.map +1 -0
  368. package/lib/core/ws/handleWebSocketEvent.d.mts +20 -0
  369. package/lib/core/ws/handleWebSocketEvent.d.ts +20 -0
  370. package/lib/core/ws/handleWebSocketEvent.js +61 -0
  371. package/lib/core/ws/handleWebSocketEvent.js.map +1 -0
  372. package/lib/core/ws/handleWebSocketEvent.mjs +43 -0
  373. package/lib/core/ws/handleWebSocketEvent.mjs.map +1 -0
  374. package/lib/core/ws/utils/attachWebSocketLogger.d.mts +18 -0
  375. package/lib/core/ws/utils/attachWebSocketLogger.d.ts +18 -0
  376. package/lib/core/ws/utils/attachWebSocketLogger.js +199 -0
  377. package/lib/core/ws/utils/attachWebSocketLogger.js.map +1 -0
  378. package/lib/core/ws/utils/attachWebSocketLogger.mjs +179 -0
  379. package/lib/core/ws/utils/attachWebSocketLogger.mjs.map +1 -0
  380. package/lib/core/ws/utils/getMessageLength.d.mts +11 -0
  381. package/lib/core/ws/utils/getMessageLength.d.ts +11 -0
  382. package/lib/core/ws/utils/getMessageLength.js +34 -0
  383. package/lib/core/ws/utils/getMessageLength.js.map +1 -0
  384. package/lib/core/ws/utils/getMessageLength.mjs +14 -0
  385. package/lib/core/ws/utils/getMessageLength.mjs.map +1 -0
  386. package/lib/core/ws/utils/getPublicData.d.mts +5 -0
  387. package/lib/core/ws/utils/getPublicData.d.ts +5 -0
  388. package/lib/core/ws/utils/getPublicData.js +37 -0
  389. package/lib/core/ws/utils/getPublicData.js.map +1 -0
  390. package/lib/core/ws/utils/getPublicData.mjs +17 -0
  391. package/lib/core/ws/utils/getPublicData.mjs.map +1 -0
  392. package/lib/core/ws/utils/truncateMessage.d.mts +3 -0
  393. package/lib/core/ws/utils/truncateMessage.d.ts +3 -0
  394. package/lib/core/ws/utils/truncateMessage.js +31 -0
  395. package/lib/core/ws/utils/truncateMessage.js.map +1 -0
  396. package/lib/core/ws/utils/truncateMessage.mjs +11 -0
  397. package/lib/core/ws/utils/truncateMessage.mjs.map +1 -0
  398. package/lib/core/ws/webSocketInterceptor.d.mts +5 -0
  399. package/lib/core/ws/webSocketInterceptor.d.ts +5 -0
  400. package/lib/core/ws/webSocketInterceptor.js +26 -0
  401. package/lib/core/ws/webSocketInterceptor.js.map +1 -0
  402. package/lib/core/ws/webSocketInterceptor.mjs +6 -0
  403. package/lib/core/ws/webSocketInterceptor.mjs.map +1 -0
  404. package/lib/core/ws.d.mts +75 -0
  405. package/lib/core/ws.d.ts +75 -0
  406. package/lib/core/ws.js +69 -0
  407. package/lib/core/ws.js.map +1 -0
  408. package/lib/core/ws.mjs +52 -0
  409. package/lib/core/ws.mjs.map +1 -0
  410. package/lib/iife/index.js +23752 -0
  411. package/lib/iife/index.js.map +1 -0
  412. package/lib/mockServiceWorker.js +349 -0
  413. package/lib/native/index.d.mts +74 -0
  414. package/lib/native/index.d.ts +74 -0
  415. package/lib/native/index.js +156 -0
  416. package/lib/native/index.js.map +1 -0
  417. package/lib/native/index.mjs +134 -0
  418. package/lib/native/index.mjs.map +1 -0
  419. package/lib/node/index.d.mts +91 -0
  420. package/lib/node/index.d.ts +91 -0
  421. package/lib/node/index.js +209 -0
  422. package/lib/node/index.js.map +1 -0
  423. package/lib/node/index.mjs +184 -0
  424. package/lib/node/index.mjs.map +1 -0
  425. package/lib/shims/cookie.d.mts +7 -0
  426. package/lib/shims/cookie.d.ts +7 -0
  427. package/lib/shims/cookie.js +204 -0
  428. package/lib/shims/cookie.mjs +196 -0
  429. package/lib/shims/statuses.d.mts +6 -0
  430. package/lib/shims/statuses.d.ts +6 -0
  431. package/lib/shims/statuses.js +195 -0
  432. package/lib/shims/statuses.mjs +187 -0
  433. package/native/package.json +30 -0
  434. package/node/package.json +33 -0
  435. package/package.json +381 -0
  436. package/src/browser/global.browser.d.ts +1 -0
  437. package/src/browser/index.ts +3 -0
  438. package/src/browser/setupWorker/glossary.ts +138 -0
  439. package/src/browser/setupWorker/setupWorker.node.test.ts +10 -0
  440. package/src/browser/setupWorker/setupWorker.ts +184 -0
  441. package/src/browser/setupWorker/start/createFallbackRequestListener.ts +71 -0
  442. package/src/browser/setupWorker/start/createRequestListener.ts +138 -0
  443. package/src/browser/setupWorker/start/createResponseListener.ts +57 -0
  444. package/src/browser/setupWorker/start/createStartHandler.ts +137 -0
  445. package/src/browser/setupWorker/start/utils/enableMocking.ts +30 -0
  446. package/src/browser/setupWorker/start/utils/getWorkerByRegistration.ts +25 -0
  447. package/src/browser/setupWorker/start/utils/getWorkerInstance.ts +97 -0
  448. package/src/browser/setupWorker/start/utils/prepareStartHandler.test.ts +59 -0
  449. package/src/browser/setupWorker/start/utils/prepareStartHandler.ts +44 -0
  450. package/src/browser/setupWorker/start/utils/printStartMessage.test.ts +84 -0
  451. package/src/browser/setupWorker/start/utils/printStartMessage.ts +51 -0
  452. package/src/browser/setupWorker/start/utils/validateWorkerScope.ts +18 -0
  453. package/src/browser/setupWorker/stop/utils/printStopMessage.test.ts +26 -0
  454. package/src/browser/setupWorker/stop/utils/printStopMessage.ts +13 -0
  455. package/src/browser/tsconfig.browser.build.json +6 -0
  456. package/src/browser/tsconfig.browser.json +9 -0
  457. package/src/browser/utils/checkWorkerIntegrity.ts +42 -0
  458. package/src/browser/utils/deserializeRequest.ts +15 -0
  459. package/src/browser/utils/getAbsoluteWorkerUrl.test.ts +29 -0
  460. package/src/browser/utils/getAbsoluteWorkerUrl.ts +7 -0
  461. package/src/browser/utils/pruneGetRequestBody.test.ts +53 -0
  462. package/src/browser/utils/pruneGetRequestBody.ts +21 -0
  463. package/src/browser/utils/supports.ts +30 -0
  464. package/src/browser/utils/workerChannel.ts +159 -0
  465. package/src/core/HttpResponse.test.ts +378 -0
  466. package/src/core/HttpResponse.ts +248 -0
  467. package/src/core/SetupApi.ts +127 -0
  468. package/src/core/bypass.test.ts +80 -0
  469. package/src/core/bypass.ts +46 -0
  470. package/src/core/delay.ts +82 -0
  471. package/src/core/getResponse.test.ts +74 -0
  472. package/src/core/getResponse.ts +29 -0
  473. package/src/core/graphql.test.ts +11 -0
  474. package/src/core/graphql.ts +136 -0
  475. package/src/core/handlers/GraphQLHandler.test.ts +873 -0
  476. package/src/core/handlers/GraphQLHandler.ts +437 -0
  477. package/src/core/handlers/HttpHandler.test.ts +253 -0
  478. package/src/core/handlers/HttpHandler.ts +214 -0
  479. package/src/core/handlers/RequestHandler.ts +391 -0
  480. package/src/core/handlers/WebSocketHandler.test.ts +127 -0
  481. package/src/core/handlers/WebSocketHandler.ts +209 -0
  482. package/src/core/handlers/common.ts +1 -0
  483. package/src/core/http.test.ts +15 -0
  484. package/src/core/http.ts +64 -0
  485. package/src/core/index.ts +110 -0
  486. package/src/core/isCommonAssetRequest.ts +45 -0
  487. package/src/core/passthrough.test.ts +11 -0
  488. package/src/core/passthrough.ts +25 -0
  489. package/src/core/sharedOptions.ts +66 -0
  490. package/src/core/sse.ts +916 -0
  491. package/src/core/typeUtils.ts +26 -0
  492. package/src/core/utils/HttpResponse/decorators.ts +76 -0
  493. package/src/core/utils/cookieStore.ts +94 -0
  494. package/src/core/utils/executeHandlers.ts +69 -0
  495. package/src/core/utils/handleRequest.test.ts +573 -0
  496. package/src/core/utils/handleRequest.ts +117 -0
  497. package/src/core/utils/internal/Disposable.ts +12 -0
  498. package/src/core/utils/internal/checkGlobals.ts +17 -0
  499. package/src/core/utils/internal/devUtils.test.ts +21 -0
  500. package/src/core/utils/internal/devUtils.ts +44 -0
  501. package/src/core/utils/internal/getCallFrame.test.ts +154 -0
  502. package/src/core/utils/internal/getCallFrame.ts +35 -0
  503. package/src/core/utils/internal/hasRefCounted.test.ts +16 -0
  504. package/src/core/utils/internal/hasRefCounted.ts +8 -0
  505. package/src/core/utils/internal/isHandlerKind.test.ts +64 -0
  506. package/src/core/utils/internal/isHandlerKind.ts +21 -0
  507. package/src/core/utils/internal/isIterable.test.ts +23 -0
  508. package/src/core/utils/internal/isIterable.ts +32 -0
  509. package/src/core/utils/internal/isObject.test.ts +20 -0
  510. package/src/core/utils/internal/isObject.ts +6 -0
  511. package/src/core/utils/internal/isStringEqual.test.ts +45 -0
  512. package/src/core/utils/internal/isStringEqual.ts +6 -0
  513. package/src/core/utils/internal/jsonParse.test.ts +13 -0
  514. package/src/core/utils/internal/jsonParse.ts +13 -0
  515. package/src/core/utils/internal/mergeRight.test.ts +43 -0
  516. package/src/core/utils/internal/mergeRight.ts +30 -0
  517. package/src/core/utils/internal/parseGraphQLRequest.test.ts +99 -0
  518. package/src/core/utils/internal/parseGraphQLRequest.ts +214 -0
  519. package/src/core/utils/internal/parseMultipartData.test.ts +76 -0
  520. package/src/core/utils/internal/parseMultipartData.ts +106 -0
  521. package/src/core/utils/internal/pipeEvents.test.ts +14 -0
  522. package/src/core/utils/internal/pipeEvents.ts +25 -0
  523. package/src/core/utils/internal/requestHandlerUtils.ts +21 -0
  524. package/src/core/utils/internal/toReadonlyArray.test.ts +30 -0
  525. package/src/core/utils/internal/toReadonlyArray.ts +8 -0
  526. package/src/core/utils/internal/tryCatch.test.ts +29 -0
  527. package/src/core/utils/internal/tryCatch.ts +11 -0
  528. package/src/core/utils/logging/getStatusCodeColor.test.ts +22 -0
  529. package/src/core/utils/logging/getStatusCodeColor.ts +20 -0
  530. package/src/core/utils/logging/getTimestamp.test.ts +32 -0
  531. package/src/core/utils/logging/getTimestamp.ts +17 -0
  532. package/src/core/utils/logging/serializeRequest.test.ts +23 -0
  533. package/src/core/utils/logging/serializeRequest.ts +23 -0
  534. package/src/core/utils/logging/serializeResponse.test.ts +77 -0
  535. package/src/core/utils/logging/serializeResponse.ts +31 -0
  536. package/src/core/utils/matching/matchRequestUrl.test.ts +183 -0
  537. package/src/core/utils/matching/matchRequestUrl.ts +77 -0
  538. package/src/core/utils/matching/normalizePath.node.test.ts +44 -0
  539. package/src/core/utils/matching/normalizePath.test.ts +56 -0
  540. package/src/core/utils/matching/normalizePath.ts +22 -0
  541. package/src/core/utils/request/getAllAcceptedMimeTypes.test.ts +86 -0
  542. package/src/core/utils/request/getAllAcceptedMimeTypes.ts +70 -0
  543. package/src/core/utils/request/getRequestCookies.ts +88 -0
  544. package/src/core/utils/request/onUnhandledRequest.node.test.ts +62 -0
  545. package/src/core/utils/request/onUnhandledRequest.test.ts +228 -0
  546. package/src/core/utils/request/onUnhandledRequest.ts +81 -0
  547. package/src/core/utils/request/storeResponseCookies.ts +17 -0
  548. package/src/core/utils/request/toPublicUrl.node.test.ts +17 -0
  549. package/src/core/utils/request/toPublicUrl.test.ts +16 -0
  550. package/src/core/utils/request/toPublicUrl.ts +16 -0
  551. package/src/core/utils/toResponseInit.ts +7 -0
  552. package/src/core/utils/url/cleanUrl.test.ts +22 -0
  553. package/src/core/utils/url/cleanUrl.ts +16 -0
  554. package/src/core/utils/url/getAbsoluteUrl.node.test.ts +19 -0
  555. package/src/core/utils/url/getAbsoluteUrl.test.ts +47 -0
  556. package/src/core/utils/url/getAbsoluteUrl.ts +25 -0
  557. package/src/core/utils/url/isAbsoluteUrl.test.ts +32 -0
  558. package/src/core/utils/url/isAbsoluteUrl.ts +6 -0
  559. package/src/core/ws/WebSocketClientManager.test.ts +164 -0
  560. package/src/core/ws/WebSocketClientManager.ts +241 -0
  561. package/src/core/ws/WebSocketClientStore.ts +14 -0
  562. package/src/core/ws/WebSocketIndexedDBClientStore.ts +140 -0
  563. package/src/core/ws/WebSocketMemoryClientStore.ts +27 -0
  564. package/src/core/ws/handleWebSocketEvent.ts +64 -0
  565. package/src/core/ws/utils/attachWebSocketLogger.ts +245 -0
  566. package/src/core/ws/utils/getMessageLength.test.ts +16 -0
  567. package/src/core/ws/utils/getMessageLength.ts +20 -0
  568. package/src/core/ws/utils/getPublicData.test.ts +38 -0
  569. package/src/core/ws/utils/getPublicData.ts +18 -0
  570. package/src/core/ws/utils/truncateMessage.test.ts +12 -0
  571. package/src/core/ws/utils/truncateMessage.ts +9 -0
  572. package/src/core/ws/webSocketInterceptor.ts +3 -0
  573. package/src/core/ws.test.ts +23 -0
  574. package/src/core/ws.ts +161 -0
  575. package/src/iife/index.ts +2 -0
  576. package/src/mockServiceWorker.js +349 -0
  577. package/src/native/index.ts +21 -0
  578. package/src/node/SetupServerApi.ts +87 -0
  579. package/src/node/SetupServerCommonApi.ts +169 -0
  580. package/src/node/glossary.ts +74 -0
  581. package/src/node/index.ts +3 -0
  582. package/src/node/setupServer.ts +15 -0
  583. package/src/package.json +3 -0
  584. package/src/shims/cookie.ts +7 -0
  585. package/src/shims/statuses.ts +6 -0
  586. package/src/tsconfig.core.build.json +6 -0
  587. package/src/tsconfig.node.build.json +6 -0
  588. package/src/tsconfig.node.json +8 -0
  589. package/src/tsconfig.src.json +10 -0
  590. package/src/tsconfig.worker.json +13 -0
@@ -0,0 +1,873 @@
1
+ // @vitest-environment jsdom
2
+ import { createRequestId, encodeBuffer } from '@mswjs/interceptors'
3
+ import { OperationTypeNode, parse } from 'graphql'
4
+ import {
5
+ GraphQLHandler,
6
+ GraphQLRequestBody,
7
+ GraphQLResolverExtras,
8
+ isDocumentNode,
9
+ } from './GraphQLHandler'
10
+ import { HttpResponse } from '../HttpResponse'
11
+ import { ResponseResolver } from './RequestHandler'
12
+
13
+ const resolver: ResponseResolver<GraphQLResolverExtras<{ userId: string }>> = ({
14
+ variables,
15
+ }) => {
16
+ return HttpResponse.json({
17
+ data: {
18
+ user: {
19
+ id: variables.userId,
20
+ },
21
+ },
22
+ })
23
+ }
24
+
25
+ function createGetGraphQLRequest(
26
+ body: GraphQLRequestBody<any>,
27
+ graphqlEndpoint = 'https://example.com',
28
+ ) {
29
+ const requestUrl = new URL(graphqlEndpoint)
30
+ requestUrl.searchParams.set('query', body?.query)
31
+ requestUrl.searchParams.set('variables', JSON.stringify(body?.variables))
32
+ return new Request(requestUrl)
33
+ }
34
+
35
+ function createPostGraphQLRequest(
36
+ body: GraphQLRequestBody<any>,
37
+ graphqlEndpoint = 'https://example.com',
38
+ ) {
39
+ return new Request(new URL(graphqlEndpoint), {
40
+ method: 'POST',
41
+ headers: new Headers({ 'Content-Type': 'application/json' }),
42
+ body: encodeBuffer(JSON.stringify(body)),
43
+ })
44
+ }
45
+
46
+ const GET_USER = `
47
+ query GetUser {
48
+ user {
49
+ id
50
+ }
51
+ }
52
+ `
53
+
54
+ const LOGIN = `
55
+ mutation Login {
56
+ user {
57
+ id
58
+ }
59
+ }
60
+ `
61
+
62
+ describe('info', () => {
63
+ it('exposes request handler information for query', () => {
64
+ const handler = new GraphQLHandler(
65
+ OperationTypeNode.QUERY,
66
+ 'GetUser',
67
+ '*',
68
+ resolver,
69
+ )
70
+
71
+ expect(handler.info.header).toEqual('query GetUser (origin: *)')
72
+ expect(handler.info.operationType).toEqual('query')
73
+ expect(handler.info.operationName).toEqual('GetUser')
74
+ })
75
+
76
+ it('exposes request handler information for mutation', () => {
77
+ const handler = new GraphQLHandler(
78
+ OperationTypeNode.MUTATION,
79
+ 'Login',
80
+ '*',
81
+ resolver,
82
+ )
83
+
84
+ expect(handler.info.header).toEqual('mutation Login (origin: *)')
85
+ expect(handler.info.operationType).toEqual('mutation')
86
+ expect(handler.info.operationName).toEqual('Login')
87
+ })
88
+
89
+ it('parses a query operation name from a given DocumentNode', () => {
90
+ const node = parse(`
91
+ query GetUser {
92
+ user {
93
+ firstName
94
+ }
95
+ }
96
+ `)
97
+
98
+ const handler = new GraphQLHandler(
99
+ OperationTypeNode.QUERY,
100
+ node,
101
+ '*',
102
+ resolver,
103
+ )
104
+
105
+ expect(handler.info).toHaveProperty('header', 'query GetUser (origin: *)')
106
+ expect(handler.info).toHaveProperty('operationType', 'query')
107
+ expect(handler.info).toHaveProperty('operationName', 'GetUser')
108
+ })
109
+
110
+ it('parses a mutation operation name from a given DocumentNode', () => {
111
+ const node = parse(`
112
+ mutation Login {
113
+ user {
114
+ id
115
+ }
116
+ }
117
+ `)
118
+ const handler = new GraphQLHandler(
119
+ OperationTypeNode.MUTATION,
120
+ node,
121
+ '*',
122
+ resolver,
123
+ )
124
+
125
+ expect(handler.info).toHaveProperty('header', 'mutation Login (origin: *)')
126
+ expect(handler.info).toHaveProperty('operationType', 'mutation')
127
+ expect(handler.info).toHaveProperty('operationName', 'Login')
128
+ })
129
+
130
+ it('throws an exception given a DocumentNode with a mismatched operation type', () => {
131
+ const node = parse(`
132
+ mutation CreateUser {
133
+ user {
134
+ firstName
135
+ }
136
+ }
137
+ `)
138
+
139
+ expect(
140
+ () => new GraphQLHandler(OperationTypeNode.QUERY, node, '*', resolver),
141
+ ).toThrow(
142
+ 'Failed to create a GraphQL handler: provided a DocumentNode with a mismatched operation type (expected "query" but got "mutation").',
143
+ )
144
+ })
145
+ })
146
+
147
+ describe('parse', () => {
148
+ describe('query', () => {
149
+ it('parses a query without variables (GET)', async () => {
150
+ const handler = new GraphQLHandler(
151
+ OperationTypeNode.QUERY,
152
+ 'GetUser',
153
+ '*',
154
+ resolver,
155
+ )
156
+ const request = createGetGraphQLRequest({
157
+ query: GET_USER,
158
+ })
159
+
160
+ expect(await handler.parse({ request })).toEqual({
161
+ cookies: {},
162
+ match: {
163
+ matches: true,
164
+ params: {
165
+ '0': 'https://example.com/',
166
+ },
167
+ },
168
+ operationType: 'query',
169
+ operationName: 'GetUser',
170
+ query: GET_USER,
171
+ variables: undefined,
172
+ })
173
+ })
174
+
175
+ it('parses a query with variables (GET)', async () => {
176
+ const handler = new GraphQLHandler(
177
+ OperationTypeNode.QUERY,
178
+ 'GetUser',
179
+ '*',
180
+ resolver,
181
+ )
182
+ const request = createGetGraphQLRequest({
183
+ query: GET_USER,
184
+ variables: {
185
+ userId: 'abc-123',
186
+ },
187
+ })
188
+
189
+ expect(await handler.parse({ request })).toEqual({
190
+ cookies: {},
191
+ match: {
192
+ matches: true,
193
+ params: {
194
+ '0': 'https://example.com/',
195
+ },
196
+ },
197
+ operationType: 'query',
198
+ operationName: 'GetUser',
199
+ query: GET_USER,
200
+ variables: {
201
+ userId: 'abc-123',
202
+ },
203
+ })
204
+ })
205
+
206
+ it('parses a query without variables (POST)', async () => {
207
+ const handler = new GraphQLHandler(
208
+ OperationTypeNode.QUERY,
209
+ 'GetUser',
210
+ '*',
211
+ resolver,
212
+ )
213
+ const request = createPostGraphQLRequest({
214
+ query: GET_USER,
215
+ })
216
+
217
+ expect(await handler.parse({ request })).toEqual({
218
+ cookies: {},
219
+ match: {
220
+ matches: true,
221
+ params: {
222
+ '0': 'https://example.com/',
223
+ },
224
+ },
225
+ operationType: 'query',
226
+ operationName: 'GetUser',
227
+ query: GET_USER,
228
+ variables: undefined,
229
+ })
230
+ })
231
+
232
+ it('parses a query with variables (POST)', async () => {
233
+ const handler = new GraphQLHandler(
234
+ OperationTypeNode.QUERY,
235
+ 'GetUser',
236
+ '*',
237
+ resolver,
238
+ )
239
+ const request = createPostGraphQLRequest({
240
+ query: GET_USER,
241
+ variables: {
242
+ userId: 'abc-123',
243
+ },
244
+ })
245
+
246
+ expect(await handler.parse({ request })).toEqual({
247
+ cookies: {},
248
+ match: {
249
+ matches: true,
250
+ params: {
251
+ '0': 'https://example.com/',
252
+ },
253
+ },
254
+ operationType: 'query',
255
+ operationName: 'GetUser',
256
+ query: GET_USER,
257
+ variables: {
258
+ userId: 'abc-123',
259
+ },
260
+ })
261
+ })
262
+ })
263
+
264
+ describe('mutation', () => {
265
+ it('parses a mutation without variables (GET)', async () => {
266
+ const handler = new GraphQLHandler(
267
+ OperationTypeNode.MUTATION,
268
+ 'GetUser',
269
+ '*',
270
+ resolver,
271
+ )
272
+ const request = createGetGraphQLRequest({
273
+ query: LOGIN,
274
+ })
275
+
276
+ expect(await handler.parse({ request })).toEqual({
277
+ cookies: {},
278
+ match: {
279
+ matches: true,
280
+ params: {
281
+ '0': 'https://example.com/',
282
+ },
283
+ },
284
+ operationType: 'mutation',
285
+ operationName: 'Login',
286
+ query: LOGIN,
287
+ variables: undefined,
288
+ })
289
+ })
290
+
291
+ it('parses a mutation with variables (GET)', async () => {
292
+ const handler = new GraphQLHandler(
293
+ OperationTypeNode.MUTATION,
294
+ 'GetUser',
295
+ '*',
296
+ resolver,
297
+ )
298
+ const request = createGetGraphQLRequest({
299
+ query: LOGIN,
300
+ variables: {
301
+ userId: 'abc-123',
302
+ },
303
+ })
304
+
305
+ expect(await handler.parse({ request })).toEqual({
306
+ cookies: {},
307
+ match: {
308
+ matches: true,
309
+ params: {
310
+ '0': 'https://example.com/',
311
+ },
312
+ },
313
+ operationType: 'mutation',
314
+ operationName: 'Login',
315
+ query: LOGIN,
316
+ variables: {
317
+ userId: 'abc-123',
318
+ },
319
+ })
320
+ })
321
+
322
+ it('parses a mutation without variables (POST)', async () => {
323
+ const handler = new GraphQLHandler(
324
+ OperationTypeNode.MUTATION,
325
+ 'GetUser',
326
+ '*',
327
+ resolver,
328
+ )
329
+ const request = createPostGraphQLRequest({
330
+ query: LOGIN,
331
+ })
332
+
333
+ expect(await handler.parse({ request })).toEqual({
334
+ cookies: {},
335
+ match: {
336
+ matches: true,
337
+ params: {
338
+ '0': 'https://example.com/',
339
+ },
340
+ },
341
+ operationType: 'mutation',
342
+ operationName: 'Login',
343
+ query: LOGIN,
344
+ variables: undefined,
345
+ })
346
+ })
347
+
348
+ it('parses a mutation with variables (POST)', async () => {
349
+ const handler = new GraphQLHandler(
350
+ OperationTypeNode.MUTATION,
351
+ 'GetUser',
352
+ '*',
353
+ resolver,
354
+ )
355
+ const request = createPostGraphQLRequest({
356
+ query: LOGIN,
357
+ variables: {
358
+ userId: 'abc-123',
359
+ },
360
+ })
361
+
362
+ expect(await handler.parse({ request })).toEqual({
363
+ cookies: {},
364
+ match: {
365
+ matches: true,
366
+ params: {
367
+ '0': 'https://example.com/',
368
+ },
369
+ },
370
+ operationType: 'mutation',
371
+ operationName: 'Login',
372
+ query: LOGIN,
373
+ variables: {
374
+ userId: 'abc-123',
375
+ },
376
+ })
377
+ })
378
+ })
379
+
380
+ describe('with endpoint configuration', () => {
381
+ it('parses the request and parses grapqhl properties from it when the graphql.link endpoint matches', async () => {
382
+ const handler = new GraphQLHandler(
383
+ OperationTypeNode.QUERY,
384
+ 'GetUser',
385
+ 'https://mswjs.com/graphql',
386
+ resolver,
387
+ )
388
+
389
+ await expect(
390
+ handler.parse({
391
+ request: createGetGraphQLRequest(
392
+ {
393
+ query: GET_USER,
394
+ variables: {
395
+ userId: 'abc-123',
396
+ },
397
+ },
398
+ 'https://mswjs.com/graphql',
399
+ ),
400
+ }),
401
+ ).resolves.toEqual({
402
+ cookies: {},
403
+ match: {
404
+ matches: true,
405
+ params: {},
406
+ },
407
+ operationType: 'query',
408
+ operationName: 'GetUser',
409
+ query: GET_USER,
410
+ variables: {
411
+ userId: 'abc-123',
412
+ },
413
+ })
414
+
415
+ await expect(
416
+ handler.parse({
417
+ request: createPostGraphQLRequest(
418
+ {
419
+ query: GET_USER,
420
+ variables: {
421
+ userId: 'abc-123',
422
+ },
423
+ },
424
+ 'https://mswjs.com/graphql',
425
+ ),
426
+ }),
427
+ ).resolves.toEqual({
428
+ cookies: {},
429
+ match: {
430
+ matches: true,
431
+ params: {},
432
+ },
433
+ operationType: 'query',
434
+ operationName: 'GetUser',
435
+ query: GET_USER,
436
+ variables: {
437
+ userId: 'abc-123',
438
+ },
439
+ })
440
+ })
441
+
442
+ it('parses a request but does not parse graphql properties from it graphql.link hostname does not match', async () => {
443
+ const handler = new GraphQLHandler(
444
+ OperationTypeNode.QUERY,
445
+ 'GetUser',
446
+ 'https://mswjs.com/graphql',
447
+ resolver,
448
+ )
449
+
450
+ await expect(
451
+ handler.parse({
452
+ request: createGetGraphQLRequest(
453
+ {
454
+ query: GET_USER,
455
+ variables: {
456
+ userId: 'abc-123',
457
+ },
458
+ },
459
+ 'https://example.com/graphql',
460
+ ),
461
+ }),
462
+ ).resolves.toEqual({
463
+ cookies: {},
464
+ match: {
465
+ matches: false,
466
+ params: {},
467
+ },
468
+ })
469
+
470
+ await expect(
471
+ handler.parse({
472
+ request: createPostGraphQLRequest(
473
+ {
474
+ query: GET_USER,
475
+ variables: {
476
+ userId: 'abc-123',
477
+ },
478
+ },
479
+ 'https://example.com/graphql',
480
+ ),
481
+ }),
482
+ ).resolves.toEqual({
483
+ cookies: {},
484
+ match: {
485
+ matches: false,
486
+ params: {},
487
+ },
488
+ })
489
+ })
490
+
491
+ it('parses a request but does not parse graphql properties from it graphql.link pathname does not match', async () => {
492
+ const handler = new GraphQLHandler(
493
+ OperationTypeNode.QUERY,
494
+ 'GetUser',
495
+ 'https://mswjs.com/graphql',
496
+ resolver,
497
+ )
498
+
499
+ await expect(
500
+ handler.parse({
501
+ request: createGetGraphQLRequest(
502
+ {
503
+ query: GET_USER,
504
+ variables: {
505
+ userId: 'abc-123',
506
+ },
507
+ },
508
+ 'https://mswjs.com/some/other/endpoint',
509
+ ),
510
+ }),
511
+ ).resolves.toEqual({
512
+ cookies: {},
513
+ match: {
514
+ matches: false,
515
+ params: {},
516
+ },
517
+ })
518
+
519
+ await expect(
520
+ handler.parse({
521
+ request: createPostGraphQLRequest(
522
+ {
523
+ query: GET_USER,
524
+ variables: {
525
+ userId: 'abc-123',
526
+ },
527
+ },
528
+ 'https://mswjs.com/some/other/endpoint',
529
+ ),
530
+ }),
531
+ ).resolves.toEqual({
532
+ cookies: {},
533
+ match: {
534
+ matches: false,
535
+ params: {},
536
+ },
537
+ })
538
+ })
539
+ })
540
+ })
541
+
542
+ describe('predicate', () => {
543
+ it('respects operation type', async () => {
544
+ const handler = new GraphQLHandler(
545
+ OperationTypeNode.QUERY,
546
+ 'GetUser',
547
+ '*',
548
+ resolver,
549
+ )
550
+ const request = createPostGraphQLRequest({
551
+ query: GET_USER,
552
+ })
553
+ const alienRequest = createPostGraphQLRequest({
554
+ query: LOGIN,
555
+ })
556
+
557
+ expect(
558
+ await handler.predicate({
559
+ request,
560
+ parsedResult: await handler.parse({ request }),
561
+ }),
562
+ ).toBe(true)
563
+ expect(
564
+ await handler.predicate({
565
+ request: alienRequest,
566
+ parsedResult: await handler.parse({ request: alienRequest }),
567
+ }),
568
+ ).toBe(false)
569
+ })
570
+
571
+ it('respects operation name', async () => {
572
+ const handler = new GraphQLHandler(
573
+ OperationTypeNode.QUERY,
574
+ 'GetUser',
575
+ '*',
576
+ resolver,
577
+ )
578
+ const request = createPostGraphQLRequest({
579
+ query: GET_USER,
580
+ })
581
+ const alienRequest = createPostGraphQLRequest({
582
+ query: `
583
+ query GetAllUsers {
584
+ user {
585
+ id
586
+ }
587
+ }
588
+ `,
589
+ })
590
+
591
+ await expect(
592
+ handler.predicate({
593
+ request,
594
+ parsedResult: await handler.parse({ request }),
595
+ }),
596
+ ).resolves.toBe(true)
597
+ await expect(
598
+ handler.predicate({
599
+ request: alienRequest,
600
+ parsedResult: await handler.parse({ request: alienRequest }),
601
+ }),
602
+ ).resolves.toBe(false)
603
+ })
604
+
605
+ it('allows anonymous GraphQL operations when using "all" expected operation type', async () => {
606
+ const handler = new GraphQLHandler('all', new RegExp('.*'), '*', resolver)
607
+ const request = createPostGraphQLRequest({
608
+ query: `
609
+ query {
610
+ anonymousQuery {
611
+ query
612
+ variables
613
+ }
614
+ }
615
+ `,
616
+ })
617
+
618
+ await expect(
619
+ handler.predicate({
620
+ request,
621
+ parsedResult: await handler.parse({ request }),
622
+ }),
623
+ ).resolves.toBe(true)
624
+ })
625
+
626
+ it('respects custom endpoint', async () => {
627
+ const handler = new GraphQLHandler(
628
+ OperationTypeNode.QUERY,
629
+ 'GetUser',
630
+ 'https://api.github.com/graphql',
631
+ resolver,
632
+ )
633
+ const request = createPostGraphQLRequest(
634
+ {
635
+ query: GET_USER,
636
+ },
637
+ 'https://api.github.com/graphql',
638
+ )
639
+ const alienRequest = createPostGraphQLRequest({
640
+ query: GET_USER,
641
+ })
642
+
643
+ await expect(
644
+ handler.predicate({
645
+ request,
646
+ parsedResult: await handler.parse({ request }),
647
+ }),
648
+ ).resolves.toBe(true)
649
+ await expect(
650
+ handler.predicate({
651
+ request: alienRequest,
652
+ parsedResult: await handler.parse({ request: alienRequest }),
653
+ }),
654
+ ).resolves.toBe(false)
655
+ })
656
+
657
+ it('supports custom predicate function', async () => {
658
+ const handler = new GraphQLHandler(
659
+ OperationTypeNode.QUERY,
660
+ ({ query }) => {
661
+ return query.includes('password')
662
+ },
663
+ /.+/,
664
+ resolver,
665
+ )
666
+
667
+ {
668
+ const request = createPostGraphQLRequest({
669
+ query: `query GetUser { user { password } }`,
670
+ })
671
+
672
+ await expect(
673
+ handler.predicate({
674
+ request,
675
+ parsedResult: await handler.parse({ request }),
676
+ }),
677
+ ).resolves.toBe(true)
678
+ }
679
+
680
+ {
681
+ const request = createPostGraphQLRequest({
682
+ query: `query GetUser { user { nonMatching } }`,
683
+ })
684
+
685
+ await expect(
686
+ handler.predicate({
687
+ request,
688
+ parsedResult: await handler.parse({ request }),
689
+ }),
690
+ ).resolves.toBe(false)
691
+ }
692
+ })
693
+ })
694
+
695
+ describe('test', () => {
696
+ it('respects operation type', async () => {
697
+ const handler = new GraphQLHandler(
698
+ OperationTypeNode.QUERY,
699
+ 'GetUser',
700
+ '*',
701
+ resolver,
702
+ )
703
+ const request = createPostGraphQLRequest({
704
+ query: GET_USER,
705
+ })
706
+ const alienRequest = createPostGraphQLRequest({
707
+ query: LOGIN,
708
+ })
709
+
710
+ expect(await handler.test({ request })).toBe(true)
711
+ expect(await handler.test({ request: alienRequest })).toBe(false)
712
+ })
713
+
714
+ it('respects operation name', async () => {
715
+ const handler = new GraphQLHandler(
716
+ OperationTypeNode.QUERY,
717
+ 'GetUser',
718
+ '*',
719
+ resolver,
720
+ )
721
+ const request = createPostGraphQLRequest({
722
+ query: GET_USER,
723
+ })
724
+ const alienRequest = createPostGraphQLRequest({
725
+ query: `
726
+ query GetAllUsers {
727
+ user {
728
+ id
729
+ }
730
+ }
731
+ `,
732
+ })
733
+
734
+ await expect(handler.test({ request })).resolves.toBe(true)
735
+ await expect(handler.test({ request: alienRequest })).resolves.toBe(false)
736
+ })
737
+
738
+ it('respects custom endpoint', async () => {
739
+ const handler = new GraphQLHandler(
740
+ OperationTypeNode.QUERY,
741
+ 'GetUser',
742
+ 'https://api.github.com/graphql',
743
+ resolver,
744
+ )
745
+ const request = createPostGraphQLRequest(
746
+ {
747
+ query: GET_USER,
748
+ },
749
+ 'https://api.github.com/graphql',
750
+ )
751
+ const alienRequest = createPostGraphQLRequest({
752
+ query: GET_USER,
753
+ })
754
+
755
+ await expect(handler.test({ request })).resolves.toBe(true)
756
+ await expect(handler.test({ request: alienRequest })).resolves.toBe(false)
757
+ })
758
+ })
759
+
760
+ describe('run', () => {
761
+ it('returns a mocked response given a matching query', async () => {
762
+ const handler = new GraphQLHandler(
763
+ OperationTypeNode.QUERY,
764
+ 'GetUser',
765
+ '*',
766
+ resolver,
767
+ )
768
+ const request = createPostGraphQLRequest({
769
+ query: GET_USER,
770
+ variables: {
771
+ userId: 'abc-123',
772
+ },
773
+ })
774
+ const requestId = createRequestId()
775
+ const result = await handler.run({ request, requestId })
776
+
777
+ expect(result!.handler).toEqual(handler)
778
+ expect(result!.parsedResult).toEqual({
779
+ cookies: {},
780
+ match: {
781
+ matches: true,
782
+ params: {
783
+ '0': 'https://example.com/',
784
+ },
785
+ },
786
+ operationType: 'query',
787
+ operationName: 'GetUser',
788
+ query: GET_USER,
789
+ variables: {
790
+ userId: 'abc-123',
791
+ },
792
+ })
793
+ expect(result!.request.method).toBe('POST')
794
+ expect(result!.request.url).toBe('https://example.com/')
795
+ await expect(result!.request.json()).resolves.toEqual({
796
+ query: GET_USER,
797
+ variables: { userId: 'abc-123' },
798
+ })
799
+ expect(result!.response?.status).toBe(200)
800
+ expect(result!.response?.statusText).toBe('OK')
801
+ await expect(result!.response?.json()).resolves.toEqual({
802
+ data: { user: { id: 'abc-123' } },
803
+ })
804
+ })
805
+
806
+ it('returns null given a non-matching query', async () => {
807
+ const handler = new GraphQLHandler(
808
+ OperationTypeNode.QUERY,
809
+ 'GetUser',
810
+ '*',
811
+ resolver,
812
+ )
813
+ const request = createPostGraphQLRequest({
814
+ query: LOGIN,
815
+ })
816
+ const requestId = createRequestId()
817
+ const result = await handler.run({ request, requestId })
818
+
819
+ expect(result).toBeNull()
820
+ })
821
+ })
822
+
823
+ describe('isDocumentNode', () => {
824
+ it('returns true given a valid DocumentNode', () => {
825
+ const node = parse(`
826
+ query GetUser {
827
+ user {
828
+ login
829
+ }
830
+ }
831
+ `)
832
+
833
+ expect(isDocumentNode(node)).toEqual(true)
834
+ })
835
+
836
+ it('returns false given an arbitrary input', () => {
837
+ expect(isDocumentNode(null)).toEqual(false)
838
+ expect(isDocumentNode(undefined)).toEqual(false)
839
+ expect(isDocumentNode('')).toEqual(false)
840
+ expect(isDocumentNode('value')).toEqual(false)
841
+ expect(isDocumentNode(/value/)).toEqual(false)
842
+ })
843
+ })
844
+
845
+ describe('request', () => {
846
+ it('has parsed operationName', async () => {
847
+ const matchAllResolver = vi.fn()
848
+ const handler = new GraphQLHandler(
849
+ OperationTypeNode.QUERY,
850
+ /.*/,
851
+ '*',
852
+ matchAllResolver,
853
+ )
854
+ const request = createPostGraphQLRequest({
855
+ query: `
856
+ query GetAllUsers {
857
+ user {
858
+ id
859
+ }
860
+ }
861
+ `,
862
+ })
863
+
864
+ const requestId = createRequestId()
865
+ await handler.run({ request, requestId })
866
+
867
+ expect(matchAllResolver).toHaveBeenCalledTimes(1)
868
+ expect(matchAllResolver.mock.calls[0][0]).toHaveProperty(
869
+ 'operationName',
870
+ 'GetAllUsers',
871
+ )
872
+ })
873
+ })