@aussieljk/forkbook 0.0.0-stage → 0.0.1-2

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 (598) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +77 -2
  3. package/assets/addon-vitest/templates/vitest.config.4.template.ts +36 -0
  4. package/assets/browser/favicon-wrapper.svg +46 -0
  5. package/assets/browser/favicon.svg +1 -0
  6. package/assets/browser/nunito-sans-bold-italic.woff2 +0 -0
  7. package/assets/browser/nunito-sans-bold.woff2 +0 -0
  8. package/assets/browser/nunito-sans-italic.woff2 +0 -0
  9. package/assets/browser/nunito-sans-regular.woff2 +0 -0
  10. package/assets/builder-vite/iframe.html +99 -0
  11. package/assets/create/rendererAssets/.eslintrc.json +16 -0
  12. package/assets/create/rendererAssets/common/Configure.mdx +388 -0
  13. package/assets/create/rendererAssets/common/assets/accessibility.png +0 -0
  14. package/assets/create/rendererAssets/common/assets/accessibility.svg +1 -0
  15. package/assets/create/rendererAssets/common/assets/addon-library.png +0 -0
  16. package/assets/create/rendererAssets/common/assets/assets.png +0 -0
  17. package/assets/create/rendererAssets/common/assets/avif-test-image.avif +0 -0
  18. package/assets/create/rendererAssets/common/assets/context.png +0 -0
  19. package/assets/create/rendererAssets/common/assets/discord.svg +1 -0
  20. package/assets/create/rendererAssets/common/assets/docs.png +0 -0
  21. package/assets/create/rendererAssets/common/assets/figma-plugin.png +0 -0
  22. package/assets/create/rendererAssets/common/assets/github.svg +1 -0
  23. package/assets/create/rendererAssets/common/assets/share.png +0 -0
  24. package/assets/create/rendererAssets/common/assets/styling.png +0 -0
  25. package/assets/create/rendererAssets/common/assets/testing.png +0 -0
  26. package/assets/create/rendererAssets/common/assets/theming.png +0 -0
  27. package/assets/create/rendererAssets/common/assets/tutorials.svg +1 -0
  28. package/assets/create/rendererAssets/common/assets/youtube.svg +1 -0
  29. package/assets/create/rendererAssets/common/button.css +30 -0
  30. package/assets/create/rendererAssets/common/header.css +32 -0
  31. package/assets/create/rendererAssets/common/page.css +68 -0
  32. package/assets/create/templates/react-native/index.expo.js +20 -0
  33. package/assets/create/templates/react-native/index.js +25 -0
  34. package/assets/docs/addon-backgrounds.gif +0 -0
  35. package/assets/docs/addon-controls-args-annotated.png +0 -0
  36. package/assets/docs/addon-controls-args-background-color.png +0 -0
  37. package/assets/docs/addon-controls-args-background-string.png +0 -0
  38. package/assets/docs/addon-controls-args-docs.png +0 -0
  39. package/assets/docs/addon-controls-args-logging.png +0 -0
  40. package/assets/docs/addon-controls-args-no-annotation.png +0 -0
  41. package/assets/docs/addon-controls-args-reflow-slider.png +0 -0
  42. package/assets/docs/addon-controls-args-reflow.png +0 -0
  43. package/assets/docs/addon-controls-args-template.png +0 -0
  44. package/assets/docs/addon-controls-expanded.png +0 -0
  45. package/assets/docs/addon-controls-hero.gif +0 -0
  46. package/assets/docs/addon-controls-install.png +0 -0
  47. package/assets/docs/hero.gif +0 -0
  48. package/assets/docs/highlight.png +0 -0
  49. package/assets/docs/message-reference.png +0 -0
  50. package/assets/docs/viewport.png +0 -0
  51. package/assets/react-native/metro-env.d.ts +69 -0
  52. package/assets/server/addon.tsconfig.json +6 -0
  53. package/assets/server/base-preview-body.html +116 -0
  54. package/assets/server/base-preview-head.html +494 -0
  55. package/assets/server/openBrowser.applescript +94 -0
  56. package/assets/server/template.ejs +87 -0
  57. package/dist/.build-stamp +0 -0
  58. package/dist/_browser-chunks/Color-PCLE2J36.js +1025 -0
  59. package/dist/_browser-chunks/DocsRenderer-JXND3PVQ.js +10 -0
  60. package/dist/_browser-chunks/WithTooltip-XSQFTBMB.js +1619 -0
  61. package/dist/_browser-chunks/chunk-2JDQ35OA.js +247 -0
  62. package/dist/_browser-chunks/chunk-2JT76G3E.js +104 -0
  63. package/dist/_browser-chunks/chunk-2MEPHP35.js +17 -0
  64. package/dist/_browser-chunks/chunk-2SCZVUKW.js +24 -0
  65. package/dist/_browser-chunks/chunk-46Z7NGAS.js +41 -0
  66. package/dist/_browser-chunks/chunk-4ATQOMJB.js +30 -0
  67. package/dist/_browser-chunks/chunk-52CW7FF7.js +49 -0
  68. package/dist/_browser-chunks/chunk-5I7E4GMO.js +62 -0
  69. package/dist/_browser-chunks/chunk-5P4QA6MY.js +20 -0
  70. package/dist/_browser-chunks/chunk-5WMXI5GW.js +816 -0
  71. package/dist/_browser-chunks/chunk-66OCZ54D.js +2604 -0
  72. package/dist/_browser-chunks/chunk-6SXYJQST.js +253 -0
  73. package/dist/_browser-chunks/chunk-AYRF6EJB.js +36 -0
  74. package/dist/_browser-chunks/chunk-B4AUNNU4.js +156 -0
  75. package/dist/_browser-chunks/chunk-BCP2FFXF.js +369 -0
  76. package/dist/_browser-chunks/chunk-C3D4HEFY.js +3396 -0
  77. package/dist/_browser-chunks/chunk-CFAOWGL7.js +43 -0
  78. package/dist/_browser-chunks/chunk-CFWWCCZV.js +223 -0
  79. package/dist/_browser-chunks/chunk-CNED6RYH.js +18 -0
  80. package/dist/_browser-chunks/chunk-DRQKCCAG.js +136 -0
  81. package/dist/_browser-chunks/chunk-ECQ75MKQ.js +0 -0
  82. package/dist/_browser-chunks/chunk-EIYAKDGP.js +302 -0
  83. package/dist/_browser-chunks/chunk-ENKK74N4.js +12 -0
  84. package/dist/_browser-chunks/chunk-FENFYI4X.js +698 -0
  85. package/dist/_browser-chunks/chunk-FJGWSWL5.js +155 -0
  86. package/dist/_browser-chunks/chunk-FVSEPWWX.js +2810 -0
  87. package/dist/_browser-chunks/chunk-GNZY6LOW.js +10116 -0
  88. package/dist/_browser-chunks/chunk-IE4ULIOQ.js +14 -0
  89. package/dist/_browser-chunks/chunk-IMSF75WX.js +42 -0
  90. package/dist/_browser-chunks/chunk-IWQGIXJS.js +14 -0
  91. package/dist/_browser-chunks/chunk-JMC7AIKT.js +108 -0
  92. package/dist/_browser-chunks/chunk-JPUOQJUI.js +8 -0
  93. package/dist/_browser-chunks/chunk-JSBKXXXF.js +218 -0
  94. package/dist/_browser-chunks/chunk-JWSKPMPC.js +73 -0
  95. package/dist/_browser-chunks/chunk-JYVGARBG.js +2943 -0
  96. package/dist/_browser-chunks/chunk-KBK7GKBN.js +35 -0
  97. package/dist/_browser-chunks/chunk-KQ7CRO2B.js +108 -0
  98. package/dist/_browser-chunks/chunk-LAWXTSXK.js +18 -0
  99. package/dist/_browser-chunks/chunk-LE2LTDW3.js +14 -0
  100. package/dist/_browser-chunks/chunk-LEVSOOLQ.js +48 -0
  101. package/dist/_browser-chunks/chunk-LV5PIKV4.js +93 -0
  102. package/dist/_browser-chunks/chunk-MDOL7KML.js +56 -0
  103. package/dist/_browser-chunks/chunk-MFMDGWP6.js +34 -0
  104. package/dist/_browser-chunks/chunk-MLBOOZL4.js +67 -0
  105. package/dist/_browser-chunks/chunk-NQUD4B7H.js +91 -0
  106. package/dist/_browser-chunks/chunk-NULBREPZ.js +43 -0
  107. package/dist/_browser-chunks/chunk-NZMVUW5T.js +7 -0
  108. package/dist/_browser-chunks/chunk-OD6IBQCC.js +117 -0
  109. package/dist/_browser-chunks/chunk-ODVJ3XZJ.js +157 -0
  110. package/dist/_browser-chunks/chunk-OQWFVDIN.js +386 -0
  111. package/dist/_browser-chunks/chunk-OVH3USFB.js +20 -0
  112. package/dist/_browser-chunks/chunk-OZZPSYQR.js +14 -0
  113. package/dist/_browser-chunks/chunk-P6PK47TQ.js +1970 -0
  114. package/dist/_browser-chunks/chunk-PFRNG3UC.js +22 -0
  115. package/dist/_browser-chunks/chunk-PJSMZ27A.js +13 -0
  116. package/dist/_browser-chunks/chunk-QC4HFS6K.js +41 -0
  117. package/dist/_browser-chunks/chunk-QDXFODK4.js +274 -0
  118. package/dist/_browser-chunks/chunk-RBCHTR7C.js +28 -0
  119. package/dist/_browser-chunks/chunk-RMYQ3QN3.js +294 -0
  120. package/dist/_browser-chunks/chunk-RNTIV5CE.js +411 -0
  121. package/dist/_browser-chunks/chunk-RSPAQWVJ.js +80 -0
  122. package/dist/_browser-chunks/chunk-S6TK43XQ.js +836 -0
  123. package/dist/_browser-chunks/chunk-SC67XZST.js +18 -0
  124. package/dist/_browser-chunks/chunk-SFVA4SBT.js +683 -0
  125. package/dist/_browser-chunks/chunk-SZYFOQMT.js +25 -0
  126. package/dist/_browser-chunks/chunk-TBJCJXK4.js +18 -0
  127. package/dist/_browser-chunks/chunk-UMDO3KB7.js +205 -0
  128. package/dist/_browser-chunks/chunk-V2G23FV7.js +11 -0
  129. package/dist/_browser-chunks/chunk-V5M7Q4HT.js +88 -0
  130. package/dist/_browser-chunks/chunk-W5M6NPS3.js +198 -0
  131. package/dist/_browser-chunks/chunk-W7NE2JXW.js +84 -0
  132. package/dist/_browser-chunks/chunk-WGVAAM43.js +1110 -0
  133. package/dist/_browser-chunks/chunk-WHQRNHXD.js +8 -0
  134. package/dist/_browser-chunks/chunk-WOSOWBCA.js +12 -0
  135. package/dist/_browser-chunks/chunk-WZ7KR7SH.js +85 -0
  136. package/dist/_browser-chunks/chunk-YEKO6BHJ.js +20 -0
  137. package/dist/_browser-chunks/chunk-YI2IBIQS.js +7 -0
  138. package/dist/_browser-chunks/chunk-YTIT5NA5.js +1966 -0
  139. package/dist/_browser-chunks/chunk-ZEHRUHTA.js +6 -0
  140. package/dist/_browser-chunks/chunk-ZTQ5MEJ5.js +203 -0
  141. package/dist/_browser-chunks/matchers-YLBYSYAF.js +1263 -0
  142. package/dist/_browser-chunks/react-dom-client-4OHE3QDV.js +9 -0
  143. package/dist/_node-chunks/attached-runtime-I2G4WLJI.js +282 -0
  144. package/dist/_node-chunks/builder-manager-VVHYQXCH.js +1661 -0
  145. package/dist/_node-chunks/chunk-2BUPBPFB.js +82 -0
  146. package/dist/_node-chunks/chunk-2DSIDINN.js +884 -0
  147. package/dist/_node-chunks/chunk-2RU7BKEW.js +23 -0
  148. package/dist/_node-chunks/chunk-34EO2PUT.js +26 -0
  149. package/dist/_node-chunks/chunk-3BKIBF5S.js +3008 -0
  150. package/dist/_node-chunks/chunk-3SDUYDXH.js +98 -0
  151. package/dist/_node-chunks/chunk-3T4ZSNPH.js +662 -0
  152. package/dist/_node-chunks/chunk-3W7F2B7P.js +79 -0
  153. package/dist/_node-chunks/chunk-3Y6AAY5H.js +80 -0
  154. package/dist/_node-chunks/chunk-42UWAGPW.js +1193 -0
  155. package/dist/_node-chunks/chunk-4FEANXWU.js +1986 -0
  156. package/dist/_node-chunks/chunk-5DQFEZEA.js +40 -0
  157. package/dist/_node-chunks/chunk-6KEHV53S.js +1218 -0
  158. package/dist/_node-chunks/chunk-6LMWA44H.js +3837 -0
  159. package/dist/_node-chunks/chunk-6YKBRP72.js +20 -0
  160. package/dist/_node-chunks/chunk-7GUDZVRQ.js +110 -0
  161. package/dist/_node-chunks/chunk-B5J7Q7J4.js +21 -0
  162. package/dist/_node-chunks/chunk-BS2WMZMR.js +90 -0
  163. package/dist/_node-chunks/chunk-BSKFCWQD.js +47 -0
  164. package/dist/_node-chunks/chunk-BXVYT7SB.js +36 -0
  165. package/dist/_node-chunks/chunk-CCOTJ4FC.js +688 -0
  166. package/dist/_node-chunks/chunk-CQKMLL5J.js +33 -0
  167. package/dist/_node-chunks/chunk-CXRU72ET.js +63 -0
  168. package/dist/_node-chunks/chunk-DC7DKR5K.js +20 -0
  169. package/dist/_node-chunks/chunk-DHJFTB4K.js +25 -0
  170. package/dist/_node-chunks/chunk-DUR55DJJ.js +1094 -0
  171. package/dist/_node-chunks/chunk-E6YESGLX.js +7032 -0
  172. package/dist/_node-chunks/chunk-EHUNOMDD.js +52345 -0
  173. package/dist/_node-chunks/chunk-ET7PWEO7.js +298 -0
  174. package/dist/_node-chunks/chunk-EWOX7HPJ.js +20 -0
  175. package/dist/_node-chunks/chunk-F3ZFKBHY.js +844 -0
  176. package/dist/_node-chunks/chunk-FK7KGTV7.js +26 -0
  177. package/dist/_node-chunks/chunk-FPZB5OI7.js +35 -0
  178. package/dist/_node-chunks/chunk-FW2HQUBQ.js +25 -0
  179. package/dist/_node-chunks/chunk-FY6UXW6G.js +11 -0
  180. package/dist/_node-chunks/chunk-GEFQN7K3.js +499 -0
  181. package/dist/_node-chunks/chunk-GRBLDJCR.js +989 -0
  182. package/dist/_node-chunks/chunk-H32DYT6P.js +87 -0
  183. package/dist/_node-chunks/chunk-H4PPVMP5.js +23 -0
  184. package/dist/_node-chunks/chunk-HMP2G23X.js +25 -0
  185. package/dist/_node-chunks/chunk-ICPBH3E7.js +59 -0
  186. package/dist/_node-chunks/chunk-IDEL2J23.js +23 -0
  187. package/dist/_node-chunks/chunk-IK4FGZLR.js +223 -0
  188. package/dist/_node-chunks/chunk-JDXXX6LB.js +68 -0
  189. package/dist/_node-chunks/chunk-JGGFYIG5.js +5468 -0
  190. package/dist/_node-chunks/chunk-JPAZLYJ3.js +29 -0
  191. package/dist/_node-chunks/chunk-JZOO7GGC.js +48 -0
  192. package/dist/_node-chunks/chunk-KISMCCP5.js +4744 -0
  193. package/dist/_node-chunks/chunk-LCK4ZQKG.js +115 -0
  194. package/dist/_node-chunks/chunk-LO56I6E2.js +132 -0
  195. package/dist/_node-chunks/chunk-LXBD4UL4.js +104 -0
  196. package/dist/_node-chunks/chunk-MA24JW6C.js +7162 -0
  197. package/dist/_node-chunks/chunk-MK2KYAI6.js +5414 -0
  198. package/dist/_node-chunks/chunk-NDWKJ4CL.js +2102 -0
  199. package/dist/_node-chunks/chunk-NIBT7XDZ.js +168 -0
  200. package/dist/_node-chunks/chunk-NPO45IMH.js +33 -0
  201. package/dist/_node-chunks/chunk-OISX4AGQ.js +414 -0
  202. package/dist/_node-chunks/chunk-OUW6R7C3.js +26 -0
  203. package/dist/_node-chunks/chunk-OWNFOGTA.js +194 -0
  204. package/dist/_node-chunks/chunk-Q7QNUM5H.js +49 -0
  205. package/dist/_node-chunks/chunk-QEQLR22M.js +1877 -0
  206. package/dist/_node-chunks/chunk-RRN2V55B.js +45 -0
  207. package/dist/_node-chunks/chunk-RWFIFGO5.js +144 -0
  208. package/dist/_node-chunks/chunk-RXNJDRGO.js +209 -0
  209. package/dist/_node-chunks/chunk-RZMQ7S3L.js +92 -0
  210. package/dist/_node-chunks/chunk-SIEXZVCR.js +51 -0
  211. package/dist/_node-chunks/chunk-SLWQNBGO.js +2034 -0
  212. package/dist/_node-chunks/chunk-SVTBJ7Q3.js +35 -0
  213. package/dist/_node-chunks/chunk-SWO5CDYU.js +32 -0
  214. package/dist/_node-chunks/chunk-TD5PLLQG.js +121 -0
  215. package/dist/_node-chunks/chunk-TEQGGSP7.js +33 -0
  216. package/dist/_node-chunks/chunk-TFCEV2XX.js +155 -0
  217. package/dist/_node-chunks/chunk-TFEWM4E3.js +1073 -0
  218. package/dist/_node-chunks/chunk-TINO74G5.js +21 -0
  219. package/dist/_node-chunks/chunk-TNJIXE37.js +40 -0
  220. package/dist/_node-chunks/chunk-TWI4GVH7.js +19 -0
  221. package/dist/_node-chunks/chunk-U5W53R2J.js +1011 -0
  222. package/dist/_node-chunks/chunk-UBOGWBEA.js +148 -0
  223. package/dist/_node-chunks/chunk-UMUBKI6E.js +3787 -0
  224. package/dist/_node-chunks/chunk-UVINFLGY.js +56 -0
  225. package/dist/_node-chunks/chunk-V2DY426G.js +1133 -0
  226. package/dist/_node-chunks/chunk-VLOXOXXE.js +45 -0
  227. package/dist/_node-chunks/chunk-W4OMYLSP.js +1297 -0
  228. package/dist/_node-chunks/chunk-WAXVSN3O.js +18 -0
  229. package/dist/_node-chunks/chunk-WCULS5TP.js +3767 -0
  230. package/dist/_node-chunks/chunk-WNZ2UMFM.js +153 -0
  231. package/dist/_node-chunks/chunk-WZJF2OUH.js +74 -0
  232. package/dist/_node-chunks/chunk-XGIUVY52.js +611 -0
  233. package/dist/_node-chunks/chunk-XHL2LVBM.js +415 -0
  234. package/dist/_node-chunks/chunk-XI6B6P47.js +59 -0
  235. package/dist/_node-chunks/chunk-XLP2ZKXV.js +60 -0
  236. package/dist/_node-chunks/chunk-YCMRA6RX.js +95 -0
  237. package/dist/_node-chunks/chunk-YZFWBA5L.js +2700 -0
  238. package/dist/_node-chunks/chunk-ZMAMXQKP.js +4731 -0
  239. package/dist/_node-chunks/chunk-ZWBCQ4MJ.js +110 -0
  240. package/dist/_node-chunks/dist-VTSTZKUB.js +16 -0
  241. package/dist/_node-chunks/globby-OEMHPBFY.js +2884 -0
  242. package/dist/_node-chunks/jiti-NFX6UU74.js +3848 -0
  243. package/dist/_node-chunks/lib-MDVARD7W.js +366 -0
  244. package/dist/_node-chunks/local-runtime-NTKIN2QT.js +78 -0
  245. package/dist/_node-chunks/mdx-plugin-MWISDWDQ.js +5680 -0
  246. package/dist/_node-chunks/monorepo-LIRFMQXE.js +121 -0
  247. package/dist/_node-chunks/monorepo-optimized-tests-relaxed-limits-no-story-deletion-CPDW4XTW.js +121 -0
  248. package/dist/_node-chunks/optimized-tests-HDOLR3EY.js +22 -0
  249. package/dist/_node-chunks/pattern-copy-play-EKHIUAU2.js +807 -0
  250. package/dist/_node-chunks/postinstallAddon-GYGMWDL6.js +20 -0
  251. package/dist/_node-chunks/rehype-external-links-BUN3HUCO.js +121 -0
  252. package/dist/_node-chunks/rehype-slug-PLADX223.js +52 -0
  253. package/dist/_node-chunks/relaxed-limits-GBHW6KIQ.js +117 -0
  254. package/dist/_node-chunks/run-KDTIZNSY.js +103 -0
  255. package/dist/_node-chunks/run-NL66VTNR.js +4532 -0
  256. package/dist/_node-chunks/session-id-KIIVOQLR.js +23 -0
  257. package/dist/_node-chunks/setup-MGC7BQO6.js +278 -0
  258. package/dist/_node-chunks/vitest.config.4.template-JH2THZFG.js +54 -0
  259. package/dist/actions/decorator.d.ts +7 -0
  260. package/dist/actions/decorator.js +43 -0
  261. package/dist/actions/index.d.ts +67 -0
  262. package/dist/actions/index.js +28 -0
  263. package/dist/addon-a11y/index.d.ts +52 -0
  264. package/dist/addon-a11y/index.js +16 -0
  265. package/dist/addon-a11y/manager.js +1429 -0
  266. package/dist/addon-a11y/preset.js +18 -0
  267. package/dist/addon-a11y/preview.d.ts +17 -0
  268. package/dist/addon-a11y/preview.js +15 -0
  269. package/dist/addon-docs/blocks.d.ts +1061 -0
  270. package/dist/addon-docs/blocks.js +2461 -0
  271. package/dist/addon-docs/index.d.ts +236 -0
  272. package/dist/addon-docs/index.js +16 -0
  273. package/dist/addon-docs/manager.js +90 -0
  274. package/dist/addon-docs/mdx-react-shim.d.ts +1 -0
  275. package/dist/addon-docs/mdx-react-shim.js +2 -0
  276. package/dist/addon-docs/preset.js +378 -0
  277. package/dist/addon-docs/preview.d.ts +4 -0
  278. package/dist/addon-docs/preview.js +7 -0
  279. package/dist/addon-links/index.d.ts +22 -0
  280. package/dist/addon-links/index.js +20 -0
  281. package/dist/addon-links/manager.js +14 -0
  282. package/dist/addon-links/preview.d.ts +6 -0
  283. package/dist/addon-links/preview.js +9 -0
  284. package/dist/addon-links/react/index.d.ts +25 -0
  285. package/dist/addon-links/react/index.js +52 -0
  286. package/dist/addon-mcp/preset.js +1345 -0
  287. package/dist/addon-mcp/preview.js +29 -0
  288. package/dist/addon-mcp/tools/preview-stories/preview-stories-app-script.js +1153 -0
  289. package/dist/addon-ondevice-actions/index.d.ts +4 -0
  290. package/dist/addon-ondevice-actions/index.js +7 -0
  291. package/dist/addon-ondevice-actions/register.js +7 -0
  292. package/dist/addon-ondevice-controls/index.d.ts +6 -0
  293. package/dist/addon-ondevice-controls/index.js +14 -0
  294. package/dist/addon-ondevice-controls/register.js +10 -0
  295. package/dist/addon-pseudo-states/index.d.ts +35 -0
  296. package/dist/addon-pseudo-states/index.js +15 -0
  297. package/dist/addon-pseudo-states/manager.js +53 -0
  298. package/dist/addon-pseudo-states/preview.d.ts +9 -0
  299. package/dist/addon-pseudo-states/preview.js +10 -0
  300. package/dist/addon-themes/index.d.ts +80 -0
  301. package/dist/addon-themes/index.js +104 -0
  302. package/dist/addon-themes/manager.js +97 -0
  303. package/dist/addon-themes/postinstall.js +33 -0
  304. package/dist/addon-themes/preview.d.ts +6 -0
  305. package/dist/addon-themes/preview.js +8 -0
  306. package/dist/addon-vitest/constants.d.ts +132 -0
  307. package/dist/addon-vitest/constants.js +66 -0
  308. package/dist/addon-vitest/index.d.ts +4 -0
  309. package/dist/addon-vitest/index.js +8 -0
  310. package/dist/addon-vitest/manager.js +665 -0
  311. package/dist/addon-vitest/node/coverage-reporter.js +1284 -0
  312. package/dist/addon-vitest/node/vitest.js +674 -0
  313. package/dist/addon-vitest/postinstall.js +24 -0
  314. package/dist/addon-vitest/preset.js +943 -0
  315. package/dist/addon-vitest/vitest-plugin/global-setup.js +162 -0
  316. package/dist/addon-vitest/vitest-plugin/index.d.ts +56 -0
  317. package/dist/addon-vitest/vitest-plugin/index.js +463 -0
  318. package/dist/addon-vitest/vitest-plugin/setup-file-with-project-annotations.js +9 -0
  319. package/dist/addon-vitest/vitest-plugin/setup-file.browser.4.js +20 -0
  320. package/dist/addon-vitest/vitest-plugin/setup-file.js +50 -0
  321. package/dist/addon-vitest/vitest-plugin/test-utils.js +128 -0
  322. package/dist/babel/index.d.ts +2301 -0
  323. package/dist/babel/index.js +61 -0
  324. package/dist/backgrounds/index.d.ts +6 -0
  325. package/dist/backgrounds/index.js +15 -0
  326. package/dist/bin/core.js +1705 -0
  327. package/dist/bin/dispatcher.js +43 -0
  328. package/dist/bin/loader.js +115 -0
  329. package/dist/builder-vite/index.d.ts +50 -0
  330. package/dist/builder-vite/index.js +245 -0
  331. package/dist/builder-vite/preset.js +27 -0
  332. package/dist/channels/index.d.ts +2 -0
  333. package/dist/channels/index.js +352 -0
  334. package/dist/chunk-B2t1tGRh.d.ts +284 -0
  335. package/dist/chunk-BCoJQE-f.d.ts +602 -0
  336. package/dist/chunk-BGkgZp-H.d.ts +214 -0
  337. package/dist/chunk-BTVrWliM.d.ts +115 -0
  338. package/dist/chunk-BXLImeLy.d.ts +197 -0
  339. package/dist/chunk-BfBzpgct.d.ts +916 -0
  340. package/dist/chunk-Bpi2tz-6.d.ts +511 -0
  341. package/dist/chunk-BxWufQms.d.ts +142 -0
  342. package/dist/chunk-C-bavsOH.d.ts +34 -0
  343. package/dist/chunk-C2p5r3Vt.d.ts +13001 -0
  344. package/dist/chunk-C6PAgHLT.d.ts +12 -0
  345. package/dist/chunk-CMeX4WRe.d.ts +179 -0
  346. package/dist/chunk-Ct9xd6IM.d.ts +65 -0
  347. package/dist/chunk-CwQKNaYL.d.ts +15 -0
  348. package/dist/chunk-D7DwV41f.d.ts +3622 -0
  349. package/dist/chunk-DEVFdzxR.d.ts +253 -0
  350. package/dist/chunk-DaVb55-_.d.ts +124 -0
  351. package/dist/chunk-DgRNfmj_.d.ts +40 -0
  352. package/dist/chunk-DoIGKY33.d.ts +666 -0
  353. package/dist/chunk-Dr3R0DXk.d.ts +40 -0
  354. package/dist/chunk-DtHByo32.d.ts +55 -0
  355. package/dist/chunk-Dw1z1Pki.d.ts +933 -0
  356. package/dist/chunk-DzuY9DXg.d.ts +79 -0
  357. package/dist/chunk-FjDVzZTj.d.ts +62 -0
  358. package/dist/chunk-Kt1tW-D1.d.ts +59 -0
  359. package/dist/chunk-XP8oHzpE.d.ts +6 -0
  360. package/dist/chunk-gCX81nOr.d.ts +61 -0
  361. package/dist/chunk-pcFXCimE.d.ts +741 -0
  362. package/dist/cli/index.d.ts +1174 -0
  363. package/dist/cli/index.js +5613 -0
  364. package/dist/cli/skills/content/index.d.ts +72 -0
  365. package/dist/cli/skills/content/index.js +335 -0
  366. package/dist/cli/tools/sdk/child-host.d.ts +61 -0
  367. package/dist/cli/tools/sdk/child-host.js +131 -0
  368. package/dist/cli/tools/sdk/index.d.ts +137 -0
  369. package/dist/cli/tools/sdk/index.js +44 -0
  370. package/dist/cli-commands/bin/index.js +25 -0
  371. package/dist/client-logger/index.d.ts +31 -0
  372. package/dist/client-logger/index.js +63 -0
  373. package/dist/common/index.d.ts +1103 -0
  374. package/dist/common/index.js +364 -0
  375. package/dist/components/index.d.ts +1924 -0
  376. package/dist/components/index.js +13759 -0
  377. package/dist/core-events/index.d.ts +155 -0
  378. package/dist/core-events/index.js +136 -0
  379. package/dist/core-server/index.d.ts +2200 -0
  380. package/dist/core-server/index.js +4165 -0
  381. package/dist/core-server/presets/common-manager.css +170 -0
  382. package/dist/core-server/presets/common-manager.js +4168 -0
  383. package/dist/core-server/presets/common-override-preset.js +81 -0
  384. package/dist/core-server/presets/common-preset.js +2187 -0
  385. package/dist/create/bin/index.js +23 -0
  386. package/dist/create/index.js +25 -0
  387. package/dist/csf/csf-utils.d.ts +2 -0
  388. package/dist/csf/csf-utils.js +19 -0
  389. package/dist/csf/index.d.ts +7 -0
  390. package/dist/csf/index.js +2142 -0
  391. package/dist/csf-tools/index.d.ts +1157 -0
  392. package/dist/csf-tools/index.js +736 -0
  393. package/dist/docs-tools/index.d.ts +197 -0
  394. package/dist/docs-tools/index.js +61 -0
  395. package/dist/highlight/index.d.ts +10 -0
  396. package/dist/highlight/index.js +15 -0
  397. package/dist/instrumenter/index.d.ts +113 -0
  398. package/dist/instrumenter/index.js +2595 -0
  399. package/dist/manager/_manager-chunks/globals-runtime-8HkdnU2F.js +6144 -0
  400. package/dist/manager/_manager-chunks/globals-runtime-BIKBO23x.js +3389 -0
  401. package/dist/manager/_manager-chunks/globals-runtime-BdGkqNEt.js +45 -0
  402. package/dist/manager/_manager-chunks/globals-runtime-BmphMP6z.js +1190 -0
  403. package/dist/manager/_manager-chunks/globals-runtime-BvM-NY2g.js +13307 -0
  404. package/dist/manager/_manager-chunks/globals-runtime-C02fvgcd.js +9243 -0
  405. package/dist/manager/_manager-chunks/globals-runtime-DkAPXCvc.js +9766 -0
  406. package/dist/manager/_manager-chunks/globals-runtime-DpNYC-qi.js +5564 -0
  407. package/dist/manager/_manager-chunks/globals-runtime-DtcOnYHR.js +5357 -0
  408. package/dist/manager/_manager-chunks/globals-runtime-DwFqpqya.js +722 -0
  409. package/dist/manager/_manager-chunks/globals-runtime-FC201B7s.js +6837 -0
  410. package/dist/manager/_manager-chunks/globals-runtime-Rp_zjGnh.js +121 -0
  411. package/dist/manager/_manager-chunks/globals-runtime-ZHrQFa3-.js +10463 -0
  412. package/dist/manager/_manager-chunks/globals-runtime-eLPTIfX-.js +7759 -0
  413. package/dist/manager/_manager-chunks/globals-runtime-qKvCZHFY.js +4468 -0
  414. package/dist/manager/_manager-chunks/globals-runtime-sGpNlIJ1.js +5102 -0
  415. package/dist/manager/_manager-chunks/runtime-B1L9TH89.js +452 -0
  416. package/dist/manager/_manager-chunks/runtime-BK0zF7FN.js +22 -0
  417. package/dist/manager/_manager-chunks/runtime-BhkT2CXl.js +1408 -0
  418. package/dist/manager/_manager-chunks/runtime-Bly6WJLN.js +998 -0
  419. package/dist/manager/_manager-chunks/runtime-D0UOWx0U.js +979 -0
  420. package/dist/manager/_manager-chunks/runtime-D94Vq3oR.js +4014 -0
  421. package/dist/manager/_manager-chunks/runtime-DMig8mT7.js +77 -0
  422. package/dist/manager/_manager-chunks/runtime-EITvVbkG.js +46 -0
  423. package/dist/manager/_manager-chunks/runtime-cp5pazY2.js +8936 -0
  424. package/dist/manager/_manager-chunks/runtime-eDVAYF7N.js +6860 -0
  425. package/dist/manager/_manager-chunks/runtime-i-PDAHLR.js +2493 -0
  426. package/dist/manager/globals-runtime.js +2 -0
  427. package/dist/manager/globals.d.ts +23 -0
  428. package/dist/manager/globals.js +26 -0
  429. package/dist/manager/manager-stores.d.ts +2 -0
  430. package/dist/manager/manager-stores.js +19 -0
  431. package/dist/manager/runtime.js +2 -0
  432. package/dist/manager-api/index.d.ts +2 -0
  433. package/dist/manager-api/index.js +3257 -0
  434. package/dist/manager-errors.d.ts +89 -0
  435. package/dist/manager-errors.js +20 -0
  436. package/dist/mcp/index.d.ts +270 -0
  437. package/dist/mcp/index.js +305 -0
  438. package/dist/mocking-utils/index.d.ts +689 -0
  439. package/dist/mocking-utils/index.js +521 -0
  440. package/dist/mocking-utils/mocker-runtime.js +1254 -0
  441. package/dist/nextjs-vite/config/preview.js +3 -0
  442. package/dist/nextjs-vite/export-mocks/cache/index.d.ts +25 -0
  443. package/dist/nextjs-vite/export-mocks/cache/index.js +29 -0
  444. package/dist/nextjs-vite/export-mocks/headers/index.d.ts +37 -0
  445. package/dist/nextjs-vite/export-mocks/headers/index.js +54 -0
  446. package/dist/nextjs-vite/export-mocks/link/index.d.ts +9 -0
  447. package/dist/nextjs-vite/export-mocks/link/index.js +59 -0
  448. package/dist/nextjs-vite/export-mocks/navigation/index.d.ts +28 -0
  449. package/dist/nextjs-vite/export-mocks/navigation/index.js +58 -0
  450. package/dist/nextjs-vite/export-mocks/router/index.d.ts +34 -0
  451. package/dist/nextjs-vite/export-mocks/router/index.js +63 -0
  452. package/dist/nextjs-vite/index.d.ts +92 -0
  453. package/dist/nextjs-vite/index.js +58 -0
  454. package/dist/nextjs-vite/node/index.d.ts +6 -0
  455. package/dist/nextjs-vite/node/index.js +20 -0
  456. package/dist/nextjs-vite/preset.js +648 -0
  457. package/dist/nextjs-vite/preview.d.ts +20 -0
  458. package/dist/nextjs-vite/preview.js +11 -0
  459. package/dist/nextjs-vite/vite-plugin/index.d.ts +6 -0
  460. package/dist/nextjs-vite/vite-plugin/index.js +19 -0
  461. package/dist/nextjs-vite-plugin/index.d.ts +28 -0
  462. package/dist/nextjs-vite-plugin/index.js +923 -0
  463. package/dist/nextjs-vite-plugin/mocks/storybook.global.js +29 -0
  464. package/dist/nextjs-vite-plugin/plugins/next-image/alias/image-context.js +8 -0
  465. package/dist/nextjs-vite-plugin/plugins/next-image/alias/image-default-loader.js +23 -0
  466. package/dist/nextjs-vite-plugin/plugins/next-image/alias/next-image.js +28 -0
  467. package/dist/nextjs-vite-plugin/plugins/next-image/alias/next-legacy-image.js +17 -0
  468. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/cache/index.js +29 -0
  469. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/dynamic/index.js +40 -0
  470. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/headers/index.js +55 -0
  471. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/link/index.js +63 -0
  472. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/navigation/index.js +71 -0
  473. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/router/index.js +74 -0
  474. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/rsc/server-only.js +7 -0
  475. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/safe-stable-stringify/index.js +13 -0
  476. package/dist/nextjs-vite-plugin/plugins/next-mocks/compatibility/draft-mode.compat.js +7 -0
  477. package/dist/node-logger/index.d.ts +495 -0
  478. package/dist/node-logger/index.js +42 -0
  479. package/dist/oxc-parser/index.d.ts +99 -0
  480. package/dist/oxc-parser/index.js +275 -0
  481. package/dist/oxc-parser/worker.js +37 -0
  482. package/dist/preview/_chunks/runtime-BIzIdDbb.js +10263 -0
  483. package/dist/preview/_chunks/runtime-BTPtVY1p.js +1102 -0
  484. package/dist/preview/_chunks/runtime-BZSnICCg.js +8484 -0
  485. package/dist/preview/_chunks/runtime-BdGkqNEt.js +45 -0
  486. package/dist/preview/_chunks/runtime-BwSxqk3t.js +63 -0
  487. package/dist/preview/_chunks/runtime-CqHxptiK.js +6143 -0
  488. package/dist/preview/_chunks/runtime-CsV4HZPV.js +5064 -0
  489. package/dist/preview/_chunks/runtime-CxZK_Ln3.js +284 -0
  490. package/dist/preview/_chunks/runtime-DZToXfvO.js +9767 -0
  491. package/dist/preview/_chunks/runtime-DrTjJkPY.js +3872 -0
  492. package/dist/preview/_chunks/runtime-DuHdxMFA.js +387 -0
  493. package/dist/preview/_chunks/runtime-iXdo8CR8.js +3635 -0
  494. package/dist/preview/_chunks/runtime-q3wt0e_N.js +6838 -0
  495. package/dist/preview/globals.d.ts +16 -0
  496. package/dist/preview/globals.js +20 -0
  497. package/dist/preview/runtime.js +6 -0
  498. package/dist/preview-api/index.d.ts +4 -0
  499. package/dist/preview-api/index.js +147 -0
  500. package/dist/preview-errors.d.ts +186 -0
  501. package/dist/preview-errors.js +56 -0
  502. package/dist/react/docgen/docgen-worker.js +38 -0
  503. package/dist/react/entry-preview-argtypes.js +9 -0
  504. package/dist/react/entry-preview-docs.js +12 -0
  505. package/dist/react/entry-preview-rsc.js +11 -0
  506. package/dist/react/entry-preview.js +21 -0
  507. package/dist/react/index.d.ts +119 -0
  508. package/dist/react/index.js +26 -0
  509. package/dist/react/preset.js +301 -0
  510. package/dist/react/preview.d.ts +2 -0
  511. package/dist/react/preview.js +11 -0
  512. package/dist/react-native/bin/get-stories.js +34 -0
  513. package/dist/react-native/index.d.ts +160 -0
  514. package/dist/react-native/index.js +1547 -0
  515. package/dist/react-native/metro/node.d.ts +83 -0
  516. package/dist/react-native/metro/node.js +21 -0
  517. package/dist/react-native/metro/withStorybook.d.ts +2269 -0
  518. package/dist/react-native/metro/withStorybook.js +138 -0
  519. package/dist/react-native/preview.d.ts +6 -0
  520. package/dist/react-native/preview.js +20 -0
  521. package/dist/react-native/scripts/generate.d.ts +22 -0
  522. package/dist/react-native/scripts/generate.js +18 -0
  523. package/dist/react-native/stub.js +20 -0
  524. package/dist/react-native-theming/index.d.ts +175 -0
  525. package/dist/react-native-theming/index.js +2591 -0
  526. package/dist/react-native-ui/index.d.ts +130 -0
  527. package/dist/react-native-ui/index.js +1448 -0
  528. package/dist/react-native-ui-common/index.d.ts +230 -0
  529. package/dist/react-native-ui-common/index.js +514 -0
  530. package/dist/react-vite/index.d.ts +4 -0
  531. package/dist/react-vite/index.js +8 -0
  532. package/dist/react-vite/node/index.d.ts +6 -0
  533. package/dist/react-vite/node/index.js +20 -0
  534. package/dist/react-vite/preset.d.ts +6 -0
  535. package/dist/react-vite/preset.js +21 -0
  536. package/dist/router/index.d.ts +141 -0
  537. package/dist/router/index.js +1217 -0
  538. package/dist/server-errors.d.ts +2 -0
  539. package/dist/server-errors.js +149 -0
  540. package/dist/shared/open-service/index.d.ts +3 -0
  541. package/dist/shared/open-service/index.js +115 -0
  542. package/dist/shared/open-service/services/docgen/worker/docgen-worker.js +75 -0
  543. package/dist/shared/open-service/toolsets/docs/public.d.ts +1296 -0
  544. package/dist/shared/open-service/toolsets/docs/public.js +991 -0
  545. package/dist/telemetry/index.d.ts +314 -0
  546. package/dist/telemetry/index.js +103 -0
  547. package/dist/test/index.d.ts +158 -0
  548. package/dist/test/index.js +19421 -0
  549. package/dist/theming/create.d.ts +15 -0
  550. package/dist/theming/create.js +11 -0
  551. package/dist/theming/index.d.ts +54 -0
  552. package/dist/theming/index.js +511 -0
  553. package/dist/types/index.d.ts +2 -0
  554. package/dist/types/index.js +48 -0
  555. package/dist/viewport/index.d.ts +275 -0
  556. package/dist/viewport/index.js +21 -0
  557. package/package.json +1054 -4
  558. package/template/nextjs-vite/cli/.eslintrc.json +6 -0
  559. package/template/nextjs-vite/cli/js/Button.jsx +42 -0
  560. package/template/nextjs-vite/cli/js/Button.stories.js +49 -0
  561. package/template/nextjs-vite/cli/js/Configure.mdx +470 -0
  562. package/template/nextjs-vite/cli/js/Header.jsx +58 -0
  563. package/template/nextjs-vite/cli/js/Header.stories.js +30 -0
  564. package/template/nextjs-vite/cli/js/Page.jsx +68 -0
  565. package/template/nextjs-vite/cli/js/Page.stories.js +28 -0
  566. package/template/nextjs-vite/cli/ts/Button.stories.ts +54 -0
  567. package/template/nextjs-vite/cli/ts/Button.tsx +39 -0
  568. package/template/nextjs-vite/cli/ts/Configure.mdx +446 -0
  569. package/template/nextjs-vite/cli/ts/Header.stories.ts +34 -0
  570. package/template/nextjs-vite/cli/ts/Header.tsx +54 -0
  571. package/template/nextjs-vite/cli/ts/Page.stories.ts +33 -0
  572. package/template/nextjs-vite/cli/ts/Page.tsx +73 -0
  573. package/template/react/cli/.eslintrc.json +5 -0
  574. package/template/react/cli/js/Button.jsx +39 -0
  575. package/template/react/cli/js/Button.stories.js +49 -0
  576. package/template/react/cli/js/Header.jsx +56 -0
  577. package/template/react/cli/js/Header.stories.js +29 -0
  578. package/template/react/cli/js/Page.jsx +69 -0
  579. package/template/react/cli/js/Page.stories.js +28 -0
  580. package/template/react/cli/ts/Button.stories.ts +54 -0
  581. package/template/react/cli/ts/Button.tsx +37 -0
  582. package/template/react/cli/ts/Header.stories.ts +34 -0
  583. package/template/react/cli/ts/Header.tsx +56 -0
  584. package/template/react/cli/ts/Page.stories.ts +33 -0
  585. package/template/react/cli/ts/Page.tsx +73 -0
  586. package/template/react-vite/cli/.eslintrc.json +5 -0
  587. package/template/react-vite/cli/js/Button.jsx +39 -0
  588. package/template/react-vite/cli/js/Button.stories.js +49 -0
  589. package/template/react-vite/cli/js/Header.jsx +56 -0
  590. package/template/react-vite/cli/js/Header.stories.js +29 -0
  591. package/template/react-vite/cli/js/Page.jsx +69 -0
  592. package/template/react-vite/cli/js/Page.stories.js +28 -0
  593. package/template/react-vite/cli/ts/Button.stories.ts +54 -0
  594. package/template/react-vite/cli/ts/Button.tsx +37 -0
  595. package/template/react-vite/cli/ts/Header.stories.ts +34 -0
  596. package/template/react-vite/cli/ts/Header.tsx +56 -0
  597. package/template/react-vite/cli/ts/Page.stories.ts +33 -0
  598. package/template/react-vite/cli/ts/Page.tsx +73 -0
