@headless-lms/server 0.2.0 → 0.4.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 (351) hide show
  1. package/dist/_virtual/_rolldown/runtime.js +5 -0
  2. package/dist/app/community-mail.d.ts +24 -0
  3. package/dist/app/community-mail.js +92 -0
  4. package/dist/app/community-mail.js.map +1 -0
  5. package/dist/app/container.d.ts +40 -19
  6. package/dist/app/container.js +294 -45
  7. package/dist/app/container.js.map +1 -1
  8. package/dist/app/mcp-endpoints.d.ts +13 -0
  9. package/dist/app/mcp-endpoints.js +25 -0
  10. package/dist/app/mcp-endpoints.js.map +1 -0
  11. package/dist/app/notification-channels.d.ts +47 -0
  12. package/dist/app/notification-channels.js +174 -0
  13. package/dist/app/notification-channels.js.map +1 -0
  14. package/dist/app/notification-reads.d.ts +23 -0
  15. package/dist/app/notification-reads.js +95 -0
  16. package/dist/app/notification-reads.js.map +1 -0
  17. package/dist/http/config.d.ts +2 -1
  18. package/dist/http/errors.d.ts +15 -0
  19. package/dist/http/errors.js +162 -0
  20. package/dist/http/errors.js.map +1 -0
  21. package/dist/http/mcp/catalogue.d.ts +37 -0
  22. package/dist/http/mcp/catalogue.js +69 -0
  23. package/dist/http/mcp/catalogue.js.map +1 -0
  24. package/dist/http/mcp/challenge.d.ts +7 -0
  25. package/dist/http/mcp/challenge.js +35 -0
  26. package/dist/http/mcp/challenge.js.map +1 -0
  27. package/dist/http/mcp/input-schema.d.ts +7 -0
  28. package/dist/http/mcp/input-schema.js +28 -0
  29. package/dist/http/mcp/input-schema.js.map +1 -0
  30. package/dist/http/mcp/route.d.ts +8 -0
  31. package/dist/http/mcp/route.js +75 -0
  32. package/dist/http/mcp/route.js.map +1 -0
  33. package/dist/http/mcp/server.d.ts +8 -0
  34. package/dist/http/mcp/server.js +31 -0
  35. package/dist/http/mcp/server.js.map +1 -0
  36. package/dist/http/mcp/test-support.d.ts +55 -0
  37. package/dist/http/mcp/test-support.js +151 -0
  38. package/dist/http/mcp/test-support.js.map +1 -0
  39. package/dist/http/mcp/tool.d.ts +48 -0
  40. package/dist/http/mcp/tool.js +58 -0
  41. package/dist/http/mcp/tool.js.map +1 -0
  42. package/dist/http/mcp/tools/automations.d.ts +6 -0
  43. package/dist/http/mcp/tools/automations.js +120 -0
  44. package/dist/http/mcp/tools/automations.js.map +1 -0
  45. package/dist/http/mcp/tools/catalog.d.ts +6 -0
  46. package/dist/http/mcp/tools/catalog.js +200 -0
  47. package/dist/http/mcp/tools/catalog.js.map +1 -0
  48. package/dist/http/mcp/tools/comments.d.ts +6 -0
  49. package/dist/http/mcp/tools/comments.js +70 -0
  50. package/dist/http/mcp/tools/comments.js.map +1 -0
  51. package/dist/http/mcp/tools/communities.d.ts +6 -0
  52. package/dist/http/mcp/tools/communities.js +175 -0
  53. package/dist/http/mcp/tools/communities.js.map +1 -0
  54. package/dist/http/mcp/tools/community-members.d.ts +6 -0
  55. package/dist/http/mcp/tools/community-members.js +89 -0
  56. package/dist/http/mcp/tools/community-members.js.map +1 -0
  57. package/dist/http/mcp/tools/community-moderation.d.ts +6 -0
  58. package/dist/http/mcp/tools/community-moderation.js +144 -0
  59. package/dist/http/mcp/tools/community-moderation.js.map +1 -0
  60. package/dist/http/mcp/tools/courses.d.ts +6 -0
  61. package/dist/http/mcp/tools/courses.js +121 -0
  62. package/dist/http/mcp/tools/courses.js.map +1 -0
  63. package/dist/http/mcp/tools/index.d.ts +6 -0
  64. package/dist/http/mcp/tools/index.js +23 -0
  65. package/dist/http/mcp/tools/index.js.map +1 -0
  66. package/dist/http/mcp/tools/people.d.ts +6 -0
  67. package/dist/http/mcp/tools/people.js +145 -0
  68. package/dist/http/mcp/tools/people.js.map +1 -0
  69. package/dist/http/plugins/auth.js +13 -5
  70. package/dist/http/plugins/auth.js.map +1 -1
  71. package/dist/http/plugins/error-handler.d.ts +2 -1
  72. package/dist/http/plugins/error-handler.js +51 -65
  73. package/dist/http/plugins/error-handler.js.map +1 -1
  74. package/dist/http/plugins/openapi.js +49 -2
  75. package/dist/http/plugins/openapi.js.map +1 -1
  76. package/dist/http/routes/access.d.ts +7 -0
  77. package/dist/http/routes/access.js +140 -0
  78. package/dist/http/routes/access.js.map +1 -0
  79. package/dist/http/routes/activities.js +68 -23
  80. package/dist/http/routes/activities.js.map +1 -1
  81. package/dist/http/routes/assets.js +60 -55
  82. package/dist/http/routes/assets.js.map +1 -1
  83. package/dist/http/routes/automations.js +44 -24
  84. package/dist/http/routes/automations.js.map +1 -1
  85. package/dist/http/routes/bundles.js +29 -18
  86. package/dist/http/routes/bundles.js.map +1 -1
  87. package/dist/http/routes/communities.d.ts +7 -0
  88. package/dist/http/routes/communities.js +522 -0
  89. package/dist/http/routes/communities.js.map +1 -0
  90. package/dist/http/routes/community-moderation.d.ts +7 -0
  91. package/dist/http/routes/community-moderation.js +425 -0
  92. package/dist/http/routes/community-moderation.js.map +1 -0
  93. package/dist/http/routes/course-analytics.js +9 -7
  94. package/dist/http/routes/course-analytics.js.map +1 -1
  95. package/dist/http/routes/courses.js +30 -15
  96. package/dist/http/routes/courses.js.map +1 -1
  97. package/dist/http/routes/dashboard.js +15 -6
  98. package/dist/http/routes/dashboard.js.map +1 -1
  99. package/dist/http/routes/discussion.js +34 -26
  100. package/dist/http/routes/discussion.js.map +1 -1
  101. package/dist/http/routes/downloads.js +48 -30
  102. package/dist/http/routes/downloads.js.map +1 -1
  103. package/dist/http/routes/entitlements.js +16 -7
  104. package/dist/http/routes/entitlements.js.map +1 -1
  105. package/dist/http/routes/integrations.js +38 -41
  106. package/dist/http/routes/integrations.js.map +1 -1
  107. package/dist/http/routes/member/actor.d.ts +14 -0
  108. package/dist/http/routes/member/actor.js +11 -0
  109. package/dist/http/routes/member/actor.js.map +1 -0
  110. package/dist/http/routes/member/assets.d.ts +7 -0
  111. package/dist/http/routes/member/assets.js +79 -0
  112. package/dist/http/routes/member/assets.js.map +1 -0
  113. package/dist/http/routes/member/chats.d.ts +7 -0
  114. package/dist/http/routes/member/chats.js +435 -0
  115. package/dist/http/routes/member/chats.js.map +1 -0
  116. package/dist/http/routes/member/comments.d.ts +7 -0
  117. package/dist/http/routes/member/comments.js +187 -0
  118. package/dist/http/routes/member/comments.js.map +1 -0
  119. package/dist/http/routes/member/community.d.ts +7 -0
  120. package/dist/http/routes/member/community.js +312 -0
  121. package/dist/http/routes/member/community.js.map +1 -0
  122. package/dist/http/routes/member/courses.d.ts +7 -0
  123. package/dist/http/routes/member/courses.js +101 -0
  124. package/dist/http/routes/member/courses.js.map +1 -0
  125. package/dist/http/routes/member/devices.d.ts +7 -0
  126. package/dist/http/routes/member/devices.js +98 -0
  127. package/dist/http/routes/member/devices.js.map +1 -0
  128. package/dist/http/routes/member/downloads.d.ts +7 -0
  129. package/dist/http/routes/member/downloads.js +56 -0
  130. package/dist/http/routes/member/downloads.js.map +1 -0
  131. package/dist/http/routes/member/files.d.ts +7 -0
  132. package/dist/http/routes/member/files.js +184 -0
  133. package/dist/http/routes/member/files.js.map +1 -0
  134. package/dist/http/routes/member/index.d.ts +7 -0
  135. package/dist/http/routes/member/index.js +35 -0
  136. package/dist/http/routes/member/index.js.map +1 -0
  137. package/dist/http/routes/member/notification-settings.d.ts +7 -0
  138. package/dist/http/routes/member/notification-settings.js +108 -0
  139. package/dist/http/routes/member/notification-settings.js.map +1 -0
  140. package/dist/http/routes/member/notifications.d.ts +7 -0
  141. package/dist/http/routes/member/notifications.js +125 -0
  142. package/dist/http/routes/member/notifications.js.map +1 -0
  143. package/dist/http/routes/member/org.d.ts +7 -0
  144. package/dist/http/routes/member/org.js +56 -0
  145. package/dist/http/routes/member/org.js.map +1 -0
  146. package/dist/http/routes/member/posts.d.ts +7 -0
  147. package/dist/http/routes/member/posts.js +612 -0
  148. package/dist/http/routes/member/posts.js.map +1 -0
  149. package/dist/http/routes/member/profile.d.ts +7 -0
  150. package/dist/http/routes/member/profile.js +48 -0
  151. package/dist/http/routes/member/profile.js.map +1 -0
  152. package/dist/http/routes/member/progress.d.ts +7 -0
  153. package/dist/http/routes/member/progress.js +60 -0
  154. package/dist/http/routes/member/progress.js.map +1 -0
  155. package/dist/http/routes/organizations.js +171 -25
  156. package/dist/http/routes/organizations.js.map +1 -1
  157. package/dist/http/routes/students.js +32 -47
  158. package/dist/http/routes/students.js.map +1 -1
  159. package/dist/http/routes/webhooks.js +26 -18
  160. package/dist/http/routes/webhooks.js.map +1 -1
  161. package/dist/http/routes.js +8 -2
  162. package/dist/http/routes.js.map +1 -1
  163. package/dist/http/schemas/access.d.ts +146 -0
  164. package/dist/http/schemas/access.js +36 -0
  165. package/dist/http/schemas/access.js.map +1 -0
  166. package/dist/http/schemas/activities.d.ts +3 -1
  167. package/dist/http/schemas/activities.js +4 -4
  168. package/dist/http/schemas/activities.js.map +1 -1
  169. package/dist/http/schemas/assets.d.ts +79 -80
  170. package/dist/http/schemas/assets.js +23 -13
  171. package/dist/http/schemas/assets.js.map +1 -1
  172. package/dist/http/schemas/automations.d.ts +6 -0
  173. package/dist/http/schemas/bundles.js +6 -6
  174. package/dist/http/schemas/bundles.js.map +1 -1
  175. package/dist/http/schemas/chats.d.ts +409 -0
  176. package/dist/http/schemas/chats.js +56 -0
  177. package/dist/http/schemas/chats.js.map +1 -0
  178. package/dist/http/schemas/community.d.ts +597 -0
  179. package/dist/http/schemas/community.js +132 -0
  180. package/dist/http/schemas/community.js.map +1 -0
  181. package/dist/http/schemas/content.d.ts +4 -2
  182. package/dist/http/schemas/content.js +11 -8
  183. package/dist/http/schemas/content.js.map +1 -1
  184. package/dist/http/schemas/discussion.d.ts +98 -14
  185. package/dist/http/schemas/discussion.js +25 -12
  186. package/dist/http/schemas/discussion.js.map +1 -1
  187. package/dist/http/schemas/downloads.d.ts +11 -5
  188. package/dist/http/schemas/downloads.js +14 -11
  189. package/dist/http/schemas/downloads.js.map +1 -1
  190. package/dist/http/schemas/entitlements.d.ts +6 -6
  191. package/dist/http/schemas/entitlements.js +6 -6
  192. package/dist/http/schemas/entitlements.js.map +1 -1
  193. package/dist/http/schemas/files.d.ts +45 -0
  194. package/dist/http/schemas/files.js +25 -0
  195. package/dist/http/schemas/files.js.map +1 -0
  196. package/dist/http/schemas/index.d.ts +15 -8
  197. package/dist/http/schemas/index.js +15 -8
  198. package/dist/http/schemas/integrations.d.ts +4 -4
  199. package/dist/http/schemas/invites.d.ts +4 -0
  200. package/dist/http/schemas/invites.js +1 -0
  201. package/dist/http/schemas/invites.js.map +1 -1
  202. package/dist/http/schemas/{learn.d.ts → member.d.ts} +31 -18
  203. package/dist/http/schemas/{learn.js → member.js} +17 -13
  204. package/dist/http/schemas/member.js.map +1 -0
  205. package/dist/http/schemas/members.d.ts +35 -2
  206. package/dist/http/schemas/members.js +17 -3
  207. package/dist/http/schemas/members.js.map +1 -1
  208. package/dist/http/schemas/notifications.d.ts +550 -0
  209. package/dist/http/schemas/notifications.js +164 -0
  210. package/dist/http/schemas/notifications.js.map +1 -0
  211. package/dist/http/schemas/posts.d.ts +350 -0
  212. package/dist/http/schemas/posts.js +47 -0
  213. package/dist/http/schemas/posts.js.map +1 -0
  214. package/dist/http/schemas/profile.d.ts +23 -0
  215. package/dist/http/schemas/profile.js +15 -0
  216. package/dist/http/schemas/profile.js.map +1 -0
  217. package/dist/http/schemas/shared.d.ts +32 -1
  218. package/dist/http/schemas/shared.js +20 -2
  219. package/dist/http/schemas/shared.js.map +1 -1
  220. package/dist/http/schemas/students.d.ts +1 -7
  221. package/dist/http/schemas/students.js +1 -7
  222. package/dist/http/schemas/students.js.map +1 -1
  223. package/dist/http/scope.d.ts +3 -1
  224. package/dist/http/scope.js +26 -4
  225. package/dist/http/scope.js.map +1 -1
  226. package/dist/http/server.js +6 -1
  227. package/dist/http/server.js.map +1 -1
  228. package/dist/http/web-bridge.d.ts +1 -1
  229. package/dist/http/web-bridge.js +2 -2
  230. package/dist/http/web-bridge.js.map +1 -1
  231. package/dist/http/well-known.d.ts +7 -0
  232. package/dist/http/well-known.js +22 -0
  233. package/dist/http/well-known.js.map +1 -0
  234. package/dist/index.d.ts +3 -1
  235. package/dist/index.js +4 -2
  236. package/dist/index.js.map +1 -1
  237. package/dist/node_modules/.pnpm/@jridgewell_sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.js +78 -0
  238. package/dist/node_modules/.pnpm/@jridgewell_sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.js.map +1 -0
  239. package/dist/node_modules/.pnpm/@vitest_expect@2.1.9/node_modules/@vitest/expect/dist/index.js +1267 -0
  240. package/dist/node_modules/.pnpm/@vitest_expect@2.1.9/node_modules/@vitest/expect/dist/index.js.map +1 -0
  241. package/dist/node_modules/.pnpm/@vitest_pretty-format@2.1.9/node_modules/@vitest/pretty-format/dist/index.js +814 -0
  242. package/dist/node_modules/.pnpm/@vitest_pretty-format@2.1.9/node_modules/@vitest/pretty-format/dist/index.js.map +1 -0
  243. package/dist/node_modules/.pnpm/@vitest_runner@2.1.9/node_modules/@vitest/runner/dist/chunk-tasks.js +43 -0
  244. package/dist/node_modules/.pnpm/@vitest_runner@2.1.9/node_modules/@vitest/runner/dist/chunk-tasks.js.map +1 -0
  245. package/dist/node_modules/.pnpm/@vitest_runner@2.1.9/node_modules/@vitest/runner/dist/index.js +527 -0
  246. package/dist/node_modules/.pnpm/@vitest_runner@2.1.9/node_modules/@vitest/runner/dist/index.js.map +1 -0
  247. package/dist/node_modules/.pnpm/@vitest_runner@2.1.9/node_modules/@vitest/runner/dist/utils.js +2 -0
  248. package/dist/node_modules/.pnpm/@vitest_snapshot@2.1.9/node_modules/@vitest/snapshot/dist/index.js +1737 -0
  249. package/dist/node_modules/.pnpm/@vitest_snapshot@2.1.9/node_modules/@vitest/snapshot/dist/index.js.map +1 -0
  250. package/dist/node_modules/.pnpm/@vitest_spy@2.1.9/node_modules/@vitest/spy/dist/index.js +137 -0
  251. package/dist/node_modules/.pnpm/@vitest_spy@2.1.9/node_modules/@vitest/spy/dist/index.js.map +1 -0
  252. package/dist/node_modules/.pnpm/@vitest_utils@2.1.9/node_modules/@vitest/utils/dist/chunk-_commonjsHelpers.js +118 -0
  253. package/dist/node_modules/.pnpm/@vitest_utils@2.1.9/node_modules/@vitest/utils/dist/chunk-_commonjsHelpers.js.map +1 -0
  254. package/dist/node_modules/.pnpm/@vitest_utils@2.1.9/node_modules/@vitest/utils/dist/diff.js +1222 -0
  255. package/dist/node_modules/.pnpm/@vitest_utils@2.1.9/node_modules/@vitest/utils/dist/diff.js.map +1 -0
  256. package/dist/node_modules/.pnpm/@vitest_utils@2.1.9/node_modules/@vitest/utils/dist/error.js +91 -0
  257. package/dist/node_modules/.pnpm/@vitest_utils@2.1.9/node_modules/@vitest/utils/dist/error.js.map +1 -0
  258. package/dist/node_modules/.pnpm/@vitest_utils@2.1.9/node_modules/@vitest/utils/dist/helpers.js +113 -0
  259. package/dist/node_modules/.pnpm/@vitest_utils@2.1.9/node_modules/@vitest/utils/dist/helpers.js.map +1 -0
  260. package/dist/node_modules/.pnpm/@vitest_utils@2.1.9/node_modules/@vitest/utils/dist/index.js +449 -0
  261. package/dist/node_modules/.pnpm/@vitest_utils@2.1.9/node_modules/@vitest/utils/dist/index.js.map +1 -0
  262. package/dist/node_modules/.pnpm/@vitest_utils@2.1.9/node_modules/@vitest/utils/dist/source-map.js +163 -0
  263. package/dist/node_modules/.pnpm/@vitest_utils@2.1.9/node_modules/@vitest/utils/dist/source-map.js.map +1 -0
  264. package/dist/node_modules/.pnpm/chai@5.3.3/node_modules/chai/index.js +3187 -0
  265. package/dist/node_modules/.pnpm/chai@5.3.3/node_modules/chai/index.js.map +1 -0
  266. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/arguments.js +11 -0
  267. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/arguments.js.map +1 -0
  268. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/array.js +16 -0
  269. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/array.js.map +1 -0
  270. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/bigint.js +11 -0
  271. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/bigint.js.map +1 -0
  272. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/class.js +15 -0
  273. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/class.js.map +1 -0
  274. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/date.js +13 -0
  275. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/date.js.map +1 -0
  276. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/error.js +34 -0
  277. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/error.js.map +1 -0
  278. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/function.js +12 -0
  279. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/function.js.map +1 -0
  280. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/helpers.js +122 -0
  281. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/helpers.js.map +1 -0
  282. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/html.js +39 -0
  283. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/html.js.map +1 -0
  284. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/index.js +99 -0
  285. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/index.js.map +1 -0
  286. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/map.js +25 -0
  287. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/map.js.map +1 -0
  288. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/number.js +14 -0
  289. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/number.js.map +1 -0
  290. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/object.js +21 -0
  291. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/object.js.map +1 -0
  292. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/promise.js +6 -0
  293. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/promise.js.map +1 -0
  294. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/regexp.js +12 -0
  295. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/regexp.js.map +1 -0
  296. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/set.js +18 -0
  297. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/set.js.map +1 -0
  298. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/string.js +24 -0
  299. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/string.js.map +1 -0
  300. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/symbol.js +9 -0
  301. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/symbol.js.map +1 -0
  302. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/typedarray.js +30 -0
  303. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/typedarray.js.map +1 -0
  304. package/dist/node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.js +939 -0
  305. package/dist/node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.js.map +1 -0
  306. package/dist/node_modules/.pnpm/pathe@1.1.2/node_modules/pathe/dist/shared/pathe.ff20891b.js +82 -0
  307. package/dist/node_modules/.pnpm/pathe@1.1.2/node_modules/pathe/dist/shared/pathe.ff20891b.js.map +1 -0
  308. package/dist/node_modules/.pnpm/tinyrainbow@1.2.0/node_modules/tinyrainbow/dist/chunk-BVHSVHOK.js +82 -0
  309. package/dist/node_modules/.pnpm/tinyrainbow@1.2.0/node_modules/tinyrainbow/dist/chunk-BVHSVHOK.js.map +1 -0
  310. package/dist/node_modules/.pnpm/tinyrainbow@1.2.0/node_modules/tinyrainbow/dist/node.js +8 -0
  311. package/dist/node_modules/.pnpm/tinyrainbow@1.2.0/node_modules/tinyrainbow/dist/node.js.map +1 -0
  312. package/dist/node_modules/.pnpm/tinyspy@3.0.2/node_modules/tinyspy/dist/index.js +83 -0
  313. package/dist/node_modules/.pnpm/tinyspy@3.0.2/node_modules/tinyspy/dist/index.js.map +1 -0
  314. package/dist/node_modules/.pnpm/vitest@2.1.9_@types_node@22.20.0_jsdom@25.0.1_lightningcss@1.32.0/node_modules/vitest/dist/chunks/_commonjsHelpers.BFTU3MAI.js +9 -0
  315. package/dist/node_modules/.pnpm/vitest@2.1.9_@types_node@22.20.0_jsdom@25.0.1_lightningcss@1.32.0/node_modules/vitest/dist/chunks/_commonjsHelpers.BFTU3MAI.js.map +1 -0
  316. package/dist/node_modules/.pnpm/vitest@2.1.9_@types_node@22.20.0_jsdom@25.0.1_lightningcss@1.32.0/node_modules/vitest/dist/chunks/date.W2xKR2qe.js +51 -0
  317. package/dist/node_modules/.pnpm/vitest@2.1.9_@types_node@22.20.0_jsdom@25.0.1_lightningcss@1.32.0/node_modules/vitest/dist/chunks/date.W2xKR2qe.js.map +1 -0
  318. package/dist/node_modules/.pnpm/vitest@2.1.9_@types_node@22.20.0_jsdom@25.0.1_lightningcss@1.32.0/node_modules/vitest/dist/chunks/utils.C8RiOc4B.js +48 -0
  319. package/dist/node_modules/.pnpm/vitest@2.1.9_@types_node@22.20.0_jsdom@25.0.1_lightningcss@1.32.0/node_modules/vitest/dist/chunks/utils.C8RiOc4B.js.map +1 -0
  320. package/dist/node_modules/.pnpm/vitest@2.1.9_@types_node@22.20.0_jsdom@25.0.1_lightningcss@1.32.0/node_modules/vitest/dist/chunks/vi.DgezovHB.js +2426 -0
  321. package/dist/node_modules/.pnpm/vitest@2.1.9_@types_node@22.20.0_jsdom@25.0.1_lightningcss@1.32.0/node_modules/vitest/dist/chunks/vi.DgezovHB.js.map +1 -0
  322. package/dist/packages/server/package.js +6 -0
  323. package/dist/packages/server/package.js.map +1 -0
  324. package/package.json +9 -7
  325. package/dist/app/notifications.d.ts +0 -7
  326. package/dist/app/notifications.js +0 -26
  327. package/dist/app/notifications.js.map +0 -1
  328. package/dist/http/routes/learn/assets.d.ts +0 -8
  329. package/dist/http/routes/learn/assets.js +0 -32
  330. package/dist/http/routes/learn/assets.js.map +0 -1
  331. package/dist/http/routes/learn/comments.d.ts +0 -7
  332. package/dist/http/routes/learn/comments.js +0 -175
  333. package/dist/http/routes/learn/comments.js.map +0 -1
  334. package/dist/http/routes/learn/courses.d.ts +0 -7
  335. package/dist/http/routes/learn/courses.js +0 -98
  336. package/dist/http/routes/learn/courses.js.map +0 -1
  337. package/dist/http/routes/learn/downloads.d.ts +0 -7
  338. package/dist/http/routes/learn/downloads.js +0 -76
  339. package/dist/http/routes/learn/downloads.js.map +0 -1
  340. package/dist/http/routes/learn/index.d.ts +0 -7
  341. package/dist/http/routes/learn/index.js +0 -19
  342. package/dist/http/routes/learn/index.js.map +0 -1
  343. package/dist/http/routes/learn/org.d.ts +0 -7
  344. package/dist/http/routes/learn/org.js +0 -50
  345. package/dist/http/routes/learn/org.js.map +0 -1
  346. package/dist/http/routes/learn/progress.d.ts +0 -7
  347. package/dist/http/routes/learn/progress.js +0 -63
  348. package/dist/http/routes/learn/progress.js.map +0 -1
  349. package/dist/http/schemas/learn.js.map +0 -1
  350. package/dist/package.js +0 -6
  351. package/dist/package.js.map +0 -1
