@copilotkit/aimock 1.11.0 → 1.13.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 (289) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/README.md +24 -4
  4. package/dist/_virtual/_rolldown/runtime.cjs +2 -0
  5. package/dist/_virtual/_rolldown/runtime.js +29 -0
  6. package/dist/agui-types.d.cts.map +1 -1
  7. package/dist/aimock-cli.cjs +16 -0
  8. package/dist/aimock-cli.cjs.map +1 -1
  9. package/dist/aimock-cli.d.cts +2 -0
  10. package/dist/aimock-cli.d.cts.map +1 -1
  11. package/dist/aimock-cli.d.ts +2 -0
  12. package/dist/aimock-cli.d.ts.map +1 -1
  13. package/dist/aimock-cli.js +16 -0
  14. package/dist/aimock-cli.js.map +1 -1
  15. package/dist/bedrock-converse.cjs +2 -0
  16. package/dist/bedrock-converse.cjs.map +1 -1
  17. package/dist/bedrock-converse.d.cts.map +1 -1
  18. package/dist/bedrock-converse.d.ts.map +1 -1
  19. package/dist/bedrock-converse.js +2 -0
  20. package/dist/bedrock-converse.js.map +1 -1
  21. package/dist/bedrock.cjs +2 -0
  22. package/dist/bedrock.cjs.map +1 -1
  23. package/dist/bedrock.d.cts.map +1 -1
  24. package/dist/bedrock.d.ts.map +1 -1
  25. package/dist/bedrock.js +2 -0
  26. package/dist/bedrock.js.map +1 -1
  27. package/dist/cohere.cjs +1 -0
  28. package/dist/cohere.cjs.map +1 -1
  29. package/dist/cohere.js +1 -0
  30. package/dist/cohere.js.map +1 -1
  31. package/dist/config-loader.d.cts.map +1 -1
  32. package/dist/convert-mockllm.cjs +232 -0
  33. package/dist/convert-mockllm.cjs.map +1 -0
  34. package/dist/convert-mockllm.js +230 -0
  35. package/dist/convert-mockllm.js.map +1 -0
  36. package/dist/convert-vidaimock.cjs +110 -0
  37. package/dist/convert-vidaimock.cjs.map +1 -0
  38. package/dist/convert-vidaimock.js +108 -0
  39. package/dist/convert-vidaimock.js.map +1 -0
  40. package/dist/convert.cjs +158 -0
  41. package/dist/convert.cjs.map +1 -0
  42. package/dist/convert.d.cts +16 -0
  43. package/dist/convert.d.cts.map +1 -0
  44. package/dist/convert.d.ts +16 -0
  45. package/dist/convert.d.ts.map +1 -0
  46. package/dist/convert.js +157 -0
  47. package/dist/convert.js.map +1 -0
  48. package/dist/embeddings.cjs +2 -1
  49. package/dist/embeddings.cjs.map +1 -1
  50. package/dist/embeddings.js +2 -1
  51. package/dist/embeddings.js.map +1 -1
  52. package/dist/gemini.cjs +1 -0
  53. package/dist/gemini.cjs.map +1 -1
  54. package/dist/gemini.js +1 -0
  55. package/dist/gemini.js.map +1 -1
  56. package/dist/helpers.cjs +16 -0
  57. package/dist/helpers.cjs.map +1 -1
  58. package/dist/helpers.d.cts +6 -2
  59. package/dist/helpers.d.cts.map +1 -1
  60. package/dist/helpers.d.ts +6 -2
  61. package/dist/helpers.d.ts.map +1 -1
  62. package/dist/helpers.js +13 -1
  63. package/dist/helpers.js.map +1 -1
  64. package/dist/images.cjs +166 -0
  65. package/dist/images.cjs.map +1 -0
  66. package/dist/images.d.cts +11 -0
  67. package/dist/images.d.cts.map +1 -0
  68. package/dist/images.d.ts +11 -0
  69. package/dist/images.d.ts.map +1 -0
  70. package/dist/images.js +166 -0
  71. package/dist/images.js.map +1 -0
  72. package/dist/index.cjs +13 -0
  73. package/dist/index.d.cts +7 -3
  74. package/dist/index.d.ts +7 -3
  75. package/dist/index.js +6 -2
  76. package/dist/jest.cjs +70 -0
  77. package/dist/jest.cjs.map +1 -0
  78. package/dist/jest.d.cts +33 -0
  79. package/dist/jest.d.cts.map +1 -0
  80. package/dist/jest.d.ts +33 -0
  81. package/dist/jest.d.ts.map +1 -0
  82. package/dist/jest.js +67 -0
  83. package/dist/jest.js.map +1 -0
  84. package/dist/llmock.cjs +37 -1
  85. package/dist/llmock.cjs.map +1 -1
  86. package/dist/llmock.d.cts +5 -1
  87. package/dist/llmock.d.cts.map +1 -1
  88. package/dist/llmock.d.ts +5 -1
  89. package/dist/llmock.d.ts.map +1 -1
  90. package/dist/llmock.js +37 -1
  91. package/dist/llmock.js.map +1 -1
  92. package/dist/messages.cjs +1 -0
  93. package/dist/messages.cjs.map +1 -1
  94. package/dist/messages.js +1 -0
  95. package/dist/messages.js.map +1 -1
  96. package/dist/node_modules/.pnpm/@vitest_pretty-format@3.2.4/node_modules/@vitest/pretty-format/dist/index.cjs +934 -0
  97. package/dist/node_modules/.pnpm/@vitest_pretty-format@3.2.4/node_modules/@vitest/pretty-format/dist/index.cjs.map +1 -0
  98. package/dist/node_modules/.pnpm/@vitest_pretty-format@3.2.4/node_modules/@vitest/pretty-format/dist/index.js +934 -0
  99. package/dist/node_modules/.pnpm/@vitest_pretty-format@3.2.4/node_modules/@vitest/pretty-format/dist/index.js.map +1 -0
  100. package/dist/node_modules/.pnpm/@vitest_runner@3.2.4/node_modules/@vitest/runner/dist/chunk-hooks.cjs +1051 -0
  101. package/dist/node_modules/.pnpm/@vitest_runner@3.2.4/node_modules/@vitest/runner/dist/chunk-hooks.cjs.map +1 -0
  102. package/dist/node_modules/.pnpm/@vitest_runner@3.2.4/node_modules/@vitest/runner/dist/chunk-hooks.js +1042 -0
  103. package/dist/node_modules/.pnpm/@vitest_runner@3.2.4/node_modules/@vitest/runner/dist/chunk-hooks.js.map +1 -0
  104. package/dist/node_modules/.pnpm/@vitest_runner@3.2.4/node_modules/@vitest/runner/dist/index.cjs +1 -0
  105. package/dist/node_modules/.pnpm/@vitest_runner@3.2.4/node_modules/@vitest/runner/dist/index.js +3 -0
  106. package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/chunk-_commonjsHelpers.cjs +96 -0
  107. package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/chunk-_commonjsHelpers.cjs.map +1 -0
  108. package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/chunk-_commonjsHelpers.js +93 -0
  109. package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/chunk-_commonjsHelpers.js.map +1 -0
  110. package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/helpers.cjs +49 -0
  111. package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/helpers.cjs.map +1 -0
  112. package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/helpers.js +43 -0
  113. package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/helpers.js.map +1 -0
  114. package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/index.cjs +456 -0
  115. package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/index.cjs.map +1 -0
  116. package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/index.js +456 -0
  117. package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/index.js.map +1 -0
  118. package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/source-map.cjs +170 -0
  119. package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/source-map.cjs.map +1 -0
  120. package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/source-map.js +169 -0
  121. package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/source-map.js.map +1 -0
  122. package/dist/node_modules/.pnpm/js-tokens@9.0.1/node_modules/js-tokens/index.cjs +388 -0
  123. package/dist/node_modules/.pnpm/js-tokens@9.0.1/node_modules/js-tokens/index.cjs.map +1 -0
  124. package/dist/node_modules/.pnpm/js-tokens@9.0.1/node_modules/js-tokens/index.js +385 -0
  125. package/dist/node_modules/.pnpm/js-tokens@9.0.1/node_modules/js-tokens/index.js.map +1 -0
  126. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/arguments.cjs +12 -0
  127. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/arguments.cjs.map +1 -0
  128. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/arguments.js +12 -0
  129. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/arguments.js.map +1 -0
  130. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/array.cjs +17 -0
  131. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/array.cjs.map +1 -0
  132. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/array.js +17 -0
  133. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/array.js.map +1 -0
  134. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/bigint.cjs +12 -0
  135. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/bigint.cjs.map +1 -0
  136. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/bigint.js +12 -0
  137. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/bigint.js.map +1 -0
  138. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/class.cjs +16 -0
  139. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/class.cjs.map +1 -0
  140. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/class.js +16 -0
  141. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/class.js.map +1 -0
  142. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/date.cjs +14 -0
  143. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/date.cjs.map +1 -0
  144. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/date.js +14 -0
  145. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/date.js.map +1 -0
  146. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/error.cjs +35 -0
  147. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/error.cjs.map +1 -0
  148. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/error.js +35 -0
  149. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/error.js.map +1 -0
  150. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/function.cjs +13 -0
  151. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/function.cjs.map +1 -0
  152. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/function.js +13 -0
  153. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/function.js.map +1 -0
  154. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/helpers.cjs +128 -0
  155. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/helpers.cjs.map +1 -0
  156. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/helpers.js +123 -0
  157. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/helpers.js.map +1 -0
  158. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/html.cjs +41 -0
  159. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/html.cjs.map +1 -0
  160. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/html.js +40 -0
  161. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/html.js.map +1 -0
  162. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/index.cjs +100 -0
  163. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/index.cjs.map +1 -0
  164. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/index.js +100 -0
  165. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/index.js.map +1 -0
  166. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/map.cjs +26 -0
  167. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/map.cjs.map +1 -0
  168. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/map.js +26 -0
  169. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/map.js.map +1 -0
  170. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/number.cjs +15 -0
  171. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/number.cjs.map +1 -0
  172. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/number.js +15 -0
  173. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/number.js.map +1 -0
  174. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/object.cjs +22 -0
  175. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/object.cjs.map +1 -0
  176. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/object.js +22 -0
  177. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/object.js.map +1 -0
  178. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/promise.cjs +7 -0
  179. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/promise.cjs.map +1 -0
  180. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/promise.js +6 -0
  181. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/promise.js.map +1 -0
  182. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/regexp.cjs +13 -0
  183. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/regexp.cjs.map +1 -0
  184. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/regexp.js +13 -0
  185. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/regexp.js.map +1 -0
  186. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/set.cjs +19 -0
  187. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/set.cjs.map +1 -0
  188. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/set.js +19 -0
  189. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/set.js.map +1 -0
  190. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/string.cjs +26 -0
  191. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/string.cjs.map +1 -0
  192. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/string.js +26 -0
  193. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/string.js.map +1 -0
  194. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/symbol.cjs +10 -0
  195. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/symbol.cjs.map +1 -0
  196. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/symbol.js +9 -0
  197. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/symbol.js.map +1 -0
  198. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/typedarray.cjs +31 -0
  199. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/typedarray.cjs.map +1 -0
  200. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/typedarray.js +31 -0
  201. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/typedarray.js.map +1 -0
  202. package/dist/node_modules/.pnpm/strip-literal@3.1.0/node_modules/strip-literal/dist/index.cjs +52 -0
  203. package/dist/node_modules/.pnpm/strip-literal@3.1.0/node_modules/strip-literal/dist/index.cjs.map +1 -0
  204. package/dist/node_modules/.pnpm/strip-literal@3.1.0/node_modules/strip-literal/dist/index.js +52 -0
  205. package/dist/node_modules/.pnpm/strip-literal@3.1.0/node_modules/strip-literal/dist/index.js.map +1 -0
  206. package/dist/node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/chunk-BVHSVHOK.cjs +83 -0
  207. package/dist/node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/chunk-BVHSVHOK.cjs.map +1 -0
  208. package/dist/node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/chunk-BVHSVHOK.js +82 -0
  209. package/dist/node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/chunk-BVHSVHOK.js.map +1 -0
  210. package/dist/node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/node.cjs +10 -0
  211. package/dist/node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/node.cjs.map +1 -0
  212. package/dist/node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/node.js +10 -0
  213. package/dist/node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/node.js.map +1 -0
  214. package/dist/ollama.cjs +2 -0
  215. package/dist/ollama.cjs.map +1 -1
  216. package/dist/ollama.d.cts.map +1 -1
  217. package/dist/ollama.d.ts.map +1 -1
  218. package/dist/ollama.js +2 -0
  219. package/dist/ollama.js.map +1 -1
  220. package/dist/recorder.cjs +50 -7
  221. package/dist/recorder.cjs.map +1 -1
  222. package/dist/recorder.js +50 -7
  223. package/dist/recorder.js.map +1 -1
  224. package/dist/responses.cjs +1 -0
  225. package/dist/responses.cjs.map +1 -1
  226. package/dist/responses.js +1 -0
  227. package/dist/responses.js.map +1 -1
  228. package/dist/router.cjs +8 -0
  229. package/dist/router.cjs.map +1 -1
  230. package/dist/router.d.cts.map +1 -1
  231. package/dist/router.d.ts.map +1 -1
  232. package/dist/router.js +9 -0
  233. package/dist/router.js.map +1 -1
  234. package/dist/server.cjs +80 -3
  235. package/dist/server.cjs.map +1 -1
  236. package/dist/server.d.cts +2 -0
  237. package/dist/server.d.cts.map +1 -1
  238. package/dist/server.d.ts +2 -0
  239. package/dist/server.d.ts.map +1 -1
  240. package/dist/server.js +80 -3
  241. package/dist/server.js.map +1 -1
  242. package/dist/speech.cjs +144 -0
  243. package/dist/speech.cjs.map +1 -0
  244. package/dist/speech.d.cts +11 -0
  245. package/dist/speech.d.cts.map +1 -0
  246. package/dist/speech.d.ts +11 -0
  247. package/dist/speech.d.ts.map +1 -0
  248. package/dist/speech.js +144 -0
  249. package/dist/speech.js.map +1 -0
  250. package/dist/transcription.cjs +134 -0
  251. package/dist/transcription.cjs.map +1 -0
  252. package/dist/transcription.d.cts +11 -0
  253. package/dist/transcription.d.cts.map +1 -0
  254. package/dist/transcription.d.ts +11 -0
  255. package/dist/transcription.d.ts.map +1 -0
  256. package/dist/transcription.js +134 -0
  257. package/dist/transcription.js.map +1 -0
  258. package/dist/types.d.cts +44 -2
  259. package/dist/types.d.cts.map +1 -1
  260. package/dist/types.d.ts +44 -2
  261. package/dist/types.d.ts.map +1 -1
  262. package/dist/video.cjs +196 -0
  263. package/dist/video.cjs.map +1 -0
  264. package/dist/video.d.cts +14 -0
  265. package/dist/video.d.cts.map +1 -0
  266. package/dist/video.d.ts +14 -0
  267. package/dist/video.d.ts.map +1 -0
  268. package/dist/video.js +195 -0
  269. package/dist/video.js.map +1 -0
  270. package/dist/vitest.cjs +80 -0
  271. package/dist/vitest.cjs.map +1 -0
  272. package/dist/vitest.d.cts +30 -0
  273. package/dist/vitest.d.cts.map +1 -0
  274. package/dist/vitest.d.ts +30 -0
  275. package/dist/vitest.d.ts.map +1 -0
  276. package/dist/vitest.js +77 -0
  277. package/dist/vitest.js.map +1 -0
  278. package/fixtures/examples/a2a/a2a-config.json +42 -0
  279. package/fixtures/examples/agui/agui-text-response.json +35 -0
  280. package/fixtures/examples/chaos/chaos-config.json +10 -0
  281. package/fixtures/examples/full-suite.json +116 -0
  282. package/fixtures/examples/llm/embeddings.json +10 -0
  283. package/fixtures/examples/llm/error-injection.json +15 -0
  284. package/fixtures/examples/llm/sequential-responses.json +20 -0
  285. package/fixtures/examples/llm/streaming-physics.json +15 -0
  286. package/fixtures/examples/mcp/mcp-config.json +26 -0
  287. package/fixtures/examples/record-replay/record-config.json +11 -0
  288. package/fixtures/examples/vector/vector-config.json +34 -0
  289. package/package.json +60 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-hooks.cjs","names":["isObject","createDefer","stripLiteral","toArray","isNegativeNaN","format","objectAttr","objDisplay","parseSingleStack","getSafeTimers"],"sources":["../../../../../../../../node_modules/.pnpm/@vitest+runner@3.2.4/node_modules/@vitest/runner/dist/chunk-hooks.js"],"sourcesContent":["import { isObject, createDefer, toArray, isNegativeNaN, format, objectAttr, objDisplay, getSafeTimers, shuffle, assertTypes } from '@vitest/utils';\nimport { parseSingleStack } from '@vitest/utils/source-map';\nimport { processError } from '@vitest/utils/error';\nimport { stripLiteral } from 'strip-literal';\nimport { relative } from 'pathe';\n\nclass PendingError extends Error {\n\tcode = \"VITEST_PENDING\";\n\ttaskId;\n\tconstructor(message, task, note) {\n\t\tsuper(message);\n\t\tthis.message = message;\n\t\tthis.note = note;\n\t\tthis.taskId = task.id;\n\t}\n}\nclass TestRunAbortError extends Error {\n\tname = \"TestRunAbortError\";\n\treason;\n\tconstructor(message, reason) {\n\t\tsuper(message);\n\t\tthis.reason = reason;\n\t}\n}\n\n// use WeakMap here to make the Test and Suite object serializable\nconst fnMap = new WeakMap();\nconst testFixtureMap = new WeakMap();\nconst hooksMap = new WeakMap();\nfunction setFn(key, fn) {\n\tfnMap.set(key, fn);\n}\nfunction getFn(key) {\n\treturn fnMap.get(key);\n}\nfunction setTestFixture(key, fixture) {\n\ttestFixtureMap.set(key, fixture);\n}\nfunction getTestFixture(key) {\n\treturn testFixtureMap.get(key);\n}\nfunction setHooks(key, hooks) {\n\thooksMap.set(key, hooks);\n}\nfunction getHooks(key) {\n\treturn hooksMap.get(key);\n}\n\nasync function runSetupFiles(config, files, runner) {\n\tif (config.sequence.setupFiles === \"parallel\") {\n\t\tawait Promise.all(files.map(async (fsPath) => {\n\t\t\tawait runner.importFile(fsPath, \"setup\");\n\t\t}));\n\t} else {\n\t\tfor (const fsPath of files) {\n\t\t\tawait runner.importFile(fsPath, \"setup\");\n\t\t}\n\t}\n}\n\nfunction mergeScopedFixtures(testFixtures, scopedFixtures) {\n\tconst scopedFixturesMap = scopedFixtures.reduce((map, fixture) => {\n\t\tmap[fixture.prop] = fixture;\n\t\treturn map;\n\t}, {});\n\tconst newFixtures = {};\n\ttestFixtures.forEach((fixture) => {\n\t\tconst useFixture = scopedFixturesMap[fixture.prop] || { ...fixture };\n\t\tnewFixtures[useFixture.prop] = useFixture;\n\t});\n\tfor (const fixtureKep in newFixtures) {\n\t\tvar _fixture$deps;\n\t\tconst fixture = newFixtures[fixtureKep];\n\t\t// if the fixture was define before the scope, then its dep\n\t\t// will reference the original fixture instead of the scope\n\t\tfixture.deps = (_fixture$deps = fixture.deps) === null || _fixture$deps === void 0 ? void 0 : _fixture$deps.map((dep) => newFixtures[dep.prop]);\n\t}\n\treturn Object.values(newFixtures);\n}\nfunction mergeContextFixtures(fixtures, context, runner) {\n\tconst fixtureOptionKeys = [\n\t\t\"auto\",\n\t\t\"injected\",\n\t\t\"scope\"\n\t];\n\tconst fixtureArray = Object.entries(fixtures).map(([prop, value]) => {\n\t\tconst fixtureItem = { value };\n\t\tif (Array.isArray(value) && value.length >= 2 && isObject(value[1]) && Object.keys(value[1]).some((key) => fixtureOptionKeys.includes(key))) {\n\t\t\tvar _runner$injectValue;\n\t\t\t// fixture with options\n\t\t\tObject.assign(fixtureItem, value[1]);\n\t\t\tconst userValue = value[0];\n\t\t\tfixtureItem.value = fixtureItem.injected ? ((_runner$injectValue = runner.injectValue) === null || _runner$injectValue === void 0 ? void 0 : _runner$injectValue.call(runner, prop)) ?? userValue : userValue;\n\t\t}\n\t\tfixtureItem.scope = fixtureItem.scope || \"test\";\n\t\tif (fixtureItem.scope === \"worker\" && !runner.getWorkerContext) {\n\t\t\tfixtureItem.scope = \"file\";\n\t\t}\n\t\tfixtureItem.prop = prop;\n\t\tfixtureItem.isFn = typeof fixtureItem.value === \"function\";\n\t\treturn fixtureItem;\n\t});\n\tif (Array.isArray(context.fixtures)) {\n\t\tcontext.fixtures = context.fixtures.concat(fixtureArray);\n\t} else {\n\t\tcontext.fixtures = fixtureArray;\n\t}\n\t// Update dependencies of fixture functions\n\tfixtureArray.forEach((fixture) => {\n\t\tif (fixture.isFn) {\n\t\t\tconst usedProps = getUsedProps(fixture.value);\n\t\t\tif (usedProps.length) {\n\t\t\t\tfixture.deps = context.fixtures.filter(({ prop }) => prop !== fixture.prop && usedProps.includes(prop));\n\t\t\t}\n\t\t\t// test can access anything, so we ignore it\n\t\t\tif (fixture.scope !== \"test\") {\n\t\t\t\tvar _fixture$deps2;\n\t\t\t\t(_fixture$deps2 = fixture.deps) === null || _fixture$deps2 === void 0 ? void 0 : _fixture$deps2.forEach((dep) => {\n\t\t\t\t\tif (!dep.isFn) {\n\t\t\t\t\t\t// non fn fixtures are always resolved and available to anyone\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t// worker scope can only import from worker scope\n\t\t\t\t\tif (fixture.scope === \"worker\" && dep.scope === \"worker\") {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t// file scope an import from file and worker scopes\n\t\t\t\t\tif (fixture.scope === \"file\" && dep.scope !== \"test\") {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthrow new SyntaxError(`cannot use the ${dep.scope} fixture \"${dep.prop}\" inside the ${fixture.scope} fixture \"${fixture.prop}\"`);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n\treturn context;\n}\nconst fixtureValueMaps = new Map();\nconst cleanupFnArrayMap = new Map();\nasync function callFixtureCleanup(context) {\n\tconst cleanupFnArray = cleanupFnArrayMap.get(context) ?? [];\n\tfor (const cleanup of cleanupFnArray.reverse()) {\n\t\tawait cleanup();\n\t}\n\tcleanupFnArrayMap.delete(context);\n}\nfunction withFixtures(runner, fn, testContext) {\n\treturn (hookContext) => {\n\t\tconst context = hookContext || testContext;\n\t\tif (!context) {\n\t\t\treturn fn({});\n\t\t}\n\t\tconst fixtures = getTestFixture(context);\n\t\tif (!(fixtures === null || fixtures === void 0 ? void 0 : fixtures.length)) {\n\t\t\treturn fn(context);\n\t\t}\n\t\tconst usedProps = getUsedProps(fn);\n\t\tconst hasAutoFixture = fixtures.some(({ auto }) => auto);\n\t\tif (!usedProps.length && !hasAutoFixture) {\n\t\t\treturn fn(context);\n\t\t}\n\t\tif (!fixtureValueMaps.get(context)) {\n\t\t\tfixtureValueMaps.set(context, new Map());\n\t\t}\n\t\tconst fixtureValueMap = fixtureValueMaps.get(context);\n\t\tif (!cleanupFnArrayMap.has(context)) {\n\t\t\tcleanupFnArrayMap.set(context, []);\n\t\t}\n\t\tconst cleanupFnArray = cleanupFnArrayMap.get(context);\n\t\tconst usedFixtures = fixtures.filter(({ prop, auto }) => auto || usedProps.includes(prop));\n\t\tconst pendingFixtures = resolveDeps(usedFixtures);\n\t\tif (!pendingFixtures.length) {\n\t\t\treturn fn(context);\n\t\t}\n\t\tasync function resolveFixtures() {\n\t\t\tfor (const fixture of pendingFixtures) {\n\t\t\t\t// fixture could be already initialized during \"before\" hook\n\t\t\t\tif (fixtureValueMap.has(fixture)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst resolvedValue = await resolveFixtureValue(runner, fixture, context, cleanupFnArray);\n\t\t\t\tcontext[fixture.prop] = resolvedValue;\n\t\t\t\tfixtureValueMap.set(fixture, resolvedValue);\n\t\t\t\tif (fixture.scope === \"test\") {\n\t\t\t\t\tcleanupFnArray.unshift(() => {\n\t\t\t\t\t\tfixtureValueMap.delete(fixture);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn resolveFixtures().then(() => fn(context));\n\t};\n}\nconst globalFixturePromise = new WeakMap();\nfunction resolveFixtureValue(runner, fixture, context, cleanupFnArray) {\n\tvar _runner$getWorkerCont;\n\tconst fileContext = getFileContext(context.task.file);\n\tconst workerContext = (_runner$getWorkerCont = runner.getWorkerContext) === null || _runner$getWorkerCont === void 0 ? void 0 : _runner$getWorkerCont.call(runner);\n\tif (!fixture.isFn) {\n\t\tvar _fixture$prop;\n\t\tfileContext[_fixture$prop = fixture.prop] ?? (fileContext[_fixture$prop] = fixture.value);\n\t\tif (workerContext) {\n\t\t\tvar _fixture$prop2;\n\t\t\tworkerContext[_fixture$prop2 = fixture.prop] ?? (workerContext[_fixture$prop2] = fixture.value);\n\t\t}\n\t\treturn fixture.value;\n\t}\n\tif (fixture.scope === \"test\") {\n\t\treturn resolveFixtureFunction(fixture.value, context, cleanupFnArray);\n\t}\n\t// in case the test runs in parallel\n\tif (globalFixturePromise.has(fixture)) {\n\t\treturn globalFixturePromise.get(fixture);\n\t}\n\tlet fixtureContext;\n\tif (fixture.scope === \"worker\") {\n\t\tif (!workerContext) {\n\t\t\tthrow new TypeError(\"[@vitest/runner] The worker context is not available in the current test runner. Please, provide the `getWorkerContext` method when initiating the runner.\");\n\t\t}\n\t\tfixtureContext = workerContext;\n\t} else {\n\t\tfixtureContext = fileContext;\n\t}\n\tif (fixture.prop in fixtureContext) {\n\t\treturn fixtureContext[fixture.prop];\n\t}\n\tif (!cleanupFnArrayMap.has(fixtureContext)) {\n\t\tcleanupFnArrayMap.set(fixtureContext, []);\n\t}\n\tconst cleanupFnFileArray = cleanupFnArrayMap.get(fixtureContext);\n\tconst promise = resolveFixtureFunction(fixture.value, fixtureContext, cleanupFnFileArray).then((value) => {\n\t\tfixtureContext[fixture.prop] = value;\n\t\tglobalFixturePromise.delete(fixture);\n\t\treturn value;\n\t});\n\tglobalFixturePromise.set(fixture, promise);\n\treturn promise;\n}\nasync function resolveFixtureFunction(fixtureFn, context, cleanupFnArray) {\n\t// wait for `use` call to extract fixture value\n\tconst useFnArgPromise = createDefer();\n\tlet isUseFnArgResolved = false;\n\tconst fixtureReturn = fixtureFn(context, async (useFnArg) => {\n\t\t// extract `use` argument\n\t\tisUseFnArgResolved = true;\n\t\tuseFnArgPromise.resolve(useFnArg);\n\t\t// suspend fixture teardown by holding off `useReturnPromise` resolution until cleanup\n\t\tconst useReturnPromise = createDefer();\n\t\tcleanupFnArray.push(async () => {\n\t\t\t// start teardown by resolving `use` Promise\n\t\t\tuseReturnPromise.resolve();\n\t\t\t// wait for finishing teardown\n\t\t\tawait fixtureReturn;\n\t\t});\n\t\tawait useReturnPromise;\n\t}).catch((e) => {\n\t\t// treat fixture setup error as test failure\n\t\tif (!isUseFnArgResolved) {\n\t\t\tuseFnArgPromise.reject(e);\n\t\t\treturn;\n\t\t}\n\t\t// otherwise re-throw to avoid silencing error during cleanup\n\t\tthrow e;\n\t});\n\treturn useFnArgPromise;\n}\nfunction resolveDeps(fixtures, depSet = new Set(), pendingFixtures = []) {\n\tfixtures.forEach((fixture) => {\n\t\tif (pendingFixtures.includes(fixture)) {\n\t\t\treturn;\n\t\t}\n\t\tif (!fixture.isFn || !fixture.deps) {\n\t\t\tpendingFixtures.push(fixture);\n\t\t\treturn;\n\t\t}\n\t\tif (depSet.has(fixture)) {\n\t\t\tthrow new Error(`Circular fixture dependency detected: ${fixture.prop} <- ${[...depSet].reverse().map((d) => d.prop).join(\" <- \")}`);\n\t\t}\n\t\tdepSet.add(fixture);\n\t\tresolveDeps(fixture.deps, depSet, pendingFixtures);\n\t\tpendingFixtures.push(fixture);\n\t\tdepSet.clear();\n\t});\n\treturn pendingFixtures;\n}\nfunction getUsedProps(fn) {\n\tlet fnString = stripLiteral(fn.toString());\n\t// match lowered async function and strip it off\n\t// example code on esbuild-try https://esbuild.github.io/try/#YgAwLjI0LjAALS1zdXBwb3J0ZWQ6YXN5bmMtYXdhaXQ9ZmFsc2UAZQBlbnRyeS50cwBjb25zdCBvID0gewogIGYxOiBhc3luYyAoKSA9PiB7fSwKICBmMjogYXN5bmMgKGEpID0+IHt9LAogIGYzOiBhc3luYyAoYSwgYikgPT4ge30sCiAgZjQ6IGFzeW5jIGZ1bmN0aW9uKGEpIHt9LAogIGY1OiBhc3luYyBmdW5jdGlvbiBmZihhKSB7fSwKICBhc3luYyBmNihhKSB7fSwKCiAgZzE6IGFzeW5jICgpID0+IHt9LAogIGcyOiBhc3luYyAoeyBhIH0pID0+IHt9LAogIGczOiBhc3luYyAoeyBhIH0sIGIpID0+IHt9LAogIGc0OiBhc3luYyBmdW5jdGlvbiAoeyBhIH0pIHt9LAogIGc1OiBhc3luYyBmdW5jdGlvbiBnZyh7IGEgfSkge30sCiAgYXN5bmMgZzYoeyBhIH0pIHt9LAoKICBoMTogYXN5bmMgKCkgPT4ge30sCiAgLy8gY29tbWVudCBiZXR3ZWVuCiAgaDI6IGFzeW5jIChhKSA9PiB7fSwKfQ\n\t// __async(this, null, function*\n\t// __async(this, arguments, function*\n\t// __async(this, [_0, _1], function*\n\tif (/__async\\((?:this|null), (?:null|arguments|\\[[_0-9, ]*\\]), function\\*/.test(fnString)) {\n\t\tfnString = fnString.split(/__async\\((?:this|null),/)[1];\n\t}\n\tconst match = fnString.match(/[^(]*\\(([^)]*)/);\n\tif (!match) {\n\t\treturn [];\n\t}\n\tconst args = splitByComma(match[1]);\n\tif (!args.length) {\n\t\treturn [];\n\t}\n\tlet first = args[0];\n\tif (\"__VITEST_FIXTURE_INDEX__\" in fn) {\n\t\tfirst = args[fn.__VITEST_FIXTURE_INDEX__];\n\t\tif (!first) {\n\t\t\treturn [];\n\t\t}\n\t}\n\tif (!(first.startsWith(\"{\") && first.endsWith(\"}\"))) {\n\t\tthrow new Error(`The first argument inside a fixture must use object destructuring pattern, e.g. ({ test } => {}). Instead, received \"${first}\".`);\n\t}\n\tconst _first = first.slice(1, -1).replace(/\\s/g, \"\");\n\tconst props = splitByComma(_first).map((prop) => {\n\t\treturn prop.replace(/:.*|=.*/g, \"\");\n\t});\n\tconst last = props.at(-1);\n\tif (last && last.startsWith(\"...\")) {\n\t\tthrow new Error(`Rest parameters are not supported in fixtures, received \"${last}\".`);\n\t}\n\treturn props;\n}\nfunction splitByComma(s) {\n\tconst result = [];\n\tconst stack = [];\n\tlet start = 0;\n\tfor (let i = 0; i < s.length; i++) {\n\t\tif (s[i] === \"{\" || s[i] === \"[\") {\n\t\t\tstack.push(s[i] === \"{\" ? \"}\" : \"]\");\n\t\t} else if (s[i] === stack[stack.length - 1]) {\n\t\t\tstack.pop();\n\t\t} else if (!stack.length && s[i] === \",\") {\n\t\t\tconst token = s.substring(start, i).trim();\n\t\t\tif (token) {\n\t\t\t\tresult.push(token);\n\t\t\t}\n\t\t\tstart = i + 1;\n\t\t}\n\t}\n\tconst lastToken = s.substring(start).trim();\n\tif (lastToken) {\n\t\tresult.push(lastToken);\n\t}\n\treturn result;\n}\n\nlet _test;\nfunction setCurrentTest(test) {\n\t_test = test;\n}\nfunction getCurrentTest() {\n\treturn _test;\n}\nconst tests = [];\nfunction addRunningTest(test) {\n\ttests.push(test);\n\treturn () => {\n\t\ttests.splice(tests.indexOf(test));\n\t};\n}\nfunction getRunningTests() {\n\treturn tests;\n}\n\nfunction createChainable(keys, fn) {\n\tfunction create(context) {\n\t\tconst chain = function(...args) {\n\t\t\treturn fn.apply(context, args);\n\t\t};\n\t\tObject.assign(chain, fn);\n\t\tchain.withContext = () => chain.bind(context);\n\t\tchain.setContext = (key, value) => {\n\t\t\tcontext[key] = value;\n\t\t};\n\t\tchain.mergeContext = (ctx) => {\n\t\t\tObject.assign(context, ctx);\n\t\t};\n\t\tfor (const key of keys) {\n\t\t\tObject.defineProperty(chain, key, { get() {\n\t\t\t\treturn create({\n\t\t\t\t\t...context,\n\t\t\t\t\t[key]: true\n\t\t\t\t});\n\t\t\t} });\n\t\t}\n\t\treturn chain;\n\t}\n\tconst chain = create({});\n\tchain.fn = fn;\n\treturn chain;\n}\n\n/**\n* Creates a suite of tests, allowing for grouping and hierarchical organization of tests.\n* Suites can contain both tests and other suites, enabling complex test structures.\n*\n* @param {string} name - The name of the suite, used for identification and reporting.\n* @param {Function} fn - A function that defines the tests and suites within this suite.\n* @example\n* ```ts\n* // Define a suite with two tests\n* suite('Math operations', () => {\n* test('should add two numbers', () => {\n* expect(add(1, 2)).toBe(3);\n* });\n*\n* test('should subtract two numbers', () => {\n* expect(subtract(5, 2)).toBe(3);\n* });\n* });\n* ```\n* @example\n* ```ts\n* // Define nested suites\n* suite('String operations', () => {\n* suite('Trimming', () => {\n* test('should trim whitespace from start and end', () => {\n* expect(' hello '.trim()).toBe('hello');\n* });\n* });\n*\n* suite('Concatenation', () => {\n* test('should concatenate two strings', () => {\n* expect('hello' + ' ' + 'world').toBe('hello world');\n* });\n* });\n* });\n* ```\n*/\nconst suite = createSuite();\n/**\n* Defines a test case with a given name and test function. The test function can optionally be configured with test options.\n*\n* @param {string | Function} name - The name of the test or a function that will be used as a test name.\n* @param {TestOptions | TestFunction} [optionsOrFn] - Optional. The test options or the test function if no explicit name is provided.\n* @param {number | TestOptions | TestFunction} [optionsOrTest] - Optional. The test function or options, depending on the previous parameters.\n* @throws {Error} If called inside another test function.\n* @example\n* ```ts\n* // Define a simple test\n* test('should add two numbers', () => {\n* expect(add(1, 2)).toBe(3);\n* });\n* ```\n* @example\n* ```ts\n* // Define a test with options\n* test('should subtract two numbers', { retry: 3 }, () => {\n* expect(subtract(5, 2)).toBe(3);\n* });\n* ```\n*/\nconst test = createTest(function(name, optionsOrFn, optionsOrTest) {\n\tif (getCurrentTest()) {\n\t\tthrow new Error(\"Calling the test function inside another test function is not allowed. Please put it inside \\\"describe\\\" or \\\"suite\\\" so it can be properly collected.\");\n\t}\n\tgetCurrentSuite().test.fn.call(this, formatName(name), optionsOrFn, optionsOrTest);\n});\n/**\n* Creates a suite of tests, allowing for grouping and hierarchical organization of tests.\n* Suites can contain both tests and other suites, enabling complex test structures.\n*\n* @param {string} name - The name of the suite, used for identification and reporting.\n* @param {Function} fn - A function that defines the tests and suites within this suite.\n* @example\n* ```ts\n* // Define a suite with two tests\n* describe('Math operations', () => {\n* test('should add two numbers', () => {\n* expect(add(1, 2)).toBe(3);\n* });\n*\n* test('should subtract two numbers', () => {\n* expect(subtract(5, 2)).toBe(3);\n* });\n* });\n* ```\n* @example\n* ```ts\n* // Define nested suites\n* describe('String operations', () => {\n* describe('Trimming', () => {\n* test('should trim whitespace from start and end', () => {\n* expect(' hello '.trim()).toBe('hello');\n* });\n* });\n*\n* describe('Concatenation', () => {\n* test('should concatenate two strings', () => {\n* expect('hello' + ' ' + 'world').toBe('hello world');\n* });\n* });\n* });\n* ```\n*/\nconst describe = suite;\n/**\n* Defines a test case with a given name and test function. The test function can optionally be configured with test options.\n*\n* @param {string | Function} name - The name of the test or a function that will be used as a test name.\n* @param {TestOptions | TestFunction} [optionsOrFn] - Optional. The test options or the test function if no explicit name is provided.\n* @param {number | TestOptions | TestFunction} [optionsOrTest] - Optional. The test function or options, depending on the previous parameters.\n* @throws {Error} If called inside another test function.\n* @example\n* ```ts\n* // Define a simple test\n* it('adds two numbers', () => {\n* expect(add(1, 2)).toBe(3);\n* });\n* ```\n* @example\n* ```ts\n* // Define a test with options\n* it('subtracts two numbers', { retry: 3 }, () => {\n* expect(subtract(5, 2)).toBe(3);\n* });\n* ```\n*/\nconst it = test;\nlet runner;\nlet defaultSuite;\nlet currentTestFilepath;\nfunction assert(condition, message) {\n\tif (!condition) {\n\t\tthrow new Error(`Vitest failed to find ${message}. This is a bug in Vitest. Please, open an issue with reproduction.`);\n\t}\n}\nfunction getDefaultSuite() {\n\tassert(defaultSuite, \"the default suite\");\n\treturn defaultSuite;\n}\nfunction getTestFilepath() {\n\treturn currentTestFilepath;\n}\nfunction getRunner() {\n\tassert(runner, \"the runner\");\n\treturn runner;\n}\nfunction createDefaultSuite(runner) {\n\tconst config = runner.config.sequence;\n\tconst collector = suite(\"\", { concurrent: config.concurrent }, () => {});\n\t// no parent suite for top-level tests\n\tdelete collector.suite;\n\treturn collector;\n}\nfunction clearCollectorContext(filepath, currentRunner) {\n\tif (!defaultSuite) {\n\t\tdefaultSuite = createDefaultSuite(currentRunner);\n\t}\n\trunner = currentRunner;\n\tcurrentTestFilepath = filepath;\n\tcollectorContext.tasks.length = 0;\n\tdefaultSuite.clear();\n\tcollectorContext.currentSuite = defaultSuite;\n}\nfunction getCurrentSuite() {\n\tconst currentSuite = collectorContext.currentSuite || defaultSuite;\n\tassert(currentSuite, \"the current suite\");\n\treturn currentSuite;\n}\nfunction createSuiteHooks() {\n\treturn {\n\t\tbeforeAll: [],\n\t\tafterAll: [],\n\t\tbeforeEach: [],\n\t\tafterEach: []\n\t};\n}\nfunction parseArguments(optionsOrFn, optionsOrTest) {\n\tlet options = {};\n\tlet fn = () => {};\n\t// it('', () => {}, { retry: 2 })\n\tif (typeof optionsOrTest === \"object\") {\n\t\t// it('', { retry: 2 }, { retry: 3 })\n\t\tif (typeof optionsOrFn === \"object\") {\n\t\t\tthrow new TypeError(\"Cannot use two objects as arguments. Please provide options and a function callback in that order.\");\n\t\t}\n\t\tconsole.warn(\"Using an object as a third argument is deprecated. Vitest 4 will throw an error if the third argument is not a timeout number. Please use the second argument for options. See more at https://vitest.dev/guide/migration\");\n\t\toptions = optionsOrTest;\n\t} else if (typeof optionsOrTest === \"number\") {\n\t\toptions = { timeout: optionsOrTest };\n\t} else if (typeof optionsOrFn === \"object\") {\n\t\toptions = optionsOrFn;\n\t}\n\tif (typeof optionsOrFn === \"function\") {\n\t\tif (typeof optionsOrTest === \"function\") {\n\t\t\tthrow new TypeError(\"Cannot use two functions as arguments. Please use the second argument for options.\");\n\t\t}\n\t\tfn = optionsOrFn;\n\t} else if (typeof optionsOrTest === \"function\") {\n\t\tfn = optionsOrTest;\n\t}\n\treturn {\n\t\toptions,\n\t\thandler: fn\n\t};\n}\n// implementations\nfunction createSuiteCollector(name, factory = () => {}, mode, each, suiteOptions, parentCollectorFixtures) {\n\tconst tasks = [];\n\tlet suite;\n\tinitSuite(true);\n\tconst task = function(name = \"\", options = {}) {\n\t\tvar _collectorContext$cur;\n\t\tconst timeout = (options === null || options === void 0 ? void 0 : options.timeout) ?? runner.config.testTimeout;\n\t\tconst task = {\n\t\t\tid: \"\",\n\t\t\tname,\n\t\t\tsuite: (_collectorContext$cur = collectorContext.currentSuite) === null || _collectorContext$cur === void 0 ? void 0 : _collectorContext$cur.suite,\n\t\t\teach: options.each,\n\t\t\tfails: options.fails,\n\t\t\tcontext: undefined,\n\t\t\ttype: \"test\",\n\t\t\tfile: undefined,\n\t\t\ttimeout,\n\t\t\tretry: options.retry ?? runner.config.retry,\n\t\t\trepeats: options.repeats,\n\t\t\tmode: options.only ? \"only\" : options.skip ? \"skip\" : options.todo ? \"todo\" : \"run\",\n\t\t\tmeta: options.meta ?? Object.create(null),\n\t\t\tannotations: []\n\t\t};\n\t\tconst handler = options.handler;\n\t\tif (options.concurrent || !options.sequential && runner.config.sequence.concurrent) {\n\t\t\ttask.concurrent = true;\n\t\t}\n\t\ttask.shuffle = suiteOptions === null || suiteOptions === void 0 ? void 0 : suiteOptions.shuffle;\n\t\tconst context = createTestContext(task, runner);\n\t\t// create test context\n\t\tObject.defineProperty(task, \"context\", {\n\t\t\tvalue: context,\n\t\t\tenumerable: false\n\t\t});\n\t\tsetTestFixture(context, options.fixtures);\n\t\t// custom can be called from any place, let's assume the limit is 15 stacks\n\t\tconst limit = Error.stackTraceLimit;\n\t\tError.stackTraceLimit = 15;\n\t\tconst stackTraceError = new Error(\"STACK_TRACE_ERROR\");\n\t\tError.stackTraceLimit = limit;\n\t\tif (handler) {\n\t\t\tsetFn(task, withTimeout(withAwaitAsyncAssertions(withFixtures(runner, handler, context), task), timeout, false, stackTraceError, (_, error) => abortIfTimeout([context], error)));\n\t\t}\n\t\tif (runner.config.includeTaskLocation) {\n\t\t\tconst error = stackTraceError.stack;\n\t\t\tconst stack = findTestFileStackTrace(error);\n\t\t\tif (stack) {\n\t\t\t\ttask.location = stack;\n\t\t\t}\n\t\t}\n\t\ttasks.push(task);\n\t\treturn task;\n\t};\n\tconst test = createTest(function(name, optionsOrFn, optionsOrTest) {\n\t\tlet { options, handler } = parseArguments(optionsOrFn, optionsOrTest);\n\t\t// inherit repeats, retry, timeout from suite\n\t\tif (typeof suiteOptions === \"object\") {\n\t\t\toptions = Object.assign({}, suiteOptions, options);\n\t\t}\n\t\t// inherit concurrent / sequential from suite\n\t\toptions.concurrent = this.concurrent || !this.sequential && (options === null || options === void 0 ? void 0 : options.concurrent);\n\t\toptions.sequential = this.sequential || !this.concurrent && (options === null || options === void 0 ? void 0 : options.sequential);\n\t\tconst test = task(formatName(name), {\n\t\t\t...this,\n\t\t\t...options,\n\t\t\thandler\n\t\t});\n\t\ttest.type = \"test\";\n\t});\n\tlet collectorFixtures = parentCollectorFixtures;\n\tconst collector = {\n\t\ttype: \"collector\",\n\t\tname,\n\t\tmode,\n\t\tsuite,\n\t\toptions: suiteOptions,\n\t\ttest,\n\t\ttasks,\n\t\tcollect,\n\t\ttask,\n\t\tclear,\n\t\ton: addHook,\n\t\tfixtures() {\n\t\t\treturn collectorFixtures;\n\t\t},\n\t\tscoped(fixtures) {\n\t\t\tconst parsed = mergeContextFixtures(fixtures, { fixtures: collectorFixtures }, runner);\n\t\t\tif (parsed.fixtures) {\n\t\t\t\tcollectorFixtures = parsed.fixtures;\n\t\t\t}\n\t\t}\n\t};\n\tfunction addHook(name, ...fn) {\n\t\tgetHooks(suite)[name].push(...fn);\n\t}\n\tfunction initSuite(includeLocation) {\n\t\tvar _collectorContext$cur2;\n\t\tif (typeof suiteOptions === \"number\") {\n\t\t\tsuiteOptions = { timeout: suiteOptions };\n\t\t}\n\t\tsuite = {\n\t\t\tid: \"\",\n\t\t\ttype: \"suite\",\n\t\t\tname,\n\t\t\tsuite: (_collectorContext$cur2 = collectorContext.currentSuite) === null || _collectorContext$cur2 === void 0 ? void 0 : _collectorContext$cur2.suite,\n\t\t\tmode,\n\t\t\teach,\n\t\t\tfile: undefined,\n\t\t\tshuffle: suiteOptions === null || suiteOptions === void 0 ? void 0 : suiteOptions.shuffle,\n\t\t\ttasks: [],\n\t\t\tmeta: Object.create(null),\n\t\t\tconcurrent: suiteOptions === null || suiteOptions === void 0 ? void 0 : suiteOptions.concurrent\n\t\t};\n\t\tif (runner && includeLocation && runner.config.includeTaskLocation) {\n\t\t\tconst limit = Error.stackTraceLimit;\n\t\t\tError.stackTraceLimit = 15;\n\t\t\tconst error = new Error(\"stacktrace\").stack;\n\t\t\tError.stackTraceLimit = limit;\n\t\t\tconst stack = findTestFileStackTrace(error);\n\t\t\tif (stack) {\n\t\t\t\tsuite.location = stack;\n\t\t\t}\n\t\t}\n\t\tsetHooks(suite, createSuiteHooks());\n\t}\n\tfunction clear() {\n\t\ttasks.length = 0;\n\t\tinitSuite(false);\n\t}\n\tasync function collect(file) {\n\t\tif (!file) {\n\t\t\tthrow new TypeError(\"File is required to collect tasks.\");\n\t\t}\n\t\tif (factory) {\n\t\t\tawait runWithSuite(collector, () => factory(test));\n\t\t}\n\t\tconst allChildren = [];\n\t\tfor (const i of tasks) {\n\t\t\tallChildren.push(i.type === \"collector\" ? await i.collect(file) : i);\n\t\t}\n\t\tsuite.file = file;\n\t\tsuite.tasks = allChildren;\n\t\tallChildren.forEach((task) => {\n\t\t\ttask.file = file;\n\t\t});\n\t\treturn suite;\n\t}\n\tcollectTask(collector);\n\treturn collector;\n}\nfunction withAwaitAsyncAssertions(fn, task) {\n\treturn async (...args) => {\n\t\tconst fnResult = await fn(...args);\n\t\t// some async expect will be added to this array, in case user forget to await them\n\t\tif (task.promises) {\n\t\t\tconst result = await Promise.allSettled(task.promises);\n\t\t\tconst errors = result.map((r) => r.status === \"rejected\" ? r.reason : undefined).filter(Boolean);\n\t\t\tif (errors.length) {\n\t\t\t\tthrow errors;\n\t\t\t}\n\t\t}\n\t\treturn fnResult;\n\t};\n}\nfunction createSuite() {\n\tfunction suiteFn(name, factoryOrOptions, optionsOrFactory) {\n\t\tvar _currentSuite$options;\n\t\tconst mode = this.only ? \"only\" : this.skip ? \"skip\" : this.todo ? \"todo\" : \"run\";\n\t\tconst currentSuite = collectorContext.currentSuite || defaultSuite;\n\t\tlet { options, handler: factory } = parseArguments(factoryOrOptions, optionsOrFactory);\n\t\tconst isConcurrentSpecified = options.concurrent || this.concurrent || options.sequential === false;\n\t\tconst isSequentialSpecified = options.sequential || this.sequential || options.concurrent === false;\n\t\t// inherit options from current suite\n\t\toptions = {\n\t\t\t...currentSuite === null || currentSuite === void 0 ? void 0 : currentSuite.options,\n\t\t\t...options,\n\t\t\tshuffle: this.shuffle ?? options.shuffle ?? (currentSuite === null || currentSuite === void 0 || (_currentSuite$options = currentSuite.options) === null || _currentSuite$options === void 0 ? void 0 : _currentSuite$options.shuffle) ?? (runner === null || runner === void 0 ? void 0 : runner.config.sequence.shuffle)\n\t\t};\n\t\t// inherit concurrent / sequential from suite\n\t\tconst isConcurrent = isConcurrentSpecified || options.concurrent && !isSequentialSpecified;\n\t\tconst isSequential = isSequentialSpecified || options.sequential && !isConcurrentSpecified;\n\t\toptions.concurrent = isConcurrent && !isSequential;\n\t\toptions.sequential = isSequential && !isConcurrent;\n\t\treturn createSuiteCollector(formatName(name), factory, mode, this.each, options, currentSuite === null || currentSuite === void 0 ? void 0 : currentSuite.fixtures());\n\t}\n\tsuiteFn.each = function(cases, ...args) {\n\t\tconst suite = this.withContext();\n\t\tthis.setContext(\"each\", true);\n\t\tif (Array.isArray(cases) && args.length) {\n\t\t\tcases = formatTemplateString(cases, args);\n\t\t}\n\t\treturn (name, optionsOrFn, fnOrOptions) => {\n\t\t\tconst _name = formatName(name);\n\t\t\tconst arrayOnlyCases = cases.every(Array.isArray);\n\t\t\tconst { options, handler } = parseArguments(optionsOrFn, fnOrOptions);\n\t\t\tconst fnFirst = typeof optionsOrFn === \"function\" && typeof fnOrOptions === \"object\";\n\t\t\tcases.forEach((i, idx) => {\n\t\t\t\tconst items = Array.isArray(i) ? i : [i];\n\t\t\t\tif (fnFirst) {\n\t\t\t\t\tif (arrayOnlyCases) {\n\t\t\t\t\t\tsuite(formatTitle(_name, items, idx), () => handler(...items), options);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsuite(formatTitle(_name, items, idx), () => handler(i), options);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (arrayOnlyCases) {\n\t\t\t\t\t\tsuite(formatTitle(_name, items, idx), options, () => handler(...items));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsuite(formatTitle(_name, items, idx), options, () => handler(i));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.setContext(\"each\", undefined);\n\t\t};\n\t};\n\tsuiteFn.for = function(cases, ...args) {\n\t\tif (Array.isArray(cases) && args.length) {\n\t\t\tcases = formatTemplateString(cases, args);\n\t\t}\n\t\treturn (name, optionsOrFn, fnOrOptions) => {\n\t\t\tconst name_ = formatName(name);\n\t\t\tconst { options, handler } = parseArguments(optionsOrFn, fnOrOptions);\n\t\t\tcases.forEach((item, idx) => {\n\t\t\t\tsuite(formatTitle(name_, toArray(item), idx), options, () => handler(item));\n\t\t\t});\n\t\t};\n\t};\n\tsuiteFn.skipIf = (condition) => condition ? suite.skip : suite;\n\tsuiteFn.runIf = (condition) => condition ? suite : suite.skip;\n\treturn createChainable([\n\t\t\"concurrent\",\n\t\t\"sequential\",\n\t\t\"shuffle\",\n\t\t\"skip\",\n\t\t\"only\",\n\t\t\"todo\"\n\t], suiteFn);\n}\nfunction createTaskCollector(fn, context) {\n\tconst taskFn = fn;\n\ttaskFn.each = function(cases, ...args) {\n\t\tconst test = this.withContext();\n\t\tthis.setContext(\"each\", true);\n\t\tif (Array.isArray(cases) && args.length) {\n\t\t\tcases = formatTemplateString(cases, args);\n\t\t}\n\t\treturn (name, optionsOrFn, fnOrOptions) => {\n\t\t\tconst _name = formatName(name);\n\t\t\tconst arrayOnlyCases = cases.every(Array.isArray);\n\t\t\tconst { options, handler } = parseArguments(optionsOrFn, fnOrOptions);\n\t\t\tconst fnFirst = typeof optionsOrFn === \"function\" && typeof fnOrOptions === \"object\";\n\t\t\tcases.forEach((i, idx) => {\n\t\t\t\tconst items = Array.isArray(i) ? i : [i];\n\t\t\t\tif (fnFirst) {\n\t\t\t\t\tif (arrayOnlyCases) {\n\t\t\t\t\t\ttest(formatTitle(_name, items, idx), () => handler(...items), options);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttest(formatTitle(_name, items, idx), () => handler(i), options);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (arrayOnlyCases) {\n\t\t\t\t\t\ttest(formatTitle(_name, items, idx), options, () => handler(...items));\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttest(formatTitle(_name, items, idx), options, () => handler(i));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.setContext(\"each\", undefined);\n\t\t};\n\t};\n\ttaskFn.for = function(cases, ...args) {\n\t\tconst test = this.withContext();\n\t\tif (Array.isArray(cases) && args.length) {\n\t\t\tcases = formatTemplateString(cases, args);\n\t\t}\n\t\treturn (name, optionsOrFn, fnOrOptions) => {\n\t\t\tconst _name = formatName(name);\n\t\t\tconst { options, handler } = parseArguments(optionsOrFn, fnOrOptions);\n\t\t\tcases.forEach((item, idx) => {\n\t\t\t\t// monkey-patch handler to allow parsing fixture\n\t\t\t\tconst handlerWrapper = (ctx) => handler(item, ctx);\n\t\t\t\thandlerWrapper.__VITEST_FIXTURE_INDEX__ = 1;\n\t\t\t\thandlerWrapper.toString = () => handler.toString();\n\t\t\t\ttest(formatTitle(_name, toArray(item), idx), options, handlerWrapper);\n\t\t\t});\n\t\t};\n\t};\n\ttaskFn.skipIf = function(condition) {\n\t\treturn condition ? this.skip : this;\n\t};\n\ttaskFn.runIf = function(condition) {\n\t\treturn condition ? this : this.skip;\n\t};\n\ttaskFn.scoped = function(fixtures) {\n\t\tconst collector = getCurrentSuite();\n\t\tcollector.scoped(fixtures);\n\t};\n\ttaskFn.extend = function(fixtures) {\n\t\tconst _context = mergeContextFixtures(fixtures, context || {}, runner);\n\t\tconst originalWrapper = fn;\n\t\treturn createTest(function(name, optionsOrFn, optionsOrTest) {\n\t\t\tconst collector = getCurrentSuite();\n\t\t\tconst scopedFixtures = collector.fixtures();\n\t\t\tconst context = { ...this };\n\t\t\tif (scopedFixtures) {\n\t\t\t\tcontext.fixtures = mergeScopedFixtures(context.fixtures || [], scopedFixtures);\n\t\t\t}\n\t\t\tconst { handler, options } = parseArguments(optionsOrFn, optionsOrTest);\n\t\t\tconst timeout = options.timeout ?? (runner === null || runner === void 0 ? void 0 : runner.config.testTimeout);\n\t\t\toriginalWrapper.call(context, formatName(name), handler, timeout);\n\t\t}, _context);\n\t};\n\tconst _test = createChainable([\n\t\t\"concurrent\",\n\t\t\"sequential\",\n\t\t\"skip\",\n\t\t\"only\",\n\t\t\"todo\",\n\t\t\"fails\"\n\t], taskFn);\n\tif (context) {\n\t\t_test.mergeContext(context);\n\t}\n\treturn _test;\n}\nfunction createTest(fn, context) {\n\treturn createTaskCollector(fn, context);\n}\nfunction formatName(name) {\n\treturn typeof name === \"string\" ? name : typeof name === \"function\" ? name.name || \"<anonymous>\" : String(name);\n}\nfunction formatTitle(template, items, idx) {\n\tif (template.includes(\"%#\") || template.includes(\"%$\")) {\n\t\t// '%#' match index of the test case\n\t\ttemplate = template.replace(/%%/g, \"__vitest_escaped_%__\").replace(/%#/g, `${idx}`).replace(/%\\$/g, `${idx + 1}`).replace(/__vitest_escaped_%__/g, \"%%\");\n\t}\n\tconst count = template.split(\"%\").length - 1;\n\tif (template.includes(\"%f\")) {\n\t\tconst placeholders = template.match(/%f/g) || [];\n\t\tplaceholders.forEach((_, i) => {\n\t\t\tif (isNegativeNaN(items[i]) || Object.is(items[i], -0)) {\n\t\t\t\t// Replace the i-th occurrence of '%f' with '-%f'\n\t\t\t\tlet occurrence = 0;\n\t\t\t\ttemplate = template.replace(/%f/g, (match) => {\n\t\t\t\t\toccurrence++;\n\t\t\t\t\treturn occurrence === i + 1 ? \"-%f\" : match;\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\tlet formatted = format(template, ...items.slice(0, count));\n\tconst isObjectItem = isObject(items[0]);\n\tformatted = formatted.replace(/\\$([$\\w.]+)/g, (_, key) => {\n\t\tvar _runner$config;\n\t\tconst isArrayKey = /^\\d+$/.test(key);\n\t\tif (!isObjectItem && !isArrayKey) {\n\t\t\treturn `$${key}`;\n\t\t}\n\t\tconst arrayElement = isArrayKey ? objectAttr(items, key) : undefined;\n\t\tconst value = isObjectItem ? objectAttr(items[0], key, arrayElement) : arrayElement;\n\t\treturn objDisplay(value, { truncate: runner === null || runner === void 0 || (_runner$config = runner.config) === null || _runner$config === void 0 || (_runner$config = _runner$config.chaiConfig) === null || _runner$config === void 0 ? void 0 : _runner$config.truncateThreshold });\n\t});\n\treturn formatted;\n}\nfunction formatTemplateString(cases, args) {\n\tconst header = cases.join(\"\").trim().replace(/ /g, \"\").split(\"\\n\").map((i) => i.split(\"|\"))[0];\n\tconst res = [];\n\tfor (let i = 0; i < Math.floor(args.length / header.length); i++) {\n\t\tconst oneCase = {};\n\t\tfor (let j = 0; j < header.length; j++) {\n\t\t\toneCase[header[j]] = args[i * header.length + j];\n\t\t}\n\t\tres.push(oneCase);\n\t}\n\treturn res;\n}\nfunction findTestFileStackTrace(error) {\n\tconst testFilePath = getTestFilepath();\n\t// first line is the error message\n\tconst lines = error.split(\"\\n\").slice(1);\n\tfor (const line of lines) {\n\t\tconst stack = parseSingleStack(line);\n\t\tif (stack && stack.file === testFilePath) {\n\t\t\treturn {\n\t\t\t\tline: stack.line,\n\t\t\t\tcolumn: stack.column\n\t\t\t};\n\t\t}\n\t}\n}\n\n/**\n* If any tasks been marked as `only`, mark all other tasks as `skip`.\n*/\nfunction interpretTaskModes(file, namePattern, testLocations, onlyMode, parentIsOnly, allowOnly) {\n\tconst matchedLocations = [];\n\tconst traverseSuite = (suite, parentIsOnly, parentMatchedWithLocation) => {\n\t\tconst suiteIsOnly = parentIsOnly || suite.mode === \"only\";\n\t\tsuite.tasks.forEach((t) => {\n\t\t\t// Check if either the parent suite or the task itself are marked as included\n\t\t\tconst includeTask = suiteIsOnly || t.mode === \"only\";\n\t\t\tif (onlyMode) {\n\t\t\t\tif (t.type === \"suite\" && (includeTask || someTasksAreOnly(t))) {\n\t\t\t\t\t// Don't skip this suite\n\t\t\t\t\tif (t.mode === \"only\") {\n\t\t\t\t\t\tcheckAllowOnly(t, allowOnly);\n\t\t\t\t\t\tt.mode = \"run\";\n\t\t\t\t\t}\n\t\t\t\t} else if (t.mode === \"run\" && !includeTask) {\n\t\t\t\t\tt.mode = \"skip\";\n\t\t\t\t} else if (t.mode === \"only\") {\n\t\t\t\t\tcheckAllowOnly(t, allowOnly);\n\t\t\t\t\tt.mode = \"run\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet hasLocationMatch = parentMatchedWithLocation;\n\t\t\t// Match test location against provided locations, only run if present\n\t\t\t// in `testLocations`. Note: if `includeTaskLocations` is not enabled,\n\t\t\t// all test will be skipped.\n\t\t\tif (testLocations !== undefined && testLocations.length !== 0) {\n\t\t\t\tif (t.location && (testLocations === null || testLocations === void 0 ? void 0 : testLocations.includes(t.location.line))) {\n\t\t\t\t\tt.mode = \"run\";\n\t\t\t\t\tmatchedLocations.push(t.location.line);\n\t\t\t\t\thasLocationMatch = true;\n\t\t\t\t} else if (parentMatchedWithLocation) {\n\t\t\t\t\tt.mode = \"run\";\n\t\t\t\t} else if (t.type === \"test\") {\n\t\t\t\t\tt.mode = \"skip\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (t.type === \"test\") {\n\t\t\t\tif (namePattern && !getTaskFullName(t).match(namePattern)) {\n\t\t\t\t\tt.mode = \"skip\";\n\t\t\t\t}\n\t\t\t} else if (t.type === \"suite\") {\n\t\t\t\tif (t.mode === \"skip\") {\n\t\t\t\t\tskipAllTasks(t);\n\t\t\t\t} else if (t.mode === \"todo\") {\n\t\t\t\t\ttodoAllTasks(t);\n\t\t\t\t} else {\n\t\t\t\t\ttraverseSuite(t, includeTask, hasLocationMatch);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t// if all subtasks are skipped, mark as skip\n\t\tif (suite.mode === \"run\" || suite.mode === \"queued\") {\n\t\t\tif (suite.tasks.length && suite.tasks.every((i) => i.mode !== \"run\" && i.mode !== \"queued\")) {\n\t\t\t\tsuite.mode = \"skip\";\n\t\t\t}\n\t\t}\n\t};\n\ttraverseSuite(file, parentIsOnly, false);\n\tconst nonMatching = testLocations === null || testLocations === void 0 ? void 0 : testLocations.filter((loc) => !matchedLocations.includes(loc));\n\tif (nonMatching && nonMatching.length !== 0) {\n\t\tconst message = nonMatching.length === 1 ? `line ${nonMatching[0]}` : `lines ${nonMatching.join(\", \")}`;\n\t\tif (file.result === undefined) {\n\t\t\tfile.result = {\n\t\t\t\tstate: \"fail\",\n\t\t\t\terrors: []\n\t\t\t};\n\t\t}\n\t\tif (file.result.errors === undefined) {\n\t\t\tfile.result.errors = [];\n\t\t}\n\t\tfile.result.errors.push(processError(new Error(`No test found in ${file.name} in ${message}`)));\n\t}\n}\nfunction getTaskFullName(task) {\n\treturn `${task.suite ? `${getTaskFullName(task.suite)} ` : \"\"}${task.name}`;\n}\nfunction someTasksAreOnly(suite) {\n\treturn suite.tasks.some((t) => t.mode === \"only\" || t.type === \"suite\" && someTasksAreOnly(t));\n}\nfunction skipAllTasks(suite) {\n\tsuite.tasks.forEach((t) => {\n\t\tif (t.mode === \"run\" || t.mode === \"queued\") {\n\t\t\tt.mode = \"skip\";\n\t\t\tif (t.type === \"suite\") {\n\t\t\t\tskipAllTasks(t);\n\t\t\t}\n\t\t}\n\t});\n}\nfunction todoAllTasks(suite) {\n\tsuite.tasks.forEach((t) => {\n\t\tif (t.mode === \"run\" || t.mode === \"queued\") {\n\t\t\tt.mode = \"todo\";\n\t\t\tif (t.type === \"suite\") {\n\t\t\t\ttodoAllTasks(t);\n\t\t\t}\n\t\t}\n\t});\n}\nfunction checkAllowOnly(task, allowOnly) {\n\tif (allowOnly) {\n\t\treturn;\n\t}\n\tconst error = processError(new Error(\"[Vitest] Unexpected .only modifier. Remove it or pass --allowOnly argument to bypass this error\"));\n\ttask.result = {\n\t\tstate: \"fail\",\n\t\terrors: [error]\n\t};\n}\nfunction generateHash(str) {\n\tlet hash = 0;\n\tif (str.length === 0) {\n\t\treturn `${hash}`;\n\t}\n\tfor (let i = 0; i < str.length; i++) {\n\t\tconst char = str.charCodeAt(i);\n\t\thash = (hash << 5) - hash + char;\n\t\thash = hash & hash;\n\t}\n\treturn `${hash}`;\n}\nfunction calculateSuiteHash(parent) {\n\tparent.tasks.forEach((t, idx) => {\n\t\tt.id = `${parent.id}_${idx}`;\n\t\tif (t.type === \"suite\") {\n\t\t\tcalculateSuiteHash(t);\n\t\t}\n\t});\n}\nfunction createFileTask(filepath, root, projectName, pool) {\n\tconst path = relative(root, filepath);\n\tconst file = {\n\t\tid: generateFileHash(path, projectName),\n\t\tname: path,\n\t\ttype: \"suite\",\n\t\tmode: \"queued\",\n\t\tfilepath,\n\t\ttasks: [],\n\t\tmeta: Object.create(null),\n\t\tprojectName,\n\t\tfile: undefined,\n\t\tpool\n\t};\n\tfile.file = file;\n\tsetFileContext(file, Object.create(null));\n\treturn file;\n}\n/**\n* Generate a unique ID for a file based on its path and project name\n* @param file File relative to the root of the project to keep ID the same between different machines\n* @param projectName The name of the test project\n*/\nfunction generateFileHash(file, projectName) {\n\treturn generateHash(`${file}${projectName || \"\"}`);\n}\n\nconst now$2 = globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;\nasync function collectTests(specs, runner) {\n\tconst files = [];\n\tconst config = runner.config;\n\tfor (const spec of specs) {\n\t\tvar _runner$onCollectStar;\n\t\tconst filepath = typeof spec === \"string\" ? spec : spec.filepath;\n\t\tconst testLocations = typeof spec === \"string\" ? undefined : spec.testLocations;\n\t\tconst file = createFileTask(filepath, config.root, config.name, runner.pool);\n\t\tfile.shuffle = config.sequence.shuffle;\n\t\t(_runner$onCollectStar = runner.onCollectStart) === null || _runner$onCollectStar === void 0 ? void 0 : _runner$onCollectStar.call(runner, file);\n\t\tclearCollectorContext(filepath, runner);\n\t\ttry {\n\t\t\tvar _runner$getImportDura;\n\t\t\tconst setupFiles = toArray(config.setupFiles);\n\t\t\tif (setupFiles.length) {\n\t\t\t\tconst setupStart = now$2();\n\t\t\t\tawait runSetupFiles(config, setupFiles, runner);\n\t\t\t\tconst setupEnd = now$2();\n\t\t\t\tfile.setupDuration = setupEnd - setupStart;\n\t\t\t} else {\n\t\t\t\tfile.setupDuration = 0;\n\t\t\t}\n\t\t\tconst collectStart = now$2();\n\t\t\tawait runner.importFile(filepath, \"collect\");\n\t\t\tconst durations = (_runner$getImportDura = runner.getImportDurations) === null || _runner$getImportDura === void 0 ? void 0 : _runner$getImportDura.call(runner);\n\t\t\tif (durations) {\n\t\t\t\tfile.importDurations = durations;\n\t\t\t}\n\t\t\tconst defaultTasks = await getDefaultSuite().collect(file);\n\t\t\tconst fileHooks = createSuiteHooks();\n\t\t\tmergeHooks(fileHooks, getHooks(defaultTasks));\n\t\t\tfor (const c of [...defaultTasks.tasks, ...collectorContext.tasks]) {\n\t\t\t\tif (c.type === \"test\" || c.type === \"suite\") {\n\t\t\t\t\tfile.tasks.push(c);\n\t\t\t\t} else if (c.type === \"collector\") {\n\t\t\t\t\tconst suite = await c.collect(file);\n\t\t\t\t\tif (suite.name || suite.tasks.length) {\n\t\t\t\t\t\tmergeHooks(fileHooks, getHooks(suite));\n\t\t\t\t\t\tfile.tasks.push(suite);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// check that types are exhausted\n\t\t\t\t\tc;\n\t\t\t\t}\n\t\t\t}\n\t\t\tsetHooks(file, fileHooks);\n\t\t\tfile.collectDuration = now$2() - collectStart;\n\t\t} catch (e) {\n\t\t\tvar _runner$getImportDura2;\n\t\t\tconst error = processError(e);\n\t\t\tfile.result = {\n\t\t\t\tstate: \"fail\",\n\t\t\t\terrors: [error]\n\t\t\t};\n\t\t\tconst durations = (_runner$getImportDura2 = runner.getImportDurations) === null || _runner$getImportDura2 === void 0 ? void 0 : _runner$getImportDura2.call(runner);\n\t\t\tif (durations) {\n\t\t\t\tfile.importDurations = durations;\n\t\t\t}\n\t\t}\n\t\tcalculateSuiteHash(file);\n\t\tconst hasOnlyTasks = someTasksAreOnly(file);\n\t\tinterpretTaskModes(file, config.testNamePattern, testLocations, hasOnlyTasks, false, config.allowOnly);\n\t\tif (file.mode === \"queued\") {\n\t\t\tfile.mode = \"run\";\n\t\t}\n\t\tfiles.push(file);\n\t}\n\treturn files;\n}\nfunction mergeHooks(baseHooks, hooks) {\n\tfor (const _key in hooks) {\n\t\tconst key = _key;\n\t\tbaseHooks[key].push(...hooks[key]);\n\t}\n\treturn baseHooks;\n}\n\n/**\n* Return a function for running multiple async operations with limited concurrency.\n*/\nfunction limitConcurrency(concurrency = Infinity) {\n\t// The number of currently active + pending tasks.\n\tlet count = 0;\n\t// The head and tail of the pending task queue, built using a singly linked list.\n\t// Both head and tail are initially undefined, signifying an empty queue.\n\t// They both become undefined again whenever there are no pending tasks.\n\tlet head;\n\tlet tail;\n\t// A bookkeeping function executed whenever a task has been run to completion.\n\tconst finish = () => {\n\t\tcount--;\n\t\t// Check if there are further pending tasks in the queue.\n\t\tif (head) {\n\t\t\t// Allow the next pending task to run and pop it from the queue.\n\t\t\thead[0]();\n\t\t\thead = head[1];\n\t\t\t// The head may now be undefined if there are no further pending tasks.\n\t\t\t// In that case, set tail to undefined as well.\n\t\t\ttail = head && tail;\n\t\t}\n\t};\n\treturn (func, ...args) => {\n\t\t// Create a promise chain that:\n\t\t// 1. Waits for its turn in the task queue (if necessary).\n\t\t// 2. Runs the task.\n\t\t// 3. Allows the next pending task (if any) to run.\n\t\treturn new Promise((resolve) => {\n\t\t\tif (count++ < concurrency) {\n\t\t\t\t// No need to queue if fewer than maxConcurrency tasks are running.\n\t\t\t\tresolve();\n\t\t\t} else if (tail) {\n\t\t\t\t// There are pending tasks, so append to the queue.\n\t\t\t\ttail = tail[1] = [resolve];\n\t\t\t} else {\n\t\t\t\t// No other pending tasks, initialize the queue with a new tail and head.\n\t\t\t\thead = tail = [resolve];\n\t\t\t}\n\t\t}).then(() => {\n\t\t\t// Running func here ensures that even a non-thenable result or an\n\t\t\t// immediately thrown error gets wrapped into a Promise.\n\t\t\treturn func(...args);\n\t\t}).finally(finish);\n\t};\n}\n\n/**\n* Partition in tasks groups by consecutive concurrent\n*/\nfunction partitionSuiteChildren(suite) {\n\tlet tasksGroup = [];\n\tconst tasksGroups = [];\n\tfor (const c of suite.tasks) {\n\t\tif (tasksGroup.length === 0 || c.concurrent === tasksGroup[0].concurrent) {\n\t\t\ttasksGroup.push(c);\n\t\t} else {\n\t\t\ttasksGroups.push(tasksGroup);\n\t\t\ttasksGroup = [c];\n\t\t}\n\t}\n\tif (tasksGroup.length > 0) {\n\t\ttasksGroups.push(tasksGroup);\n\t}\n\treturn tasksGroups;\n}\n\n/**\n* @deprecated use `isTestCase` instead\n*/\nfunction isAtomTest(s) {\n\treturn isTestCase(s);\n}\nfunction isTestCase(s) {\n\treturn s.type === \"test\";\n}\nfunction getTests(suite) {\n\tconst tests = [];\n\tconst arraySuites = toArray(suite);\n\tfor (const s of arraySuites) {\n\t\tif (isTestCase(s)) {\n\t\t\ttests.push(s);\n\t\t} else {\n\t\t\tfor (const task of s.tasks) {\n\t\t\t\tif (isTestCase(task)) {\n\t\t\t\t\ttests.push(task);\n\t\t\t\t} else {\n\t\t\t\t\tconst taskTests = getTests(task);\n\t\t\t\t\tfor (const test of taskTests) {\n\t\t\t\t\t\ttests.push(test);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn tests;\n}\nfunction getTasks(tasks = []) {\n\treturn toArray(tasks).flatMap((s) => isTestCase(s) ? [s] : [s, ...getTasks(s.tasks)]);\n}\nfunction getSuites(suite) {\n\treturn toArray(suite).flatMap((s) => s.type === \"suite\" ? [s, ...getSuites(s.tasks)] : []);\n}\nfunction hasTests(suite) {\n\treturn toArray(suite).some((s) => s.tasks.some((c) => isTestCase(c) || hasTests(c)));\n}\nfunction hasFailed(suite) {\n\treturn toArray(suite).some((s) => {\n\t\tvar _s$result;\n\t\treturn ((_s$result = s.result) === null || _s$result === void 0 ? void 0 : _s$result.state) === \"fail\" || s.type === \"suite\" && hasFailed(s.tasks);\n\t});\n}\nfunction getNames(task) {\n\tconst names = [task.name];\n\tlet current = task;\n\twhile (current === null || current === void 0 ? void 0 : current.suite) {\n\t\tcurrent = current.suite;\n\t\tif (current === null || current === void 0 ? void 0 : current.name) {\n\t\t\tnames.unshift(current.name);\n\t\t}\n\t}\n\tif (current !== task.file) {\n\t\tnames.unshift(task.file.name);\n\t}\n\treturn names;\n}\nfunction getFullName(task, separator = \" > \") {\n\treturn getNames(task).join(separator);\n}\nfunction getTestName(task, separator = \" > \") {\n\treturn getNames(task).slice(1).join(separator);\n}\n\nconst now$1 = globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;\nconst unixNow = Date.now;\nconst { clearTimeout, setTimeout } = getSafeTimers();\nfunction updateSuiteHookState(task, name, state, runner) {\n\tif (!task.result) {\n\t\ttask.result = { state: \"run\" };\n\t}\n\tif (!task.result.hooks) {\n\t\ttask.result.hooks = {};\n\t}\n\tconst suiteHooks = task.result.hooks;\n\tif (suiteHooks) {\n\t\tsuiteHooks[name] = state;\n\t\tlet event = state === \"run\" ? \"before-hook-start\" : \"before-hook-end\";\n\t\tif (name === \"afterAll\" || name === \"afterEach\") {\n\t\t\tevent = state === \"run\" ? \"after-hook-start\" : \"after-hook-end\";\n\t\t}\n\t\tupdateTask(event, task, runner);\n\t}\n}\nfunction getSuiteHooks(suite, name, sequence) {\n\tconst hooks = getHooks(suite)[name];\n\tif (sequence === \"stack\" && (name === \"afterAll\" || name === \"afterEach\")) {\n\t\treturn hooks.slice().reverse();\n\t}\n\treturn hooks;\n}\nasync function callTestHooks(runner, test, hooks, sequence) {\n\tif (sequence === \"stack\") {\n\t\thooks = hooks.slice().reverse();\n\t}\n\tif (!hooks.length) {\n\t\treturn;\n\t}\n\tconst context = test.context;\n\tconst onTestFailed = test.context.onTestFailed;\n\tconst onTestFinished = test.context.onTestFinished;\n\tcontext.onTestFailed = () => {\n\t\tthrow new Error(`Cannot call \"onTestFailed\" inside a test hook.`);\n\t};\n\tcontext.onTestFinished = () => {\n\t\tthrow new Error(`Cannot call \"onTestFinished\" inside a test hook.`);\n\t};\n\tif (sequence === \"parallel\") {\n\t\ttry {\n\t\t\tawait Promise.all(hooks.map((fn) => fn(test.context)));\n\t\t} catch (e) {\n\t\t\tfailTask(test.result, e, runner.config.diffOptions);\n\t\t}\n\t} else {\n\t\tfor (const fn of hooks) {\n\t\t\ttry {\n\t\t\t\tawait fn(test.context);\n\t\t\t} catch (e) {\n\t\t\t\tfailTask(test.result, e, runner.config.diffOptions);\n\t\t\t}\n\t\t}\n\t}\n\tcontext.onTestFailed = onTestFailed;\n\tcontext.onTestFinished = onTestFinished;\n}\nasync function callSuiteHook(suite, currentTask, name, runner, args) {\n\tconst sequence = runner.config.sequence.hooks;\n\tconst callbacks = [];\n\t// stop at file level\n\tconst parentSuite = \"filepath\" in suite ? null : suite.suite || suite.file;\n\tif (name === \"beforeEach\" && parentSuite) {\n\t\tcallbacks.push(...await callSuiteHook(parentSuite, currentTask, name, runner, args));\n\t}\n\tconst hooks = getSuiteHooks(suite, name, sequence);\n\tif (hooks.length > 0) {\n\t\tupdateSuiteHookState(currentTask, name, \"run\", runner);\n\t}\n\tasync function runHook(hook) {\n\t\treturn getBeforeHookCleanupCallback(hook, await hook(...args), name === \"beforeEach\" ? args[0] : undefined);\n\t}\n\tif (sequence === \"parallel\") {\n\t\tcallbacks.push(...await Promise.all(hooks.map((hook) => runHook(hook))));\n\t} else {\n\t\tfor (const hook of hooks) {\n\t\t\tcallbacks.push(await runHook(hook));\n\t\t}\n\t}\n\tif (hooks.length > 0) {\n\t\tupdateSuiteHookState(currentTask, name, \"pass\", runner);\n\t}\n\tif (name === \"afterEach\" && parentSuite) {\n\t\tcallbacks.push(...await callSuiteHook(parentSuite, currentTask, name, runner, args));\n\t}\n\treturn callbacks;\n}\nconst packs = new Map();\nconst eventsPacks = [];\nconst pendingTasksUpdates = [];\nfunction sendTasksUpdate(runner) {\n\tif (packs.size) {\n\t\tvar _runner$onTaskUpdate;\n\t\tconst taskPacks = Array.from(packs).map(([id, task]) => {\n\t\t\treturn [\n\t\t\t\tid,\n\t\t\t\ttask[0],\n\t\t\t\ttask[1]\n\t\t\t];\n\t\t});\n\t\tconst p = (_runner$onTaskUpdate = runner.onTaskUpdate) === null || _runner$onTaskUpdate === void 0 ? void 0 : _runner$onTaskUpdate.call(runner, taskPacks, eventsPacks);\n\t\tif (p) {\n\t\t\tpendingTasksUpdates.push(p);\n\t\t\t// remove successful promise to not grow array indefnitely,\n\t\t\t// but keep rejections so finishSendTasksUpdate can handle them\n\t\t\tp.then(() => pendingTasksUpdates.splice(pendingTasksUpdates.indexOf(p), 1), () => {});\n\t\t}\n\t\teventsPacks.length = 0;\n\t\tpacks.clear();\n\t}\n}\nasync function finishSendTasksUpdate(runner) {\n\tsendTasksUpdate(runner);\n\tawait Promise.all(pendingTasksUpdates);\n}\nfunction throttle(fn, ms) {\n\tlet last = 0;\n\tlet pendingCall;\n\treturn function call(...args) {\n\t\tconst now = unixNow();\n\t\tif (now - last > ms) {\n\t\t\tlast = now;\n\t\t\tclearTimeout(pendingCall);\n\t\t\tpendingCall = undefined;\n\t\t\treturn fn.apply(this, args);\n\t\t}\n\t\t// Make sure fn is still called even if there are no further calls\n\t\tpendingCall ?? (pendingCall = setTimeout(() => call.bind(this)(...args), ms));\n\t};\n}\n// throttle based on summary reporter's DURATION_UPDATE_INTERVAL_MS\nconst sendTasksUpdateThrottled = throttle(sendTasksUpdate, 100);\nfunction updateTask(event, task, runner) {\n\teventsPacks.push([\n\t\ttask.id,\n\t\tevent,\n\t\tundefined\n\t]);\n\tpacks.set(task.id, [task.result, task.meta]);\n\tsendTasksUpdateThrottled(runner);\n}\nasync function callCleanupHooks(runner, cleanups) {\n\tconst sequence = runner.config.sequence.hooks;\n\tif (sequence === \"stack\") {\n\t\tcleanups = cleanups.slice().reverse();\n\t}\n\tif (sequence === \"parallel\") {\n\t\tawait Promise.all(cleanups.map(async (fn) => {\n\t\t\tif (typeof fn !== \"function\") {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tawait fn();\n\t\t}));\n\t} else {\n\t\tfor (const fn of cleanups) {\n\t\t\tif (typeof fn !== \"function\") {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tawait fn();\n\t\t}\n\t}\n}\nasync function runTest(test, runner) {\n\tvar _runner$onBeforeRunTa, _test$result, _runner$onAfterRunTas;\n\tawait ((_runner$onBeforeRunTa = runner.onBeforeRunTask) === null || _runner$onBeforeRunTa === void 0 ? void 0 : _runner$onBeforeRunTa.call(runner, test));\n\tif (test.mode !== \"run\" && test.mode !== \"queued\") {\n\t\tupdateTask(\"test-prepare\", test, runner);\n\t\tupdateTask(\"test-finished\", test, runner);\n\t\treturn;\n\t}\n\tif (((_test$result = test.result) === null || _test$result === void 0 ? void 0 : _test$result.state) === \"fail\") {\n\t\t// should not be possible to get here, I think this is just copy pasted from suite\n\t\t// TODO: maybe someone fails tests in `beforeAll` hooks?\n\t\t// https://github.com/vitest-dev/vitest/pull/7069\n\t\tupdateTask(\"test-failed-early\", test, runner);\n\t\treturn;\n\t}\n\tconst start = now$1();\n\ttest.result = {\n\t\tstate: \"run\",\n\t\tstartTime: unixNow(),\n\t\tretryCount: 0\n\t};\n\tupdateTask(\"test-prepare\", test, runner);\n\tconst cleanupRunningTest = addRunningTest(test);\n\tsetCurrentTest(test);\n\tconst suite = test.suite || test.file;\n\tconst repeats = test.repeats ?? 0;\n\tfor (let repeatCount = 0; repeatCount <= repeats; repeatCount++) {\n\t\tconst retry = test.retry ?? 0;\n\t\tfor (let retryCount = 0; retryCount <= retry; retryCount++) {\n\t\t\tvar _test$result2, _test$result3;\n\t\t\tlet beforeEachCleanups = [];\n\t\t\ttry {\n\t\t\t\tvar _runner$onBeforeTryTa, _runner$onAfterTryTas;\n\t\t\t\tawait ((_runner$onBeforeTryTa = runner.onBeforeTryTask) === null || _runner$onBeforeTryTa === void 0 ? void 0 : _runner$onBeforeTryTa.call(runner, test, {\n\t\t\t\t\tretry: retryCount,\n\t\t\t\t\trepeats: repeatCount\n\t\t\t\t}));\n\t\t\t\ttest.result.repeatCount = repeatCount;\n\t\t\t\tbeforeEachCleanups = await callSuiteHook(suite, test, \"beforeEach\", runner, [test.context, suite]);\n\t\t\t\tif (runner.runTask) {\n\t\t\t\t\tawait runner.runTask(test);\n\t\t\t\t} else {\n\t\t\t\t\tconst fn = getFn(test);\n\t\t\t\t\tif (!fn) {\n\t\t\t\t\t\tthrow new Error(\"Test function is not found. Did you add it using `setFn`?\");\n\t\t\t\t\t}\n\t\t\t\t\tawait fn();\n\t\t\t\t}\n\t\t\t\tawait ((_runner$onAfterTryTas = runner.onAfterTryTask) === null || _runner$onAfterTryTas === void 0 ? void 0 : _runner$onAfterTryTas.call(runner, test, {\n\t\t\t\t\tretry: retryCount,\n\t\t\t\t\trepeats: repeatCount\n\t\t\t\t}));\n\t\t\t\tif (test.result.state !== \"fail\") {\n\t\t\t\t\tif (!test.repeats) {\n\t\t\t\t\t\ttest.result.state = \"pass\";\n\t\t\t\t\t} else if (test.repeats && retry === retryCount) {\n\t\t\t\t\t\ttest.result.state = \"pass\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tfailTask(test.result, e, runner.config.diffOptions);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tvar _runner$onTaskFinishe;\n\t\t\t\tawait ((_runner$onTaskFinishe = runner.onTaskFinished) === null || _runner$onTaskFinishe === void 0 ? void 0 : _runner$onTaskFinishe.call(runner, test));\n\t\t\t} catch (e) {\n\t\t\t\tfailTask(test.result, e, runner.config.diffOptions);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait callSuiteHook(suite, test, \"afterEach\", runner, [test.context, suite]);\n\t\t\t\tawait callCleanupHooks(runner, beforeEachCleanups);\n\t\t\t\tawait callFixtureCleanup(test.context);\n\t\t\t} catch (e) {\n\t\t\t\tfailTask(test.result, e, runner.config.diffOptions);\n\t\t\t}\n\t\t\tawait callTestHooks(runner, test, test.onFinished || [], \"stack\");\n\t\t\tif (test.result.state === \"fail\") {\n\t\t\t\tawait callTestHooks(runner, test, test.onFailed || [], runner.config.sequence.hooks);\n\t\t\t}\n\t\t\ttest.onFailed = undefined;\n\t\t\ttest.onFinished = undefined;\n\t\t\t// skipped with new PendingError\n\t\t\tif (((_test$result2 = test.result) === null || _test$result2 === void 0 ? void 0 : _test$result2.pending) || ((_test$result3 = test.result) === null || _test$result3 === void 0 ? void 0 : _test$result3.state) === \"skip\") {\n\t\t\t\tvar _test$result4;\n\t\t\t\ttest.mode = \"skip\";\n\t\t\t\ttest.result = {\n\t\t\t\t\tstate: \"skip\",\n\t\t\t\t\tnote: (_test$result4 = test.result) === null || _test$result4 === void 0 ? void 0 : _test$result4.note,\n\t\t\t\t\tpending: true,\n\t\t\t\t\tduration: now$1() - start\n\t\t\t\t};\n\t\t\t\tupdateTask(\"test-finished\", test, runner);\n\t\t\t\tsetCurrentTest(undefined);\n\t\t\t\tcleanupRunningTest();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (test.result.state === \"pass\") {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (retryCount < retry) {\n\t\t\t\t// reset state when retry test\n\t\t\t\ttest.result.state = \"run\";\n\t\t\t\ttest.result.retryCount = (test.result.retryCount ?? 0) + 1;\n\t\t\t}\n\t\t\t// update retry info\n\t\t\tupdateTask(\"test-retried\", test, runner);\n\t\t}\n\t}\n\t// if test is marked to be failed, flip the result\n\tif (test.fails) {\n\t\tif (test.result.state === \"pass\") {\n\t\t\tconst error = processError(new Error(\"Expect test to fail\"));\n\t\t\ttest.result.state = \"fail\";\n\t\t\ttest.result.errors = [error];\n\t\t} else {\n\t\t\ttest.result.state = \"pass\";\n\t\t\ttest.result.errors = undefined;\n\t\t}\n\t}\n\tcleanupRunningTest();\n\tsetCurrentTest(undefined);\n\ttest.result.duration = now$1() - start;\n\tawait ((_runner$onAfterRunTas = runner.onAfterRunTask) === null || _runner$onAfterRunTas === void 0 ? void 0 : _runner$onAfterRunTas.call(runner, test));\n\tupdateTask(\"test-finished\", test, runner);\n}\nfunction failTask(result, err, diffOptions) {\n\tif (err instanceof PendingError) {\n\t\tresult.state = \"skip\";\n\t\tresult.note = err.note;\n\t\tresult.pending = true;\n\t\treturn;\n\t}\n\tresult.state = \"fail\";\n\tconst errors = Array.isArray(err) ? err : [err];\n\tfor (const e of errors) {\n\t\tconst error = processError(e, diffOptions);\n\t\tresult.errors ?? (result.errors = []);\n\t\tresult.errors.push(error);\n\t}\n}\nfunction markTasksAsSkipped(suite, runner) {\n\tsuite.tasks.forEach((t) => {\n\t\tt.mode = \"skip\";\n\t\tt.result = {\n\t\t\t...t.result,\n\t\t\tstate: \"skip\"\n\t\t};\n\t\tupdateTask(\"test-finished\", t, runner);\n\t\tif (t.type === \"suite\") {\n\t\t\tmarkTasksAsSkipped(t, runner);\n\t\t}\n\t});\n}\nasync function runSuite(suite, runner) {\n\tvar _runner$onBeforeRunSu, _suite$result;\n\tawait ((_runner$onBeforeRunSu = runner.onBeforeRunSuite) === null || _runner$onBeforeRunSu === void 0 ? void 0 : _runner$onBeforeRunSu.call(runner, suite));\n\tif (((_suite$result = suite.result) === null || _suite$result === void 0 ? void 0 : _suite$result.state) === \"fail\") {\n\t\tmarkTasksAsSkipped(suite, runner);\n\t\t// failed during collection\n\t\tupdateTask(\"suite-failed-early\", suite, runner);\n\t\treturn;\n\t}\n\tconst start = now$1();\n\tconst mode = suite.mode;\n\tsuite.result = {\n\t\tstate: mode === \"skip\" || mode === \"todo\" ? mode : \"run\",\n\t\tstartTime: unixNow()\n\t};\n\tupdateTask(\"suite-prepare\", suite, runner);\n\tlet beforeAllCleanups = [];\n\tif (suite.mode === \"skip\") {\n\t\tsuite.result.state = \"skip\";\n\t\tupdateTask(\"suite-finished\", suite, runner);\n\t} else if (suite.mode === \"todo\") {\n\t\tsuite.result.state = \"todo\";\n\t\tupdateTask(\"suite-finished\", suite, runner);\n\t} else {\n\t\tvar _runner$onAfterRunSui;\n\t\ttry {\n\t\t\ttry {\n\t\t\t\tbeforeAllCleanups = await callSuiteHook(suite, suite, \"beforeAll\", runner, [suite]);\n\t\t\t} catch (e) {\n\t\t\t\tmarkTasksAsSkipped(suite, runner);\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t\tif (runner.runSuite) {\n\t\t\t\tawait runner.runSuite(suite);\n\t\t\t} else {\n\t\t\t\tfor (let tasksGroup of partitionSuiteChildren(suite)) {\n\t\t\t\t\tif (tasksGroup[0].concurrent === true) {\n\t\t\t\t\t\tawait Promise.all(tasksGroup.map((c) => runSuiteChild(c, runner)));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst { sequence } = runner.config;\n\t\t\t\t\t\tif (suite.shuffle) {\n\t\t\t\t\t\t\t// run describe block independently from tests\n\t\t\t\t\t\t\tconst suites = tasksGroup.filter((group) => group.type === \"suite\");\n\t\t\t\t\t\t\tconst tests = tasksGroup.filter((group) => group.type === \"test\");\n\t\t\t\t\t\t\tconst groups = shuffle([suites, tests], sequence.seed);\n\t\t\t\t\t\t\ttasksGroup = groups.flatMap((group) => shuffle(group, sequence.seed));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor (const c of tasksGroup) {\n\t\t\t\t\t\t\tawait runSuiteChild(c, runner);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tfailTask(suite.result, e, runner.config.diffOptions);\n\t\t}\n\t\ttry {\n\t\t\tawait callSuiteHook(suite, suite, \"afterAll\", runner, [suite]);\n\t\t\tawait callCleanupHooks(runner, beforeAllCleanups);\n\t\t\tif (suite.file === suite) {\n\t\t\t\tconst context = getFileContext(suite);\n\t\t\t\tawait callFixtureCleanup(context);\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tfailTask(suite.result, e, runner.config.diffOptions);\n\t\t}\n\t\tif (suite.mode === \"run\" || suite.mode === \"queued\") {\n\t\t\tif (!runner.config.passWithNoTests && !hasTests(suite)) {\n\t\t\t\tvar _suite$result$errors;\n\t\t\t\tsuite.result.state = \"fail\";\n\t\t\t\tif (!((_suite$result$errors = suite.result.errors) === null || _suite$result$errors === void 0 ? void 0 : _suite$result$errors.length)) {\n\t\t\t\t\tconst error = processError(new Error(`No test found in suite ${suite.name}`));\n\t\t\t\t\tsuite.result.errors = [error];\n\t\t\t\t}\n\t\t\t} else if (hasFailed(suite)) {\n\t\t\t\tsuite.result.state = \"fail\";\n\t\t\t} else {\n\t\t\t\tsuite.result.state = \"pass\";\n\t\t\t}\n\t\t}\n\t\tsuite.result.duration = now$1() - start;\n\t\tupdateTask(\"suite-finished\", suite, runner);\n\t\tawait ((_runner$onAfterRunSui = runner.onAfterRunSuite) === null || _runner$onAfterRunSui === void 0 ? void 0 : _runner$onAfterRunSui.call(runner, suite));\n\t}\n}\nlet limitMaxConcurrency;\nasync function runSuiteChild(c, runner) {\n\tif (c.type === \"test\") {\n\t\treturn limitMaxConcurrency(() => runTest(c, runner));\n\t} else if (c.type === \"suite\") {\n\t\treturn runSuite(c, runner);\n\t}\n}\nasync function runFiles(files, runner) {\n\tlimitMaxConcurrency ?? (limitMaxConcurrency = limitConcurrency(runner.config.maxConcurrency));\n\tfor (const file of files) {\n\t\tif (!file.tasks.length && !runner.config.passWithNoTests) {\n\t\t\tvar _file$result;\n\t\t\tif (!((_file$result = file.result) === null || _file$result === void 0 || (_file$result = _file$result.errors) === null || _file$result === void 0 ? void 0 : _file$result.length)) {\n\t\t\t\tconst error = processError(new Error(`No test suite found in file ${file.filepath}`));\n\t\t\t\tfile.result = {\n\t\t\t\t\tstate: \"fail\",\n\t\t\t\t\terrors: [error]\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\tawait runSuite(file, runner);\n\t}\n}\nconst workerRunners = new WeakSet();\nasync function startTests(specs, runner) {\n\tvar _runner$cancel;\n\tconst cancel = (_runner$cancel = runner.cancel) === null || _runner$cancel === void 0 ? void 0 : _runner$cancel.bind(runner);\n\t// Ideally, we need to have an event listener for this, but only have a runner here.\n\t// Adding another onCancel felt wrong (maybe it needs to be refactored)\n\trunner.cancel = (reason) => {\n\t\t// We intentionally create only one error since there is only one test run that can be cancelled\n\t\tconst error = new TestRunAbortError(\"The test run was aborted by the user.\", reason);\n\t\tgetRunningTests().forEach((test) => abortContextSignal(test.context, error));\n\t\treturn cancel === null || cancel === void 0 ? void 0 : cancel(reason);\n\t};\n\tif (!workerRunners.has(runner)) {\n\t\tvar _runner$onCleanupWork;\n\t\t(_runner$onCleanupWork = runner.onCleanupWorkerContext) === null || _runner$onCleanupWork === void 0 ? void 0 : _runner$onCleanupWork.call(runner, async () => {\n\t\t\tvar _runner$getWorkerCont;\n\t\t\tconst context = (_runner$getWorkerCont = runner.getWorkerContext) === null || _runner$getWorkerCont === void 0 ? void 0 : _runner$getWorkerCont.call(runner);\n\t\t\tif (context) {\n\t\t\t\tawait callFixtureCleanup(context);\n\t\t\t}\n\t\t});\n\t\tworkerRunners.add(runner);\n\t}\n\ttry {\n\t\tvar _runner$onBeforeColle, _runner$onCollected, _runner$onBeforeRunFi, _runner$onAfterRunFil;\n\t\tconst paths = specs.map((f) => typeof f === \"string\" ? f : f.filepath);\n\t\tawait ((_runner$onBeforeColle = runner.onBeforeCollect) === null || _runner$onBeforeColle === void 0 ? void 0 : _runner$onBeforeColle.call(runner, paths));\n\t\tconst files = await collectTests(specs, runner);\n\t\tawait ((_runner$onCollected = runner.onCollected) === null || _runner$onCollected === void 0 ? void 0 : _runner$onCollected.call(runner, files));\n\t\tawait ((_runner$onBeforeRunFi = runner.onBeforeRunFiles) === null || _runner$onBeforeRunFi === void 0 ? void 0 : _runner$onBeforeRunFi.call(runner, files));\n\t\tawait runFiles(files, runner);\n\t\tawait ((_runner$onAfterRunFil = runner.onAfterRunFiles) === null || _runner$onAfterRunFil === void 0 ? void 0 : _runner$onAfterRunFil.call(runner, files));\n\t\tawait finishSendTasksUpdate(runner);\n\t\treturn files;\n\t} finally {\n\t\trunner.cancel = cancel;\n\t}\n}\nasync function publicCollect(specs, runner) {\n\tvar _runner$onBeforeColle2, _runner$onCollected2;\n\tconst paths = specs.map((f) => typeof f === \"string\" ? f : f.filepath);\n\tawait ((_runner$onBeforeColle2 = runner.onBeforeCollect) === null || _runner$onBeforeColle2 === void 0 ? void 0 : _runner$onBeforeColle2.call(runner, paths));\n\tconst files = await collectTests(specs, runner);\n\tawait ((_runner$onCollected2 = runner.onCollected) === null || _runner$onCollected2 === void 0 ? void 0 : _runner$onCollected2.call(runner, files));\n\treturn files;\n}\n\nconst now = Date.now;\nconst collectorContext = {\n\ttasks: [],\n\tcurrentSuite: null\n};\nfunction collectTask(task) {\n\tvar _collectorContext$cur;\n\t(_collectorContext$cur = collectorContext.currentSuite) === null || _collectorContext$cur === void 0 ? void 0 : _collectorContext$cur.tasks.push(task);\n}\nasync function runWithSuite(suite, fn) {\n\tconst prev = collectorContext.currentSuite;\n\tcollectorContext.currentSuite = suite;\n\tawait fn();\n\tcollectorContext.currentSuite = prev;\n}\nfunction withTimeout(fn, timeout, isHook = false, stackTraceError, onTimeout) {\n\tif (timeout <= 0 || timeout === Number.POSITIVE_INFINITY) {\n\t\treturn fn;\n\t}\n\tconst { setTimeout, clearTimeout } = getSafeTimers();\n\t// this function name is used to filter error in test/cli/test/fails.test.ts\n\treturn function runWithTimeout(...args) {\n\t\tconst startTime = now();\n\t\tconst runner = getRunner();\n\t\trunner._currentTaskStartTime = startTime;\n\t\trunner._currentTaskTimeout = timeout;\n\t\treturn new Promise((resolve_, reject_) => {\n\t\t\tvar _timer$unref;\n\t\t\tconst timer = setTimeout(() => {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\trejectTimeoutError();\n\t\t\t}, timeout);\n\t\t\t// `unref` might not exist in browser\n\t\t\t(_timer$unref = timer.unref) === null || _timer$unref === void 0 ? void 0 : _timer$unref.call(timer);\n\t\t\tfunction rejectTimeoutError() {\n\t\t\t\tconst error = makeTimeoutError(isHook, timeout, stackTraceError);\n\t\t\t\tonTimeout === null || onTimeout === void 0 ? void 0 : onTimeout(args, error);\n\t\t\t\treject_(error);\n\t\t\t}\n\t\t\tfunction resolve(result) {\n\t\t\t\trunner._currentTaskStartTime = undefined;\n\t\t\t\trunner._currentTaskTimeout = undefined;\n\t\t\t\tclearTimeout(timer);\n\t\t\t\t// if test/hook took too long in microtask, setTimeout won't be triggered,\n\t\t\t\t// but we still need to fail the test, see\n\t\t\t\t// https://github.com/vitest-dev/vitest/issues/2920\n\t\t\t\tif (now() - startTime >= timeout) {\n\t\t\t\t\trejectTimeoutError();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tresolve_(result);\n\t\t\t}\n\t\t\tfunction reject(error) {\n\t\t\t\trunner._currentTaskStartTime = undefined;\n\t\t\t\trunner._currentTaskTimeout = undefined;\n\t\t\t\tclearTimeout(timer);\n\t\t\t\treject_(error);\n\t\t\t}\n\t\t\t// sync test/hook will be caught by try/catch\n\t\t\ttry {\n\t\t\t\tconst result = fn(...args);\n\t\t\t\t// the result is a thenable, we don't wrap this in Promise.resolve\n\t\t\t\t// to avoid creating new promises\n\t\t\t\tif (typeof result === \"object\" && result != null && typeof result.then === \"function\") {\n\t\t\t\t\tresult.then(resolve, reject);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(result);\n\t\t\t\t}\n\t\t\t} \n\t\t\t// user sync test/hook throws an error\ncatch (error) {\n\t\t\t\treject(error);\n\t\t\t}\n\t\t});\n\t};\n}\nconst abortControllers = new WeakMap();\nfunction abortIfTimeout([context], error) {\n\tif (context) {\n\t\tabortContextSignal(context, error);\n\t}\n}\nfunction abortContextSignal(context, error) {\n\tconst abortController = abortControllers.get(context);\n\tabortController === null || abortController === void 0 ? void 0 : abortController.abort(error);\n}\nfunction createTestContext(test, runner) {\n\tvar _runner$extendTaskCon;\n\tconst context = function() {\n\t\tthrow new Error(\"done() callback is deprecated, use promise instead\");\n\t};\n\tlet abortController = abortControllers.get(context);\n\tif (!abortController) {\n\t\tabortController = new AbortController();\n\t\tabortControllers.set(context, abortController);\n\t}\n\tcontext.signal = abortController.signal;\n\tcontext.task = test;\n\tcontext.skip = (condition, note) => {\n\t\tif (condition === false) {\n\t\t\t// do nothing\n\t\t\treturn undefined;\n\t\t}\n\t\ttest.result ?? (test.result = { state: \"skip\" });\n\t\ttest.result.pending = true;\n\t\tthrow new PendingError(\"test is skipped; abort execution\", test, typeof condition === \"string\" ? condition : note);\n\t};\n\tasync function annotate(message, location, type, attachment) {\n\t\tconst annotation = {\n\t\t\tmessage,\n\t\t\ttype: type || \"notice\"\n\t\t};\n\t\tif (attachment) {\n\t\t\tif (!attachment.body && !attachment.path) {\n\t\t\t\tthrow new TypeError(`Test attachment requires body or path to be set. Both are missing.`);\n\t\t\t}\n\t\t\tif (attachment.body && attachment.path) {\n\t\t\t\tthrow new TypeError(`Test attachment requires only one of \"body\" or \"path\" to be set. Both are specified.`);\n\t\t\t}\n\t\t\tannotation.attachment = attachment;\n\t\t\t// convert to a string so it's easier to serialise\n\t\t\tif (attachment.body instanceof Uint8Array) {\n\t\t\t\tattachment.body = encodeUint8Array(attachment.body);\n\t\t\t}\n\t\t}\n\t\tif (location) {\n\t\t\tannotation.location = location;\n\t\t}\n\t\tif (!runner.onTestAnnotate) {\n\t\t\tthrow new Error(`Test runner doesn't support test annotations.`);\n\t\t}\n\t\tawait finishSendTasksUpdate(runner);\n\t\tconst resolvedAnnotation = await runner.onTestAnnotate(test, annotation);\n\t\ttest.annotations.push(resolvedAnnotation);\n\t\treturn resolvedAnnotation;\n\t}\n\tcontext.annotate = (message, type, attachment) => {\n\t\tif (test.result && test.result.state !== \"run\") {\n\t\t\tthrow new Error(`Cannot annotate tests outside of the test run. The test \"${test.name}\" finished running with the \"${test.result.state}\" state already.`);\n\t\t}\n\t\tlet location;\n\t\tconst stack = new Error(\"STACK_TRACE\").stack;\n\t\tconst index = stack.includes(\"STACK_TRACE\") ? 2 : 1;\n\t\tconst stackLine = stack.split(\"\\n\")[index];\n\t\tconst parsed = parseSingleStack(stackLine);\n\t\tif (parsed) {\n\t\t\tlocation = {\n\t\t\t\tfile: parsed.file,\n\t\t\t\tline: parsed.line,\n\t\t\t\tcolumn: parsed.column\n\t\t\t};\n\t\t}\n\t\tif (typeof type === \"object\") {\n\t\t\treturn recordAsyncAnnotation(test, annotate(message, location, undefined, type));\n\t\t} else {\n\t\t\treturn recordAsyncAnnotation(test, annotate(message, location, type, attachment));\n\t\t}\n\t};\n\tcontext.onTestFailed = (handler, timeout) => {\n\t\ttest.onFailed || (test.onFailed = []);\n\t\ttest.onFailed.push(withTimeout(handler, timeout ?? runner.config.hookTimeout, true, new Error(\"STACK_TRACE_ERROR\"), (_, error) => abortController.abort(error)));\n\t};\n\tcontext.onTestFinished = (handler, timeout) => {\n\t\ttest.onFinished || (test.onFinished = []);\n\t\ttest.onFinished.push(withTimeout(handler, timeout ?? runner.config.hookTimeout, true, new Error(\"STACK_TRACE_ERROR\"), (_, error) => abortController.abort(error)));\n\t};\n\treturn ((_runner$extendTaskCon = runner.extendTaskContext) === null || _runner$extendTaskCon === void 0 ? void 0 : _runner$extendTaskCon.call(runner, context)) || context;\n}\nfunction makeTimeoutError(isHook, timeout, stackTraceError) {\n\tconst message = `${isHook ? \"Hook\" : \"Test\"} timed out in ${timeout}ms.\\nIf this is a long-running ${isHook ? \"hook\" : \"test\"}, pass a timeout value as the last argument or configure it globally with \"${isHook ? \"hookTimeout\" : \"testTimeout\"}\".`;\n\tconst error = new Error(message);\n\tif (stackTraceError === null || stackTraceError === void 0 ? void 0 : stackTraceError.stack) {\n\t\terror.stack = stackTraceError.stack.replace(error.message, stackTraceError.message);\n\t}\n\treturn error;\n}\nconst fileContexts = new WeakMap();\nfunction getFileContext(file) {\n\tconst context = fileContexts.get(file);\n\tif (!context) {\n\t\tthrow new Error(`Cannot find file context for ${file.name}`);\n\t}\n\treturn context;\n}\nfunction setFileContext(file, context) {\n\tfileContexts.set(file, context);\n}\nconst table = [];\nfor (let i = 65; i < 91; i++) {\n\ttable.push(String.fromCharCode(i));\n}\nfor (let i = 97; i < 123; i++) {\n\ttable.push(String.fromCharCode(i));\n}\nfor (let i = 0; i < 10; i++) {\n\ttable.push(i.toString(10));\n}\nfunction encodeUint8Array(bytes) {\n\tlet base64 = \"\";\n\tconst len = bytes.byteLength;\n\tfor (let i = 0; i < len; i += 3) {\n\t\tif (len === i + 1) {\n\t\t\tconst a = (bytes[i] & 252) >> 2;\n\t\t\tconst b = (bytes[i] & 3) << 4;\n\t\t\tbase64 += table[a];\n\t\t\tbase64 += table[b];\n\t\t\tbase64 += \"==\";\n\t\t} else if (len === i + 2) {\n\t\t\tconst a = (bytes[i] & 252) >> 2;\n\t\t\tconst b = (bytes[i] & 3) << 4 | (bytes[i + 1] & 240) >> 4;\n\t\t\tconst c = (bytes[i + 1] & 15) << 2;\n\t\t\tbase64 += table[a];\n\t\t\tbase64 += table[b];\n\t\t\tbase64 += table[c];\n\t\t\tbase64 += \"=\";\n\t\t} else {\n\t\t\tconst a = (bytes[i] & 252) >> 2;\n\t\t\tconst b = (bytes[i] & 3) << 4 | (bytes[i + 1] & 240) >> 4;\n\t\t\tconst c = (bytes[i + 1] & 15) << 2 | (bytes[i + 2] & 192) >> 6;\n\t\t\tconst d = bytes[i + 2] & 63;\n\t\t\tbase64 += table[a];\n\t\t\tbase64 += table[b];\n\t\t\tbase64 += table[c];\n\t\t\tbase64 += table[d];\n\t\t}\n\t}\n\treturn base64;\n}\nfunction recordAsyncAnnotation(test, promise) {\n\t// if promise is explicitly awaited, remove it from the list\n\tpromise = promise.finally(() => {\n\t\tif (!test.promises) {\n\t\t\treturn;\n\t\t}\n\t\tconst index = test.promises.indexOf(promise);\n\t\tif (index !== -1) {\n\t\t\ttest.promises.splice(index, 1);\n\t\t}\n\t});\n\t// record promise\n\tif (!test.promises) {\n\t\ttest.promises = [];\n\t}\n\ttest.promises.push(promise);\n\treturn promise;\n}\n\nfunction getDefaultHookTimeout() {\n\treturn getRunner().config.hookTimeout;\n}\nconst CLEANUP_TIMEOUT_KEY = Symbol.for(\"VITEST_CLEANUP_TIMEOUT\");\nconst CLEANUP_STACK_TRACE_KEY = Symbol.for(\"VITEST_CLEANUP_STACK_TRACE\");\nfunction getBeforeHookCleanupCallback(hook, result, context) {\n\tif (typeof result === \"function\") {\n\t\tconst timeout = CLEANUP_TIMEOUT_KEY in hook && typeof hook[CLEANUP_TIMEOUT_KEY] === \"number\" ? hook[CLEANUP_TIMEOUT_KEY] : getDefaultHookTimeout();\n\t\tconst stackTraceError = CLEANUP_STACK_TRACE_KEY in hook && hook[CLEANUP_STACK_TRACE_KEY] instanceof Error ? hook[CLEANUP_STACK_TRACE_KEY] : undefined;\n\t\treturn withTimeout(result, timeout, true, stackTraceError, (_, error) => {\n\t\t\tif (context) {\n\t\t\t\tabortContextSignal(context, error);\n\t\t\t}\n\t\t});\n\t}\n}\n/**\n* Registers a callback function to be executed once before all tests within the current suite.\n* This hook is useful for scenarios where you need to perform setup operations that are common to all tests in a suite, such as initializing a database connection or setting up a test environment.\n*\n* **Note:** The `beforeAll` hooks are executed in the order they are defined one after another. You can configure this by changing the `sequence.hooks` option in the config file.\n*\n* @param {Function} fn - The callback function to be executed before all tests.\n* @param {number} [timeout] - Optional timeout in milliseconds for the hook. If not provided, the default hook timeout from the runner's configuration is used.\n* @returns {void}\n* @example\n* ```ts\n* // Example of using beforeAll to set up a database connection\n* beforeAll(async () => {\n* await database.connect();\n* });\n* ```\n*/\nfunction beforeAll(fn, timeout = getDefaultHookTimeout()) {\n\tassertTypes(fn, \"\\\"beforeAll\\\" callback\", [\"function\"]);\n\tconst stackTraceError = new Error(\"STACK_TRACE_ERROR\");\n\treturn getCurrentSuite().on(\"beforeAll\", Object.assign(withTimeout(fn, timeout, true, stackTraceError), {\n\t\t[CLEANUP_TIMEOUT_KEY]: timeout,\n\t\t[CLEANUP_STACK_TRACE_KEY]: stackTraceError\n\t}));\n}\n/**\n* Registers a callback function to be executed once after all tests within the current suite have completed.\n* This hook is useful for scenarios where you need to perform cleanup operations after all tests in a suite have run, such as closing database connections or cleaning up temporary files.\n*\n* **Note:** The `afterAll` hooks are running in reverse order of their registration. You can configure this by changing the `sequence.hooks` option in the config file.\n*\n* @param {Function} fn - The callback function to be executed after all tests.\n* @param {number} [timeout] - Optional timeout in milliseconds for the hook. If not provided, the default hook timeout from the runner's configuration is used.\n* @returns {void}\n* @example\n* ```ts\n* // Example of using afterAll to close a database connection\n* afterAll(async () => {\n* await database.disconnect();\n* });\n* ```\n*/\nfunction afterAll(fn, timeout) {\n\tassertTypes(fn, \"\\\"afterAll\\\" callback\", [\"function\"]);\n\treturn getCurrentSuite().on(\"afterAll\", withTimeout(fn, timeout ?? getDefaultHookTimeout(), true, new Error(\"STACK_TRACE_ERROR\")));\n}\n/**\n* Registers a callback function to be executed before each test within the current suite.\n* This hook is useful for scenarios where you need to reset or reinitialize the test environment before each test runs, such as resetting database states, clearing caches, or reinitializing variables.\n*\n* **Note:** The `beforeEach` hooks are executed in the order they are defined one after another. You can configure this by changing the `sequence.hooks` option in the config file.\n*\n* @param {Function} fn - The callback function to be executed before each test. This function receives an `TestContext` parameter if additional test context is needed.\n* @param {number} [timeout] - Optional timeout in milliseconds for the hook. If not provided, the default hook timeout from the runner's configuration is used.\n* @returns {void}\n* @example\n* ```ts\n* // Example of using beforeEach to reset a database state\n* beforeEach(async () => {\n* await database.reset();\n* });\n* ```\n*/\nfunction beforeEach(fn, timeout = getDefaultHookTimeout()) {\n\tassertTypes(fn, \"\\\"beforeEach\\\" callback\", [\"function\"]);\n\tconst stackTraceError = new Error(\"STACK_TRACE_ERROR\");\n\tconst runner = getRunner();\n\treturn getCurrentSuite().on(\"beforeEach\", Object.assign(withTimeout(withFixtures(runner, fn), timeout ?? getDefaultHookTimeout(), true, stackTraceError, abortIfTimeout), {\n\t\t[CLEANUP_TIMEOUT_KEY]: timeout,\n\t\t[CLEANUP_STACK_TRACE_KEY]: stackTraceError\n\t}));\n}\n/**\n* Registers a callback function to be executed after each test within the current suite has completed.\n* This hook is useful for scenarios where you need to clean up or reset the test environment after each test runs, such as deleting temporary files, clearing test-specific database entries, or resetting mocked functions.\n*\n* **Note:** The `afterEach` hooks are running in reverse order of their registration. You can configure this by changing the `sequence.hooks` option in the config file.\n*\n* @param {Function} fn - The callback function to be executed after each test. This function receives an `TestContext` parameter if additional test context is needed.\n* @param {number} [timeout] - Optional timeout in milliseconds for the hook. If not provided, the default hook timeout from the runner's configuration is used.\n* @returns {void}\n* @example\n* ```ts\n* // Example of using afterEach to delete temporary files created during a test\n* afterEach(async () => {\n* await fileSystem.deleteTempFiles();\n* });\n* ```\n*/\nfunction afterEach(fn, timeout) {\n\tassertTypes(fn, \"\\\"afterEach\\\" callback\", [\"function\"]);\n\tconst runner = getRunner();\n\treturn getCurrentSuite().on(\"afterEach\", withTimeout(withFixtures(runner, fn), timeout ?? getDefaultHookTimeout(), true, new Error(\"STACK_TRACE_ERROR\"), abortIfTimeout));\n}\n/**\n* Registers a callback function to be executed when a test fails within the current suite.\n* This function allows for custom actions to be performed in response to test failures, such as logging, cleanup, or additional diagnostics.\n*\n* **Note:** The `onTestFailed` hooks are running in reverse order of their registration. You can configure this by changing the `sequence.hooks` option in the config file.\n*\n* @param {Function} fn - The callback function to be executed upon a test failure. The function receives the test result (including errors).\n* @param {number} [timeout] - Optional timeout in milliseconds for the hook. If not provided, the default hook timeout from the runner's configuration is used.\n* @throws {Error} Throws an error if the function is not called within a test.\n* @returns {void}\n* @example\n* ```ts\n* // Example of using onTestFailed to log failure details\n* onTestFailed(({ errors }) => {\n* console.log(`Test failed: ${test.name}`, errors);\n* });\n* ```\n*/\nconst onTestFailed = createTestHook(\"onTestFailed\", (test, handler, timeout) => {\n\ttest.onFailed || (test.onFailed = []);\n\ttest.onFailed.push(withTimeout(handler, timeout ?? getDefaultHookTimeout(), true, new Error(\"STACK_TRACE_ERROR\"), abortIfTimeout));\n});\n/**\n* Registers a callback function to be executed when the current test finishes, regardless of the outcome (pass or fail).\n* This function is ideal for performing actions that should occur after every test execution, such as cleanup, logging, or resetting shared resources.\n*\n* This hook is useful if you have access to a resource in the test itself and you want to clean it up after the test finishes. It is a more compact way to clean up resources than using the combination of `beforeEach` and `afterEach`.\n*\n* **Note:** The `onTestFinished` hooks are running in reverse order of their registration. You can configure this by changing the `sequence.hooks` option in the config file.\n*\n* **Note:** The `onTestFinished` hook is not called if the test is canceled with a dynamic `ctx.skip()` call.\n*\n* @param {Function} fn - The callback function to be executed after a test finishes. The function can receive parameters providing details about the completed test, including its success or failure status.\n* @param {number} [timeout] - Optional timeout in milliseconds for the hook. If not provided, the default hook timeout from the runner's configuration is used.\n* @throws {Error} Throws an error if the function is not called within a test.\n* @returns {void}\n* @example\n* ```ts\n* // Example of using onTestFinished for cleanup\n* const db = await connectToDatabase();\n* onTestFinished(async () => {\n* await db.disconnect();\n* });\n* ```\n*/\nconst onTestFinished = createTestHook(\"onTestFinished\", (test, handler, timeout) => {\n\ttest.onFinished || (test.onFinished = []);\n\ttest.onFinished.push(withTimeout(handler, timeout ?? getDefaultHookTimeout(), true, new Error(\"STACK_TRACE_ERROR\"), abortIfTimeout));\n});\nfunction createTestHook(name, handler) {\n\treturn (fn, timeout) => {\n\t\tassertTypes(fn, `\"${name}\" callback`, [\"function\"]);\n\t\tconst current = getCurrentTest();\n\t\tif (!current) {\n\t\t\tthrow new Error(`Hook ${name}() can only be called inside a test`);\n\t\t}\n\t\treturn handler(current, fn, timeout);\n\t};\n}\n\nexport { someTasksAreOnly as A, limitConcurrency as B, partitionSuiteChildren as C, getFullName as D, getNames as E, getSuites as F, getTasks as G, getTestName as H, getTests as I, hasFailed as J, hasTests as K, isAtomTest as L, isTestCase as M, afterAll as a, afterEach as b, beforeAll as c, beforeEach as d, onTestFinished as e, getHooks as f, getFn as g, setHooks as h, startTests as i, createTaskCollector as j, describe as k, getCurrentSuite as l, it as m, suite as n, onTestFailed as o, publicCollect as p, getCurrentTest as q, createChainable as r, setFn as s, test as t, updateTask as u, calculateSuiteHash as v, createFileTask as w, generateFileHash as x, generateHash as y, interpretTaskModes as z };\n"],"x_google_ignoreList":[0],"mappings":"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"}