@@ -0,0 +1,943 @@
1
+ import CJS_COMPAT_NODE_URL_ro17f80mg6k from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_ro17f80mg6k from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_ro17f80mg6k from "node:module";
4
+
5
+ var __filename = CJS_COMPAT_NODE_URL_ro17f80mg6k.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_ro17f80mg6k.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_ro17f80mg6k.createRequire(import.meta.url);
8
+
9
+ // ------------------------------------------------------------
10
+ // end of CJS compatibility banner, injected by Forkbook's esbuild configuration
11
+ // ------------------------------------------------------------
12
+ import {
13
+ errorToErrorLike,
14
+ log
15
+ } from "../_node-chunks/chunk-VLOXOXXE.js";
16
+ import {
17
+ ADDON_ID2 as ADDON_ID,
18
+ COVERAGE_DIRECTORY,
19
+ FORKBOOK_ADDON_TEST_CHANNEL,
20
+ STATUS_STORE_CHANNEL_EVENT_NAME,
21
+ STORE_CHANNEL_EVENT_NAME,
22
+ STORY_INDEX_CHANNEL_EVENT_NAME,
23
+ TEST_PROVIDER_STORE_CHANNEL_EVENT_NAME,
24
+ TRIGGER_TEST_RUN_REQUEST,
25
+ TRIGGER_TEST_RUN_RESPONSE,
26
+ storeOptions
27
+ } from "../_node-chunks/chunk-H32DYT6P.js";
28
+ import {
29
+ isEqual
30
+ } from "../_node-chunks/chunk-OWNFOGTA.js";
31
+ import "../_node-chunks/chunk-HMP2G23X.js";
32
+ import {
33
+ importMetaResolve
34
+ } from "../_node-chunks/chunk-F3ZFKBHY.js";
35
+ import "../_node-chunks/chunk-TNJIXE37.js";
36
+ import "../_node-chunks/chunk-2BUPBPFB.js";
37
+ import "../_node-chunks/chunk-CXRU72ET.js";
38
+
39
+ // src/addon-vitest/preset.ts
40
+ import { mkdir } from "node:fs/promises";
41
+ import { resolvePathInStorybookCache as resolvePathInStorybookCache2 } from "@aussieljk/forkbook/internal/common";
42
+ import {
43
+ registerToolset
44
+ } from "@aussieljk/forkbook/internal/core-server";
45
+ import { logger } from "@aussieljk/forkbook/internal/node-logger";
46
+ import {
47
+ cleanPaths,
48
+ oneWayHash,
49
+ sanitizeError,
50
+ telemetry
51
+ } from "@aussieljk/forkbook/internal/telemetry";
52
+
53
+ // src/addon-vitest/node/boot-test-runner.ts
54
+ import { fileURLToPath } from "node:url";
55
+ import { executeNodeCommand, loadPreviewOrConfigFile } from "@aussieljk/forkbook/internal/common";
56
+ import {
57
+ internal_universalStatusStore,
58
+ internal_universalTestProviderStore
59
+ } from "@aussieljk/forkbook/internal/core-server";
60
+ import { normalize } from "pathe";
61
+ var MAX_START_TIME = 3e4, vitestModulePath = fileURLToPath(
62
+ importMetaResolve("@aussieljk/forkbook/addon-vitest/vitest")
63
+ ), eventQueue = [], child, ready = !1, unsubscribeBridges = [], processExitHandled = !1, storesKillingOnFatalError = /* @__PURE__ */ new WeakSet(), generation = 0, booting, killChild = () => {
64
+ for (let unsubscribe of unsubscribeBridges)
65
+ unsubscribe();
66
+ unsubscribeBridges = [], child?.kill(), child = null, ready = !1, eventQueue.length = 0, generation++;
67
+ }, forwardUniversalStoreEvent = (storeEventName) => (event, eventInfo) => {
68
+ !ready && event.type === "TRIGGER_RUN" || child?.send({
69
+ type: storeEventName,
70
+ args: [{ event, eventInfo }],
71
+ from: "server"
72
+ });
73
+ }, bootTestRunner = async ({
74
+ channel,
75
+ store,
76
+ options,
77
+ configLoader
78
+ }) => {
79
+ let universalStoreBridges = [
80
+ {
81
+ eventName: STORE_CHANNEL_EVENT_NAME,
82
+ subscribe: (listener) => store.subscribe(listener)
83
+ },
84
+ {
85
+ eventName: STATUS_STORE_CHANNEL_EVENT_NAME,
86
+ subscribe: (listener) => internal_universalStatusStore.subscribe(listener)
87
+ },
88
+ {
89
+ eventName: TEST_PROVIDER_STORE_CHANNEL_EVENT_NAME,
90
+ subscribe: (listener) => internal_universalTestProviderStore.subscribe(listener)
91
+ }
92
+ ], bridgedEventNames = new Set(universalStoreBridges.map((bridge) => bridge.eventName)), stderr = [];
93
+ if (storesKillingOnFatalError.has(store) || (storesKillingOnFatalError.add(store), store.subscribe("FATAL_ERROR", () => {
94
+ let childWasReady = ready;
95
+ killChild(), closeOpenRun(store), childWasReady && store.getState().watching && runTestRunner({ channel, store, options, configLoader }).then(
96
+ () => store.setState((s) => ({ ...s, fatalError: void 0 })),
97
+ () => {
98
+ }
99
+ );
100
+ })), !processExitHandled) {
101
+ processExitHandled = !0;
102
+ let exit = (code = 0) => {
103
+ killChild(), process.exit(code);
104
+ };
105
+ process.on("exit", exit), process.on("SIGINT", () => exit(0)), process.on("SIGTERM", () => exit(0));
106
+ }
107
+ let bootGeneration = generation, crashAlreadyReported = new Error("The test runner process crashed"), startChildProcess = async () => {
108
+ let storyIndexGenerator = await options.presets.apply("storyIndexGenerator"), previewAnnotations = await getPreviewAnnotations(options);
109
+ if (bootGeneration !== generation)
110
+ throw crashAlreadyReported;
111
+ await new Promise((resolve, reject) => {
112
+ child = executeNodeCommand({
113
+ scriptPath: vitestModulePath,
114
+ options: {
115
+ env: {
116
+ VITEST: "true",
117
+ TEST: "true",
118
+ VITEST_CHILD_PROCESS: "true",
119
+ NODE_ENV: process.env.NODE_ENV ?? "test",
120
+ FORKBOOK_CONFIG_DIR: normalize(options.configDir),
121
+ FORKBOOK_CONFIG_LOADER: configLoader,
122
+ FORKBOOK_PREVIEW_ANNOTATIONS: JSON.stringify(previewAnnotations)
123
+ },
124
+ extendEnv: !0
125
+ }
126
+ }), sentStoryIndex = void 0, stderr = [];
127
+ let spawnedChild = child;
128
+ spawnedChild.on("exit", (code, signal) => {
129
+ child === spawnedChild && store.send({
130
+ type: "FATAL_ERROR",
131
+ payload: {
132
+ message: "The test runner process exited unexpectedly",
133
+ error: { message: signal ? `Killed by ${signal}` : `Exited with code ${code}` }
134
+ }
135
+ }), reject(crashAlreadyReported);
136
+ }), child.stdout?.on("data", log), child.stderr?.on("data", (data) => {
137
+ data.toString().match(/^\u001B\[33m/) || (log(data), stderr.push(data.toString()));
138
+ }), unsubscribeBridges = universalStoreBridges.map(
139
+ (bridge) => bridge.subscribe(forwardUniversalStoreEvent(bridge.eventName))
140
+ ), child.on("message", (event) => {
141
+ child === spawnedChild && (event.type === "ready" ? refreshStoryIndex(storyIndexGenerator).then(() => {
142
+ if (child === spawnedChild) {
143
+ for (ready = !0, sendStoryIndex(); eventQueue.length; ) {
144
+ let { type, args } = eventQueue.shift();
145
+ child?.send({ type, args, from: "server" });
146
+ }
147
+ resolve();
148
+ }
149
+ }, reject) : event.type === "uncaught-error" ? (store.send({
150
+ type: "FATAL_ERROR",
151
+ payload: event.payload
152
+ }), reject(crashAlreadyReported)) : bridgedEventNames.has(event.type) ? channel.receive(event) : channel.emit(event.type, ...event.args));
153
+ });
154
+ });
155
+ }, timeout = new Promise(
156
+ (_, reject) => setTimeout(
157
+ reject,
158
+ MAX_START_TIME,
159
+ // eslint-disable-next-line local-rules/no-uncategorized-errors
160
+ new Error(
161
+ `Aborting test runner process because it took longer than ${MAX_START_TIME / 1e3} seconds to start.`
162
+ )
163
+ )
164
+ );
165
+ await Promise.race([startChildProcess(), timeout]).catch((error) => {
166
+ throw bootGeneration !== generation || store.send({
167
+ type: "FATAL_ERROR",
168
+ payload: {
169
+ message: "Failed to start test runner process",
170
+ error: error instanceof Error ? errorToErrorLike(error) : { message: String(error) }
171
+ }
172
+ }), error;
173
+ });
174
+ }, runTestRunner = async ({
175
+ channel,
176
+ store,
177
+ initEvent,
178
+ initArgs,
179
+ options,
180
+ configLoader
181
+ }) => {
182
+ if (!ready && initEvent && eventQueue.push({ type: initEvent, args: initArgs }), !child && booting?.generation !== generation) {
183
+ let boot = {
184
+ generation,
185
+ promise: bootTestRunner({ channel, store, options, configLoader })
186
+ };
187
+ booting = boot, boot.promise.catch(() => {
188
+ }).then(() => {
189
+ booting === boot && (booting = void 0);
190
+ });
191
+ }
192
+ await booting?.promise;
193
+ };
194
+ var lastStoryIndex, sentStoryIndex, storyIndexRequests = 0, appliedStoryIndexRequest = 0, refreshStoryIndex = async (storyIndexGenerator) => {
195
+ let request = ++storyIndexRequests;
196
+ try {
197
+ let index = await storyIndexGenerator.getIndex();
198
+ request > appliedStoryIndexRequest && (appliedStoryIndexRequest = request, lastStoryIndex = index);
199
+ } catch (error) {
200
+ if (!lastStoryIndex)
201
+ throw error;
202
+ }
203
+ }, sendStoryIndex = () => {
204
+ child && lastStoryIndex !== sentStoryIndex && (sentStoryIndex = lastStoryIndex, child.send({ type: STORY_INDEX_CHANNEL_EVENT_NAME, args: [lastStoryIndex], from: "server" }));
205
+ }, sendStoryIndexToTestRunner = async (storyIndexGenerator) => {
206
+ await refreshStoryIndex(storyIndexGenerator), ready && sendStoryIndex();
207
+ }, getPreviewAnnotations = async (options) => {
208
+ let previewAnnotations = await options.presets.apply(
209
+ "previewAnnotations",
210
+ [],
211
+ options
212
+ ), previewPath = loadPreviewOrConfigFile({ configDir: options.configDir });
213
+ return (previewAnnotations ?? []).concat(previewPath ?? []);
214
+ }, closeOpenRun = (store) => store.setState((s) => ({
215
+ ...s,
216
+ cancelling: !1,
217
+ currentRun: {
218
+ ...s.currentRun,
219
+ finishedAt: s.currentRun.startedAt && !s.currentRun.finishedAt ? Date.now() : s.currentRun.finishedAt
220
+ }
221
+ }));
222
+
223
+ // src/addon-vitest/node/test-run-responder.ts
224
+ import {
225
+ createFileSystemCache,
226
+ resolvePathInStorybookCache
227
+ } from "@aussieljk/forkbook/internal/common";
228
+ import {
229
+ internal_UniversalStore,
230
+ experimental_getTestProviderStore
231
+ } from "@aussieljk/forkbook/internal/core-server";
232
+ var resolvePreviewBuilderName = (core) => typeof core?.builder == "string" ? core.builder : core?.builder?.name, storePromise, ensureTestRunnerStore = ({ channel, options }) => storePromise ??= createTestRunnerStore({ channel, options }).catch((error) => {
233
+ throw storePromise = void 0, error;
234
+ }), createTestRunnerStore = async ({ channel, options }) => {
235
+ let core = await options.presets.apply("core"), configLoader = typeof core?.builder != "string" && core?.builder?.options?.configLoader || void 0, fsCache = createFileSystemCache({
236
+ basePath: resolvePathInStorybookCache(ADDON_ID.replace("/", "-")),
237
+ ns: "storybook",
238
+ ttl: 336 * 60 * 60 * 1e3
239
+ // 14 days
240
+ }), cachedState = await fsCache.get("state", {
241
+ config: storeOptions.initialState.config
242
+ }), selectCachedState = (s) => ({
243
+ config: s.config
244
+ }), store = internal_UniversalStore.create({
245
+ ...storeOptions,
246
+ initialState: {
247
+ ...storeOptions.initialState,
248
+ ...selectCachedState(cachedState)
249
+ },
250
+ leader: process.env.VITEST_CHILD_PROCESS !== "true" && process.env.FORKBOOK_ATTACHED_TOOLS !== "true"
251
+ });
252
+ store.onStateChange((state, previousState) => {
253
+ isEqual(selectCachedState(state), selectCachedState(previousState)) || fsCache.set("state", selectCachedState(state));
254
+ });
255
+ let testProviderStore = experimental_getTestProviderStore(ADDON_ID);
256
+ return store.subscribe("TRIGGER_RUN", (event, eventInfo) => {
257
+ testProviderStore.setState("test-provider-state:running"), store.setState((s) => ({
258
+ ...s,
259
+ fatalError: void 0
260
+ })), runTestRunner({
261
+ channel,
262
+ store,
263
+ initEvent: STORE_CHANNEL_EVENT_NAME,
264
+ initArgs: [{ event, eventInfo }],
265
+ options,
266
+ configLoader
267
+ }).catch(() => {
268
+ });
269
+ }), store.subscribe("FATAL_ERROR", (event) => {
270
+ let { message, error } = event.payload, name = error.name || "Error";
271
+ log(`${name}: ${message}`), error.stack && log(error.stack);
272
+ function logErrorWithCauses(err) {
273
+ err && (log(`Caused by: ${err.name ?? "Error"}: ${err.message}`), err.stack && log(err.stack), err.cause && logErrorWithCauses(err.cause));
274
+ }
275
+ error.cause && logErrorWithCauses(error.cause), store.setState((s) => ({
276
+ ...s,
277
+ fatalError: {
278
+ message,
279
+ error
280
+ }
281
+ })), testProviderStore.setState("test-provider-state:crashed");
282
+ }), testProviderStore.onClearAll(() => {
283
+ store.setState((s) => ({
284
+ ...s,
285
+ currentRun: { ...s.currentRun, coverageSummary: void 0, unhandledErrors: [] }
286
+ }));
287
+ }), store;
288
+ }, wireTestRunResponder = async ({
289
+ channel,
290
+ options
291
+ }) => {
292
+ if (process.env.VITEST_CHILD_PROCESS === "true" || process.env.FORKBOOK_ATTACHED_TOOLS === "true" || !channel)
293
+ return;
294
+ let viteBuilder = !!resolvePreviewBuilderName(await options.presets.apply("core"))?.includes(
295
+ "vite"
296
+ ), requestInFlight = !1;
297
+ channel.on(TRIGGER_TEST_RUN_REQUEST, async (payload) => {
298
+ let { requestId, actor, storyIds, config: configOverride } = payload, sendResponse = (response) => {
299
+ channel.emit(TRIGGER_TEST_RUN_RESPONSE, { requestId, ...response });
300
+ };
301
+ if (!viteBuilder) {
302
+ sendResponse({
303
+ status: "error",
304
+ error: {
305
+ message: "Story tests require a Vite-based Forkbook builder."
306
+ }
307
+ });
308
+ return;
309
+ }
310
+ let store;
311
+ try {
312
+ store = await ensureTestRunnerStore({ channel, options });
313
+ } catch (error) {
314
+ sendResponse({
315
+ status: "error",
316
+ error: {
317
+ message: "Failed to set up the test runner",
318
+ error: error instanceof Error ? errorToErrorLike(error) : { message: String(error) }
319
+ }
320
+ });
321
+ return;
322
+ }
323
+ await store.untilReady();
324
+ let {
325
+ currentRun: { startedAt, finishedAt },
326
+ config
327
+ } = store.getState();
328
+ if (startedAt && !finishedAt || requestInFlight) {
329
+ sendResponse({
330
+ status: "error",
331
+ error: { message: "Tests are already running" }
332
+ });
333
+ return;
334
+ }
335
+ requestInFlight = !0;
336
+ let unsubscribe = store.subscribe((event) => {
337
+ switch (event.type) {
338
+ case "TEST_RUN_COMPLETED": {
339
+ requestInFlight = !1, unsubscribe(), sendResponse({ status: "completed", result: event.payload });
340
+ return;
341
+ }
342
+ case "FATAL_ERROR": {
343
+ requestInFlight = !1, unsubscribe(), sendResponse({ status: "error", error: event.payload });
344
+ return;
345
+ }
346
+ case "CANCEL_RUN": {
347
+ requestInFlight = !1, unsubscribe(), sendResponse({ status: "cancelled" });
348
+ return;
349
+ }
350
+ }
351
+ });
352
+ store.send({
353
+ type: "TRIGGER_RUN",
354
+ payload: {
355
+ storyIds,
356
+ triggeredBy: `external:${actor}`,
357
+ ...configOverride && {
358
+ configOverride: { ...config, ...configOverride }
359
+ }
360
+ }
361
+ });
362
+ });
363
+ };
364
+
365
+ // src/addon-vitest/node/toolset/definition.ts
366
+ import * as v from "valibot";
367
+ import {
368
+ storyInputArraySchema
369
+ } from "@aussieljk/forkbook/internal/core-server";
370
+ import {
371
+ defineToolset
372
+ } from "@aussieljk/forkbook/open-service";
373
+
374
+ // src/addon-vitest/node/toolset/format.ts
375
+ function isPassing(status) {
376
+ return status.value === "status-value:success";
377
+ }
378
+ function isFailing(status) {
379
+ return status.value === "status-value:error";
380
+ }
381
+ function getA11yReports(result) {
382
+ return result.a11yReports;
383
+ }
384
+ function getA11yViolations(report) {
385
+ if (!("violations" in report))
386
+ return [];
387
+ let { violations } = report;
388
+ return Array.isArray(violations) ? violations.map((violation) => ({
389
+ id: violation.id,
390
+ description: violation.description,
391
+ nodes: violation.nodes.map((node) => ({
392
+ impact: typeof node.impact == "string" ? node.impact : void 0,
393
+ failureSummary: typeof node.failureSummary == "string" ? node.failureSummary : void 0,
394
+ html: typeof node.html == "string" ? node.html : void 0,
395
+ linkPath: typeof node.linkPath == "string" ? node.linkPath : void 0
396
+ }))
397
+ })) : [];
398
+ }
399
+ function countA11yViolations(a11yReports) {
400
+ let count = 0;
401
+ for (let reports of Object.values(a11yReports ?? {}))
402
+ for (let report of reports)
403
+ "error" in report && report.error || (count += getA11yViolations(report).length);
404
+ return count;
405
+ }
406
+ function pluralize(count, singular, plural = `${singular}s`) {
407
+ return `${count} ${count === 1 ? singular : plural}`;
408
+ }
409
+ function countTestRunFailures(result, a11y) {
410
+ return {
411
+ componentTests: result.componentTestCount.error,
412
+ a11yChecks: a11y ? result.a11yCount.error : 0,
413
+ unhandledErrors: result.unhandledErrors.length
414
+ };
415
+ }
416
+ function summarizeTestRun(result, a11y) {
417
+ return {
418
+ passingStoryCount: result.componentTestStatuses.filter(isPassing).length,
419
+ failingStoryCount: result.componentTestStatuses.filter(isFailing).length,
420
+ a11yViolationCount: a11y ? countA11yViolations(getA11yReports(result)) : 0,
421
+ unhandledErrorCount: result.unhandledErrors.length
422
+ };
423
+ }
424
+ function formatPassingStoriesSection(passingStories) {
425
+ return `## Passing Stories
426
+
427
+ - ${passingStories.map((status) => status.storyId).join(`
428
+ - `)}`;
429
+ }
430
+ var A11Y_CHECK_FAILED = "The accessibility check failed; see Accessibility Violations below.";
431
+ function formatFailingStoriesSection(statuses) {
432
+ return `## Failing Stories
433
+
434
+ ${statuses.map((status) => {
435
+ let details = isFailing(status) ? status.description || "No failure details available." : A11Y_CHECK_FAILED;
436
+ return `### ${status.storyId}
437
+
438
+ ${details}`;
439
+ }).join(`
440
+
441
+ `)}`;
442
+ }
443
+ function formatA11yReportsSection({
444
+ a11yReports,
445
+ origin
446
+ }) {
447
+ let a11yViolationSections = [];
448
+ for (let [storyId, reports] of Object.entries(a11yReports))
449
+ for (let report of reports) {
450
+ if ("error" in report && report.error) {
451
+ a11yViolationSections.push(`### ${storyId} - Error
452
+
453
+ ${report.error.message}`);
454
+ continue;
455
+ }
456
+ let violations = getA11yViolations(report);
457
+ if (violations.length !== 0)
458
+ for (let violation of violations) {
459
+ let nodes = violation.nodes.map((node) => {
460
+ let inspectLink = origin && node.linkPath ? `${origin}${node.linkPath}` : void 0, parts = [];
461
+ return node.impact && parts.push(`- **Impact**: ${node.impact}`), node.failureSummary && parts.push(` **Message**: ${node.failureSummary}`), parts.push(` **Element**: ${node.html || "(no html available)"}`), inspectLink && parts.push(` **Inspect**: ${inspectLink}`), parts.join(`
462
+ `);
463
+ }).join(`
464
+ `);
465
+ a11yViolationSections.push(`### ${storyId} - ${violation.id}
466
+
467
+ ${violation.description}
468
+
469
+ #### Affected Elements
470
+ ${nodes}`);
471
+ }
472
+ }
473
+ if (a11yViolationSections.length !== 0)
474
+ return `## Accessibility Violations
475
+
476
+ ${a11yViolationSections.join(`
477
+
478
+ `)}`;
479
+ }
480
+ function formatUnhandledErrorsSection(errors) {
481
+ return `## Unhandled Errors
482
+
483
+ ${errors.map(
484
+ (unhandledError) => `### ${unhandledError.name || "Unknown Error"}
485
+
486
+ **Error message**: ${unhandledError.message || "No message available"}
487
+ **Path**: ${unhandledError.VITEST_TEST_PATH || "No path available"}
488
+ **Test name**: ${unhandledError.VITEST_TEST_NAME || "No test name available"}
489
+ **Stack trace**:
490
+ ${unhandledError.stack || "No stack trace available"}`
491
+ ).join(`
492
+
493
+ `)}`;
494
+ }
495
+ function formatA11yCounts({ success, warning, error }, a11yEnabled) {
496
+ let checked = success + warning + error;
497
+ if (checked === 0)
498
+ return a11yEnabled ? "Accessibility: not checked." : "Accessibility: not checked (addon-a11y is not enabled).";
499
+ if (warning === 0 && error === 0)
500
+ return `Accessibility: ${pluralize(checked, "story", "stories")} checked, no violations.`;
501
+ let parts = [
502
+ success > 0 ? `${success} without violations` : void 0,
503
+ warning > 0 ? `${warning} with violations reported as warnings, which do not fail the run` : void 0,
504
+ error > 0 ? `${error} failing the run` : void 0
505
+ ].filter(Boolean);
506
+ return `Accessibility: ${pluralize(checked, "story", "stories")} checked; ${parts.join("; ")}.`;
507
+ }
508
+ function formatA11yResult(result, { a11y, a11yEnabled }) {
509
+ if (!a11y)
510
+ return "Accessibility: skipped (a11y: false).";
511
+ let counts = formatA11yCounts(result.a11yCount, a11yEnabled);
512
+ return result.componentTestCount.error > 0 ? `${counts} Stories with a failing component test get no accessibility result.` : counts;
513
+ }
514
+ var FAILURE_LABELS = {
515
+ componentTests: (count) => `${pluralize(count, "component test")} failed`,
516
+ a11yChecks: (count) => `${pluralize(count, "accessibility check")} failed`,
517
+ unhandledErrors: (count) => pluralize(count, "unhandled error")
518
+ };
519
+ function formatResultSection(result, { a11y, a11yEnabled }) {
520
+ let failures = countTestRunFailures(result, a11y), failureParts = Object.keys(FAILURE_LABELS).filter((key) => failures[key] > 0).map((key) => FAILURE_LABELS[key](failures[key]));
521
+ return `## Result
522
+
523
+ ${failureParts.length > 0 ? `Failed: ${failureParts.join(", ")}.` : result.componentTestCount.success === 0 ? "No component tests ran." : `Passed: ${pluralize(result.componentTestCount.success, "component test")} passed.`}
524
+ ${formatA11yResult(result, { a11y, a11yEnabled })}`;
525
+ }
526
+ function formatCompletedRun(result, { a11y, a11yEnabled, origin }) {
527
+ let sections = [], a11yFailingStoryIds = new Set(
528
+ a11y ? result.a11yStatuses.filter(isFailing).map((status) => status.storyId) : []
529
+ ), passingStories = result.componentTestStatuses.filter(
530
+ (status) => isPassing(status) && !a11yFailingStoryIds.has(status.storyId)
531
+ ), failingStories = result.componentTestStatuses.filter(
532
+ (status) => isFailing(status) || a11yFailingStoryIds.has(status.storyId)
533
+ );
534
+ passingStories.length > 0 && sections.push(formatPassingStoriesSection(passingStories)), failingStories.length > 0 && sections.push(formatFailingStoriesSection(failingStories));
535
+ let a11yReports = getA11yReports(result);
536
+ if (a11y && a11yReports && Object.keys(a11yReports).length > 0) {
537
+ let a11ySection = formatA11yReportsSection({ a11yReports, origin });
538
+ a11ySection && sections.push(a11ySection);
539
+ }
540
+ return result.unhandledErrors.length > 0 && sections.push(formatUnhandledErrorsSection(result.unhandledErrors)), sections.push(formatResultSection(result, { a11y, a11yEnabled })), sections.join(`
541
+
542
+ `);
543
+ }
544
+ function formatTestRun(data, ctx, { a11yEnabled }) {
545
+ switch (data.status) {
546
+ case "no-stories":
547
+ return data.notFoundMessages.length === 0 ? "No stories were given, so no tests ran. Pass story IDs in `stories`, or omit it to run every story test." : `No stories found matching the provided input.
548
+
549
+ ${data.notFoundMessages.join(`
550
+ `)}`;
551
+ case "completed":
552
+ return formatCompletedRun(data.result, {
553
+ a11y: data.a11y,
554
+ a11yEnabled,
555
+ origin: ctx.origin
556
+ });
557
+ case "error":
558
+ return `Error: ${data.error.message}`;
559
+ case "cancelled":
560
+ return "Error: Test run was cancelled";
561
+ default:
562
+ return data;
563
+ }
564
+ }
565
+
566
+ // src/addon-vitest/node/toolset/run.ts
567
+ import {
568
+ findStoryIds
569
+ } from "@aussieljk/forkbook/internal/core-server";
570
+ import { OpenServiceTestRunTimeoutError } from "@aussieljk/forkbook/internal/server-errors";
571
+ var DEFAULT_TEST_RUN_TIMEOUT_MS = 1800 * 1e3;
572
+ function createAsyncQueue() {
573
+ let tail = Promise.resolve();
574
+ async function wait() {
575
+ let done, gate = new Promise((resolve) => {
576
+ done = resolve;
577
+ }), previousTail = tail;
578
+ return tail = previousTail.then(
579
+ () => gate,
580
+ () => gate
581
+ ), await previousTail.catch(() => {
582
+ }), done;
583
+ }
584
+ return { wait };
585
+ }
586
+ function triggerTestRun({
587
+ channel,
588
+ requestEvent,
589
+ responseEvent,
590
+ storyIds,
591
+ config,
592
+ actor,
593
+ timeoutMs = DEFAULT_TEST_RUN_TIMEOUT_MS
594
+ }) {
595
+ return new Promise((resolve, reject) => {
596
+ let requestId = `osa-test-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`, settled = !1, timeoutId, cleanup = () => {
597
+ timeoutId !== void 0 && (clearTimeout(timeoutId), timeoutId = void 0), channel.off(responseEvent, handleResponse);
598
+ }, settle = (callback) => {
599
+ settled || (settled = !0, cleanup(), callback());
600
+ }, handleResponse = (payload) => {
601
+ if (payload.requestId === requestId)
602
+ switch (payload.status) {
603
+ case "completed":
604
+ case "error":
605
+ case "cancelled":
606
+ settle(() => resolve(payload));
607
+ break;
608
+ default: {
609
+ let _exhaustive = payload.status;
610
+ settle(() => reject(new Error(`Unexpected test run response: ${_exhaustive}`)));
611
+ }
612
+ }
613
+ };
614
+ channel.on(responseEvent, handleResponse), timeoutId = setTimeout(() => {
615
+ settle(() => reject(new OpenServiceTestRunTimeoutError({ timeoutMs, requestId })));
616
+ }, timeoutMs);
617
+ try {
618
+ channel.emit(requestEvent, {
619
+ requestId,
620
+ actor,
621
+ storyIds,
622
+ config
623
+ });
624
+ } catch (error) {
625
+ settle(() => reject(error instanceof Error ? error : new Error(String(error))));
626
+ }
627
+ });
628
+ }
629
+ async function runStoryTests({
630
+ channel,
631
+ getIndex,
632
+ stories,
633
+ a11y = !0,
634
+ actor = "core/test",
635
+ requestEvent = TRIGGER_TEST_RUN_REQUEST,
636
+ responseEvent = TRIGGER_TEST_RUN_RESPONSE,
637
+ timeoutMs = DEFAULT_TEST_RUN_TIMEOUT_MS
638
+ }) {
639
+ let storyIds;
640
+ if (stories) {
641
+ let index = await getIndex(), resolved = findStoryIds(index, stories), found = resolved.filter((story) => "entry" in story), notFoundMessages = resolved.filter((story) => !("entry" in story)).map((story) => story.errorMessage);
642
+ if (found.length === 0)
643
+ return { status: "no-stories", notFoundMessages };
644
+ if (notFoundMessages.length > 0)
645
+ return {
646
+ status: "error",
647
+ error: { message: notFoundMessages.join("; ") }
648
+ };
649
+ storyIds = found.map((story) => story.entry.id);
650
+ }
651
+ let response;
652
+ try {
653
+ response = await triggerTestRun({
654
+ channel,
655
+ requestEvent,
656
+ responseEvent,
657
+ storyIds,
658
+ config: { a11y },
659
+ actor,
660
+ timeoutMs
661
+ });
662
+ } catch (error) {
663
+ return {
664
+ status: "error",
665
+ error: {
666
+ message: error instanceof Error ? error.message : String(error)
667
+ }
668
+ };
669
+ }
670
+ switch (response.status) {
671
+ case "completed":
672
+ return response.result ? { status: "completed", result: response.result } : {
673
+ status: "error",
674
+ error: { message: "Test run completed but no result was returned" }
675
+ };
676
+ case "error":
677
+ return {
678
+ status: "error",
679
+ error: {
680
+ message: response.error?.message ?? "Test run failed with unknown error",
681
+ ...response.error?.error !== void 0 ? { error: response.error.error } : {}
682
+ }
683
+ };
684
+ case "cancelled":
685
+ return { status: "cancelled" };
686
+ default:
687
+ return {
688
+ status: "error",
689
+ error: { message: `Unexpected test run response: ${response.status}` }
690
+ };
691
+ }
692
+ }
693
+
694
+ // src/addon-vitest/node/toolset/definition.ts
695
+ var errorLikeSchema = v.object({
696
+ message: v.string(),
697
+ name: v.optional(v.string()),
698
+ stack: v.optional(v.string()),
699
+ cause: v.optional(v.lazy(() => errorLikeSchema))
700
+ }), statusSchema = v.looseObject({
701
+ value: v.string(),
702
+ typeId: v.string(),
703
+ storyId: v.string(),
704
+ title: v.string(),
705
+ description: v.string()
706
+ }), testRunResultSchema = v.object({
707
+ triggeredBy: v.optional(v.any()),
708
+ config: v.record(v.string(), v.any()),
709
+ componentTestStatuses: v.array(statusSchema),
710
+ a11yStatuses: v.array(statusSchema),
711
+ componentTestCount: v.object({
712
+ success: v.number(),
713
+ error: v.number()
714
+ }),
715
+ a11yCount: v.object({
716
+ success: v.number(),
717
+ warning: v.number(),
718
+ error: v.number()
719
+ }),
720
+ a11yReports: v.record(v.string(), v.array(v.any())),
721
+ reports: v.record(v.string(), v.array(v.any())),
722
+ totalTestCount: v.optional(v.number()),
723
+ storyIds: v.optional(v.array(v.string())),
724
+ startedAt: v.optional(v.number()),
725
+ finishedAt: v.optional(v.number()),
726
+ unhandledErrors: v.array(v.any()),
727
+ coverageSummary: v.optional(
728
+ v.object({
729
+ status: v.union([
730
+ v.literal("positive"),
731
+ v.literal("warning"),
732
+ v.literal("negative"),
733
+ v.literal("unknown")
734
+ ]),
735
+ percentage: v.number()
736
+ })
737
+ )
738
+ }), testRunOutputSchema = v.variant("status", [
739
+ v.object({
740
+ status: v.literal("no-stories"),
741
+ /** Per-selector lookup failures. When nothing matched, they are the whole answer. */
742
+ notFoundMessages: v.array(v.string())
743
+ }),
744
+ v.object({
745
+ status: v.literal("completed"),
746
+ result: testRunResultSchema
747
+ }),
748
+ v.object({
749
+ status: v.literal("error"),
750
+ error: v.object({
751
+ message: v.string(),
752
+ error: v.optional(errorLikeSchema)
753
+ })
754
+ }),
755
+ v.object({
756
+ status: v.literal("cancelled")
757
+ })
758
+ ]), runInputSchema = v.strictObject({
759
+ stories: v.optional(
760
+ v.pipe(
761
+ storyInputArraySchema,
762
+ v.description(
763
+ `Stories to test for focused feedback. Omit this field to run tests for all available stories.
764
+ Prefer running tests for specific stories while developing to get faster feedback,
765
+ and only omit this when you explicitly need to run all tests for comprehensive verification.
766
+ Prefer { storyId } when you don't already have story file context, since this avoids filesystem discovery.
767
+ Use { storyId } when IDs were discovered from documentation tools.
768
+ Use { absoluteStoryPath + exportName } only when you're currently working in a story file and already know those values.`
769
+ )
770
+ )
771
+ ),
772
+ a11y: v.optional(
773
+ v.pipe(
774
+ v.boolean(),
775
+ v.description(
776
+ "Whether to run accessibility tests. Defaults to true. Disable if you only need component test results."
777
+ )
778
+ ),
779
+ !0
780
+ )
781
+ });
782
+ function describeRun(a11yEnabled) {
783
+ return `Run story tests.
784
+ Run them after editing anything that changes how the UI looks \u2014 components, stories, styles, CSS, themes, colors, or design tokens \u2014 shell-level substitutes like typecheck, lint, or package.json test scripts do not replace this.
785
+ Provide stories for focused runs (faster while iterating),
786
+ or omit stories to run all tests for full-project verification.
787
+ Use this continuously to monitor test results as you work on your UI components and stories.
788
+ Results will include passing/failing status` + (a11yEnabled ? `, and accessibility violation reports.
789
+ For visual/design accessibility violations (for example color contrast), ask the user before changing styles.` : ".");
790
+ }
791
+ function runTelemetry(data, input) {
792
+ let inputStoryCount = input.stories?.length ?? 0;
793
+ if (data.status === "no-stories")
794
+ return {
795
+ payload: {
796
+ runA11y: data.a11y,
797
+ inputStoryCount,
798
+ matchedStoryCount: 0,
799
+ passingStoryCount: 0,
800
+ failingStoryCount: 0,
801
+ a11yViolationCount: 0,
802
+ unhandledErrorCount: 0
803
+ }
804
+ };
805
+ if (data.status === "completed")
806
+ return {
807
+ payload: {
808
+ runA11y: data.a11y,
809
+ inputStoryCount,
810
+ // A partially resolved selector list never reaches a run, so every input matched by this point.
811
+ matchedStoryCount: data.result.storyIds?.length ?? inputStoryCount,
812
+ ...summarizeTestRun(data.result, data.a11y)
813
+ }
814
+ };
815
+ }
816
+ function isFailedRun(data) {
817
+ switch (data.status) {
818
+ case "error":
819
+ case "cancelled":
820
+ return !0;
821
+ case "completed":
822
+ return Object.values(countTestRunFailures(data.result, data.a11y)).some((count) => count > 0);
823
+ case "no-stories":
824
+ return !1;
825
+ default:
826
+ return data;
827
+ }
828
+ }
829
+ function createTestToolset({ channel, storyIndex, a11yEnabled }) {
830
+ let queue = createAsyncQueue();
831
+ return defineToolset({
832
+ id: "test",
833
+ description: "Run Forkbook story tests via addon-vitest.",
834
+ methods: {
835
+ run: {
836
+ input: runInputSchema,
837
+ title: "Run Forkbook tests",
838
+ description: describeRun(a11yEnabled),
839
+ handler: async (input, ctx) => {
840
+ let done = await queue.wait();
841
+ try {
842
+ let data = { ...await runStoryTests({
843
+ channel,
844
+ getIndex: storyIndex.getIndex,
845
+ stories: input.stories,
846
+ a11y: input.a11y
847
+ }), a11y: input.a11y }, markdown = formatTestRun(data, ctx, { a11yEnabled }), telemetry2 = runTelemetry(data, input);
848
+ return isFailedRun(data) ? { ok: !1, data, markdown, telemetry: telemetry2 } : { ok: !0, data, markdown, telemetry: telemetry2 };
849
+ } finally {
850
+ done();
851
+ }
852
+ }
853
+ }
854
+ }
855
+ });
856
+ }
857
+
858
+ // src/addon-vitest/preset.ts
859
+ var isAddonVitestEnabled = !0, services = async (_value, options) => {
860
+ let getIndex = () => options.presets.apply("storyIndexGenerator").then((generator) => generator.getIndex());
861
+ registerToolset(
862
+ createTestToolset({
863
+ channel: options.channel,
864
+ storyIndex: { getIndex },
865
+ a11yEnabled: await options.presets.apply("isAddonA11yEnabled", !1)
866
+ })
867
+ ), await wireTestRunResponder({ channel: options.channel, options });
868
+ }, experimental_serverChannel = async (channel, options) => {
869
+ let core = await options.presets.apply("core");
870
+ if (!resolvePreviewBuilderName(core)?.includes("vite"))
871
+ return channel;
872
+ let configLoader = typeof core.builder != "string" && core.builder?.options?.configLoader, store = await ensureTestRunnerStore({ channel, options }), storyIndexGenerator = await options.presets.apply("storyIndexGenerator"), refreshTestRunnerStoryIndex = () => sendStoryIndexToTestRunner(storyIndexGenerator).catch((error) => {
873
+ logger.debug("Failed to send the story index to the test runner, Error:"), logger.debug(error);
874
+ });
875
+ refreshTestRunnerStoryIndex(), storyIndexGenerator.onInvalidated(refreshTestRunnerStoryIndex), store.subscribe("TOGGLE_WATCHING", (event, eventInfo) => {
876
+ store.setState((s) => ({
877
+ ...s,
878
+ watching: event.payload.to,
879
+ currentRun: {
880
+ ...s.currentRun,
881
+ // when enabling watch mode, clear the coverage summary too
882
+ ...event.payload.to && {
883
+ coverageSummary: void 0
884
+ }
885
+ }
886
+ })), event.payload.to && runTestRunner({
887
+ channel,
888
+ store,
889
+ initEvent: STORE_CHANNEL_EVENT_NAME,
890
+ initArgs: [{ event, eventInfo }],
891
+ options,
892
+ configLoader: configLoader || void 0
893
+ });
894
+ });
895
+ let enableCrashReports = core?.enableCrashReports || options.enableCrashReports;
896
+ return channel.on(FORKBOOK_ADDON_TEST_CHANNEL, (event) => {
897
+ event.type !== "test-run-completed" && telemetry("addon-test", () => ({
898
+ ...event,
899
+ payload: {
900
+ ...event.payload,
901
+ storyId: oneWayHash(event.payload.storyId)
902
+ }
903
+ }));
904
+ }), store.subscribe("TOGGLE_WATCHING", async (event) => {
905
+ await telemetry("addon-test", () => ({
906
+ watchMode: event.payload.to
907
+ }));
908
+ }), store.subscribe("TEST_RUN_COMPLETED", async (event) => {
909
+ let { unhandledErrors, startedAt, finishedAt, ...currentRun } = event.payload;
910
+ await telemetry("addon-test", () => ({
911
+ ...currentRun,
912
+ duration: (finishedAt ?? 0) - (startedAt ?? 0),
913
+ unhandledErrorCount: unhandledErrors.length,
914
+ ...enableCrashReports && unhandledErrors.length > 0 && {
915
+ unhandledErrors: unhandledErrors.map((error) => {
916
+ let { stacks, ...errorWithoutStacks } = error;
917
+ return sanitizeError(errorWithoutStacks);
918
+ })
919
+ }
920
+ }));
921
+ }), enableCrashReports && store.subscribe("FATAL_ERROR", async (event) => {
922
+ await telemetry("addon-test", () => ({
923
+ fatalError: cleanPaths(event.payload.error.message)
924
+ }));
925
+ }), channel;
926
+ }, staticDirs = async (values = [], options) => {
927
+ if (options.configType === "PRODUCTION")
928
+ return values;
929
+ let coverageDirectory = resolvePathInStorybookCache2(COVERAGE_DIRECTORY);
930
+ return await mkdir(coverageDirectory, { recursive: !0 }), [
931
+ {
932
+ from: coverageDirectory,
933
+ to: "/coverage"
934
+ },
935
+ ...values
936
+ ];
937
+ };
938
+ export {
939
+ experimental_serverChannel,
940
+ isAddonVitestEnabled,
941
+ services,
942
+ staticDirs
943
+ };