@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,1094 @@
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
+ cache
14
+ } from "./chunk-UVINFLGY.js";
15
+ import {
16
+ importMetaResolve
17
+ } from "./chunk-F3ZFKBHY.js";
18
+ import {
19
+ slash
20
+ } from "./chunk-DC7DKR5K.js";
21
+
22
+ // src/builder-vite/preset.ts
23
+ import { findConfigFile } from "@aussieljk/forkbook/internal/common";
24
+
25
+ // src/builder-vite/plugins/storybook-config-plugin.ts
26
+ import { isPreservingSymlinks } from "@aussieljk/forkbook/internal/common";
27
+ function storybookConfigPlugin(options) {
28
+ return [
29
+ {
30
+ name: "storybook:config-plugin",
31
+ enforce: "pre",
32
+ async config(config) {
33
+ let { defaultClientConditions = [] } = await import("vite"), existingEnvPrefix = config.envPrefix, mergedEnvPrefix = existingEnvPrefix ? Array.from(
34
+ /* @__PURE__ */ new Set([
35
+ ...Array.isArray(existingEnvPrefix) ? existingEnvPrefix : [existingEnvPrefix],
36
+ "FORKBOOK_"
37
+ ])
38
+ ) : ["VITE_", "FORKBOOK_"];
39
+ return {
40
+ resolve: {
41
+ conditions: ["storybook", "stories", "test", ...defaultClientConditions],
42
+ preserveSymlinks: isPreservingSymlinks()
43
+ },
44
+ envPrefix: mergedEnvPrefix
45
+ };
46
+ }
47
+ },
48
+ {
49
+ name: "storybook:allow-storybook-dir",
50
+ enforce: "post",
51
+ config(config) {
52
+ config?.server?.fs?.allow && config.server.fs.allow.push(options.configDir);
53
+ }
54
+ }
55
+ ];
56
+ }
57
+
58
+ // src/builder-vite/plugins/storybook-optimize-deps-plugin.ts
59
+ import { loadPreviewOrConfigFile } from "@aussieljk/forkbook/internal/common";
60
+ import {
61
+ babelParser,
62
+ extractMockCalls,
63
+ findMockRedirect
64
+ } from "@aussieljk/forkbook/internal/mocking-utils";
65
+ import { resolve as resolve2 } from "pathe";
66
+
67
+ // src/builder-vite/utils/process-preview-annotation.ts
68
+ import { isAbsolute, normalize, resolve } from "pathe";
69
+ function processPreviewAnnotation(path, projectRoot) {
70
+ return typeof path == "object" ? normalize(path.absolute) : isAbsolute(path) ? normalize(path) : normalize(resolve(projectRoot, path));
71
+ }
72
+
73
+ // src/builder-vite/utils/unique-import-paths.ts
74
+ function getUniqueImportPaths(index) {
75
+ return [...new Set(Object.values(index.entries).map((entry) => entry.importPath))];
76
+ }
77
+
78
+ // src/builder-vite/plugins/storybook-optimize-deps-plugin.ts
79
+ function escapeGlobPath(filePath) {
80
+ return filePath.replace(/[()[\]{}!*?|+@]/g, "\\$&");
81
+ }
82
+ function getMockRedirectIncludeEntries(mockCalls) {
83
+ return Array.from(
84
+ new Set(
85
+ mockCalls.map((mockCall) => mockCall.redirectPath).filter((redirectPath) => redirectPath !== null).map(escapeGlobPath)
86
+ )
87
+ );
88
+ }
89
+ function storybookOptimizeDepsPlugin(options) {
90
+ return {
91
+ name: "storybook:optimize-deps-plugin",
92
+ async config(config, { command }) {
93
+ if (command !== "serve")
94
+ return;
95
+ let projectRoot = resolve2(options.configDir, ".."), [extraOptimizeDeps, storyIndexGenerator, previewAnnotations] = await Promise.all([
96
+ options.presets.apply("optimizeViteDeps", []),
97
+ options.presets.apply("storyIndexGenerator"),
98
+ options.presets.apply("previewAnnotations", [], options)
99
+ ]), index = await storyIndexGenerator.getIndex(), previewOrConfigFile = loadPreviewOrConfigFile({ configDir: options.configDir }), mockRedirectIncludeEntries = previewOrConfigFile ? getMockRedirectIncludeEntries(
100
+ extractMockCalls(
101
+ {
102
+ previewConfigPath: previewOrConfigFile,
103
+ coreOptions: { disableTelemetry: !0 },
104
+ configDir: options.configDir
105
+ },
106
+ babelParser,
107
+ projectRoot,
108
+ findMockRedirect
109
+ )
110
+ ) : [], previewAnnotationEntries = [...previewAnnotations, previewOrConfigFile].filter((path) => path !== void 0).map((path) => processPreviewAnnotation(path, projectRoot));
111
+ return {
112
+ optimizeDeps: {
113
+ // Story files + preview annotation files as entry points for the dep optimizer.
114
+ // Vite will crawl these to discover all transitive CJS dependencies that need
115
+ // pre-bundling, removing the need for a hard-coded include list.
116
+ // Paths are escaped so that special glob characters (e.g. parentheses in Next.js route
117
+ // group directories) are treated as literal characters, not glob syntax.
118
+ entries: [
119
+ ...typeof config.optimizeDeps?.entries == "string" ? [config.optimizeDeps.entries] : config.optimizeDeps?.entries ?? [],
120
+ ...mockRedirectIncludeEntries,
121
+ ...getUniqueImportPaths(index).map(escapeGlobPath),
122
+ ...previewAnnotationEntries.map(escapeGlobPath)
123
+ ],
124
+ // Extra deps explicitly included by Forkbook presets (e.g. framework-specific packages).
125
+ include: [...extraOptimizeDeps, ...config.optimizeDeps?.include ?? []]
126
+ }
127
+ };
128
+ }
129
+ };
130
+ }
131
+
132
+ // src/builder-vite/codegen-project-annotations.ts
133
+ import { getFrameworkName, loadPreviewOrConfigFile as loadPreviewOrConfigFile2 } from "@aussieljk/forkbook/internal/common";
134
+ import { isCsfFactoryPreview, readConfig } from "@aussieljk/forkbook/internal/csf-tools";
135
+
136
+ // ../../node_modules/knitwork/dist/index.mjs
137
+ function genString(input, options = {}) {
138
+ let str = JSON.stringify(input);
139
+ return options.singleQuotes ? `'${escapeString(str).slice(1, -1)}'` : str;
140
+ }
141
+ var NEEDS_ESCAPE_RE = /[\n\r'\\\u2028\u2029]/, QUOTE_NEWLINE_RE = /([\n\r'\u2028\u2029])/g, BACKSLASH_RE = /\\/g;
142
+ function escapeString(id) {
143
+ return NEEDS_ESCAPE_RE.test(id) ? id.replace(BACKSLASH_RE, "\\\\").replace(QUOTE_NEWLINE_RE, "\\$1") : id;
144
+ }
145
+ function genSafeVariableName(name) {
146
+ return reservedNames.has(name) ? `_${name}` : name.replace(/^\d/, (r) => `_${r}`).replace(/\W/g, (r) => "_" + r.charCodeAt(0));
147
+ }
148
+ var reservedNames = /* @__PURE__ */ new Set([
149
+ "Infinity",
150
+ "NaN",
151
+ "arguments",
152
+ "await",
153
+ "break",
154
+ "case",
155
+ "catch",
156
+ "class",
157
+ "const",
158
+ "continue",
159
+ "debugger",
160
+ "default",
161
+ "delete",
162
+ "do",
163
+ "else",
164
+ "enum",
165
+ "eval",
166
+ "export",
167
+ "extends",
168
+ "false",
169
+ "finally",
170
+ "for",
171
+ "function",
172
+ "if",
173
+ "implements",
174
+ "import",
175
+ "in",
176
+ "instanceof",
177
+ "interface",
178
+ "let",
179
+ "new",
180
+ "null",
181
+ "package",
182
+ "private",
183
+ "protected",
184
+ "public",
185
+ "return",
186
+ "static",
187
+ "super",
188
+ "switch",
189
+ "this",
190
+ "throw",
191
+ "true",
192
+ "try",
193
+ "typeof",
194
+ "undefined",
195
+ "var",
196
+ "void",
197
+ "while",
198
+ "with",
199
+ "yield"
200
+ ]), VALID_IDENTIFIER_RE = /^[$_]?([A-Z_a-z]\w*|\d)$/;
201
+ function _genStatement(type, specifier, names, options = {}) {
202
+ let specifierString = genString(specifier, options);
203
+ if (!names)
204
+ return `${type} ${specifierString};`;
205
+ let nameArray = Array.isArray(names), namesString = (nameArray ? names : [names]).map((index) => typeof index == "string" ? { name: index } : (index.name === index.as && (index = { name: index.name }), index)).map((index) => index.as ? `${index.name} as ${index.as}` : index.name).join(", ");
206
+ return nameArray ? `${type} { ${namesString} } from ${genString(
207
+ specifier,
208
+ options
209
+ )}${_genImportAttributes(type, options)};` : `${type} ${namesString} from ${genString(
210
+ specifier,
211
+ options
212
+ )}${_genImportAttributes(type, options)};`;
213
+ }
214
+ function _genImportAttributes(type, options) {
215
+ return type === "import type" || type === "export type" ? "" : typeof options.attributes?.type == "string" ? ` with { type: ${genString(options.attributes.type)} }` : typeof options.assert?.type == "string" ? ` assert { type: ${genString(options.assert.type)} }` : "";
216
+ }
217
+ function genImport(specifier, imports, options = {}) {
218
+ return _genStatement("import", specifier, imports, options);
219
+ }
220
+ function genDynamicImport(specifier, options = {}) {
221
+ let commentString = options.comment ? ` /* ${options.comment} */` : "", wrapperString = options.wrapper === !1 ? "" : "() => ", interopString = options.interopDefault ? ".then(m => m.default || m)" : "", optionsString = _genDynamicImportAttributes(options);
222
+ return `${wrapperString}import(${genString(
223
+ specifier,
224
+ options
225
+ )}${commentString}${optionsString})${interopString}`;
226
+ }
227
+ function _genDynamicImportAttributes(options = {}) {
228
+ return typeof options.assert?.type == "string" ? `, { assert: { type: ${genString(options.assert.type)} } }` : typeof options.attributes?.type == "string" ? `, { with: { type: ${genString(options.attributes.type)} } }` : "";
229
+ }
230
+ function wrapInDelimiters(lines, indent = "", delimiters = "{}", withComma = !0) {
231
+ if (lines.length === 0)
232
+ return delimiters;
233
+ let [start, end] = delimiters;
234
+ return `${start}
235
+ ` + lines.join(withComma ? `,
236
+ ` : `
237
+ `) + `
238
+ ${indent}${end}`;
239
+ }
240
+ function genObjectKey(key) {
241
+ return VALID_IDENTIFIER_RE.test(key) ? key : genString(key);
242
+ }
243
+ function genObjectFromRaw(object, indent = "", options = {}) {
244
+ return genObjectFromRawEntries(Object.entries(object), indent, options);
245
+ }
246
+ function genArrayFromRaw(array, indent = "", options = {}) {
247
+ let newIdent = indent + " ";
248
+ return wrapInDelimiters(
249
+ array.map((index) => `${newIdent}${genRawValue(index, newIdent, options)}`),
250
+ indent,
251
+ "[]"
252
+ );
253
+ }
254
+ function genObjectFromRawEntries(array, indent = "", options = {}) {
255
+ let newIdent = indent + " ";
256
+ return wrapInDelimiters(
257
+ array.map(
258
+ ([key, value]) => `${newIdent}${genObjectKey(key)}: ${genRawValue(value, newIdent, options)}`
259
+ ),
260
+ indent,
261
+ "{}"
262
+ );
263
+ }
264
+ function genRawValue(value, indent = "", options = {}) {
265
+ return value === void 0 ? "undefined" : value === null ? "null" : Array.isArray(value) ? genArrayFromRaw(value, indent, options) : value && typeof value == "object" ? genObjectFromRaw(value, indent, options) : options.preserveTypes && typeof value != "function" ? JSON.stringify(value) : value.toString();
266
+ }
267
+
268
+ // src/builder-vite/codegen-project-annotations.ts
269
+ import { filename } from "pathe/utils";
270
+ import { dedent } from "ts-dedent";
271
+ async function generateProjectAnnotationsCode(options, projectRoot) {
272
+ let { presets, configDir } = options, frameworkName = await getFrameworkName(options), previewOrConfigFile = loadPreviewOrConfigFile2({ configDir }), previewConfig = previewOrConfigFile ? await readConfig(previewOrConfigFile) : void 0, isCsf4 = previewConfig ? isCsfFactoryPreview(previewConfig) : !1, previewAnnotations = await presets.apply(
273
+ "previewAnnotations",
274
+ [],
275
+ options
276
+ );
277
+ return generateProjectAnnotationsCodeFromPreviews({
278
+ previewAnnotations: [...previewAnnotations, previewOrConfigFile],
279
+ projectRoot,
280
+ frameworkName,
281
+ isCsf4
282
+ });
283
+ }
284
+ function generateProjectAnnotationsCodeFromPreviews(options) {
285
+ let { projectRoot } = options, previewAnnotationURLs = options.previewAnnotations.filter((path) => path !== void 0).map((path) => processPreviewAnnotation(path, projectRoot)), variables = [], imports = [];
286
+ for (let previewAnnotation of previewAnnotationURLs) {
287
+ let variable = genSafeVariableName(filename(previewAnnotation) ?? "").replace(/_(45|46|47)/g, "_") + "_" + hash(previewAnnotation);
288
+ variables.push(variable), imports.push(genImport(previewAnnotation, { name: "*", as: variable }));
289
+ }
290
+ let previewFileURL = previewAnnotationURLs[previewAnnotationURLs.length - 1], previewFileVariable = variables[variables.length - 1], previewFileImport = imports[imports.length - 1];
291
+ return options.isCsf4 ? dedent`
292
+ ${previewFileImport}
293
+
294
+ export function getProjectAnnotations(hmrPreviewAnnotationModules = []) {
295
+ const preview = hmrPreviewAnnotationModules[0] ?? ${previewFileVariable};
296
+ return preview.default.composed;
297
+ }
298
+
299
+ if (import.meta.hot) {
300
+ import.meta.hot.accept([${JSON.stringify(previewFileURL)}], (previewAnnotationModules) => {
301
+ // getProjectAnnotations has changed so we need to patch the new one in
302
+ window?.__STORYBOOK_PREVIEW__?.onGetProjectAnnotationsChanged({
303
+ getProjectAnnotations: () => getProjectAnnotations(previewAnnotationModules),
304
+ });
305
+ });
306
+ }
307
+ `.trim() : dedent`
308
+ import { composeConfigs } from '@aussieljk/forkbook/preview-api';
309
+
310
+ ${imports.join(`
311
+ `)}
312
+
313
+ export function getProjectAnnotations(hmrPreviewAnnotationModules = []) {
314
+ const configs = ${genArrayFromRaw(
315
+ variables.map(
316
+ (previewAnnotation, index) => (
317
+ // Prefer the updated module from an HMR update, otherwise the original module
318
+ `hmrPreviewAnnotationModules[${index}] ?? ${previewAnnotation}`
319
+ )
320
+ ),
321
+ " "
322
+ )};
323
+ return composeConfigs(configs);
324
+ }
325
+
326
+ if (import.meta.hot) {
327
+ import.meta.hot.accept(${JSON.stringify(previewAnnotationURLs)}, (previewAnnotationModules) => {
328
+ // getProjectAnnotations has changed so we need to patch the new one in
329
+ window?.__STORYBOOK_PREVIEW__?.onGetProjectAnnotationsChanged({
330
+ getProjectAnnotations: () => getProjectAnnotations(previewAnnotationModules),
331
+ });
332
+ });
333
+ }
334
+ `.trim();
335
+ }
336
+ function hash(value) {
337
+ let acc = 5381;
338
+ for (let i = 0; i < value.length; i++)
339
+ acc = (acc << 5) + acc + value.charCodeAt(i) >>> 0;
340
+ return acc;
341
+ }
342
+
343
+ // src/builder-vite/virtual-file-names.ts
344
+ var SB_VIRTUAL_FILES = {
345
+ VIRTUAL_APP_FILE: "virtual:/@storybook/builder-vite/vite-app.js",
346
+ VIRTUAL_STORIES_FILE: "virtual:/@storybook/builder-vite/storybook-stories.js",
347
+ VIRTUAL_ADDON_SETUP_FILE: "virtual:/@storybook/builder-vite/setup-addons.js"
348
+ }, SB_VIRTUAL_FILE_IDS = Object.values(SB_VIRTUAL_FILES);
349
+ function getResolvedVirtualModuleId(virtualModuleId) {
350
+ return `\0${virtualModuleId}`;
351
+ }
352
+ function getOriginalVirtualModuleId(resolvedVirtualModuleId) {
353
+ return resolvedVirtualModuleId.slice(1);
354
+ }
355
+
356
+ // src/builder-vite/plugins/storybook-project-annotations-plugin.ts
357
+ var VIRTUAL_ID = "virtual:/@storybook/builder-vite/project-annotations.js", RESOLVED_VIRTUAL_ID = getResolvedVirtualModuleId(VIRTUAL_ID);
358
+ function storybookProjectAnnotationsPlugin(options) {
359
+ let projectRoot;
360
+ return {
361
+ name: "storybook:project-annotations-plugin",
362
+ enforce: "pre",
363
+ configResolved(config) {
364
+ projectRoot = config.root;
365
+ },
366
+ resolveId(source) {
367
+ if (source === VIRTUAL_ID)
368
+ return RESOLVED_VIRTUAL_ID;
369
+ },
370
+ async load(id) {
371
+ if (id === RESOLVED_VIRTUAL_ID)
372
+ return generateProjectAnnotationsCode(options, projectRoot);
373
+ }
374
+ };
375
+ }
376
+
377
+ // src/builder-vite/envs.ts
378
+ import { stringifyEnvs } from "@aussieljk/forkbook/internal/common";
379
+ var allowedEnvVariables = [
380
+ "STORYBOOK",
381
+ // Vite `import.meta.env` default variables
382
+ // @see https://github.com/vitejs/vite/blob/6b8d94dca2a1a8b4952e3e3fcd0aed1aedb94215/packages/vite/types/importMeta.d.ts#L68-L75
383
+ "BASE_URL",
384
+ "MODE",
385
+ "DEV",
386
+ "PROD",
387
+ "SSR"
388
+ ];
389
+ function stringifyProcessEnvs(raw, envPrefix) {
390
+ let updatedRaw = {}, envs = Object.entries(raw).reduce((acc, [key, value]) => ((allowedEnvVariables.includes(key) || Array.isArray(envPrefix) && envPrefix.find((prefix) => key.startsWith(prefix)) || typeof envPrefix == "string" && key.startsWith(envPrefix)) && (acc[`import.meta.env.${key}`] = JSON.stringify(value), updatedRaw[key] = value), acc), {});
391
+ return envs["import.meta.env"] = JSON.stringify(stringifyEnvs(updatedRaw)), envs;
392
+ }
393
+
394
+ // src/builder-vite/plugins/storybook-runtime-plugin.ts
395
+ async function storybookSanitizeEnvs(options) {
396
+ let plugins = [], envs = await options.presets.apply("env");
397
+ return envs && Object.keys(envs).length > 0 && plugins.push({
398
+ name: "storybook:env-plugin",
399
+ config(config) {
400
+ return {
401
+ define: stringifyProcessEnvs(envs, config.envPrefix)
402
+ };
403
+ }
404
+ }), plugins;
405
+ }
406
+
407
+ // src/builder-vite/plugins/vite-inject-mocker/plugin.ts
408
+ import { fileURLToPath } from "node:url";
409
+ var ENTRY_PATH = "/vite-inject-mocker-entry.js", viteInjectMockerRuntime = (options) => {
410
+ let mockerRuntimePath = fileURLToPath(
411
+ import.meta.resolve("@aussieljk/forkbook/internal/mocking-utils/mocker-runtime")
412
+ ), viteConfig;
413
+ return {
414
+ name: "vite:storybook-inject-mocker-runtime",
415
+ enforce: "pre",
416
+ buildStart() {
417
+ viteConfig.command === "build" && this.emitFile({
418
+ type: "chunk",
419
+ id: mockerRuntimePath,
420
+ fileName: ENTRY_PATH.slice(1)
421
+ });
422
+ },
423
+ configResolved(config) {
424
+ viteConfig = config;
425
+ },
426
+ configureServer(server) {
427
+ options.previewConfigPath && server.watcher.on("change", (file) => {
428
+ file === options.previewConfigPath && server.ws.send({
429
+ type: "custom",
430
+ event: "invalidate-mocker"
431
+ });
432
+ });
433
+ },
434
+ resolveId: {
435
+ filter: { id: /\/vite-inject-mocker-entry\.js/ },
436
+ handler(source) {
437
+ if (source === ENTRY_PATH)
438
+ return mockerRuntimePath;
439
+ }
440
+ },
441
+ transformIndexHtml(html) {
442
+ let headTag = html.match(/<head[^>]*>/);
443
+ if (headTag) {
444
+ let entryCode = `<script type="module" src="${viteConfig.command === "build" ? `.${ENTRY_PATH}` : ENTRY_PATH}"></script>`, headTagIndex = html.indexOf(headTag[0]);
445
+ return html.slice(0, headTagIndex + headTag[0].length) + entryCode + html.slice(headTagIndex + headTag[0].length);
446
+ }
447
+ }
448
+ };
449
+ };
450
+
451
+ // src/builder-vite/plugins/vite-mock/plugin.ts
452
+ import { readFileSync } from "node:fs";
453
+ import {
454
+ babelParser as babelParser2,
455
+ extractMockCalls as extractMockCalls2,
456
+ findMockRedirect as findMockRedirect2,
457
+ getAutomockCode,
458
+ getRealPath,
459
+ rewriteSbMockImportCalls
460
+ } from "@aussieljk/forkbook/internal/mocking-utils";
461
+ import { logger } from "@aussieljk/forkbook/internal/node-logger";
462
+ import { normalize as normalize2 } from "pathe";
463
+
464
+ // src/builder-vite/plugins/vite-mock/utils.ts
465
+ function getCleanId(id) {
466
+ return id.replace(/^.*\/deps\//, "").replace(/\.js.*$/, "").replace(/_/g, "/");
467
+ }
468
+ function invalidateAllRelatedModules(server, absPath, pkgName) {
469
+ for (let mod of server.moduleGraph.idToModuleMap.values())
470
+ (mod.id === absPath || mod.id && getCleanId(mod.id) === pkgName) && server.moduleGraph.invalidateModule(mod);
471
+ }
472
+
473
+ // src/builder-vite/plugins/vite-mock/plugin.ts
474
+ function viteMockPlugin(options) {
475
+ let viteConfig, mockCalls = [], normalizedPreviewConfigPath = normalize2(options.previewConfigPath);
476
+ return [
477
+ {
478
+ name: "storybook:mock-loader",
479
+ configResolved(config) {
480
+ viteConfig = config;
481
+ },
482
+ buildStart() {
483
+ mockCalls = extractMockCalls2(options, babelParser2, viteConfig.root, findMockRedirect2);
484
+ },
485
+ configureServer(server) {
486
+ async function invalidateAffectedFiles(file) {
487
+ if (file === options.previewConfigPath || file.includes("__mocks__")) {
488
+ let oldMockCalls = mockCalls;
489
+ mockCalls = extractMockCalls2(options, babelParser2, viteConfig.root, findMockRedirect2);
490
+ let previewMod = server.moduleGraph.getModuleById(options.previewConfigPath);
491
+ previewMod && server.moduleGraph.invalidateModule(previewMod);
492
+ for (let call of mockCalls)
493
+ invalidateAllRelatedModules(server, call.absolutePath, call.path);
494
+ let newAbsPaths = new Set(mockCalls.map((c) => c.absolutePath));
495
+ for (let oldCall of oldMockCalls)
496
+ newAbsPaths.has(oldCall.absolutePath) || invalidateAllRelatedModules(server, oldCall.absolutePath, oldCall.path);
497
+ return server.ws.send({ type: "full-reload" }), [];
498
+ }
499
+ }
500
+ server.watcher.on("change", invalidateAffectedFiles), server.watcher.on("add", invalidateAffectedFiles), server.watcher.on("unlink", invalidateAffectedFiles);
501
+ },
502
+ load: {
503
+ order: "pre",
504
+ handler(id) {
505
+ let preserveSymlinks = viteConfig.resolve.preserveSymlinks, idNorm = getRealPath(id, preserveSymlinks), cleanId = getCleanId(idNorm);
506
+ for (let call of mockCalls)
507
+ if (!(getRealPath(call.absolutePath, preserveSymlinks) !== idNorm && call.path !== cleanId) && call.redirectPath)
508
+ return this.addWatchFile(call.redirectPath), readFileSync(call.redirectPath, "utf-8");
509
+ return null;
510
+ }
511
+ },
512
+ transform: {
513
+ order: "pre",
514
+ handler(code, id) {
515
+ for (let call of mockCalls) {
516
+ let preserveSymlinks = viteConfig.resolve.preserveSymlinks, idNorm = getRealPath(id, preserveSymlinks), callNorm = getRealPath(call.absolutePath, preserveSymlinks);
517
+ if (viteConfig.command !== "serve") {
518
+ if (callNorm !== idNorm)
519
+ continue;
520
+ } else {
521
+ let cleanId = getCleanId(idNorm);
522
+ if (call.path !== cleanId && callNorm !== idNorm)
523
+ continue;
524
+ }
525
+ try {
526
+ if (!call.redirectPath) {
527
+ let automockedCode = getAutomockCode(code, call.spy, babelParser2);
528
+ return {
529
+ code: automockedCode.toString(),
530
+ map: automockedCode.generateMap().toString()
531
+ };
532
+ }
533
+ } catch (e) {
534
+ return logger.error(`Error automocking ${id}: ${e}`), null;
535
+ }
536
+ }
537
+ return null;
538
+ }
539
+ }
540
+ },
541
+ {
542
+ name: "storybook:mock-loader-preview",
543
+ transform: {
544
+ filter: { id: normalizedPreviewConfigPath },
545
+ handler(code, id) {
546
+ if (id === normalizedPreviewConfigPath)
547
+ try {
548
+ return rewriteSbMockImportCalls(code);
549
+ } catch (e) {
550
+ return logger.debug(`Could not transform sb.mock(import(...)) calls in ${id}: ${e}`), null;
551
+ }
552
+ return null;
553
+ }
554
+ }
555
+ }
556
+ ];
557
+ }
558
+
559
+ // src/builder-vite/utils/preview-runtime-path.ts
560
+ import { createRequire } from "node:module";
561
+ import { dirname, join } from "pathe";
562
+ var builderRequire = createRequire(import.meta.url), corePath = dirname(builderRequire.resolve("@aussieljk/forkbook/package.json")), previewRuntimePath = join(corePath, "dist", "preview", "runtime.js");
563
+
564
+ // src/builder-vite/vite-config.ts
565
+ import { existsSync as existsSync2 } from "node:fs";
566
+ import { resolve as resolve3 } from "node:path";
567
+ import {
568
+ getBuilderOptions,
569
+ resolvePathInStorybookCache
570
+ } from "@aussieljk/forkbook/internal/common";
571
+
572
+ // src/builder-vite/plugins/code-generator-plugin.ts
573
+ import { readFileSync as readFileSync2 } from "node:fs";
574
+ import { fileURLToPath as fileURLToPath2 } from "node:url";
575
+
576
+ // src/builder-vite/codegen-importfn-script.ts
577
+ import { join as join2, normalize as normalize3, relative } from "pathe";
578
+ import { dedent as dedent2 } from "ts-dedent";
579
+ function generateImportFnScriptCode(index) {
580
+ let objectEntries = getUniqueImportPaths(index).map(
581
+ (importPath) => {
582
+ if (importPath.startsWith("virtual:"))
583
+ return [importPath, genDynamicImport(importPath)];
584
+ let relativePath = normalize3(relative(process.cwd(), importPath)), normalizedRelativePath = relativePath.startsWith("../") ? relativePath : `./${relativePath}`, absolutePath = normalize3(join2(process.cwd(), importPath));
585
+ return [normalizedRelativePath, genDynamicImport(absolutePath)];
586
+ }
587
+ );
588
+ return dedent2`
589
+ const importers = ${genObjectFromRawEntries(objectEntries)};
590
+
591
+ export async function importFn(path) {
592
+ return await importers[path]();
593
+ }
594
+ `;
595
+ }
596
+
597
+ // src/builder-vite/codegen-modern-iframe-script.ts
598
+ import { STORY_HOT_UPDATED } from "@aussieljk/forkbook/internal/core-events";
599
+ import { dedent as dedent3 } from "ts-dedent";
600
+ async function generateModernIframeScriptCode() {
601
+ let hmrHandler = dedent3`
602
+ if (import.meta.hot) {
603
+ import.meta.hot.on('vite:afterUpdate', () => {
604
+ window.__STORYBOOK_PREVIEW__.channel.emit('${STORY_HOT_UPDATED}');
605
+ });
606
+
607
+ import.meta.hot.accept('${SB_VIRTUAL_FILES.VIRTUAL_STORIES_FILE}', (newModule) => {
608
+ // importFn has changed so we need to patch the new one in
609
+ window.__STORYBOOK_PREVIEW__.onStoriesChanged({ importFn: newModule.importFn });
610
+ });
611
+ }`.trim();
612
+ return dedent3`
613
+ import { setup } from '${previewRuntimePath}';
614
+
615
+ import '${SB_VIRTUAL_FILES.VIRTUAL_ADDON_SETUP_FILE}';
616
+
617
+ setup();
618
+
619
+ import { PreviewWeb } from '@aussieljk/forkbook/preview-api';
620
+ import { importFn } from '${SB_VIRTUAL_FILES.VIRTUAL_STORIES_FILE}';
621
+ import { getProjectAnnotations } from '${VIRTUAL_ID}';
622
+
623
+ window.__STORYBOOK_PREVIEW__ = window.__STORYBOOK_PREVIEW__ || new PreviewWeb(importFn, getProjectAnnotations);
624
+
625
+ window.__STORYBOOK_STORY_STORE__ = window.__STORYBOOK_STORY_STORE__ || window.__STORYBOOK_PREVIEW__.storyStore;
626
+
627
+ ${hmrHandler};
628
+
629
+ `.trim();
630
+ }
631
+
632
+ // src/builder-vite/codegen-set-addon-channel.ts
633
+ async function generateAddonSetupCode() {
634
+ return `
635
+ import { createBrowserChannel } from '@aussieljk/forkbook/internal/channels';
636
+ import { addons } from '@aussieljk/forkbook/preview-api';
637
+
638
+ const channel = createBrowserChannel({ page: 'preview' });
639
+ addons.setChannel(channel);
640
+
641
+ if (window.CONFIG_TYPE === 'DEVELOPMENT'){
642
+ window.__STORYBOOK_SERVER_CHANNEL__ = channel;
643
+ }
644
+ `.trim();
645
+ }
646
+
647
+ // src/builder-vite/transform-iframe-html.ts
648
+ import { normalizeStories } from "@aussieljk/forkbook/internal/common";
649
+ async function transformIframeHtml(html, options) {
650
+ let { configType, features, presets } = options, build = await presets.apply("build"), frameworkOptions = await presets.apply("frameworkOptions"), headHtmlSnippet = await presets.apply("previewHead"), bodyHtmlSnippet = await presets.apply("previewBody"), logLevel = await presets.apply("logLevel", void 0), docsOptions = await presets.apply("docs"), tagsOptions = await presets.apply("tags"), security = await presets.apply("security"), coreOptions = await presets.apply("core"), stories = normalizeStories(await options.presets.apply("stories", [], options), {
651
+ configDir: options.configDir,
652
+ workingDir: process.cwd()
653
+ }).map((specifier) => ({
654
+ ...specifier,
655
+ importPathMatcher: specifier.importPathMatcher.source
656
+ })), otherGlobals = {
657
+ ...build?.test?.disableBlocks ? { __STORYBOOK_BLOCKS_EMPTY_MODULE__: {} } : {},
658
+ ...security?.insecureIframeMessaging ? { INSECURE_IFRAME_MESSAGING: !0 } : {}
659
+ }, transformedHtml = html.replace("[CONFIG_TYPE HERE]", configType || "").replace("[LOGLEVEL HERE]", logLevel || "").replace("'[FRAMEWORK_OPTIONS HERE]'", JSON.stringify(frameworkOptions)).replace(
660
+ "('OTHER_GLOBALS HERE');",
661
+ Object.entries(otherGlobals).map(([k, v]) => `window["${k}"] = ${JSON.stringify(v)};`).join("")
662
+ ).replace(
663
+ "'[CHANNEL_OPTIONS HERE]'",
664
+ JSON.stringify(coreOptions && coreOptions.channelOptions ? coreOptions.channelOptions : {})
665
+ ).replace("'[FEATURES HERE]'", JSON.stringify(features || {})).replace("'[STORIES HERE]'", JSON.stringify(stories || {})).replace("'[DOCS_OPTIONS HERE]'", JSON.stringify(docsOptions || {})).replace("'[TAGS_OPTIONS HERE]'", JSON.stringify(tagsOptions || {})).replace("<!-- [HEAD HTML SNIPPET HERE] -->", headHtmlSnippet || "").replace("<!-- [BODY HTML SNIPPET HERE] -->", bodyHtmlSnippet || "");
666
+ return configType === "DEVELOPMENT" ? transformedHtml.replace(
667
+ "virtual:/@storybook/builder-vite/vite-app.js",
668
+ `/@id/__x00__${SB_VIRTUAL_FILES.VIRTUAL_APP_FILE}`
669
+ ) : transformedHtml;
670
+ }
671
+
672
+ // src/builder-vite/utils/vite-features.ts
673
+ function eachOutput(config, fn) {
674
+ config.build ??= {};
675
+ let options = config.build.rolldownOptions ??= {};
676
+ if (Array.isArray(options.output)) {
677
+ options.output.length === 0 && options.output.push({}), options.output.forEach(fn);
678
+ return;
679
+ }
680
+ options.output ??= {}, fn(options.output);
681
+ }
682
+ function ensureStrictExecutionOrder(config) {
683
+ eachOutput(config, (output) => {
684
+ output.strictExecutionOrder = !0;
685
+ });
686
+ }
687
+ function applyChunkedPreviewRuntime(config) {
688
+ eachOutput(config, (output) => {
689
+ let splitting = output.codeSplitting, base = splitting && typeof splitting == "object" ? splitting : {};
690
+ output.codeSplitting = {
691
+ ...base,
692
+ groups: [...base.groups ?? [], { name: "sb", maxSize: 512e3 }]
693
+ };
694
+ });
695
+ }
696
+
697
+ // src/builder-vite/plugins/code-generator-plugin.ts
698
+ function codeGeneratorPlugin(options) {
699
+ let iframePath = fileURLToPath2(
700
+ importMetaResolve("@aussieljk/forkbook/builder-vite/input/iframe.html")
701
+ ), iframeId, storyIndexGeneratorPromise = options.presets.apply("storyIndexGenerator");
702
+ return {
703
+ name: "storybook:code-generator-plugin",
704
+ enforce: "pre",
705
+ async configureServer(server) {
706
+ (await storyIndexGeneratorPromise).onInvalidated(() => {
707
+ server.watcher.emit(
708
+ "change",
709
+ getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_STORIES_FILE)
710
+ );
711
+ });
712
+ },
713
+ config(config, { command }) {
714
+ command === "build" && (config.build ??= {}, config.build.rolldownOptions = { ...config.build.rolldownOptions, input: iframePath }, ensureStrictExecutionOrder(config), options.features?.experimentalChunkedPreviewRuntime && applyChunkedPreviewRuntime(config));
715
+ },
716
+ configResolved(config) {
717
+ iframeId = `${config.root}/iframe.html`;
718
+ },
719
+ resolveId(source) {
720
+ if (SB_VIRTUAL_FILE_IDS.includes(source))
721
+ return getResolvedVirtualModuleId(source);
722
+ if (source === iframePath)
723
+ return iframeId;
724
+ },
725
+ async load(id) {
726
+ switch (id) {
727
+ case getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_STORIES_FILE): {
728
+ let index = await (await storyIndexGeneratorPromise)?.getIndex();
729
+ return generateImportFnScriptCode(index);
730
+ }
731
+ case getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_ADDON_SETUP_FILE):
732
+ return generateAddonSetupCode();
733
+ case getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_APP_FILE):
734
+ return generateModernIframeScriptCode();
735
+ case iframeId:
736
+ return readFileSync2(
737
+ fileURLToPath2(importMetaResolve("@aussieljk/forkbook/builder-vite/input/iframe.html")),
738
+ "utf-8"
739
+ );
740
+ }
741
+ },
742
+ async transformIndexHtml(html, ctx) {
743
+ if (ctx.path === "/iframe.html")
744
+ return transformIframeHtml(html, options);
745
+ }
746
+ };
747
+ }
748
+
749
+ // ../../node_modules/es-module-lexer/dist/lexer.js
750
+ var ImportType;
751
+ (function(A2) {
752
+ A2[A2.Static = 1] = "Static", A2[A2.Dynamic = 2] = "Dynamic", A2[A2.ImportMeta = 3] = "ImportMeta", A2[A2.StaticSourcePhase = 4] = "StaticSourcePhase", A2[A2.DynamicSourcePhase = 5] = "DynamicSourcePhase", A2[A2.StaticDeferPhase = 6] = "StaticDeferPhase", A2[A2.DynamicDeferPhase = 7] = "DynamicDeferPhase";
753
+ })(ImportType || (ImportType = {}));
754
+ var A = new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;
755
+ function parse(E2, g = "@") {
756
+ if (!C) return init.then((() => parse(E2)));
757
+ let I = E2.length + 1, w = (C.__heap_base.value || C.__heap_base) + 4 * I - C.memory.buffer.byteLength;
758
+ w > 0 && C.memory.grow(Math.ceil(w / 65536));
759
+ let K = C.sa(I - 1);
760
+ if ((A ? B : Q)(E2, new Uint16Array(C.memory.buffer, K, I)), !C.parse()) throw Object.assign(new Error(`Parse error ${g}:${E2.slice(0, C.e()).split(`
761
+ `).length}:${C.e() - E2.lastIndexOf(`
762
+ `, C.e() - 1)}`), { idx: C.e() });
763
+ let o = [], D = [];
764
+ for (; C.ri(); ) {
765
+ let A2 = C.is(), Q2 = C.ie(), B2 = C.it(), g2 = C.ai(), I2 = C.id(), w2 = C.ss(), K2 = C.se(), D2;
766
+ C.ip() && (D2 = k(E2.slice(I2 === -1 ? A2 - 1 : A2, I2 === -1 ? Q2 + 1 : Q2))), o.push({ n: D2, t: B2, s: A2, e: Q2, ss: w2, se: K2, d: I2, a: g2 });
767
+ }
768
+ for (; C.re(); ) {
769
+ let A2 = C.es(), Q2 = C.ee(), B2 = C.els(), g2 = C.ele(), I2 = E2.slice(A2, Q2), w2 = I2[0], K2 = B2 < 0 ? void 0 : E2.slice(B2, g2), o2 = K2 ? K2[0] : "";
770
+ D.push({ s: A2, e: Q2, ls: B2, le: g2, n: w2 === '"' || w2 === "'" ? k(I2) : I2, ln: o2 === '"' || o2 === "'" ? k(K2) : K2 });
771
+ }
772
+ function k(A2) {
773
+ try {
774
+ return (0, eval)(A2);
775
+ } catch {
776
+ }
777
+ }
778
+ return [o, D, !!C.f(), !!C.ms()];
779
+ }
780
+ function Q(A2, Q2) {
781
+ let B2 = A2.length, C2 = 0;
782
+ for (; C2 < B2; ) {
783
+ let B3 = A2.charCodeAt(C2);
784
+ Q2[C2++] = (255 & B3) << 8 | B3 >>> 8;
785
+ }
786
+ }
787
+ function B(A2, Q2) {
788
+ let B2 = A2.length, C2 = 0;
789
+ for (; C2 < B2; ) Q2[C2] = A2.charCodeAt(C2++);
790
+ }
791
+ var C, E = () => {
792
+ return A2 = "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GzYCHAtBAEEAKAKwCkECajYCsAoCQAJAAkACQEEAECkiAUHhAEYNACABQfcARg0BQQAoArAKIQEMAgtBACgCsAoiAUECakHACEEKEC8NAUEGIQIMAgtBACgCsAoiAS8BAkHpAEcNACABLwEEQfQARw0AQQQhAiABLwEGQegARg0BC0EAIAFBfmo2ArAKDwtBACABIAJBAXRqNgKwCgJAQQEQKUH7AEYNAEEAIAE2ArAKDwtBACgCsAoiACECA0BBACACQQJqNgKwCgJAAkACQEEBECkiAkEiRg0AIAJBJ0cNAUEnEBpBAEEAKAKwCkECajYCsApBARApIQIMAgtBIhAaQQBBACgCsApBAmo2ArAKQQEQKSECDAELIAIQLCECCwJAIAJBOkYNAEEAIAE2ArAKDwtBAEEAKAKwCkECajYCsAoCQEEBECkiAkEiRg0AIAJBJ0YNAEEAIAE2ArAKDwsgAhAaQQBBACgCsApBAmo2ArAKAkACQEEBECkiAkEsRg0AIAJB/QBGDQFBACABNgKwCg8LQQBBACgCsApBAmo2ArAKQQEQKUH9AEYNAEEAKAKwCiECDAELC0EAKALwCSIBIAA2AhAgAUEAKAKwCkECajYCDAttAQJ/AkACQANAAkAgAEH//wNxIgFBd2oiAkEXSw0AQQEgAnRBn4CABHENAgsgAUGgAUYNASAAIQIgARAoDQJBACECQQBBACgCsAoiAEECajYCsAogAC8BAiIADQAMAgsLIAAhAgsgAkH//wNxC6sBAQR/AkACQEEAKAKwCiICLwEAIgNB4QBGDQAgASEEIAAhBQwBC0EAIAJBBGo2ArAKQQEQKSECQQAoArAKIQUCQAJAIAJBIkYNACACQSdGDQAgAhAsGkEAKAKwCiEEDAELIAIQGkEAQQAoArAKQQJqIgQ2ArAKC0EBECkhA0EAKAKwCiECCwJAIAIgBUYNACAFIARBACAAIAAgAUYiAhtBACABIAIbEAILIAMLcgEEf0EAKAKwCiEAQQAoArQKIQECQAJAA0AgAEECaiECIAAgAU8NAQJAAkAgAi8BACIDQaR/ag4CAQQACyACIQAgA0F2ag4EAgEBAgELIABBBGohAAwACwtBACACNgKwChAlQQAPC0EAIAI2ArAKQd0AC0kBA39BACEDAkAgAkUNAAJAA0AgAC0AACIEIAEtAAAiBUcNASABQQFqIQEgAEEBaiEAIAJBf2oiAg0ADAILCyAEIAVrIQMLIAMLC+wBAgBBgAgLzgEAAHgAcABvAHIAdABtAHAAbwByAHQAZgBvAHIAZQB0AGEAbwB1AHIAYwBlAHIAbwBtAHUAbgBjAHQAaQBvAG4AcwBzAGUAcgB0AHYAbwB5AGkAZQBkAGUAbABlAGMAbwBuAHQAaQBuAGkAbgBzAHQAYQBuAHQAeQBiAHIAZQBhAHIAZQB0AHUAcgBkAGUAYgB1AGcAZwBlAGEAdwBhAGkAdABoAHIAdwBoAGkAbABlAGkAZgBjAGEAdABjAGYAaQBuAGEAbABsAGUAbABzAABB0AkLEAEAAAACAAAAAAQAAEA5AAA=", typeof Buffer < "u" ? Buffer.from(A2, "base64") : Uint8Array.from(atob(A2), ((A3) => A3.charCodeAt(0)));
793
+ var A2;
794
+ }, init = WebAssembly.compile(E()).then(WebAssembly.instantiate).then((({ exports: A2 }) => {
795
+ C = A2;
796
+ }));
797
+
798
+ // src/builder-vite/plugins/inject-export-order-plugin.ts
799
+ import MagicString from "magic-string";
800
+ async function injectExportOrderPlugin() {
801
+ let { createFilter } = await import("vite"), include = [/\.stories\.([tj])sx?$/, /(stories|story).mdx$/], filter = createFilter(include);
802
+ return {
803
+ name: "storybook:inject-export-order-plugin",
804
+ // This should only run after the typescript has been transpiled
805
+ enforce: "post",
806
+ transform: {
807
+ filter: { id: include },
808
+ async handler(code, id) {
809
+ if (!filter(id))
810
+ return;
811
+ let [, exports] = await parse(code), exportNames = exports.map((e) => code.substring(e.s, e.e));
812
+ if (exportNames.includes("__namedExportsOrder"))
813
+ return;
814
+ let s = new MagicString(code), orderedExports = exportNames.filter((e) => e !== "default");
815
+ return s.append(`;export const __namedExportsOrder = ${JSON.stringify(orderedExports)};`), {
816
+ code: s.toString(),
817
+ map: s.generateMap({ hires: !0, source: id }).toString()
818
+ };
819
+ }
820
+ }
821
+ };
822
+ }
823
+
824
+ // src/builder-vite/plugins/strip-story-hmr-boundaries.ts
825
+ import MagicString2 from "magic-string";
826
+ async function stripStoryHMRBoundary() {
827
+ let { createFilter } = await import("vite"), include = /\.stories\.(tsx?|jsx?)$/, filter = createFilter(include);
828
+ return {
829
+ name: "storybook:strip-hmr-boundary-plugin",
830
+ enforce: "post",
831
+ transform: {
832
+ filter: { id: include },
833
+ async handler(src, id) {
834
+ if (!filter(id))
835
+ return;
836
+ let s = new MagicString2(src);
837
+ return s.replace(/import\.meta\.hot\.accept\w*/, "(function hmrBoundaryNoop(){})"), {
838
+ code: s.toString(),
839
+ map: s.generateMap({ hires: !0, source: id }).toString()
840
+ };
841
+ }
842
+ }
843
+ };
844
+ }
845
+
846
+ // src/builder-vite/plugins/storybook-entry-plugin.ts
847
+ async function storybookEntryPlugin(options) {
848
+ return [
849
+ // Pre-enforcement: handles virtual module resolution and loading (must run first)
850
+ codeGeneratorPlugin(options),
851
+ // Post-enforcement: injects __namedExportsOrder after TypeScript transpilation
852
+ await injectExportOrderPlugin(),
853
+ // Post-enforcement: removes import.meta.hot.accept() from story files
854
+ await stripStoryHMRBoundary()
855
+ ];
856
+ }
857
+
858
+ // src/builder-vite/plugins/webpack-stats-plugin.ts
859
+ import { relative as relative2 } from "node:path";
860
+ function stripQueryParams(filePath) {
861
+ return filePath.split("?")[0];
862
+ }
863
+ function isUserCode(moduleName) {
864
+ return moduleName ? Object.values(SB_VIRTUAL_FILES).includes(getOriginalVirtualModuleId(moduleName)) ? !0 : !moduleName.startsWith("vite/") && !moduleName.startsWith("\0") && moduleName !== "react/jsx-runtime" : !1;
865
+ }
866
+ function pluginWebpackStats({ workingDir }) {
867
+ function normalize4(filename2) {
868
+ if (filename2.startsWith("virtual:"))
869
+ return `/${filename2}`;
870
+ if (Object.values(SB_VIRTUAL_FILES).includes(getOriginalVirtualModuleId(filename2)))
871
+ return `/${getOriginalVirtualModuleId(filename2)}`;
872
+ {
873
+ let relativePath = relative2(workingDir, stripQueryParams(filename2));
874
+ return `./${slash(relativePath)}`;
875
+ }
876
+ }
877
+ function createReasons(importers) {
878
+ return (importers || []).map((i) => ({ moduleName: normalize4(i) }));
879
+ }
880
+ function createStatsMapModule(filename2, importers) {
881
+ return {
882
+ id: filename2,
883
+ name: filename2,
884
+ reasons: createReasons(importers)
885
+ };
886
+ }
887
+ let statsMap = /* @__PURE__ */ new Map();
888
+ return {
889
+ name: "storybook:rollup-plugin-webpack-stats",
890
+ // We want this to run after the vite build plugins (https://vitejs.dev/guide/api-plugin.html#plugin-ordering)
891
+ enforce: "post",
892
+ moduleParsed: function(mod) {
893
+ isUserCode(mod.id) && mod.importedIds.concat(mod.dynamicallyImportedIds).filter((name) => isUserCode(name)).forEach((depIdUnsafe) => {
894
+ let depId = normalize4(depIdUnsafe);
895
+ if (!statsMap.has(depId)) {
896
+ statsMap.set(depId, createStatsMapModule(depId, [mod.id]));
897
+ return;
898
+ }
899
+ let m = statsMap.get(depId);
900
+ m && (m.reasons = (m.reasons ?? []).concat(createReasons([mod.id])).filter((r) => r.moduleName !== depId), statsMap.set(depId, m));
901
+ });
902
+ },
903
+ storybookGetStats() {
904
+ let stats = { modules: Array.from(statsMap.values()) };
905
+ return { ...stats, toJson: () => stats };
906
+ }
907
+ };
908
+ }
909
+
910
+ // src/builder-vite/plugins/storybook-external-globals-plugin.ts
911
+ import { existsSync } from "node:fs";
912
+ import { mkdir, writeFile } from "node:fs/promises";
913
+ import { dirname as dirname2, join as join3 } from "node:path";
914
+ import { globalsNameReferenceMap } from "@aussieljk/forkbook/internal/preview/globals";
915
+ import MagicString3 from "magic-string";
916
+ var escapeKeys = (key) => key.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), defaultImportRegExp = "import ([^*{}]+) from", emptyImportRegExp = /^import(?:\s*\{\s*\}\s*from)?\s*['"][^'"]+['"]\s*;?$/, replacementMap = /* @__PURE__ */ new Map([
917
+ ["import ", "const "],
918
+ ["import{", "const {"],
919
+ ["* as ", ""],
920
+ [" as ", ": "],
921
+ [" from ", " = "],
922
+ ["}from", "} ="]
923
+ ]);
924
+ async function storybookExternalGlobalsPlugin(options) {
925
+ let build = await options.presets.apply("build"), externals = globalsNameReferenceMap;
926
+ build?.test?.disableBlocks && (externals["@aussieljk/forkbook/addon-docs/blocks"] = "__STORYBOOK_BLOCKS_EMPTY_MODULE__"), await init;
927
+ let { mergeAlias } = await import("vite"), globalsList = Object.keys(externals), globalsCodeFilter = new RegExp(globalsList.map(escapeKeys).join("|"));
928
+ return {
929
+ name: "storybook:external-globals-plugin",
930
+ enforce: "post",
931
+ // In dev (serve), we set up aliases to files that we write into node_modules/.cache.
932
+ async config(config, { command }) {
933
+ if (command !== "serve")
934
+ return;
935
+ let newAlias = mergeAlias([], config.resolve?.alias), cachePath = cache("sb-vite-plugin-externals", { create: !0 }) ?? join3(process.cwd(), "node_modules", ".cache", "sb-vite-plugin-externals");
936
+ return await Promise.all(
937
+ Object.keys(externals).map(async (externalKey) => {
938
+ let externalCachePath = join3(cachePath, `${externalKey}.js`);
939
+ if (newAlias.push({ find: new RegExp(`^${externalKey}$`), replacement: externalCachePath }), !existsSync(externalCachePath)) {
940
+ let directory = dirname2(externalCachePath);
941
+ await mkdir(directory, { recursive: !0 });
942
+ }
943
+ await writeFile(externalCachePath, `module.exports = ${externals[externalKey]};`);
944
+ })
945
+ ), {
946
+ resolve: {
947
+ alias: newAlias
948
+ }
949
+ };
950
+ },
951
+ // Replace imports with variables destructured from global scope
952
+ transform: {
953
+ filter: { code: globalsCodeFilter },
954
+ async handler(code, id) {
955
+ if (globalsList.every((glob) => !code.includes(glob)))
956
+ return;
957
+ let [imports] = parse(code), src = new MagicString3(code), didRewrite = !1;
958
+ imports.forEach(({ n: path, ss: startPosition, se: endPosition }) => {
959
+ let packageName = path;
960
+ if (packageName && globalsList.includes(packageName)) {
961
+ let importStatement = src.slice(startPosition, endPosition), transformedImport = rewriteImport(importStatement, externals, packageName);
962
+ src.update(startPosition, endPosition, transformedImport), didRewrite = !0;
963
+ }
964
+ });
965
+ let rewritten = src.toString();
966
+ return {
967
+ code: didRewrite ? ensurePreviewRuntimePrecedesGlobals(rewritten, id) : rewritten,
968
+ map: null
969
+ };
970
+ }
971
+ }
972
+ };
973
+ }
974
+ var bundledPreviewRuntimePattern = /[/\\]dist[/\\]preview[/\\]/;
975
+ function ensurePreviewRuntimePrecedesGlobals(code, id) {
976
+ return bundledPreviewRuntimePattern.test(id.split("?")[0]) ? code : `import { setup as __sbInitializePreviewGlobals } from ${JSON.stringify(previewRuntimePath)};
977
+ __sbInitializePreviewGlobals();
978
+ ${code}`;
979
+ }
980
+ function getDefaultImportReplacement(match) {
981
+ let matched = match.match(defaultImportRegExp);
982
+ return matched && `const {default: ${matched[1]}} =`;
983
+ }
984
+ function getEmptyImportReplacement(importStatement, globalReference) {
985
+ if (!emptyImportRegExp.test(importStatement.trim()))
986
+ return;
987
+ let statementTerminator = importStatement.trimEnd().endsWith(";") ? ";" : "";
988
+ return `void ${globalReference}${statementTerminator}`;
989
+ }
990
+ function getSearchRegExp(packageName) {
991
+ let staticKeys = [...replacementMap.keys()].map(escapeKeys), packageNameLiteral = `.${packageName}.`, dynamicImportExpression = `await import\\(.${packageName}.\\)`, lookup = [defaultImportRegExp, ...staticKeys, packageNameLiteral, dynamicImportExpression];
992
+ return new RegExp(`(${lookup.join("|")})`, "g");
993
+ }
994
+ function rewriteImport(importStatement, globs, packageName) {
995
+ let emptyImportReplacement = getEmptyImportReplacement(importStatement, globs[packageName]);
996
+ if (emptyImportReplacement)
997
+ return emptyImportReplacement;
998
+ let search = getSearchRegExp(packageName);
999
+ return importStatement.replace(
1000
+ search,
1001
+ (match) => replacementMap.get(match) ?? getDefaultImportReplacement(match) ?? globs[packageName]
1002
+ );
1003
+ }
1004
+
1005
+ // src/builder-vite/vite-config.ts
1006
+ var configEnvServe = {
1007
+ mode: "development",
1008
+ command: "serve",
1009
+ isSsrBuild: !1
1010
+ }, configEnvBuild = {
1011
+ mode: "production",
1012
+ command: "build",
1013
+ isSsrBuild: !1
1014
+ };
1015
+ async function loadUserViteConfig(options, type) {
1016
+ let configEnv = type === "development" ? configEnvServe : configEnvBuild, { loadConfigFromFile } = await import("vite"), { viteConfigPath, configLoader } = await getBuilderOptions(options), projectRoot = resolve3(options.configDir, "..");
1017
+ return (await loadConfigFromFile(
1018
+ configEnv,
1019
+ viteConfigPath,
1020
+ projectRoot,
1021
+ void 0,
1022
+ void 0,
1023
+ configLoader
1024
+ ))?.config ?? {};
1025
+ }
1026
+ async function resolveVitePublicDir(options, type) {
1027
+ let { publicDir } = await loadUserViteConfig(options, type);
1028
+ if (publicDir === !1 || publicDir === "")
1029
+ return;
1030
+ let resolved = resolve3(options.configDir, "..", publicDir ?? "public");
1031
+ return existsSync2(resolved) ? resolved : void 0;
1032
+ }
1033
+ async function commonConfig(options, _type) {
1034
+ let { mergeConfig } = await import("vite"), projectRoot = resolve3(options.configDir, ".."), { build: buildProperty = void 0, ...userConfig } = await loadUserViteConfig(
1035
+ options,
1036
+ _type
1037
+ ), sbConfig = {
1038
+ configFile: !1,
1039
+ plugins: await pluginConfig(options),
1040
+ root: projectRoot,
1041
+ // Allow storybook deployed as subfolder. See https://github.com/storybookjs/builder-vite/issues/238
1042
+ base: "./",
1043
+ ...options.cacheKey ? { cacheDir: resolvePathInStorybookCache("sb-vite", options.cacheKey) } : {},
1044
+ // Pass build.target option from user's vite config
1045
+ build: {
1046
+ target: buildProperty?.target
1047
+ }
1048
+ };
1049
+ return mergeConfig(userConfig, sbConfig);
1050
+ }
1051
+ async function pluginConfig(options) {
1052
+ return [
1053
+ // Shared core plugins (resolve conditions, envPrefix, fs.allow, externals, env vars, etc.)
1054
+ ...await viteCorePlugins([], options),
1055
+ await storybookExternalGlobalsPlugin(options),
1056
+ // Entry plugin: virtual modules for stories, addon setup, and main app entry
1057
+ ...await storybookEntryPlugin(options),
1058
+ // Builder-specific: webpack-compatible stats for turbosnap/chromatic
1059
+ pluginWebpackStats({ workingDir: process.cwd() })
1060
+ ];
1061
+ }
1062
+
1063
+ // src/builder-vite/preset.ts
1064
+ var optimizeViteDeps = [previewRuntimePath];
1065
+ async function viteCorePlugins(_, options) {
1066
+ let previewConfigPath = findConfigFile("preview", options.configDir);
1067
+ return [
1068
+ storybookProjectAnnotationsPlugin(options),
1069
+ ...storybookConfigPlugin({ configDir: options.configDir }),
1070
+ storybookOptimizeDepsPlugin(options),
1071
+ ...await storybookSanitizeEnvs(options),
1072
+ ...previewConfigPath ? [
1073
+ viteInjectMockerRuntime({ previewConfigPath }),
1074
+ viteMockPlugin({
1075
+ previewConfigPath,
1076
+ coreOptions: await options.presets.apply("core"),
1077
+ configDir: options.configDir
1078
+ })
1079
+ ] : []
1080
+ ];
1081
+ }
1082
+ var staticDirs = async (values = [], options) => {
1083
+ if (options.configType !== "PRODUCTION")
1084
+ return values;
1085
+ let publicDir = await resolveVitePublicDir(options, "build");
1086
+ return publicDir ? [...values, { from: publicDir, to: "/" }] : values;
1087
+ };
1088
+
1089
+ export {
1090
+ optimizeViteDeps,
1091
+ viteCorePlugins,
1092
+ staticDirs,
1093
+ commonConfig
1094
+ };