@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,989 @@
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
+ RN_STORYBOOK_DIR
14
+ } from "./chunk-SWO5CDYU.js";
15
+ import {
16
+ createModuleResolver
17
+ } from "./chunk-YZFWBA5L.js";
18
+ import {
19
+ detectIndent
20
+ } from "./chunk-RZMQ7S3L.js";
21
+ import {
22
+ findFilesUp,
23
+ getProjectRoot
24
+ } from "./chunk-SLWQNBGO.js";
25
+ import {
26
+ up2 as up
27
+ } from "./chunk-JDXXX6LB.js";
28
+ import {
29
+ invariant
30
+ } from "./chunk-34EO2PUT.js";
31
+ import {
32
+ importModule
33
+ } from "./chunk-F3ZFKBHY.js";
34
+ import {
35
+ storybookConfigExtensions
36
+ } from "./chunk-TNJIXE37.js";
37
+ import {
38
+ require_picocolors
39
+ } from "./chunk-2BUPBPFB.js";
40
+ import {
41
+ slash
42
+ } from "./chunk-DC7DKR5K.js";
43
+ import {
44
+ glob,
45
+ globSync
46
+ } from "./chunk-ZMAMXQKP.js";
47
+ import {
48
+ __toESM
49
+ } from "./chunk-CXRU72ET.js";
50
+
51
+ // src/common/versions.ts
52
+ var versions_default = { "@aussieljk/forkbook": "0.0.1-2" };
53
+
54
+ // src/common/utils/HandledError.ts
55
+ var HandledError = class extends Error {
56
+ constructor(error) {
57
+ super(String(error));
58
+ this.handled = !0;
59
+ typeof error != "string" && (this.cause = error);
60
+ }
61
+ };
62
+
63
+ // src/common/utils/get-pkg-pr-new-package-specifier.ts
64
+ var PKG_PR_NEW_STORYBOOK_SPECIFIER_RE = /^(https?:\/\/[^/\s]*pkg\.pr\.new\/(?:[^@\s/]+\/[^@\s/]+\/)?)(?:create-storybook|storybook|@storybook\/[^@\s]+)(@[^\s]+)$/, isPkgPrNewVersionSpecifier = (storybookVersionSpecifier) => !!storybookVersionSpecifier?.match(PKG_PR_NEW_STORYBOOK_SPECIFIER_RE), getPkgPrNewPackageSpecifier = (packageName, storybookVersionSpecifier) => {
65
+ if (!storybookVersionSpecifier)
66
+ return;
67
+ let match = storybookVersionSpecifier.match(PKG_PR_NEW_STORYBOOK_SPECIFIER_RE);
68
+ if (!match)
69
+ return;
70
+ let [, prefix, suffix] = match;
71
+ return `${prefix}${packageName}${suffix}`;
72
+ };
73
+
74
+ // src/common/js-package-manager/util.ts
75
+ import { gt, prerelease, valid } from "semver";
76
+ var FORKBOOK_PACKAGE_PATTERNS = [
77
+ "@aussieljk/forkbook",
78
+ "@storybook/*",
79
+ "eslint-plugin-storybook"
80
+ ], escapePatternForRegex = (pattern) => pattern.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), packagePatternToRegex = (pattern) => new RegExp(`^${escapePatternForRegex(pattern).replace(/\\\*/g, ".*")}$`), hasStorybookMinimumAgeExclusions = (configuredPatterns) => FORKBOOK_PACKAGE_PATTERNS.every(
81
+ (storybookPattern) => configuredPatterns.some(
82
+ (configuredPattern) => packagePatternToRegex(configuredPattern).test(storybookPattern)
83
+ )
84
+ ), parsePackageData = (packageName = "") => {
85
+ let [first, second, third] = packageName.replace(/[└─├]+/g, "").trim().split("@"), version = (third || second).replace("npm:", "");
86
+ return { name: third ? `@${second}` : first, value: { version, location: "" } };
87
+ }, parsePositiveIntegerConfigValue = (value) => {
88
+ let normalizedValue = value?.trim() ?? "";
89
+ if (!normalizedValue || normalizedValue === "undefined" || normalizedValue === "null" || normalizedValue === "false")
90
+ return null;
91
+ let parsedValue = Number.parseInt(normalizedValue, 10);
92
+ return !Number.isFinite(parsedValue) || parsedValue <= 0 ? null : parsedValue;
93
+ }, parseReleaseTime = (value) => {
94
+ if (typeof value != "string" || value.length === 0)
95
+ return null;
96
+ let releaseTime = new Date(value);
97
+ return Number.isNaN(releaseTime.getTime()) ? null : releaseTime;
98
+ }, parsePackageTimeMap = (value) => {
99
+ if (Array.isArray(value) && value.length === 1 && (value = value[0]), !value || typeof value != "object" || Array.isArray(value))
100
+ return null;
101
+ let timeMap = {};
102
+ for (let [version, releaseTime] of Object.entries(value))
103
+ typeof releaseTime == "string" && releaseTime.length > 0 && (timeMap[version] = releaseTime);
104
+ return timeMap;
105
+ }, getAgeInMinutes = (publishedAt, now = /* @__PURE__ */ new Date()) => Math.floor((now.getTime() - publishedAt.getTime()) / 6e4), getLatestStableVersionAdheringToMinimumAgeGate = (timeMap, minimumAgeGateMinutes, now = /* @__PURE__ */ new Date()) => {
106
+ let cutoff = now.getTime() - minimumAgeGateMinutes * 6e4, latestStableVersion = null;
107
+ for (let [version, releaseTime] of Object.entries(timeMap)) {
108
+ if (!valid(version) || prerelease(version))
109
+ continue;
110
+ let publishedAt = parseReleaseTime(releaseTime);
111
+ !publishedAt || publishedAt.getTime() > cutoff || (!latestStableVersion || gt(version, latestStableVersion)) && (latestStableVersion = version);
112
+ }
113
+ return latestStableVersion;
114
+ };
115
+ function getVitestStorybookRunCommand(packageManager, file) {
116
+ let args = ["vitest", "--project", "storybook", "run"];
117
+ return file && args.push(file), packageManager.getPackageCommand(args);
118
+ }
119
+ function getMswInitCommand(packageManager) {
120
+ return packageManager.getPackageCommand(["msw", "init", "./public", "--save"]);
121
+ }
122
+ var FORKBOOK_RERUN_INSTRUCTION = "Please rerun Forkbook creation with:", getStorybookRerunCommand = (compatibleVersion) => compatibleVersion ? `npx @aussieljk/forkbook@${compatibleVersion} init` : "npx @aussieljk/forkbook@<compatible-version> init", getErrorLogs = (error) => {
123
+ if (typeof error == "string")
124
+ return error;
125
+ if (error && typeof error == "object") {
126
+ let structuredError = error, structuredLogs = [
127
+ structuredError.shortMessage,
128
+ structuredError.originalMessage,
129
+ structuredError.stderr,
130
+ structuredError.stdout,
131
+ structuredError.message
132
+ ].filter((entry) => typeof entry == "string" && entry.length > 0);
133
+ if (structuredLogs.length > 0)
134
+ return structuredLogs.join(`
135
+ `);
136
+ }
137
+ return String(error);
138
+ }, INSTALL_ERROR_TAIL_LINES = 15, getInstallErrorTail = (error, lines = INSTALL_ERROR_TAIL_LINES) => {
139
+ let output = getErrorLogs(error).trimEnd();
140
+ return output ? output.split(`
141
+ `).slice(-lines).join(`
142
+ `).trim() : "";
143
+ };
144
+
145
+ // src/common/js-package-manager/vite-plus-versions.ts
146
+ import { logger } from "@aussieljk/forkbook/internal/node-logger";
147
+ var cachedVersions;
148
+ async function getVitePlusVersions() {
149
+ if (cachedVersions !== void 0)
150
+ return cachedVersions;
151
+ try {
152
+ let mod = await import("vite-plus/versions"), versions = mod.versions ?? mod;
153
+ if (versions && typeof versions.vite == "string")
154
+ return logger.debug(`Detected vite-plus: vite=${versions.vite}, vitest=${versions.vitest ?? "N/A"}`), cachedVersions = versions, versions;
155
+ } catch {
156
+ }
157
+ return cachedVersions = null, null;
158
+ }
159
+ function clearVitePlusCache() {
160
+ cachedVersions = void 0;
161
+ }
162
+
163
+ // src/common/js-package-manager/JsPackageManager.ts
164
+ import { readFileSync, writeFileSync } from "node:fs";
165
+ import { dirname, isAbsolute, join, normalize, resolve } from "node:path";
166
+ import { logger as logger2, prompt } from "@aussieljk/forkbook/internal/node-logger";
167
+ var import_picocolors = __toESM(require_picocolors(), 1);
168
+ import { coerce, gt as gt2, satisfies, validRange } from "semver";
169
+ var PackageManagerName = /* @__PURE__ */ ((PackageManagerName2) => (PackageManagerName2.NPM = "npm", PackageManagerName2.YARN1 = "yarn1", PackageManagerName2.YARN2 = "yarn2", PackageManagerName2.PNPM = "pnpm", PackageManagerName2.BUN = "bun", PackageManagerName2))(PackageManagerName || {}), indentSymbol = /* @__PURE__ */ Symbol("indent"), PACKAGE_MANAGER_LABEL = {
170
+ npm: "npm",
171
+ yarn1: "Yarn Classic (v1)",
172
+ yarn2: "Yarn Berry",
173
+ pnpm: "pnpm",
174
+ bun: "Bun"
175
+ };
176
+ function isValidPackageManagerName(name) {
177
+ return Object.hasOwn(PACKAGE_MANAGER_LABEL, name);
178
+ }
179
+ function getPrettyPackageManagerName(packageManager) {
180
+ return packageManager ? isValidPackageManagerName(packageManager) ? PACKAGE_MANAGER_LABEL[packageManager] : packageManager : "unknown package manager";
181
+ }
182
+ function getPackageDetails(pkg) {
183
+ let isScopedPackage = pkg.startsWith("@"), scopeSeparatorIndex = isScopedPackage ? pkg.indexOf("/") : -1, versionSeparatorIndex = isScopedPackage ? scopeSeparatorIndex === -1 ? -1 : pkg.indexOf("@", scopeSeparatorIndex + 1) : pkg.indexOf("@");
184
+ if (versionSeparatorIndex <= 0)
185
+ return [pkg, void 0];
186
+ let packageName = pkg.slice(0, versionSeparatorIndex), packageVersion = pkg.slice(versionSeparatorIndex + 1);
187
+ return [packageName, packageVersion];
188
+ }
189
+ var JsPackageManager = class _JsPackageManager {
190
+ static {
191
+ /** Cache for latest version results to avoid repeated network calls. */
192
+ this.latestVersionCache = /* @__PURE__ */ new Map();
193
+ }
194
+ static {
195
+ /** Cache for installed version results to avoid repeated file system calls. */
196
+ this.installedVersionCache = /* @__PURE__ */ new Map();
197
+ }
198
+ static {
199
+ /** Cache for package.json files to avoid repeated file system calls. */
200
+ this.packageJsonCache = /* @__PURE__ */ new Map();
201
+ }
202
+ constructor(options) {
203
+ this.cwd = options?.cwd || process.cwd(), this.instanceDir = options?.configDir ? isAbsolute(options?.configDir) ? dirname(options?.configDir) : dirname(join(this.cwd, options?.configDir)) : this.cwd, this.packageJsonPaths = _JsPackageManager.listAllPackageJsonPaths(
204
+ this.instanceDir,
205
+ options?.storiesPaths
206
+ ), this.primaryPackageJson = this.#getPrimaryPackageJson();
207
+ }
208
+ isStorybookInMonorepo() {
209
+ let turboJsonPath = up("turbo.json", { last: getProjectRoot() }), rushJsonPath = up("rush.json", { last: getProjectRoot() }), nxJsonPath = up("nx.json", { last: getProjectRoot() });
210
+ if (turboJsonPath || rushJsonPath || nxJsonPath)
211
+ return !0;
212
+ let packageJsonPaths = findFilesUp(["package.json"]);
213
+ if (packageJsonPaths.length === 0)
214
+ return !1;
215
+ for (let packageJsonPath of packageJsonPaths) {
216
+ let packageJsonFile = readFileSync(packageJsonPath, "utf8");
217
+ if (JSON.parse(packageJsonFile).workspaces)
218
+ return !0;
219
+ }
220
+ return !1;
221
+ }
222
+ async installDependencies(options) {
223
+ try {
224
+ await prompt.executeTaskWithSpinner(() => this.runInstall(options), {
225
+ id: "install-dependencies",
226
+ intro: "Installing dependencies...",
227
+ error: "Installation of dependencies failed!",
228
+ success: "Dependencies installed"
229
+ });
230
+ } catch (error) {
231
+ let tail = getInstallErrorTail(error);
232
+ throw tail && (logger2.error(tail), error instanceof Error && !error.message.includes(tail) && (error.message = `${error.message}
233
+
234
+ ${tail}`)), error;
235
+ }
236
+ this.clearInstalledVersionCache();
237
+ }
238
+ async precheckStorybookPackageInstall(options) {
239
+ }
240
+ async dedupeDependencies(options) {
241
+ await prompt.executeTask(
242
+ (_signal) => this.runInternalCommand("dedupe", [...options?.force ? ["--force"] : []], this.cwd),
243
+ {
244
+ intro: "Deduplicating dependencies...",
245
+ error: "An error occurred while deduplicating dependencies.",
246
+ success: "Dependencies deduplicated"
247
+ }
248
+ ), this.clearInstalledVersionCache();
249
+ }
250
+ /** Read the `package.json` file available in the provided directory */
251
+ static getPackageJson(packageJsonPath) {
252
+ let absolutePath = normalize(resolve(packageJsonPath)), cached = _JsPackageManager.packageJsonCache.get(absolutePath);
253
+ if (cached)
254
+ return logger2.debug(`Using cached package.json for ${absolutePath}...`), cached;
255
+ let jsonContent = readFileSync(absolutePath, "utf8"), packageJSON = JSON.parse(jsonContent);
256
+ packageJSON[indentSymbol] = detectIndent(jsonContent).indent ?? 2;
257
+ let result = {
258
+ ...packageJSON,
259
+ dependencies: { ...packageJSON.dependencies || {} },
260
+ devDependencies: { ...packageJSON.devDependencies || {} },
261
+ peerDependencies: { ...packageJSON.peerDependencies || {} }
262
+ };
263
+ return _JsPackageManager.packageJsonCache.set(absolutePath, result), result;
264
+ }
265
+ #getIndent(filePath) {
266
+ try {
267
+ return _JsPackageManager.getPackageJson(filePath)[indentSymbol];
268
+ } catch {
269
+ return 2;
270
+ }
271
+ }
272
+ writePackageJson(packageJson, directory = this.cwd) {
273
+ let packageJsonToWrite = { ...packageJson };
274
+ ["dependencies", "devDependencies", "peerDependencies"].forEach((type) => {
275
+ packageJsonToWrite[type] && Object.keys(packageJsonToWrite[type]).length === 0 && delete packageJsonToWrite[type];
276
+ });
277
+ let filePath = join(directory, "package.json"), indent = this.#getIndent(filePath), packageJsonPath = normalize(resolve(directory, "package.json")), content = `${JSON.stringify(packageJsonToWrite, null, indent)}
278
+ `;
279
+ writeFileSync(packageJsonPath, content, "utf8");
280
+ let cachedPackageJson = packageJsonToWrite;
281
+ cachedPackageJson.dependencies = { ...packageJsonToWrite.dependencies || {} }, cachedPackageJson.devDependencies = { ...packageJsonToWrite.devDependencies || {} }, cachedPackageJson.peerDependencies = { ...packageJsonToWrite.peerDependencies || {} }, cachedPackageJson[indentSymbol] = indent, _JsPackageManager.packageJsonCache.set(packageJsonPath, cachedPackageJson);
282
+ }
283
+ getAllDependencies() {
284
+ let allDependencies = {};
285
+ for (let packageJsonPath of this.packageJsonPaths) {
286
+ let packageJson = _JsPackageManager.getPackageJson(packageJsonPath), { dependencies, devDependencies, peerDependencies } = packageJson;
287
+ Object.assign(allDependencies, dependencies, devDependencies, peerDependencies);
288
+ }
289
+ return allDependencies;
290
+ }
291
+ isDependencyInstalled(dependency) {
292
+ return Object.keys(this.getAllDependencies()).includes(dependency);
293
+ }
294
+ /**
295
+ * Resolve the effective version/range of a declared dependency: the installed version if present,
296
+ * otherwise the declared semver range. Returns null when the package is not declared or only a
297
+ * non-semver specifier is declared. PNPMProxy additionally resolves pnpm `catalog:` references.
298
+ */
299
+ async getDeclaredVersionSpecifier(packageName) {
300
+ let installed = await this.getInstalledVersion(packageName);
301
+ if (installed)
302
+ return installed;
303
+ let declared = this.getAllDependencies()[packageName];
304
+ return declared && validRange(declared) ? declared : null;
305
+ }
306
+ /**
307
+ * Pin `packages` to `version`, mirroring how `anchorPackage` is declared. The base implementation
308
+ * pins each directly (`pkg@version`). PNPMProxy overrides this to honor pnpm catalogs: when
309
+ * `anchorPackage` is declared through a catalog, the packages are registered in that catalog and
310
+ * referenced as `catalog:` instead. Returns the install specifiers to write to package.json.
311
+ */
312
+ applyVersionToRelatedPackages(packages, version, _anchorPackage) {
313
+ return packages.map((pkg) => `${pkg}@${version}`);
314
+ }
315
+ /**
316
+ * Add dependencies to a project using `yarn add` or `npm install`.
317
+ *
318
+ * @example
319
+ *
320
+ * ```ts
321
+ * addDependencies(options, [
322
+ * `@aussieljk/forkbook/react@${storybookVersion}`,
323
+ * `@aussieljk/forkbook/addon-links@${linksVersion}`,
324
+ * ]);
325
+ * ```
326
+ *
327
+ * @param {Object} options Contains `skipInstall`, `packageJson` and `installAsDevDependencies`
328
+ * which we use to determine how we install packages.
329
+ * @param {Array} dependencies Contains a list of packages to add.
330
+ */
331
+ async addDependencies(options, dependencies) {
332
+ let {
333
+ skipInstall,
334
+ writeOutputToFile = !0,
335
+ packageJsonInfo = this.primaryPackageJson
336
+ } = options;
337
+ if (skipInstall) {
338
+ let { operationDir, packageJson } = packageJsonInfo, dependenciesMap = {};
339
+ for (let dep of dependencies) {
340
+ let [packageName, packageVersion] = getPackageDetails(dep);
341
+ dependenciesMap[packageName] = packageVersion ?? "latest";
342
+ }
343
+ let targetDeps = packageJson[options.type];
344
+ Object.assign(targetDeps, dependenciesMap), this.writePackageJson(packageJson, operationDir);
345
+ } else
346
+ try {
347
+ let result = this.runAddDeps(
348
+ dependencies,
349
+ options.type === "devDependencies",
350
+ writeOutputToFile
351
+ );
352
+ return this.clearInstalledVersionCache(), result;
353
+ } catch (e) {
354
+ throw logger2.error(`
355
+ An error occurred while adding dependencies to your package.json:`), logger2.log(String(e)), e?.fromStorybook ? e : new HandledError(e);
356
+ }
357
+ }
358
+ /**
359
+ * Removing dependencies from the package.json file, which is found first starting from the
360
+ * instance root. The method does not run a package manager install like `npm install`.
361
+ *
362
+ * @example
363
+ *
364
+ * ```ts
365
+ * removeDependencies([`@aussieljk/forkbook/react`]);
366
+ * ```
367
+ *
368
+ * @param dependencies Contains a list of packages to remove.
369
+ */
370
+ async removeDependencies(dependencies) {
371
+ for (let pjPath of this.packageJsonPaths)
372
+ try {
373
+ let packageJson = _JsPackageManager.getPackageJson(pjPath), modified = !1;
374
+ if (dependencies.forEach((dep) => {
375
+ packageJson.dependencies && packageJson.dependencies[dep] && (delete packageJson.dependencies[dep], modified = !0), packageJson.devDependencies && packageJson.devDependencies[dep] && (delete packageJson.devDependencies[dep], modified = !0), packageJson.peerDependencies && packageJson.peerDependencies[dep] && (delete packageJson.peerDependencies[dep], modified = !0);
376
+ }), modified) {
377
+ this.writePackageJson(packageJson, dirname(pjPath));
378
+ break;
379
+ }
380
+ } catch (e) {
381
+ logger2.warn(`Could not process ${pjPath} for dependency removal: ${String(e)}`);
382
+ }
383
+ }
384
+ /**
385
+ * Return an array of strings matching following format: `<storybook_package_name>@<package_latest_version>`
386
+ *
387
+ * For packages in the storybook monorepo, when the latest version is equal to the version of the
388
+ * current CLI the version is not added to the string.
389
+ *
390
+ * When a package is in the monorepo, and the version is not equal to the CLI version, the version
391
+ * is taken from the versions.ts file and added to the string.
392
+ *
393
+ * When a package is not in the monorepo, we don't change the package version and return the package name as is.
394
+ * The package manager will resolve the latest version of the package upon installing it.
395
+ *
396
+ * @param packages
397
+ */
398
+ getVersionedPackages(packages, options) {
399
+ return Promise.all(
400
+ packages.map(async (pkg) => {
401
+ let [packageName, packageVersion] = getPackageDetails(pkg);
402
+ if (!(packageName in versions_default))
403
+ return pkg;
404
+ if (packageName in versions_default) {
405
+ let pkgPrNewSpecifier = getPkgPrNewPackageSpecifier(
406
+ packageName,
407
+ options?.storybookVersionSpecifier
408
+ );
409
+ if (pkgPrNewSpecifier)
410
+ return `${packageName}@${pkgPrNewSpecifier}`;
411
+ }
412
+ let latestInRange = await this.latestVersion(packageName, packageVersion), currentVersion = versions_default[packageName];
413
+ return currentVersion === latestInRange || !currentVersion ? `${packageName}@^${latestInRange}` : `${packageName}@${currentVersion}`;
414
+ })
415
+ );
416
+ }
417
+ /**
418
+ * Return an array of string standing for the latest version of the input packages. To be able to
419
+ * identify which version goes with which package the order of the input array is keep.
420
+ *
421
+ * @param packageNames
422
+ */
423
+ getVersions(...packageNames) {
424
+ return Promise.all(
425
+ packageNames.map((packageName) => this.getVersion(packageName))
426
+ );
427
+ }
428
+ /**
429
+ * Return the latest version of the input package available on npmjs registry. If constraint are
430
+ * provided it return the latest version matching the constraints.
431
+ *
432
+ * For `@storybook/*` packages the latest version is retrieved from `cli/src/versions.json` file
433
+ * directly
434
+ *
435
+ * @param packageName The name of the package
436
+ * @param constraint A valid semver constraint, example: '1.x || >=2.5.0 || 5.0.0 - 7.2.3'
437
+ */
438
+ async getVersion(packageName, constraint) {
439
+ let current;
440
+ packageName in versions_default && (current = versions_default[packageName]);
441
+ let latest;
442
+ try {
443
+ if (latest = await this.latestVersion(packageName, constraint), !latest)
444
+ throw new Error(`No version found for ${packageName}`);
445
+ } catch (e) {
446
+ if (current)
447
+ return logger2.warn(`
448
+ ${import_picocolors.default.yellow(String(e))}`), current;
449
+ throw logger2.error(`
450
+ ${import_picocolors.default.red(String(e))}`), new HandledError(e);
451
+ }
452
+ return `^${current && (!constraint || satisfies(current, constraint)) && gt2(current, latest) ? current : latest}`;
453
+ }
454
+ /**
455
+ * Get the latest version of the package available on npmjs.com. If constraint is set then it
456
+ * returns a version satisfying it, otherwise the latest version available is returned.
457
+ *
458
+ * @param packageName Name of the package
459
+ * @param constraint Version range to use to constraint the returned version
460
+ */
461
+ async latestVersion(packageName, constraint) {
462
+ let cacheKey = constraint ? `${packageName}@${constraint}` : packageName, cachedVersion = _JsPackageManager.latestVersionCache.get(cacheKey);
463
+ if (cachedVersion)
464
+ return logger2.debug(`Using cached version for ${packageName}...`), cachedVersion;
465
+ let result;
466
+ logger2.debug(`Getting CLI versions from NPM for ${packageName}...`);
467
+ try {
468
+ if (!constraint)
469
+ result = await this.runGetVersions(packageName, !1);
470
+ else {
471
+ let latestVersionSatisfyingTheConstraint = (await this.runGetVersions(packageName, !0)).reverse().find((version) => satisfies(version, constraint));
472
+ invariant(
473
+ latestVersionSatisfyingTheConstraint != null,
474
+ `No version satisfying the constraint: ${packageName}${constraint}`
475
+ ), result = latestVersionSatisfyingTheConstraint;
476
+ }
477
+ return _JsPackageManager.latestVersionCache.set(cacheKey, result), result;
478
+ } catch (e) {
479
+ return logger2.debug(`Failed to fetch the latest version for ${packageName}: ${String(e)}`), _JsPackageManager.latestVersionCache.set(cacheKey, null), null;
480
+ }
481
+ }
482
+ /**
483
+ * Clear the latest version cache. Useful for testing or when you want to refresh version
484
+ * information.
485
+ *
486
+ * @param packageName Optional package name to clear only specific entries. If not provided,
487
+ * clears all cache.
488
+ */
489
+ static clearLatestVersionCache(packageName) {
490
+ packageName ? Array.from(_JsPackageManager.latestVersionCache.keys()).filter(
491
+ (key) => key === packageName || key.startsWith(`${packageName}@`)
492
+ ).forEach((key) => _JsPackageManager.latestVersionCache.delete(key)) : _JsPackageManager.latestVersionCache.clear();
493
+ }
494
+ /**
495
+ * Clear the installed version cache for a specific package or all packages.
496
+ *
497
+ * @param packageName Optional package name to clear from cache. If not provided, clears all.
498
+ */
499
+ clearInstalledVersionCache(packageName) {
500
+ packageName ? Array.from(_JsPackageManager.installedVersionCache.keys()).filter(
501
+ (key) => key.endsWith(`::${packageName}`)
502
+ ).forEach((key) => _JsPackageManager.installedVersionCache.delete(key)) : _JsPackageManager.installedVersionCache.clear();
503
+ }
504
+ /**
505
+ * Clear both the latest version cache and installed version cache. This should be called after
506
+ * any operation that modifies dependencies.
507
+ */
508
+ clearAllVersionCaches() {
509
+ _JsPackageManager.clearLatestVersionCache(), this.clearInstalledVersionCache();
510
+ }
511
+ addStorybookCommandInScripts(options) {
512
+ let storybookCmd = `forkbook dev -p ${options?.port ?? 6006}`, buildStorybookCmd = "forkbook build", preCommand = options?.preCommand ? this.getRunCommand(options.preCommand) : void 0;
513
+ this.addScripts({
514
+ forkbook: [preCommand, storybookCmd].filter(Boolean).join(" && "),
515
+ "build-forkbook": [preCommand, buildStorybookCmd].filter(Boolean).join(" && ")
516
+ });
517
+ }
518
+ addScripts(scripts) {
519
+ let { operationDir, packageJson } = this.#getPrimaryPackageJson();
520
+ packageJson.scripts = {
521
+ ...packageJson.scripts,
522
+ ...scripts
523
+ }, this.writePackageJson(packageJson, operationDir);
524
+ }
525
+ addPackageResolutions(versions) {
526
+ let { operationDir, packageJson } = this.#getPrimaryPackageJson(), resolutions = this.getResolutions(packageJson, versions);
527
+ this.writePackageJson({ ...packageJson, ...resolutions }, operationDir);
528
+ }
529
+ /** Returns the installed version of a specified package */
530
+ async getInstalledVersion(packageName) {
531
+ let cacheKey = packageName;
532
+ try {
533
+ let cachedVersion = _JsPackageManager.installedVersionCache.get(cacheKey);
534
+ if (cachedVersion !== void 0)
535
+ return logger2.debug(`Using cached installed version for ${packageName}...`), cachedVersion;
536
+ logger2.debug(`Getting installed version for ${packageName}...`);
537
+ let version = null, vitePlusVersions = await getVitePlusVersions();
538
+ if (vitePlusVersions?.[packageName] && (version = vitePlusVersions[packageName]), !version) {
539
+ let installations = await this.findInstallations([packageName]);
540
+ installations && (version = Object.entries(installations.dependencies)[0]?.[1]?.[0].version || null);
541
+ }
542
+ if (!version)
543
+ return logger2.debug(`No installations found for ${packageName}`), _JsPackageManager.installedVersionCache.set(cacheKey, null), null;
544
+ let coercedVersion = coerce(version, { includePrerelease: !0 })?.toString() ?? version;
545
+ return logger2.debug(`Installed version for ${packageName}: ${coercedVersion}`), _JsPackageManager.installedVersionCache.set(cacheKey, coercedVersion), coercedVersion;
546
+ } catch (e) {
547
+ return logger2.error(`Error getting installed version for ${packageName}: ${String(e)}`), _JsPackageManager.installedVersionCache.set(cacheKey, null), null;
548
+ }
549
+ }
550
+ async isPackageInstalled(packageName) {
551
+ return await this.getInstalledVersion(packageName) !== null;
552
+ }
553
+ /**
554
+ * Searches for a dependency/devDependency in all package.json files and returns the version of
555
+ * the dependency.
556
+ */
557
+ getDependencyVersion(dependency) {
558
+ return logger2.debug(`Getting dependency version for ${dependency}...`), this.packageJsonPaths.map((path) => {
559
+ let packageJson = _JsPackageManager.getPackageJson(path);
560
+ return packageJson.dependencies?.[dependency] ?? packageJson.devDependencies?.[dependency];
561
+ }).filter(Boolean)[0] ?? null;
562
+ }
563
+ // Helper to read and check a package.json for storybook dependency
564
+ static hasStorybookDependency(packageJsonPath) {
565
+ try {
566
+ let content = readFileSync(packageJsonPath, "utf-8"), packageJson = JSON.parse(content);
567
+ return !!(packageJson.dependencies && packageJson.dependencies.storybook || packageJson.devDependencies && packageJson.devDependencies.storybook);
568
+ } catch {
569
+ return !1;
570
+ }
571
+ }
572
+ // Helper to read and check a package.json for storybook dependency
573
+ static hasAnyStorybookDependency(packageJsonPath) {
574
+ try {
575
+ let content = readFileSync(packageJsonPath, "utf-8"), packageJson = JSON.parse(content), allDeps = {
576
+ ...packageJson.dependencies,
577
+ ...packageJson.devDependencies
578
+ };
579
+ return Object.keys(allDeps).some(
580
+ (dep) => dep.includes("storybook") || dep === "@aussieljk/forkbook"
581
+ );
582
+ } catch {
583
+ return !1;
584
+ }
585
+ }
586
+ /**
587
+ * Find the primary package.json file in the project root. The primary package.json file is the
588
+ * one that contains the `storybook` dependency. If no primary package.json file is found, the
589
+ * function will return the package.json file in the project root.
590
+ */
591
+ #findPrimaryPackageJsonPath() {
592
+ for (let packageJsonPath of this.packageJsonPaths)
593
+ if (_JsPackageManager.hasStorybookDependency(packageJsonPath))
594
+ return packageJsonPath;
595
+ return this.packageJsonPaths[0] ?? resolve(this.cwd, "package.json");
596
+ }
597
+ /** List all package.json files starting from the given directory and stopping at the project root. */
598
+ static listAllPackageJsonPaths(instanceDir, storiesPaths) {
599
+ let packageJsonPaths = findFilesUp(["package.json"], instanceDir);
600
+ if (!storiesPaths)
601
+ return packageJsonPaths;
602
+ let projectRoot = getProjectRoot(), relevantPackageJsons = globSync("**/package.json", {
603
+ cwd: projectRoot,
604
+ absolute: !0,
605
+ ignore: ["**/node_modules/**", "**/dist/**"]
606
+ }).filter((packageJsonPath) => {
607
+ let packageDir = dirname(packageJsonPath);
608
+ return storiesPaths.some((storyPath) => storyPath.startsWith(packageDir));
609
+ });
610
+ return Array.from(/* @__PURE__ */ new Set([...packageJsonPaths, ...relevantPackageJsons]));
611
+ }
612
+ /**
613
+ * Get the primary package.json file and its operation directory. The primary package.json file is
614
+ * the one that contains the storybook dependency. If the primary package.json file is not found,
615
+ * the function returns information about thepackage.json file in the current working directory.
616
+ */
617
+ #getPrimaryPackageJson() {
618
+ let finalTargetPackageJsonPath = this.#findPrimaryPackageJsonPath();
619
+ return _JsPackageManager.getPackageJsonInfo(finalTargetPackageJsonPath);
620
+ }
621
+ static getPackageJsonInfo(packageJsonPath) {
622
+ logger2.debug(`Getting package.json info for ${packageJsonPath}...`);
623
+ let operationDir = dirname(packageJsonPath);
624
+ return {
625
+ packageJsonPath,
626
+ operationDir,
627
+ get packageJson() {
628
+ return _JsPackageManager.getPackageJson(packageJsonPath);
629
+ }
630
+ };
631
+ }
632
+ };
633
+
634
+ // src/common/utils/framework.ts
635
+ import {
636
+ SupportedBuilder,
637
+ SupportedFramework,
638
+ SupportedRenderer
639
+ } from "@aussieljk/forkbook/internal/types";
640
+ var frameworkToRenderer = {
641
+ // frameworks
642
+ [SupportedFramework.NEXTJS_VITE]: SupportedRenderer.REACT,
643
+ [SupportedFramework.REACT_VITE]: SupportedRenderer.REACT,
644
+ // renderers
645
+ [SupportedRenderer.REACT_NATIVE]: SupportedRenderer.REACT_NATIVE,
646
+ [SupportedRenderer.REACT]: SupportedRenderer.REACT
647
+ }, frameworkToBuilder = {
648
+ // frameworks
649
+ [SupportedFramework.NEXTJS_VITE]: SupportedBuilder.VITE,
650
+ [SupportedFramework.REACT_VITE]: SupportedBuilder.VITE
651
+ };
652
+
653
+ // src/common/utils/normalize-path.ts
654
+ import { posix } from "node:path";
655
+ function normalizePath(p) {
656
+ return posix.normalize(p.replace(/\\/g, "/"));
657
+ }
658
+
659
+ // src/common/utils/get-addon-names.ts
660
+ var normalizeAddonName = (addon) => {
661
+ let name = "";
662
+ if (typeof addon == "string" ? name = addon : typeof addon == "object" && (name = addon.name), !name.startsWith("."))
663
+ return name = normalizePath(name), name = name.replace(/.*node_modules\//, ""), name.replace(/\/dist\/.*$/, "").replace(/\.[mc]?[tj]?sx?$/, "").replace(/\/register$/, "").replace(/\/manager$/, "").replace(/\/preset$/, "");
664
+ }, getAddonNames = (mainConfig) => (mainConfig.addons || []).map(normalizeAddonName).filter((item) => item != null);
665
+
666
+ // src/common/utils/default-config-dir.ts
667
+ import { existsSync } from "node:fs";
668
+ import { join as join2 } from "node:path";
669
+ function defaultConfigDir(cwd = process.cwd()) {
670
+ return !existsSync(join2(cwd, ".forkbook")) && existsSync(join2(cwd, ".storybook")) ? ".storybook" : ".forkbook";
671
+ }
672
+
673
+ // src/common/utils/get-framework-name.ts
674
+ import { dedent as dedent3 } from "ts-dedent";
675
+
676
+ // src/common/utils/get-storybook-info.ts
677
+ import { existsSync as existsSync3, readFileSync as readFileSync2 } from "node:fs";
678
+ import { basename, dirname as dirname2, join as join4 } from "node:path";
679
+ import {
680
+ SupportedBuilder as SupportedBuilder2,
681
+ SupportedFramework as SupportedFramework2,
682
+ SupportedRenderer as SupportedRenderer2
683
+ } from "@aussieljk/forkbook/internal/types";
684
+
685
+ // src/common/utils/get-storybook-configuration.ts
686
+ function getStorybookConfiguration(storybookScript, shortName, longName) {
687
+ if (!storybookScript)
688
+ return null;
689
+ let parts = storybookScript.split(/[\s='"]+/), index = parts.indexOf(longName);
690
+ return index === -1 && (index = parts.indexOf(shortName)), index === -1 ? null : parts[index + 1];
691
+ }
692
+
693
+ // src/common/utils/load-main-config.ts
694
+ import { readFile, rm, writeFile } from "node:fs/promises";
695
+ import { join as join3, parse, relative, resolve as resolve3 } from "node:path";
696
+ import { logger as logger3 } from "@aussieljk/forkbook/internal/node-logger";
697
+ import { MainFileEvaluationError } from "@aussieljk/forkbook/internal/server-errors";
698
+ import { dedent as dedent2 } from "ts-dedent";
699
+
700
+ // src/common/utils/interpret-files.ts
701
+ import { existsSync as existsSync2 } from "node:fs";
702
+ import { extname } from "node:path";
703
+ var typescriptFallbackExtensions = {
704
+ ".js": [".ts", ".tsx"],
705
+ ".mjs": [".mts"],
706
+ ".cjs": [".cts"],
707
+ ".jsx": [".tsx"]
708
+ }, supportedExtensions = storybookConfigExtensions;
709
+ function getInterpretedFile(pathToFile) {
710
+ return supportedExtensions.map((ext) => pathToFile.endsWith(ext) ? pathToFile : `${pathToFile}${ext}`).find((candidate) => existsSync2(candidate));
711
+ }
712
+ var importResolver = createModuleResolver({
713
+ extensions: [...supportedExtensions],
714
+ mainFields: ["module", "main"]
715
+ });
716
+ function resolveImport(id, options) {
717
+ try {
718
+ return resolveSync(id, options.basedir);
719
+ } catch (error) {
720
+ let ext = extname(id), fallbackExtensions = typescriptFallbackExtensions[ext];
721
+ if (!fallbackExtensions)
722
+ throw error;
723
+ let fallbackError = error, baseId = id.slice(0, -ext.length);
724
+ for (let fallbackExtension of fallbackExtensions)
725
+ try {
726
+ return resolveSync(`${baseId}${fallbackExtension}`, options.basedir);
727
+ } catch (err) {
728
+ fallbackError = err;
729
+ }
730
+ throw fallbackError;
731
+ }
732
+ }
733
+ function resolveSync(id, basedir) {
734
+ return importResolver.resolveSync(basedir, id);
735
+ }
736
+
737
+ // src/common/utils/validate-configuration-files.ts
738
+ import { resolve as resolve2 } from "node:path";
739
+ import { once } from "@aussieljk/forkbook/internal/node-logger";
740
+ import { MainFileMissingError } from "@aussieljk/forkbook/internal/server-errors";
741
+ import { dedent } from "ts-dedent";
742
+ async function validateConfigurationFiles(configDir, cwd) {
743
+ let extensionsPattern = `{${Array.from(supportedExtensions).join(",")}}`, mainConfigMatches = await glob(slash(resolve2(configDir, `main${extensionsPattern}`)), {
744
+ cwd: cwd ?? process.cwd()
745
+ }), [mainConfigPath] = mainConfigMatches;
746
+ if (mainConfigMatches.length > 1 && once.warn(dedent`
747
+ Multiple main files found in your configDir (${resolve2(configDir)}).
748
+ Forkbook will use the first one found and ignore the others. Please remove the extra files.
749
+ `), !mainConfigPath)
750
+ throw new MainFileMissingError({ location: configDir });
751
+ }
752
+
753
+ // src/common/utils/load-main-config.ts
754
+ async function loadMainConfig({
755
+ configDir = defaultConfigDir(),
756
+ cwd,
757
+ skipCache
758
+ }) {
759
+ await validateConfigurationFiles(configDir, cwd);
760
+ let mainPath = getInterpretedFile(resolve3(configDir, "main"));
761
+ try {
762
+ let out = await importModule(mainPath, { skipCache });
763
+ return withForkbookFramework(out);
764
+ } catch (e) {
765
+ if (!(e instanceof Error))
766
+ throw e;
767
+ if (e.message.includes("not defined in ES module scope")) {
768
+ logger3.info(
769
+ "Loading main config failed as the file does not seem to be valid ESM. Trying a temporary fix, please ensure the main config is valid ESM."
770
+ );
771
+ let comment = "// end of Forkbook 10 migration assistant header, you can delete the above code", content = await readFile(mainPath, "utf-8");
772
+ if (!content.includes(comment)) {
773
+ let header = dedent2`
774
+ import { createRequire } from "node:module";
775
+ import { dirname } from "node:path";
776
+ import { fileURLToPath } from "node:url";
777
+
778
+ const __filename = fileURLToPath(import.meta.url);
779
+ const __dirname = dirname(__filename);
780
+ const require = createRequire(import.meta.url);
781
+ `, { ext, name, dir } = parse(mainPath), modifiedMainPath = join3(dir, `${name}.tmp.${ext}`);
782
+ await writeFile(modifiedMainPath, [header, comment, content].join(`
783
+
784
+ `));
785
+ let out;
786
+ try {
787
+ out = await importModule(modifiedMainPath);
788
+ } finally {
789
+ await rm(modifiedMainPath);
790
+ }
791
+ return withForkbookFramework(out);
792
+ }
793
+ }
794
+ throw new MainFileEvaluationError({
795
+ location: relative(process.cwd(), mainPath),
796
+ error: e
797
+ });
798
+ }
799
+ }
800
+
801
+ // src/common/utils/get-storybook-info.ts
802
+ var rendererPackages = {
803
+ "@aussieljk/forkbook/react": SupportedRenderer2.REACT,
804
+ "@storybook/react-native": SupportedRenderer2.REACT_NATIVE
805
+ }, frameworkPackages = {
806
+ "@aussieljk/forkbook/react-vite": SupportedFramework2.REACT_VITE,
807
+ "@aussieljk/forkbook/nextjs-vite": SupportedFramework2.NEXTJS_VITE
808
+ }, builderPackages = {
809
+ "@aussieljk/forkbook/builder-vite": SupportedBuilder2.VITE
810
+ }, findDependency = ({ dependencies, devDependencies, peerDependencies }, predicate) => [
811
+ Object.entries(dependencies || {}).find(predicate),
812
+ Object.entries(devDependencies || {}).find(predicate),
813
+ Object.entries(peerDependencies || {}).find(predicate)
814
+ ], getStorybookVersionSpecifier = (configDir) => {
815
+ let packageJsonPaths = JsPackageManager.listAllPackageJsonPaths(dirname2(configDir));
816
+ for (let packageJsonPath of packageJsonPaths) {
817
+ let packageJson = JSON.parse(readFileSync2(packageJsonPath, "utf-8")), [dep, devDep, peerDep] = findDependency(
818
+ packageJson,
819
+ ([key]) => key === "@aussieljk/forkbook"
820
+ ), [pkg, version] = dep || devDep || peerDep || [];
821
+ if (pkg && version)
822
+ return version;
823
+ }
824
+ }, findConfigFile = (prefix, configDir) => {
825
+ let filePrefix = join4(configDir, prefix), extension = storybookConfigExtensions.find((ext) => existsSync3(`${filePrefix}${ext}`));
826
+ return extension ? `${filePrefix}${extension}` : null;
827
+ }, getConfigInfo = (configDir) => {
828
+ let storybookConfigDir = configDir ?? defaultConfigDir();
829
+ if (!existsSync3(storybookConfigDir)) {
830
+ let packageJsonPaths = JsPackageManager.listAllPackageJsonPaths(storybookConfigDir);
831
+ for (let packageJsonPath of packageJsonPaths) {
832
+ let packageJson = JSON.parse(readFileSync2(packageJsonPath, "utf-8")), storybookScript = packageJson.scripts?.forkbook ?? packageJson.scripts?.storybook;
833
+ if (storybookScript && !configDir) {
834
+ let configParam = getStorybookConfiguration(storybookScript, "-c", "--config-dir");
835
+ if (configParam) {
836
+ storybookConfigDir = configParam;
837
+ break;
838
+ }
839
+ }
840
+ }
841
+ }
842
+ return {
843
+ configDir: storybookConfigDir,
844
+ mainConfigPath: findConfigFile("main", storybookConfigDir),
845
+ previewConfigPath: findConfigFile("preview", storybookConfigDir),
846
+ managerConfigPath: findConfigFile("manager", storybookConfigDir)
847
+ };
848
+ }, getStorybookInfo = async (configDir = defaultConfigDir(), cwd, { skipCache } = {}) => {
849
+ let configInfo = getConfigInfo(configDir), mainConfig = await loadMainConfig({
850
+ configDir: configInfo.configDir,
851
+ cwd,
852
+ // When the main config may have been rewritten earlier in the same process (e.g. by
853
+ // `forkbook add`), callers must skip the module cache to read the
854
+ // current on-disk config instead of a stale, previously-evaluated version.
855
+ skipCache
856
+ });
857
+ invariant(mainConfig, `Unable to find or evaluate ${configInfo.mainConfigPath}`);
858
+ let frameworkValue = mainConfig.framework, frameworkField = typeof frameworkValue == "string" ? frameworkValue : frameworkValue?.name, addons = getAddonNames(mainConfig), versionSpecifier = getStorybookVersionSpecifier(configDir);
859
+ if (!frameworkField)
860
+ return basename(configInfo.configDir) === RN_STORYBOOK_DIR ? {
861
+ ...configInfo,
862
+ versionSpecifier,
863
+ addons,
864
+ mainConfig,
865
+ frameworkPackage: "@storybook/react-native",
866
+ rendererPackage: "@storybook/react-native",
867
+ renderer: SupportedRenderer2.REACT_NATIVE,
868
+ mainConfigPath: configInfo.mainConfigPath ?? void 0,
869
+ previewConfigPath: configInfo.previewConfigPath ?? void 0,
870
+ managerConfigPath: configInfo.managerConfigPath ?? void 0
871
+ } : {
872
+ ...configInfo,
873
+ versionSpecifier,
874
+ addons,
875
+ mainConfig,
876
+ mainConfigPath: configInfo.mainConfigPath ?? void 0,
877
+ previewConfigPath: configInfo.previewConfigPath ?? void 0,
878
+ managerConfigPath: configInfo.managerConfigPath ?? void 0
879
+ };
880
+ let frameworkPackage = extractFrameworkPackageName(frameworkField), framework = frameworkPackages[frameworkPackage], renderer = await extractRenderer(frameworkPackage), builder = frameworkToBuilder[framework], rendererPackage = Object.entries(rendererPackages).find(
881
+ ([, value]) => value === renderer
882
+ )?.[0], builderPackage = Object.entries(builderPackages).find(
883
+ ([, value]) => value === builder
884
+ )?.[0];
885
+ return {
886
+ ...configInfo,
887
+ addons,
888
+ mainConfig,
889
+ framework,
890
+ versionSpecifier,
891
+ renderer: renderer ?? void 0,
892
+ builder: builder ?? void 0,
893
+ frameworkPackage,
894
+ rendererPackage,
895
+ builderPackage,
896
+ mainConfigPath: configInfo.mainConfigPath ?? void 0,
897
+ previewConfigPath: configInfo.previewConfigPath ?? void 0,
898
+ managerConfigPath: configInfo.managerConfigPath ?? void 0
899
+ };
900
+ };
901
+
902
+ // src/common/utils/get-framework-name.ts
903
+ async function getFrameworkName(options) {
904
+ let framework = await options.presets.apply("framework", "", options);
905
+ if (!framework)
906
+ throw new Error(dedent3`
907
+ You must specify a framework in '.forkbook/main.js' config.
908
+
909
+ https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#framework-field-mandatory
910
+ `);
911
+ return typeof framework == "object" ? framework.name : framework;
912
+ }
913
+ var storybookFrameworkNames = {
914
+ "@storybook/react-vite": "@aussieljk/forkbook/react-vite",
915
+ "@storybook/nextjs-vite": "@aussieljk/forkbook/nextjs-vite"
916
+ };
917
+ function forkbookFramework(framework) {
918
+ let name = typeof framework == "string" ? framework : framework?.name, forkbookName = name ? storybookFrameworkNames[name] : void 0;
919
+ return forkbookName ? typeof framework == "string" ? forkbookName : { ...framework, name: forkbookName } : framework;
920
+ }
921
+ function withForkbookFramework(config) {
922
+ let framework = forkbookFramework(config?.framework);
923
+ return framework === config?.framework ? config : { ...config, framework };
924
+ }
925
+ var extractFrameworkPackageName = (framework) => {
926
+ let normalizedPath = normalizePath(forkbookFramework(framework));
927
+ return Object.keys(frameworkPackages).find((pkg) => normalizedPath.endsWith(pkg)) ?? framework;
928
+ };
929
+
930
+ // src/common/utils/get-renderer-name.ts
931
+ async function getRendererName(options) {
932
+ let core = await options.presets.apply("core", {}, options);
933
+ return !core || !core.renderer ? getFrameworkName(options) : core.renderer;
934
+ }
935
+ async function extractRenderer(frameworkName) {
936
+ let extractedFrameworkName = extractFrameworkPackageName(frameworkName), framework = frameworkPackages[extractedFrameworkName];
937
+ return framework ? frameworkToRenderer[framework] : null;
938
+ }
939
+
940
+ export {
941
+ versions_default,
942
+ HandledError,
943
+ isPkgPrNewVersionSpecifier,
944
+ getPkgPrNewPackageSpecifier,
945
+ FORKBOOK_PACKAGE_PATTERNS,
946
+ hasStorybookMinimumAgeExclusions,
947
+ parsePackageData,
948
+ parsePositiveIntegerConfigValue,
949
+ parseReleaseTime,
950
+ parsePackageTimeMap,
951
+ getAgeInMinutes,
952
+ getLatestStableVersionAdheringToMinimumAgeGate,
953
+ getVitestStorybookRunCommand,
954
+ getMswInitCommand,
955
+ FORKBOOK_RERUN_INSTRUCTION,
956
+ getStorybookRerunCommand,
957
+ getErrorLogs,
958
+ INSTALL_ERROR_TAIL_LINES,
959
+ getInstallErrorTail,
960
+ getVitePlusVersions,
961
+ clearVitePlusCache,
962
+ PackageManagerName,
963
+ getPrettyPackageManagerName,
964
+ getPackageDetails,
965
+ JsPackageManager,
966
+ frameworkToRenderer,
967
+ frameworkToBuilder,
968
+ normalizeAddonName,
969
+ getAddonNames,
970
+ defaultConfigDir,
971
+ getRendererName,
972
+ extractRenderer,
973
+ getStorybookConfiguration,
974
+ supportedExtensions,
975
+ getInterpretedFile,
976
+ resolveImport,
977
+ validateConfigurationFiles,
978
+ loadMainConfig,
979
+ rendererPackages,
980
+ frameworkPackages,
981
+ builderPackages,
982
+ findConfigFile,
983
+ getConfigInfo,
984
+ getStorybookInfo,
985
+ getFrameworkName,
986
+ forkbookFramework,
987
+ withForkbookFramework,
988
+ extractFrameworkPackageName
989
+ };