@@ -0,0 +1,527 @@
1
+ import { f as format, o as objDisplay } from "../../../../../@vitest_utils@2.1.9/node_modules/@vitest/utils/dist/chunk-_commonjsHelpers.js";
2
+ import { createDefer, isNegativeNaN, isObject, objectAttr, toArray } from "../../../../../@vitest_utils@2.1.9/node_modules/@vitest/utils/dist/helpers.js";
3
+ import { getSafeTimers } from "../../../../../@vitest_utils@2.1.9/node_modules/@vitest/utils/dist/index.js";
4
+ import "../../../../../@vitest_utils@2.1.9/node_modules/@vitest/utils/dist/error.js";
5
+ import { parseSingleStack } from "../../../../../@vitest_utils@2.1.9/node_modules/@vitest/utils/dist/source-map.js";
6
+ import { c as createChainable } from "./chunk-tasks.js";
7
+ //#region ../../node_modules/.pnpm/@vitest+runner@2.1.9/node_modules/@vitest/runner/dist/index.js
8
+ var PendingError = class extends Error {
9
+ constructor(message, task) {
10
+ super(message);
11
+ this.message = message;
12
+ this.taskId = task.id;
13
+ }
14
+ code = "VITEST_PENDING";
15
+ taskId;
16
+ };
17
+ const collectorContext = {
18
+ tasks: [],
19
+ currentSuite: null
20
+ };
21
+ function collectTask(task) {
22
+ var _a;
23
+ (_a = collectorContext.currentSuite) == null || _a.tasks.push(task);
24
+ }
25
+ async function runWithSuite(suite, fn) {
26
+ const prev = collectorContext.currentSuite;
27
+ collectorContext.currentSuite = suite;
28
+ await fn();
29
+ collectorContext.currentSuite = prev;
30
+ }
31
+ function withTimeout(fn, timeout, isHook = false) {
32
+ if (timeout <= 0 || timeout === Number.POSITIVE_INFINITY) return fn;
33
+ const { setTimeout, clearTimeout } = getSafeTimers();
34
+ return function runWithTimeout(...args) {
35
+ return Promise.race([fn(...args), new Promise((resolve, reject) => {
36
+ var _a;
37
+ const timer = setTimeout(() => {
38
+ clearTimeout(timer);
39
+ reject(new Error(makeTimeoutMsg(isHook, timeout)));
40
+ }, timeout);
41
+ (_a = timer.unref) == null || _a.call(timer);
42
+ })]);
43
+ };
44
+ }
45
+ function createTestContext(test, runner) {
46
+ var _a;
47
+ const context = function() {
48
+ throw new Error("done() callback is deprecated, use promise instead");
49
+ };
50
+ context.task = test;
51
+ context.skip = () => {
52
+ test.pending = true;
53
+ throw new PendingError("test is skipped; abort execution", test);
54
+ };
55
+ context.onTestFailed = (fn) => {
56
+ test.onFailed || (test.onFailed = []);
57
+ test.onFailed.push(fn);
58
+ };
59
+ context.onTestFinished = (fn) => {
60
+ test.onFinished || (test.onFinished = []);
61
+ test.onFinished.push(fn);
62
+ };
63
+ return ((_a = runner.extendTaskContext) == null ? void 0 : _a.call(runner, context)) || context;
64
+ }
65
+ function makeTimeoutMsg(isHook, timeout) {
66
+ return `${isHook ? "Hook" : "Test"} timed out in ${timeout}ms.
67
+ If this is a long-running ${isHook ? "hook" : "test"}, pass a timeout value as the last argument or configure it globally with "${isHook ? "hookTimeout" : "testTimeout"}".`;
68
+ }
69
+ const fnMap = /* @__PURE__ */ new WeakMap();
70
+ const fixtureMap = /* @__PURE__ */ new WeakMap();
71
+ const hooksMap = /* @__PURE__ */ new WeakMap();
72
+ function setFn(key, fn) {
73
+ fnMap.set(key, fn);
74
+ }
75
+ function setFixture(key, fixture) {
76
+ fixtureMap.set(key, fixture);
77
+ }
78
+ function getFixture(key) {
79
+ return fixtureMap.get(key);
80
+ }
81
+ function setHooks(key, hooks) {
82
+ hooksMap.set(key, hooks);
83
+ }
84
+ function getHooks(key) {
85
+ return hooksMap.get(key);
86
+ }
87
+ function mergeContextFixtures(fixtures, context = {}) {
88
+ const fixtureOptionKeys = ["auto"];
89
+ const fixtureArray = Object.entries(fixtures).map(([prop, value]) => {
90
+ const fixtureItem = { value };
91
+ if (Array.isArray(value) && value.length >= 2 && isObject(value[1]) && Object.keys(value[1]).some((key) => fixtureOptionKeys.includes(key))) {
92
+ Object.assign(fixtureItem, value[1]);
93
+ fixtureItem.value = value[0];
94
+ }
95
+ fixtureItem.prop = prop;
96
+ fixtureItem.isFn = typeof fixtureItem.value === "function";
97
+ return fixtureItem;
98
+ });
99
+ if (Array.isArray(context.fixtures)) context.fixtures = context.fixtures.concat(fixtureArray);
100
+ else context.fixtures = fixtureArray;
101
+ fixtureArray.forEach((fixture) => {
102
+ if (fixture.isFn) {
103
+ const usedProps = getUsedProps(fixture.value);
104
+ if (usedProps.length) fixture.deps = context.fixtures.filter(({ prop }) => prop !== fixture.prop && usedProps.includes(prop));
105
+ }
106
+ });
107
+ return context;
108
+ }
109
+ const fixtureValueMaps = /* @__PURE__ */ new Map();
110
+ const cleanupFnArrayMap = /* @__PURE__ */ new Map();
111
+ function withFixtures(fn, testContext) {
112
+ return (hookContext) => {
113
+ const context = hookContext || testContext;
114
+ if (!context) return fn({});
115
+ const fixtures = getFixture(context);
116
+ if (!(fixtures == null ? void 0 : fixtures.length)) return fn(context);
117
+ const usedProps = getUsedProps(fn);
118
+ const hasAutoFixture = fixtures.some(({ auto }) => auto);
119
+ if (!usedProps.length && !hasAutoFixture) return fn(context);
120
+ if (!fixtureValueMaps.get(context)) fixtureValueMaps.set(context, /* @__PURE__ */ new Map());
121
+ const fixtureValueMap = fixtureValueMaps.get(context);
122
+ if (!cleanupFnArrayMap.has(context)) cleanupFnArrayMap.set(context, []);
123
+ const cleanupFnArray = cleanupFnArrayMap.get(context);
124
+ const pendingFixtures = resolveDeps(fixtures.filter(({ prop, auto }) => auto || usedProps.includes(prop)));
125
+ if (!pendingFixtures.length) return fn(context);
126
+ async function resolveFixtures() {
127
+ for (const fixture of pendingFixtures) {
128
+ if (fixtureValueMap.has(fixture)) continue;
129
+ const resolvedValue = fixture.isFn ? await resolveFixtureFunction(fixture.value, context, cleanupFnArray) : fixture.value;
130
+ context[fixture.prop] = resolvedValue;
131
+ fixtureValueMap.set(fixture, resolvedValue);
132
+ cleanupFnArray.unshift(() => {
133
+ fixtureValueMap.delete(fixture);
134
+ });
135
+ }
136
+ }
137
+ return resolveFixtures().then(() => fn(context));
138
+ };
139
+ }
140
+ async function resolveFixtureFunction(fixtureFn, context, cleanupFnArray) {
141
+ const useFnArgPromise = createDefer();
142
+ let isUseFnArgResolved = false;
143
+ const fixtureReturn = fixtureFn(context, async (useFnArg) => {
144
+ isUseFnArgResolved = true;
145
+ useFnArgPromise.resolve(useFnArg);
146
+ const useReturnPromise = createDefer();
147
+ cleanupFnArray.push(async () => {
148
+ useReturnPromise.resolve();
149
+ await fixtureReturn;
150
+ });
151
+ await useReturnPromise;
152
+ }).catch((e) => {
153
+ if (!isUseFnArgResolved) {
154
+ useFnArgPromise.reject(e);
155
+ return;
156
+ }
157
+ throw e;
158
+ });
159
+ return useFnArgPromise;
160
+ }
161
+ function resolveDeps(fixtures, depSet = /* @__PURE__ */ new Set(), pendingFixtures = []) {
162
+ fixtures.forEach((fixture) => {
163
+ if (pendingFixtures.includes(fixture)) return;
164
+ if (!fixture.isFn || !fixture.deps) {
165
+ pendingFixtures.push(fixture);
166
+ return;
167
+ }
168
+ if (depSet.has(fixture)) throw new Error(`Circular fixture dependency detected: ${fixture.prop} <- ${[...depSet].reverse().map((d) => d.prop).join(" <- ")}`);
169
+ depSet.add(fixture);
170
+ resolveDeps(fixture.deps, depSet, pendingFixtures);
171
+ pendingFixtures.push(fixture);
172
+ depSet.clear();
173
+ });
174
+ return pendingFixtures;
175
+ }
176
+ function getUsedProps(fn) {
177
+ let fnString = fn.toString();
178
+ if (/__async\(this, (?:null|arguments|\[[_0-9, ]*\]), function\*/.test(fnString)) fnString = fnString.split("__async(this,")[1];
179
+ const match = fnString.match(/[^(]*\(([^)]*)/);
180
+ if (!match) return [];
181
+ const args = splitByComma(match[1]);
182
+ if (!args.length) return [];
183
+ let first = args[0];
184
+ if ("__VITEST_FIXTURE_INDEX__" in fn) {
185
+ first = args[fn.__VITEST_FIXTURE_INDEX__];
186
+ if (!first) return [];
187
+ }
188
+ if (!(first.startsWith("{") && first.endsWith("}"))) throw new Error(`The first argument inside a fixture must use object destructuring pattern, e.g. ({ test } => {}). Instead, received "${first}".`);
189
+ const props = splitByComma(first.slice(1, -1).replace(/\s/g, "")).map((prop) => {
190
+ return prop.replace(/:.*|=.*/g, "");
191
+ });
192
+ const last = props.at(-1);
193
+ if (last && last.startsWith("...")) throw new Error(`Rest parameters are not supported in fixtures, received "${last}".`);
194
+ return props;
195
+ }
196
+ function splitByComma(s) {
197
+ const result = [];
198
+ const stack = [];
199
+ let start = 0;
200
+ for (let i = 0; i < s.length; i++) if (s[i] === "{" || s[i] === "[") stack.push(s[i] === "{" ? "}" : "]");
201
+ else if (s[i] === stack[stack.length - 1]) stack.pop();
202
+ else if (!stack.length && s[i] === ",") {
203
+ const token = s.substring(start, i).trim();
204
+ if (token) result.push(token);
205
+ start = i + 1;
206
+ }
207
+ const lastToken = s.substring(start).trim();
208
+ if (lastToken) result.push(lastToken);
209
+ return result;
210
+ }
211
+ function getCurrentTest() {}
212
+ const suite = createSuite();
213
+ createTest(function(name, optionsOrFn, optionsOrTest) {
214
+ getCurrentSuite().test.fn.call(this, formatName(name), optionsOrFn, optionsOrTest);
215
+ });
216
+ let runner;
217
+ let defaultSuite;
218
+ function assert(condition, message) {
219
+ if (!condition) throw new Error(`Vitest failed to find ${message}. This is a bug in Vitest. Please, open an issue with reproduction.`);
220
+ }
221
+ function getCurrentSuite() {
222
+ const currentSuite = collectorContext.currentSuite || defaultSuite;
223
+ assert(currentSuite, "the current suite");
224
+ return currentSuite;
225
+ }
226
+ function createSuiteHooks() {
227
+ return {
228
+ beforeAll: [],
229
+ afterAll: [],
230
+ beforeEach: [],
231
+ afterEach: []
232
+ };
233
+ }
234
+ function parseArguments(optionsOrFn, optionsOrTest) {
235
+ let options = {};
236
+ let fn = () => {};
237
+ if (typeof optionsOrTest === "object") {
238
+ if (typeof optionsOrFn === "object") throw new TypeError("Cannot use two objects as arguments. Please provide options and a function callback in that order.");
239
+ options = optionsOrTest;
240
+ } else if (typeof optionsOrTest === "number") options = { timeout: optionsOrTest };
241
+ else if (typeof optionsOrFn === "object") options = optionsOrFn;
242
+ if (typeof optionsOrFn === "function") {
243
+ if (typeof optionsOrTest === "function") throw new TypeError("Cannot use two functions as arguments. Please use the second argument for options.");
244
+ fn = optionsOrFn;
245
+ } else if (typeof optionsOrTest === "function") fn = optionsOrTest;
246
+ return {
247
+ options,
248
+ handler: fn
249
+ };
250
+ }
251
+ function createSuiteCollector(name, factory = () => {}, mode, shuffle, each, suiteOptions) {
252
+ const tasks = [];
253
+ const factoryQueue = [];
254
+ let suite2;
255
+ initSuite(true);
256
+ const task = function(name2 = "", options = {}) {
257
+ const task2 = {
258
+ id: "",
259
+ name: name2,
260
+ suite: void 0,
261
+ each: options.each,
262
+ fails: options.fails,
263
+ context: void 0,
264
+ type: "custom",
265
+ file: void 0,
266
+ retry: options.retry ?? runner.config.retry,
267
+ repeats: options.repeats,
268
+ mode: options.only ? "only" : options.skip ? "skip" : options.todo ? "todo" : "run",
269
+ meta: options.meta ?? /* @__PURE__ */ Object.create(null)
270
+ };
271
+ const handler = options.handler;
272
+ if (options.concurrent || !options.sequential && runner.config.sequence.concurrent) task2.concurrent = true;
273
+ if (shuffle) task2.shuffle = true;
274
+ const context = createTestContext(task2, runner);
275
+ Object.defineProperty(task2, "context", {
276
+ value: context,
277
+ enumerable: false
278
+ });
279
+ setFixture(context, options.fixtures);
280
+ if (handler) setFn(task2, withTimeout(withAwaitAsyncAssetions(withFixtures(handler, context), task2), (options == null ? void 0 : options.timeout) ?? runner.config.testTimeout));
281
+ if (runner.config.includeTaskLocation) {
282
+ const limit = Error.stackTraceLimit;
283
+ Error.stackTraceLimit = 15;
284
+ const error = (/* @__PURE__ */ new Error("stacktrace")).stack;
285
+ Error.stackTraceLimit = limit;
286
+ const stack = findTestFileStackTrace(error, task2.each ?? false);
287
+ if (stack) task2.location = stack;
288
+ }
289
+ tasks.push(task2);
290
+ return task2;
291
+ };
292
+ const test2 = createTest(function(name2, optionsOrFn, optionsOrTest) {
293
+ let { options, handler } = parseArguments(optionsOrFn, optionsOrTest);
294
+ if (typeof suiteOptions === "object") options = Object.assign({}, suiteOptions, options);
295
+ options.concurrent = this.concurrent || !this.sequential && (options == null ? void 0 : options.concurrent);
296
+ options.sequential = this.sequential || !this.concurrent && (options == null ? void 0 : options.sequential);
297
+ const test3 = task(formatName(name2), {
298
+ ...this,
299
+ ...options,
300
+ handler
301
+ });
302
+ test3.type = "test";
303
+ });
304
+ const collector = {
305
+ type: "collector",
306
+ name,
307
+ mode,
308
+ options: suiteOptions,
309
+ test: test2,
310
+ tasks,
311
+ collect,
312
+ task,
313
+ clear,
314
+ on: addHook
315
+ };
316
+ function addHook(name2, ...fn) {
317
+ getHooks(suite2)[name2].push(...fn);
318
+ }
319
+ function initSuite(includeLocation) {
320
+ if (typeof suiteOptions === "number") suiteOptions = { timeout: suiteOptions };
321
+ suite2 = {
322
+ id: "",
323
+ type: "suite",
324
+ name,
325
+ mode,
326
+ each,
327
+ file: void 0,
328
+ shuffle,
329
+ tasks: [],
330
+ meta: /* @__PURE__ */ Object.create(null),
331
+ concurrent: suiteOptions == null ? void 0 : suiteOptions.concurrent
332
+ };
333
+ setHooks(suite2, createSuiteHooks());
334
+ }
335
+ function clear() {
336
+ tasks.length = 0;
337
+ factoryQueue.length = 0;
338
+ initSuite(false);
339
+ }
340
+ async function collect(file) {
341
+ if (!file) throw new TypeError("File is required to collect tasks.");
342
+ factoryQueue.length = 0;
343
+ if (factory) await runWithSuite(collector, () => factory(test2));
344
+ const allChildren = [];
345
+ for (const i of [...factoryQueue, ...tasks]) allChildren.push(i.type === "collector" ? await i.collect(file) : i);
346
+ suite2.file = file;
347
+ suite2.tasks = allChildren;
348
+ allChildren.forEach((task2) => {
349
+ task2.suite = suite2;
350
+ task2.file = file;
351
+ });
352
+ return suite2;
353
+ }
354
+ collectTask(collector);
355
+ return collector;
356
+ }
357
+ function withAwaitAsyncAssetions(fn, task) {
358
+ return async (...args) => {
359
+ await fn(...args);
360
+ if (task.promises) {
361
+ const errors = (await Promise.allSettled(task.promises)).map((r) => r.status === "rejected" ? r.reason : void 0).filter(Boolean);
362
+ if (errors.length) throw errors;
363
+ }
364
+ };
365
+ }
366
+ function createSuite() {
367
+ function suiteFn(name, factoryOrOptions, optionsOrFactory = {}) {
368
+ const mode = this.only ? "only" : this.skip ? "skip" : this.todo ? "todo" : "run";
369
+ const currentSuite = collectorContext.currentSuite || defaultSuite;
370
+ let { options, handler: factory } = parseArguments(factoryOrOptions, optionsOrFactory);
371
+ const isConcurrentSpecified = options.concurrent || this.concurrent || options.sequential === false;
372
+ const isSequentialSpecified = options.sequential || this.sequential || options.concurrent === false;
373
+ if (currentSuite == null ? void 0 : currentSuite.options) options = {
374
+ ...currentSuite.options,
375
+ ...options
376
+ };
377
+ const isConcurrent = isConcurrentSpecified || options.concurrent && !isSequentialSpecified;
378
+ const isSequential = isSequentialSpecified || options.sequential && !isConcurrentSpecified;
379
+ options.concurrent = isConcurrent && !isSequential;
380
+ options.sequential = isSequential && !isConcurrent;
381
+ return createSuiteCollector(formatName(name), factory, mode, this.shuffle, this.each, options);
382
+ }
383
+ suiteFn.each = function(cases, ...args) {
384
+ const suite2 = this.withContext();
385
+ this.setContext("each", true);
386
+ if (Array.isArray(cases) && args.length) cases = formatTemplateString(cases, args);
387
+ return (name, optionsOrFn, fnOrOptions) => {
388
+ const _name = formatName(name);
389
+ const arrayOnlyCases = cases.every(Array.isArray);
390
+ const { options, handler } = parseArguments(optionsOrFn, fnOrOptions);
391
+ const fnFirst = typeof optionsOrFn === "function";
392
+ cases.forEach((i, idx) => {
393
+ const items = Array.isArray(i) ? i : [i];
394
+ if (fnFirst) if (arrayOnlyCases) suite2(formatTitle(_name, items, idx), () => handler(...items), options);
395
+ else suite2(formatTitle(_name, items, idx), () => handler(i), options);
396
+ else if (arrayOnlyCases) suite2(formatTitle(_name, items, idx), options, () => handler(...items));
397
+ else suite2(formatTitle(_name, items, idx), options, () => handler(i));
398
+ });
399
+ this.setContext("each", void 0);
400
+ };
401
+ };
402
+ suiteFn.skipIf = (condition) => condition ? suite.skip : suite;
403
+ suiteFn.runIf = (condition) => condition ? suite : suite.skip;
404
+ return createChainable([
405
+ "concurrent",
406
+ "sequential",
407
+ "shuffle",
408
+ "skip",
409
+ "only",
410
+ "todo"
411
+ ], suiteFn);
412
+ }
413
+ function createTaskCollector(fn, context) {
414
+ const taskFn = fn;
415
+ taskFn.each = function(cases, ...args) {
416
+ const test2 = this.withContext();
417
+ this.setContext("each", true);
418
+ if (Array.isArray(cases) && args.length) cases = formatTemplateString(cases, args);
419
+ return (name, optionsOrFn, fnOrOptions) => {
420
+ const _name = formatName(name);
421
+ const arrayOnlyCases = cases.every(Array.isArray);
422
+ const { options, handler } = parseArguments(optionsOrFn, fnOrOptions);
423
+ const fnFirst = typeof optionsOrFn === "function";
424
+ cases.forEach((i, idx) => {
425
+ const items = Array.isArray(i) ? i : [i];
426
+ if (fnFirst) if (arrayOnlyCases) test2(formatTitle(_name, items, idx), () => handler(...items), options);
427
+ else test2(formatTitle(_name, items, idx), () => handler(i), options);
428
+ else if (arrayOnlyCases) test2(formatTitle(_name, items, idx), options, () => handler(...items));
429
+ else test2(formatTitle(_name, items, idx), options, () => handler(i));
430
+ });
431
+ this.setContext("each", void 0);
432
+ };
433
+ };
434
+ taskFn.for = function(cases, ...args) {
435
+ const test2 = this.withContext();
436
+ if (Array.isArray(cases) && args.length) cases = formatTemplateString(cases, args);
437
+ return (name, optionsOrFn, fnOrOptions) => {
438
+ const _name = formatName(name);
439
+ const { options, handler } = parseArguments(optionsOrFn, fnOrOptions);
440
+ cases.forEach((item, idx) => {
441
+ const handlerWrapper = (ctx) => handler(item, ctx);
442
+ handlerWrapper.__VITEST_FIXTURE_INDEX__ = 1;
443
+ handlerWrapper.toString = () => handler.toString();
444
+ test2(formatTitle(_name, toArray(item), idx), options, handlerWrapper);
445
+ });
446
+ };
447
+ };
448
+ taskFn.skipIf = function(condition) {
449
+ return condition ? this.skip : this;
450
+ };
451
+ taskFn.runIf = function(condition) {
452
+ return condition ? this : this.skip;
453
+ };
454
+ taskFn.extend = function(fixtures) {
455
+ return createTest(function fn2(name, optionsOrFn, optionsOrTest) {
456
+ getCurrentSuite().test.fn.call(this, formatName(name), optionsOrFn, optionsOrTest);
457
+ }, mergeContextFixtures(fixtures, context));
458
+ };
459
+ const _test = createChainable([
460
+ "concurrent",
461
+ "sequential",
462
+ "skip",
463
+ "only",
464
+ "todo",
465
+ "fails"
466
+ ], taskFn);
467
+ if (context) _test.mergeContext(context);
468
+ return _test;
469
+ }
470
+ function createTest(fn, context) {
471
+ return createTaskCollector(fn, context);
472
+ }
473
+ function formatName(name) {
474
+ return typeof name === "string" ? name : name instanceof Function ? name.name || "<anonymous>" : String(name);
475
+ }
476
+ function formatTitle(template, items, idx) {
477
+ if (template.includes("%#")) template = template.replace(/%%/g, "__vitest_escaped_%__").replace(/%#/g, `${idx}`).replace(/__vitest_escaped_%__/g, "%%");
478
+ const count = template.split("%").length - 1;
479
+ if (template.includes("%f")) (template.match(/%f/g) || []).forEach((_, i) => {
480
+ if (isNegativeNaN(items[i]) || Object.is(items[i], -0)) {
481
+ let occurrence = 0;
482
+ template = template.replace(/%f/g, (match) => {
483
+ occurrence++;
484
+ return occurrence === i + 1 ? "-%f" : match;
485
+ });
486
+ }
487
+ });
488
+ let formatted = format(template, ...items.slice(0, count));
489
+ if (isObject(items[0])) formatted = formatted.replace(/\$([$\w.]+)/g, (_, key) => {
490
+ var _a, _b;
491
+ return objDisplay(objectAttr(items[0], key), { truncate: (_b = (_a = void 0) == null ? void 0 : _a.chaiConfig) == null ? void 0 : _b.truncateThreshold });
492
+ });
493
+ return formatted;
494
+ }
495
+ function formatTemplateString(cases, args) {
496
+ const header = cases.join("").trim().replace(/ /g, "").split("\n").map((i) => i.split("|"))[0];
497
+ const res = [];
498
+ for (let i = 0; i < Math.floor(args.length / header.length); i++) {
499
+ const oneCase = {};
500
+ for (let j = 0; j < header.length; j++) oneCase[header[j]] = args[i * header.length + j];
501
+ res.push(oneCase);
502
+ }
503
+ return res;
504
+ }
505
+ function findTestFileStackTrace(error, each) {
506
+ const lines = error.split("\n").slice(1);
507
+ for (const line of lines) {
508
+ const stack = parseSingleStack(line);
509
+ if (stack && stack.file === void 0) return {
510
+ line: stack.line,
511
+ /**
512
+ * test.each([1, 2])('name')
513
+ * ^ leads here, but should
514
+ * ^ lead here
515
+ * in source maps it's the same boundary, so it just points to the start of it
516
+ */
517
+ column: each ? stack.column + 1 : stack.column
518
+ };
519
+ }
520
+ }
521
+ globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;
522
+ globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;
523
+ Date.now;
524
+ //#endregion
525
+ export { createTaskCollector, getCurrentSuite, getCurrentTest, getHooks, setFn, setHooks, suite };
526
+
527
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../../../../../../../node_modules/.pnpm/@vitest+runner@2.1.9/node_modules/@vitest/runner/dist/index.js"],"sourcesContent":["import { getSafeTimers, isObject, createDefer, isNegativeNaN, format, objDisplay, objectAttr, toArray, assertTypes, shuffle } from '@vitest/utils';\nimport { parseSingleStack } from '@vitest/utils/source-map';\nimport { c as createChainable, b as createFileTask, a as calculateSuiteHash, s as someTasksAreOnly, i as interpretTaskModes, l as limitConcurrency, p as partitionSuiteChildren, n as hasTests, m as hasFailed } from './chunk-tasks.js';\nimport { processError } from '@vitest/utils/error';\nexport { processError } from '@vitest/utils/error';\nimport 'pathe';\n\nclass PendingError extends Error {\n constructor(message, task) {\n super(message);\n this.message = message;\n this.taskId = task.id;\n }\n code = \"VITEST_PENDING\";\n taskId;\n}\n\nconst collectorContext = {\n tasks: [],\n currentSuite: null\n};\nfunction collectTask(task) {\n var _a;\n (_a = collectorContext.currentSuite) == null ? void 0 : _a.tasks.push(task);\n}\nasync function runWithSuite(suite, fn) {\n const prev = collectorContext.currentSuite;\n collectorContext.currentSuite = suite;\n await fn();\n collectorContext.currentSuite = prev;\n}\nfunction withTimeout(fn, timeout, isHook = false) {\n if (timeout <= 0 || timeout === Number.POSITIVE_INFINITY) {\n return fn;\n }\n const { setTimeout, clearTimeout } = getSafeTimers();\n return function runWithTimeout(...args) {\n return Promise.race([\n fn(...args),\n new Promise((resolve, reject) => {\n var _a;\n const timer = setTimeout(() => {\n clearTimeout(timer);\n reject(new Error(makeTimeoutMsg(isHook, timeout)));\n }, timeout);\n (_a = timer.unref) == null ? void 0 : _a.call(timer);\n })\n ]);\n };\n}\nfunction createTestContext(test, runner) {\n var _a;\n const context = function() {\n throw new Error(\"done() callback is deprecated, use promise instead\");\n };\n context.task = test;\n context.skip = () => {\n test.pending = true;\n throw new PendingError(\"test is skipped; abort execution\", test);\n };\n context.onTestFailed = (fn) => {\n test.onFailed || (test.onFailed = []);\n test.onFailed.push(fn);\n };\n context.onTestFinished = (fn) => {\n test.onFinished || (test.onFinished = []);\n test.onFinished.push(fn);\n };\n return ((_a = runner.extendTaskContext) == null ? void 0 : _a.call(runner, context)) || context;\n}\nfunction makeTimeoutMsg(isHook, timeout) {\n return `${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}\n\nconst fnMap = /* @__PURE__ */ new WeakMap();\nconst fixtureMap = /* @__PURE__ */ new WeakMap();\nconst hooksMap = /* @__PURE__ */ new WeakMap();\nfunction setFn(key, fn) {\n fnMap.set(key, fn);\n}\nfunction getFn(key) {\n return fnMap.get(key);\n}\nfunction setFixture(key, fixture) {\n fixtureMap.set(key, fixture);\n}\nfunction getFixture(key) {\n return fixtureMap.get(key);\n}\nfunction setHooks(key, hooks) {\n hooksMap.set(key, hooks);\n}\nfunction getHooks(key) {\n return hooksMap.get(key);\n}\n\nfunction mergeContextFixtures(fixtures, context = {}) {\n const fixtureOptionKeys = [\"auto\"];\n const fixtureArray = Object.entries(fixtures).map(\n ([prop, value]) => {\n const fixtureItem = { value };\n if (Array.isArray(value) && value.length >= 2 && isObject(value[1]) && Object.keys(value[1]).some((key) => fixtureOptionKeys.includes(key))) {\n Object.assign(fixtureItem, value[1]);\n fixtureItem.value = value[0];\n }\n fixtureItem.prop = prop;\n fixtureItem.isFn = typeof fixtureItem.value === \"function\";\n return fixtureItem;\n }\n );\n if (Array.isArray(context.fixtures)) {\n context.fixtures = context.fixtures.concat(fixtureArray);\n } else {\n context.fixtures = fixtureArray;\n }\n fixtureArray.forEach((fixture) => {\n if (fixture.isFn) {\n const usedProps = getUsedProps(fixture.value);\n if (usedProps.length) {\n fixture.deps = context.fixtures.filter(\n ({ prop }) => prop !== fixture.prop && usedProps.includes(prop)\n );\n }\n }\n });\n return context;\n}\nconst fixtureValueMaps = /* @__PURE__ */ new Map();\nconst cleanupFnArrayMap = /* @__PURE__ */ new Map();\nasync function callFixtureCleanup(context) {\n const cleanupFnArray = cleanupFnArrayMap.get(context) ?? [];\n for (const cleanup of cleanupFnArray.reverse()) {\n await cleanup();\n }\n cleanupFnArrayMap.delete(context);\n}\nfunction withFixtures(fn, testContext) {\n return (hookContext) => {\n const context = hookContext || testContext;\n if (!context) {\n return fn({});\n }\n const fixtures = getFixture(context);\n if (!(fixtures == null ? void 0 : fixtures.length)) {\n return fn(context);\n }\n const usedProps = getUsedProps(fn);\n const hasAutoFixture = fixtures.some(({ auto }) => auto);\n if (!usedProps.length && !hasAutoFixture) {\n return fn(context);\n }\n if (!fixtureValueMaps.get(context)) {\n fixtureValueMaps.set(context, /* @__PURE__ */ new Map());\n }\n const fixtureValueMap = fixtureValueMaps.get(context);\n if (!cleanupFnArrayMap.has(context)) {\n cleanupFnArrayMap.set(context, []);\n }\n const cleanupFnArray = cleanupFnArrayMap.get(context);\n const usedFixtures = fixtures.filter(\n ({ prop, auto }) => auto || usedProps.includes(prop)\n );\n const pendingFixtures = resolveDeps(usedFixtures);\n if (!pendingFixtures.length) {\n return fn(context);\n }\n async function resolveFixtures() {\n for (const fixture of pendingFixtures) {\n if (fixtureValueMap.has(fixture)) {\n continue;\n }\n const resolvedValue = fixture.isFn ? await resolveFixtureFunction(fixture.value, context, cleanupFnArray) : fixture.value;\n context[fixture.prop] = resolvedValue;\n fixtureValueMap.set(fixture, resolvedValue);\n cleanupFnArray.unshift(() => {\n fixtureValueMap.delete(fixture);\n });\n }\n }\n return resolveFixtures().then(() => fn(context));\n };\n}\nasync function resolveFixtureFunction(fixtureFn, context, cleanupFnArray) {\n const useFnArgPromise = createDefer();\n let isUseFnArgResolved = false;\n const fixtureReturn = fixtureFn(context, async (useFnArg) => {\n isUseFnArgResolved = true;\n useFnArgPromise.resolve(useFnArg);\n const useReturnPromise = createDefer();\n cleanupFnArray.push(async () => {\n useReturnPromise.resolve();\n await fixtureReturn;\n });\n await useReturnPromise;\n }).catch((e) => {\n if (!isUseFnArgResolved) {\n useFnArgPromise.reject(e);\n return;\n }\n throw e;\n });\n return useFnArgPromise;\n}\nfunction resolveDeps(fixtures, depSet = /* @__PURE__ */ new Set(), pendingFixtures = []) {\n fixtures.forEach((fixture) => {\n if (pendingFixtures.includes(fixture)) {\n return;\n }\n if (!fixture.isFn || !fixture.deps) {\n pendingFixtures.push(fixture);\n return;\n }\n if (depSet.has(fixture)) {\n throw new Error(\n `Circular fixture dependency detected: ${fixture.prop} <- ${[...depSet].reverse().map((d) => d.prop).join(\" <- \")}`\n );\n }\n depSet.add(fixture);\n resolveDeps(fixture.deps, depSet, pendingFixtures);\n pendingFixtures.push(fixture);\n depSet.clear();\n });\n return pendingFixtures;\n}\nfunction getUsedProps(fn) {\n let fnString = fn.toString();\n if (/__async\\(this, (?:null|arguments|\\[[_0-9, ]*\\]), function\\*/.test(fnString)) {\n fnString = fnString.split(\"__async(this,\")[1];\n }\n const match = fnString.match(/[^(]*\\(([^)]*)/);\n if (!match) {\n return [];\n }\n const args = splitByComma(match[1]);\n if (!args.length) {\n return [];\n }\n let first = args[0];\n if (\"__VITEST_FIXTURE_INDEX__\" in fn) {\n first = args[fn.__VITEST_FIXTURE_INDEX__];\n if (!first) {\n return [];\n }\n }\n if (!(first.startsWith(\"{\") && first.endsWith(\"}\"))) {\n throw new Error(\n `The first argument inside a fixture must use object destructuring pattern, e.g. ({ test } => {}). Instead, received \"${first}\".`\n );\n }\n const _first = first.slice(1, -1).replace(/\\s/g, \"\");\n const props = splitByComma(_first).map((prop) => {\n return prop.replace(/:.*|=.*/g, \"\");\n });\n const last = props.at(-1);\n if (last && last.startsWith(\"...\")) {\n throw new Error(\n `Rest parameters are not supported in fixtures, received \"${last}\".`\n );\n }\n return props;\n}\nfunction splitByComma(s) {\n const result = [];\n const stack = [];\n let start = 0;\n for (let i = 0; i < s.length; i++) {\n if (s[i] === \"{\" || s[i] === \"[\") {\n stack.push(s[i] === \"{\" ? \"}\" : \"]\");\n } else if (s[i] === stack[stack.length - 1]) {\n stack.pop();\n } else if (!stack.length && s[i] === \",\") {\n const token = s.substring(start, i).trim();\n if (token) {\n result.push(token);\n }\n start = i + 1;\n }\n }\n const lastToken = s.substring(start).trim();\n if (lastToken) {\n result.push(lastToken);\n }\n return result;\n}\n\nlet _test;\nfunction setCurrentTest(test) {\n _test = test;\n}\nfunction getCurrentTest() {\n return _test;\n}\n\nconst suite = createSuite();\nconst test = createTest(function(name, optionsOrFn, optionsOrTest) {\n if (getCurrentTest()) {\n throw new Error(\n '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 );\n }\n getCurrentSuite().test.fn.call(\n this,\n formatName(name),\n optionsOrFn,\n optionsOrTest\n );\n});\nconst describe = suite;\nconst it = test;\nlet runner;\nlet defaultSuite;\nlet currentTestFilepath;\nfunction assert(condition, message) {\n if (!condition) {\n throw new Error(`Vitest failed to find ${message}. This is a bug in Vitest. Please, open an issue with reproduction.`);\n }\n}\nfunction getDefaultSuite() {\n assert(defaultSuite, \"the default suite\");\n return defaultSuite;\n}\nfunction getTestFilepath() {\n return currentTestFilepath;\n}\nfunction getRunner() {\n assert(runner, \"the runner\");\n return runner;\n}\nfunction createDefaultSuite(runner2) {\n const config = runner2.config.sequence;\n const api = config.shuffle ? suite.shuffle : suite;\n return api(\"\", { concurrent: config.concurrent }, () => {\n });\n}\nfunction clearCollectorContext(filepath, currentRunner) {\n if (!defaultSuite) {\n defaultSuite = createDefaultSuite(currentRunner);\n }\n runner = currentRunner;\n currentTestFilepath = filepath;\n collectorContext.tasks.length = 0;\n defaultSuite.clear();\n collectorContext.currentSuite = defaultSuite;\n}\nfunction getCurrentSuite() {\n const currentSuite = collectorContext.currentSuite || defaultSuite;\n assert(currentSuite, \"the current suite\");\n return currentSuite;\n}\nfunction createSuiteHooks() {\n return {\n beforeAll: [],\n afterAll: [],\n beforeEach: [],\n afterEach: []\n };\n}\nfunction parseArguments(optionsOrFn, optionsOrTest) {\n let options = {};\n let fn = () => {\n };\n if (typeof optionsOrTest === \"object\") {\n if (typeof optionsOrFn === \"object\") {\n throw new TypeError(\n \"Cannot use two objects as arguments. Please provide options and a function callback in that order.\"\n );\n }\n options = optionsOrTest;\n } else if (typeof optionsOrTest === \"number\") {\n options = { timeout: optionsOrTest };\n } else if (typeof optionsOrFn === \"object\") {\n options = optionsOrFn;\n }\n if (typeof optionsOrFn === \"function\") {\n if (typeof optionsOrTest === \"function\") {\n throw new TypeError(\n \"Cannot use two functions as arguments. Please use the second argument for options.\"\n );\n }\n fn = optionsOrFn;\n } else if (typeof optionsOrTest === \"function\") {\n fn = optionsOrTest;\n }\n return {\n options,\n handler: fn\n };\n}\nfunction createSuiteCollector(name, factory = () => {\n}, mode, shuffle, each, suiteOptions) {\n const tasks = [];\n const factoryQueue = [];\n let suite2;\n initSuite(true);\n const task = function(name2 = \"\", options = {}) {\n const task2 = {\n id: \"\",\n name: name2,\n suite: void 0,\n each: options.each,\n fails: options.fails,\n context: void 0,\n type: \"custom\",\n file: void 0,\n retry: options.retry ?? runner.config.retry,\n repeats: options.repeats,\n mode: options.only ? \"only\" : options.skip ? \"skip\" : options.todo ? \"todo\" : \"run\",\n meta: options.meta ?? /* @__PURE__ */ Object.create(null)\n };\n const handler = options.handler;\n if (options.concurrent || !options.sequential && runner.config.sequence.concurrent) {\n task2.concurrent = true;\n }\n if (shuffle) {\n task2.shuffle = true;\n }\n const context = createTestContext(task2, runner);\n Object.defineProperty(task2, \"context\", {\n value: context,\n enumerable: false\n });\n setFixture(context, options.fixtures);\n if (handler) {\n setFn(\n task2,\n withTimeout(\n withAwaitAsyncAssetions(withFixtures(handler, context), task2),\n (options == null ? void 0 : options.timeout) ?? runner.config.testTimeout\n )\n );\n }\n if (runner.config.includeTaskLocation) {\n const limit = Error.stackTraceLimit;\n Error.stackTraceLimit = 15;\n const error = new Error(\"stacktrace\").stack;\n Error.stackTraceLimit = limit;\n const stack = findTestFileStackTrace(error, task2.each ?? false);\n if (stack) {\n task2.location = stack;\n }\n }\n tasks.push(task2);\n return task2;\n };\n const test2 = createTest(function(name2, optionsOrFn, optionsOrTest) {\n let { options, handler } = parseArguments(optionsOrFn, optionsOrTest);\n if (typeof suiteOptions === \"object\") {\n options = Object.assign({}, suiteOptions, options);\n }\n options.concurrent = this.concurrent || !this.sequential && (options == null ? void 0 : options.concurrent);\n options.sequential = this.sequential || !this.concurrent && (options == null ? void 0 : options.sequential);\n const test3 = task(formatName(name2), {\n ...this,\n ...options,\n handler\n });\n test3.type = \"test\";\n });\n const collector = {\n type: \"collector\",\n name,\n mode,\n options: suiteOptions,\n test: test2,\n tasks,\n collect,\n task,\n clear,\n on: addHook\n };\n function addHook(name2, ...fn) {\n getHooks(suite2)[name2].push(...fn);\n }\n function initSuite(includeLocation) {\n if (typeof suiteOptions === \"number\") {\n suiteOptions = { timeout: suiteOptions };\n }\n suite2 = {\n id: \"\",\n type: \"suite\",\n name,\n mode,\n each,\n file: void 0,\n shuffle,\n tasks: [],\n meta: /* @__PURE__ */ Object.create(null),\n concurrent: suiteOptions == null ? void 0 : suiteOptions.concurrent\n };\n if (runner && includeLocation && runner.config.includeTaskLocation) {\n const limit = Error.stackTraceLimit;\n Error.stackTraceLimit = 15;\n const error = new Error(\"stacktrace\").stack;\n Error.stackTraceLimit = limit;\n const stack = findTestFileStackTrace(error, suite2.each ?? false);\n if (stack) {\n suite2.location = stack;\n }\n }\n setHooks(suite2, createSuiteHooks());\n }\n function clear() {\n tasks.length = 0;\n factoryQueue.length = 0;\n initSuite(false);\n }\n async function collect(file) {\n if (!file) {\n throw new TypeError(\"File is required to collect tasks.\");\n }\n factoryQueue.length = 0;\n if (factory) {\n await runWithSuite(collector, () => factory(test2));\n }\n const allChildren = [];\n for (const i of [...factoryQueue, ...tasks]) {\n allChildren.push(i.type === \"collector\" ? await i.collect(file) : i);\n }\n suite2.file = file;\n suite2.tasks = allChildren;\n allChildren.forEach((task2) => {\n task2.suite = suite2;\n task2.file = file;\n });\n return suite2;\n }\n collectTask(collector);\n return collector;\n}\nfunction withAwaitAsyncAssetions(fn, task) {\n return async (...args) => {\n await fn(...args);\n if (task.promises) {\n const result = await Promise.allSettled(task.promises);\n const errors = result.map((r) => r.status === \"rejected\" ? r.reason : void 0).filter(Boolean);\n if (errors.length) {\n throw errors;\n }\n }\n };\n}\nfunction createSuite() {\n function suiteFn(name, factoryOrOptions, optionsOrFactory = {}) {\n const mode = this.only ? \"only\" : this.skip ? \"skip\" : this.todo ? \"todo\" : \"run\";\n const currentSuite = collectorContext.currentSuite || defaultSuite;\n let { options, handler: factory } = parseArguments(\n factoryOrOptions,\n optionsOrFactory\n );\n const isConcurrentSpecified = options.concurrent || this.concurrent || options.sequential === false;\n const isSequentialSpecified = options.sequential || this.sequential || options.concurrent === false;\n if (currentSuite == null ? void 0 : currentSuite.options) {\n options = { ...currentSuite.options, ...options };\n }\n const isConcurrent = isConcurrentSpecified || options.concurrent && !isSequentialSpecified;\n const isSequential = isSequentialSpecified || options.sequential && !isConcurrentSpecified;\n options.concurrent = isConcurrent && !isSequential;\n options.sequential = isSequential && !isConcurrent;\n return createSuiteCollector(\n formatName(name),\n factory,\n mode,\n this.shuffle,\n this.each,\n options\n );\n }\n suiteFn.each = function(cases, ...args) {\n const suite2 = this.withContext();\n this.setContext(\"each\", true);\n if (Array.isArray(cases) && args.length) {\n cases = formatTemplateString(cases, args);\n }\n return (name, optionsOrFn, fnOrOptions) => {\n const _name = formatName(name);\n const arrayOnlyCases = cases.every(Array.isArray);\n const { options, handler } = parseArguments(optionsOrFn, fnOrOptions);\n const fnFirst = typeof optionsOrFn === \"function\";\n cases.forEach((i, idx) => {\n const items = Array.isArray(i) ? i : [i];\n if (fnFirst) {\n if (arrayOnlyCases) {\n suite2(\n formatTitle(_name, items, idx),\n () => handler(...items),\n options\n );\n } else {\n suite2(formatTitle(_name, items, idx), () => handler(i), options);\n }\n } else {\n if (arrayOnlyCases) {\n suite2(formatTitle(_name, items, idx), options, () => handler(...items));\n } else {\n suite2(formatTitle(_name, items, idx), options, () => handler(i));\n }\n }\n });\n this.setContext(\"each\", void 0);\n };\n };\n suiteFn.skipIf = (condition) => condition ? suite.skip : suite;\n suiteFn.runIf = (condition) => condition ? suite : suite.skip;\n return createChainable(\n [\"concurrent\", \"sequential\", \"shuffle\", \"skip\", \"only\", \"todo\"],\n suiteFn\n );\n}\nfunction createTaskCollector(fn, context) {\n const taskFn = fn;\n taskFn.each = function(cases, ...args) {\n const test2 = this.withContext();\n this.setContext(\"each\", true);\n if (Array.isArray(cases) && args.length) {\n cases = formatTemplateString(cases, args);\n }\n return (name, optionsOrFn, fnOrOptions) => {\n const _name = formatName(name);\n const arrayOnlyCases = cases.every(Array.isArray);\n const { options, handler } = parseArguments(optionsOrFn, fnOrOptions);\n const fnFirst = typeof optionsOrFn === \"function\";\n cases.forEach((i, idx) => {\n const items = Array.isArray(i) ? i : [i];\n if (fnFirst) {\n if (arrayOnlyCases) {\n test2(\n formatTitle(_name, items, idx),\n () => handler(...items),\n options\n );\n } else {\n test2(formatTitle(_name, items, idx), () => handler(i), options);\n }\n } else {\n if (arrayOnlyCases) {\n test2(formatTitle(_name, items, idx), options, () => handler(...items));\n } else {\n test2(formatTitle(_name, items, idx), options, () => handler(i));\n }\n }\n });\n this.setContext(\"each\", void 0);\n };\n };\n taskFn.for = function(cases, ...args) {\n const test2 = this.withContext();\n if (Array.isArray(cases) && args.length) {\n cases = formatTemplateString(cases, args);\n }\n return (name, optionsOrFn, fnOrOptions) => {\n const _name = formatName(name);\n const { options, handler } = parseArguments(optionsOrFn, fnOrOptions);\n cases.forEach((item, idx) => {\n const handlerWrapper = (ctx) => handler(item, ctx);\n handlerWrapper.__VITEST_FIXTURE_INDEX__ = 1;\n handlerWrapper.toString = () => handler.toString();\n test2(formatTitle(_name, toArray(item), idx), options, handlerWrapper);\n });\n };\n };\n taskFn.skipIf = function(condition) {\n return condition ? this.skip : this;\n };\n taskFn.runIf = function(condition) {\n return condition ? this : this.skip;\n };\n taskFn.extend = function(fixtures) {\n const _context = mergeContextFixtures(fixtures, context);\n return createTest(function fn2(name, optionsOrFn, optionsOrTest) {\n getCurrentSuite().test.fn.call(\n this,\n formatName(name),\n optionsOrFn,\n optionsOrTest\n );\n }, _context);\n };\n const _test = createChainable(\n [\"concurrent\", \"sequential\", \"skip\", \"only\", \"todo\", \"fails\"],\n taskFn\n );\n if (context) {\n _test.mergeContext(context);\n }\n return _test;\n}\nfunction createTest(fn, context) {\n return createTaskCollector(fn, context);\n}\nfunction formatName(name) {\n return typeof name === \"string\" ? name : name instanceof Function ? name.name || \"<anonymous>\" : String(name);\n}\nfunction formatTitle(template, items, idx) {\n if (template.includes(\"%#\")) {\n template = template.replace(/%%/g, \"__vitest_escaped_%__\").replace(/%#/g, `${idx}`).replace(/__vitest_escaped_%__/g, \"%%\");\n }\n const count = template.split(\"%\").length - 1;\n if (template.includes(\"%f\")) {\n const placeholders = template.match(/%f/g) || [];\n placeholders.forEach((_, i) => {\n if (isNegativeNaN(items[i]) || Object.is(items[i], -0)) {\n let occurrence = 0;\n template = template.replace(/%f/g, (match) => {\n occurrence++;\n return occurrence === i + 1 ? \"-%f\" : match;\n });\n }\n });\n }\n let formatted = format(template, ...items.slice(0, count));\n if (isObject(items[0])) {\n formatted = formatted.replace(\n /\\$([$\\w.]+)/g,\n // https://github.com/chaijs/chai/pull/1490\n (_, key) => {\n var _a, _b;\n return objDisplay(objectAttr(items[0], key), {\n truncate: (_b = (_a = runner == null ? void 0 : runner.config) == null ? void 0 : _a.chaiConfig) == null ? void 0 : _b.truncateThreshold\n });\n }\n );\n }\n return formatted;\n}\nfunction formatTemplateString(cases, args) {\n const header = cases.join(\"\").trim().replace(/ /g, \"\").split(\"\\n\").map((i) => i.split(\"|\"))[0];\n const res = [];\n for (let i = 0; i < Math.floor(args.length / header.length); i++) {\n const oneCase = {};\n for (let j = 0; j < header.length; j++) {\n oneCase[header[j]] = args[i * header.length + j];\n }\n res.push(oneCase);\n }\n return res;\n}\nfunction findTestFileStackTrace(error, each) {\n const lines = error.split(\"\\n\").slice(1);\n for (const line of lines) {\n const stack = parseSingleStack(line);\n if (stack && stack.file === getTestFilepath()) {\n return {\n line: stack.line,\n /**\n * test.each([1, 2])('name')\n * ^ leads here, but should\n * ^ lead here\n * in source maps it's the same boundary, so it just points to the start of it\n */\n column: each ? stack.column + 1 : stack.column\n };\n }\n }\n}\n\nfunction getDefaultHookTimeout() {\n return getRunner().config.hookTimeout;\n}\nfunction beforeAll(fn, timeout) {\n assertTypes(fn, '\"beforeAll\" callback', [\"function\"]);\n return getCurrentSuite().on(\n \"beforeAll\",\n withTimeout(fn, timeout ?? getDefaultHookTimeout(), true)\n );\n}\nfunction afterAll(fn, timeout) {\n assertTypes(fn, '\"afterAll\" callback', [\"function\"]);\n return getCurrentSuite().on(\n \"afterAll\",\n withTimeout(fn, timeout ?? getDefaultHookTimeout(), true)\n );\n}\nfunction beforeEach(fn, timeout) {\n assertTypes(fn, '\"beforeEach\" callback', [\"function\"]);\n return getCurrentSuite().on(\n \"beforeEach\",\n withTimeout(withFixtures(fn), timeout ?? getDefaultHookTimeout(), true)\n );\n}\nfunction afterEach(fn, timeout) {\n assertTypes(fn, '\"afterEach\" callback', [\"function\"]);\n return getCurrentSuite().on(\n \"afterEach\",\n withTimeout(withFixtures(fn), timeout ?? getDefaultHookTimeout(), true)\n );\n}\nconst onTestFailed = createTestHook(\n \"onTestFailed\",\n (test, handler, timeout) => {\n test.onFailed || (test.onFailed = []);\n test.onFailed.push(\n withTimeout(handler, timeout ?? getDefaultHookTimeout(), true)\n );\n }\n);\nconst onTestFinished = createTestHook(\n \"onTestFinished\",\n (test, handler, timeout) => {\n test.onFinished || (test.onFinished = []);\n test.onFinished.push(\n withTimeout(handler, timeout ?? getDefaultHookTimeout(), true)\n );\n }\n);\nfunction createTestHook(name, handler) {\n return (fn, timeout) => {\n assertTypes(fn, `\"${name}\" callback`, [\"function\"]);\n const current = getCurrentTest();\n if (!current) {\n throw new Error(`Hook ${name}() can only be called inside a test`);\n }\n return handler(current, fn, timeout);\n };\n}\n\nasync function runSetupFiles(config, files, runner) {\n if (config.sequence.setupFiles === \"parallel\") {\n await Promise.all(\n files.map(async (fsPath) => {\n await runner.importFile(fsPath, \"setup\");\n })\n );\n } else {\n for (const fsPath of files) {\n await runner.importFile(fsPath, \"setup\");\n }\n }\n}\n\nconst now$1 = globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;\nasync function collectTests(paths, runner) {\n var _a;\n const files = [];\n const config = runner.config;\n for (const filepath of paths) {\n const file = createFileTask(filepath, config.root, config.name, runner.pool);\n (_a = runner.onCollectStart) == null ? void 0 : _a.call(runner, file);\n clearCollectorContext(filepath, runner);\n try {\n const setupFiles = toArray(config.setupFiles);\n if (setupFiles.length) {\n const setupStart = now$1();\n await runSetupFiles(config, setupFiles, runner);\n const setupEnd = now$1();\n file.setupDuration = setupEnd - setupStart;\n } else {\n file.setupDuration = 0;\n }\n const collectStart = now$1();\n await runner.importFile(filepath, \"collect\");\n const defaultTasks = await getDefaultSuite().collect(file);\n const fileHooks = createSuiteHooks();\n mergeHooks(fileHooks, getHooks(defaultTasks));\n for (const c of [...defaultTasks.tasks, ...collectorContext.tasks]) {\n if (c.type === \"test\" || c.type === \"custom\" || c.type === \"suite\") {\n file.tasks.push(c);\n } else if (c.type === \"collector\") {\n const suite = await c.collect(file);\n if (suite.name || suite.tasks.length) {\n mergeHooks(fileHooks, getHooks(suite));\n file.tasks.push(suite);\n }\n } else {\n c;\n }\n }\n setHooks(file, fileHooks);\n file.collectDuration = now$1() - collectStart;\n } catch (e) {\n const error = processError(e);\n file.result = {\n state: \"fail\",\n errors: [error]\n };\n }\n calculateSuiteHash(file);\n file.tasks.forEach((task) => {\n var _a2;\n if (((_a2 = task.suite) == null ? void 0 : _a2.id) === \"\") {\n delete task.suite;\n }\n });\n const hasOnlyTasks = someTasksAreOnly(file);\n interpretTaskModes(\n file,\n config.testNamePattern,\n hasOnlyTasks,\n false,\n config.allowOnly\n );\n files.push(file);\n }\n return files;\n}\nfunction mergeHooks(baseHooks, hooks) {\n for (const _key in hooks) {\n const key = _key;\n baseHooks[key].push(...hooks[key]);\n }\n return baseHooks;\n}\n\nconst now = globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;\nconst unixNow = Date.now;\nfunction updateSuiteHookState(suite, name, state, runner) {\n var _a;\n if (!suite.result) {\n suite.result = { state: \"run\" };\n }\n if (!((_a = suite.result) == null ? void 0 : _a.hooks)) {\n suite.result.hooks = {};\n }\n const suiteHooks = suite.result.hooks;\n if (suiteHooks) {\n suiteHooks[name] = state;\n updateTask(suite, runner);\n }\n}\nfunction getSuiteHooks(suite, name, sequence) {\n const hooks = getHooks(suite)[name];\n if (sequence === \"stack\" && (name === \"afterAll\" || name === \"afterEach\")) {\n return hooks.slice().reverse();\n }\n return hooks;\n}\nasync function callTestHooks(runner, task, hooks, sequence) {\n if (sequence === \"stack\") {\n hooks = hooks.slice().reverse();\n }\n if (sequence === \"parallel\") {\n try {\n await Promise.all(hooks.map((fn) => fn(task.result)));\n } catch (e) {\n failTask(task.result, e, runner.config.diffOptions);\n }\n } else {\n for (const fn of hooks) {\n try {\n await fn(task.result);\n } catch (e) {\n failTask(task.result, e, runner.config.diffOptions);\n }\n }\n }\n}\nasync function callSuiteHook(suite, currentTask, name, runner, args) {\n const sequence = runner.config.sequence.hooks;\n const callbacks = [];\n const parentSuite = \"filepath\" in suite ? null : suite.suite || suite.file;\n if (name === \"beforeEach\" && parentSuite) {\n callbacks.push(\n ...await callSuiteHook(parentSuite, currentTask, name, runner, args)\n );\n }\n updateSuiteHookState(currentTask, name, \"run\", runner);\n const hooks = getSuiteHooks(suite, name, sequence);\n if (sequence === \"parallel\") {\n callbacks.push(\n ...await Promise.all(hooks.map((hook) => hook(...args)))\n );\n } else {\n for (const hook of hooks) {\n callbacks.push(await hook(...args));\n }\n }\n updateSuiteHookState(currentTask, name, \"pass\", runner);\n if (name === \"afterEach\" && parentSuite) {\n callbacks.push(\n ...await callSuiteHook(parentSuite, currentTask, name, runner, args)\n );\n }\n return callbacks;\n}\nconst packs = /* @__PURE__ */ new Map();\nlet updateTimer;\nlet previousUpdate;\nfunction updateTask(task, runner) {\n packs.set(task.id, [task.result, task.meta]);\n const { clearTimeout, setTimeout } = getSafeTimers();\n clearTimeout(updateTimer);\n updateTimer = setTimeout(() => {\n previousUpdate = sendTasksUpdate(runner);\n }, 10);\n}\nasync function sendTasksUpdate(runner) {\n var _a;\n const { clearTimeout } = getSafeTimers();\n clearTimeout(updateTimer);\n await previousUpdate;\n if (packs.size) {\n const taskPacks = Array.from(packs).map(([id, task]) => {\n return [id, task[0], task[1]];\n });\n const p = (_a = runner.onTaskUpdate) == null ? void 0 : _a.call(runner, taskPacks);\n packs.clear();\n return p;\n }\n}\nasync function callCleanupHooks(cleanups) {\n await Promise.all(\n cleanups.map(async (fn) => {\n if (typeof fn !== \"function\") {\n return;\n }\n await fn();\n })\n );\n}\nasync function runTest(test, runner) {\n var _a, _b, _c, _d, _e, _f, _g;\n await ((_a = runner.onBeforeRunTask) == null ? void 0 : _a.call(runner, test));\n if (test.mode !== \"run\") {\n return;\n }\n if (((_b = test.result) == null ? void 0 : _b.state) === \"fail\") {\n updateTask(test, runner);\n return;\n }\n const start = now();\n test.result = {\n state: \"run\",\n startTime: unixNow(),\n retryCount: 0\n };\n updateTask(test, runner);\n setCurrentTest(test);\n const suite = test.suite || test.file;\n const repeats = test.repeats ?? 0;\n for (let repeatCount = 0; repeatCount <= repeats; repeatCount++) {\n const retry = test.retry ?? 0;\n for (let retryCount = 0; retryCount <= retry; retryCount++) {\n let beforeEachCleanups = [];\n try {\n await ((_c = runner.onBeforeTryTask) == null ? void 0 : _c.call(runner, test, {\n retry: retryCount,\n repeats: repeatCount\n }));\n test.result.repeatCount = repeatCount;\n beforeEachCleanups = await callSuiteHook(\n suite,\n test,\n \"beforeEach\",\n runner,\n [test.context, suite]\n );\n if (runner.runTask) {\n await runner.runTask(test);\n } else {\n const fn = getFn(test);\n if (!fn) {\n throw new Error(\n \"Test function is not found. Did you add it using `setFn`?\"\n );\n }\n await fn();\n }\n await ((_d = runner.onAfterTryTask) == null ? void 0 : _d.call(runner, test, {\n retry: retryCount,\n repeats: repeatCount\n }));\n if (test.result.state !== \"fail\") {\n if (!test.repeats) {\n test.result.state = \"pass\";\n } else if (test.repeats && retry === retryCount) {\n test.result.state = \"pass\";\n }\n }\n } catch (e) {\n failTask(test.result, e, runner.config.diffOptions);\n }\n if (test.pending || ((_e = test.result) == null ? void 0 : _e.state) === \"skip\") {\n test.mode = \"skip\";\n test.result = { state: \"skip\" };\n updateTask(test, runner);\n setCurrentTest(void 0);\n return;\n }\n try {\n await ((_f = runner.onTaskFinished) == null ? void 0 : _f.call(runner, test));\n } catch (e) {\n failTask(test.result, e, runner.config.diffOptions);\n }\n try {\n await callSuiteHook(suite, test, \"afterEach\", runner, [\n test.context,\n suite\n ]);\n await callCleanupHooks(beforeEachCleanups);\n await callFixtureCleanup(test.context);\n } catch (e) {\n failTask(test.result, e, runner.config.diffOptions);\n }\n await callTestHooks(runner, test, test.onFinished || [], \"stack\");\n if (test.result.state === \"fail\") {\n await callTestHooks(\n runner,\n test,\n test.onFailed || [],\n runner.config.sequence.hooks\n );\n }\n delete test.onFailed;\n delete test.onFinished;\n if (test.result.state === \"pass\") {\n break;\n }\n if (retryCount < retry) {\n test.result.state = \"run\";\n test.result.retryCount = (test.result.retryCount ?? 0) + 1;\n }\n updateTask(test, runner);\n }\n }\n if (test.fails) {\n if (test.result.state === \"pass\") {\n const error = processError(new Error(\"Expect test to fail\"));\n test.result.state = \"fail\";\n test.result.errors = [error];\n } else {\n test.result.state = \"pass\";\n test.result.errors = void 0;\n }\n }\n setCurrentTest(void 0);\n test.result.duration = now() - start;\n await ((_g = runner.onAfterRunTask) == null ? void 0 : _g.call(runner, test));\n updateTask(test, runner);\n}\nfunction failTask(result, err, diffOptions) {\n if (err instanceof PendingError) {\n result.state = \"skip\";\n return;\n }\n result.state = \"fail\";\n const errors = Array.isArray(err) ? err : [err];\n for (const e of errors) {\n const error = processError(e, diffOptions);\n result.errors ?? (result.errors = []);\n result.errors.push(error);\n }\n}\nfunction markTasksAsSkipped(suite, runner) {\n suite.tasks.forEach((t) => {\n t.mode = \"skip\";\n t.result = { ...t.result, state: \"skip\" };\n updateTask(t, runner);\n if (t.type === \"suite\") {\n markTasksAsSkipped(t, runner);\n }\n });\n}\nasync function runSuite(suite, runner) {\n var _a, _b, _c, _d;\n await ((_a = runner.onBeforeRunSuite) == null ? void 0 : _a.call(runner, suite));\n if (((_b = suite.result) == null ? void 0 : _b.state) === \"fail\") {\n markTasksAsSkipped(suite, runner);\n updateTask(suite, runner);\n return;\n }\n const start = now();\n suite.result = {\n state: \"run\",\n startTime: unixNow()\n };\n updateTask(suite, runner);\n let beforeAllCleanups = [];\n if (suite.mode === \"skip\") {\n suite.result.state = \"skip\";\n } else if (suite.mode === \"todo\") {\n suite.result.state = \"todo\";\n } else {\n try {\n try {\n beforeAllCleanups = await callSuiteHook(\n suite,\n suite,\n \"beforeAll\",\n runner,\n [suite]\n );\n } catch (e) {\n markTasksAsSkipped(suite, runner);\n throw e;\n }\n if (runner.runSuite) {\n await runner.runSuite(suite);\n } else {\n for (let tasksGroup of partitionSuiteChildren(suite)) {\n if (tasksGroup[0].concurrent === true) {\n await Promise.all(tasksGroup.map((c) => runSuiteChild(c, runner)));\n } else {\n const { sequence } = runner.config;\n if (sequence.shuffle || suite.shuffle) {\n const suites = tasksGroup.filter(\n (group) => group.type === \"suite\"\n );\n const tests = tasksGroup.filter((group) => group.type === \"test\");\n const groups = shuffle([suites, tests], sequence.seed);\n tasksGroup = groups.flatMap(\n (group) => shuffle(group, sequence.seed)\n );\n }\n for (const c of tasksGroup) {\n await runSuiteChild(c, runner);\n }\n }\n }\n }\n } catch (e) {\n failTask(suite.result, e, runner.config.diffOptions);\n }\n try {\n await callSuiteHook(suite, suite, \"afterAll\", runner, [suite]);\n await callCleanupHooks(beforeAllCleanups);\n } catch (e) {\n failTask(suite.result, e, runner.config.diffOptions);\n }\n if (suite.mode === \"run\") {\n if (!runner.config.passWithNoTests && !hasTests(suite)) {\n suite.result.state = \"fail\";\n if (!((_c = suite.result.errors) == null ? void 0 : _c.length)) {\n const error = processError(\n new Error(`No test found in suite ${suite.name}`)\n );\n suite.result.errors = [error];\n }\n } else if (hasFailed(suite)) {\n suite.result.state = \"fail\";\n } else {\n suite.result.state = \"pass\";\n }\n }\n updateTask(suite, runner);\n suite.result.duration = now() - start;\n await ((_d = runner.onAfterRunSuite) == null ? void 0 : _d.call(runner, suite));\n }\n}\nlet limitMaxConcurrency;\nasync function runSuiteChild(c, runner) {\n if (c.type === \"test\" || c.type === \"custom\") {\n return limitMaxConcurrency(() => runTest(c, runner));\n } else if (c.type === \"suite\") {\n return runSuite(c, runner);\n }\n}\nasync function runFiles(files, runner) {\n var _a, _b;\n limitMaxConcurrency ?? (limitMaxConcurrency = limitConcurrency(runner.config.maxConcurrency));\n for (const file of files) {\n if (!file.tasks.length && !runner.config.passWithNoTests) {\n if (!((_b = (_a = file.result) == null ? void 0 : _a.errors) == null ? void 0 : _b.length)) {\n const error = processError(\n new Error(`No test suite found in file ${file.filepath}`)\n );\n file.result = {\n state: \"fail\",\n errors: [error]\n };\n }\n }\n await runSuite(file, runner);\n }\n}\nasync function startTests(paths, runner) {\n var _a, _b, _c, _d;\n await ((_a = runner.onBeforeCollect) == null ? void 0 : _a.call(runner, paths));\n const files = await collectTests(paths, runner);\n await ((_b = runner.onCollected) == null ? void 0 : _b.call(runner, files));\n await ((_c = runner.onBeforeRunFiles) == null ? void 0 : _c.call(runner, files));\n await runFiles(files, runner);\n await ((_d = runner.onAfterRunFiles) == null ? void 0 : _d.call(runner, files));\n await sendTasksUpdate(runner);\n return files;\n}\nasync function publicCollect(paths, runner) {\n var _a, _b;\n await ((_a = runner.onBeforeCollect) == null ? void 0 : _a.call(runner, paths));\n const files = await collectTests(paths, runner);\n await ((_b = runner.onCollected) == null ? void 0 : _b.call(runner, files));\n return files;\n}\n\nexport { afterAll, afterEach, beforeAll, beforeEach, publicCollect as collectTests, createTaskCollector, describe, getCurrentSuite, getCurrentTest, getFn, getHooks, it, onTestFailed, onTestFinished, setFn, setHooks, startTests, suite, test, updateTask };\n"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { e as getNames, j as getTestName } from "./chunk-tasks.js";
2
+ export { getNames, getTestName };