@aussieljk/forkbook 0.0.0-stage → 0.0.1-10

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 (604) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +59 -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/inter-LICENSE.txt +92 -0
  7. package/assets/browser/inter-variable-italic.woff2 +0 -0
  8. package/assets/browser/inter-variable.woff2 +0 -0
  9. package/assets/browser/mirror-ball.png +0 -0
  10. package/assets/builder-vite/iframe.html +83 -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 +85 -0
  57. package/dist/.build-stamp +0 -0
  58. package/dist/_browser-chunks/Color-X63I7FHI.js +1025 -0
  59. package/dist/_browser-chunks/DocsRenderer-JXND3PVQ.js +10 -0
  60. package/dist/_browser-chunks/WithTooltip-5S6F2P7L.js +198 -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-3HM3VWJS.js +2604 -0
  64. package/dist/_browser-chunks/chunk-3M5T7BW4.js +43 -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-4KIQBRD2.js +17 -0
  68. package/dist/_browser-chunks/chunk-5H4KFI44.js +386 -0
  69. package/dist/_browser-chunks/chunk-5I7E4GMO.js +62 -0
  70. package/dist/_browser-chunks/chunk-5WMXI5GW.js +816 -0
  71. package/dist/_browser-chunks/chunk-5Z65SURM.js +108 -0
  72. package/dist/_browser-chunks/chunk-6AKCRYVX.js +6 -0
  73. package/dist/_browser-chunks/chunk-6ELMKWKX.js +22 -0
  74. package/dist/_browser-chunks/chunk-76222HQR.js +253 -0
  75. package/dist/_browser-chunks/chunk-7DQREF4S.js +218 -0
  76. package/dist/_browser-chunks/chunk-AYRF6EJB.js +36 -0
  77. package/dist/_browser-chunks/chunk-B4AUNNU4.js +156 -0
  78. package/dist/_browser-chunks/chunk-BCP2FFXF.js +369 -0
  79. package/dist/_browser-chunks/chunk-BNP234B4.js +80 -0
  80. package/dist/_browser-chunks/chunk-C5TKXHTM.js +82 -0
  81. package/dist/_browser-chunks/chunk-CNED6RYH.js +18 -0
  82. package/dist/_browser-chunks/chunk-DNJ3OSLB.js +6021 -0
  83. package/dist/_browser-chunks/chunk-DRQKCCAG.js +136 -0
  84. package/dist/_browser-chunks/chunk-DS2WQZGO.js +1956 -0
  85. package/dist/_browser-chunks/chunk-DYNTDJ3O.js +155 -0
  86. package/dist/_browser-chunks/chunk-ECQ75MKQ.js +0 -0
  87. package/dist/_browser-chunks/chunk-ENKK74N4.js +12 -0
  88. package/dist/_browser-chunks/chunk-EQKMUQF3.js +224 -0
  89. package/dist/_browser-chunks/chunk-FENFYI4X.js +698 -0
  90. package/dist/_browser-chunks/chunk-FRAOQJDI.js +95 -0
  91. package/dist/_browser-chunks/chunk-GNZY6LOW.js +10116 -0
  92. package/dist/_browser-chunks/chunk-GRO2ZYEJ.js +157 -0
  93. package/dist/_browser-chunks/chunk-I4ATZPNZ.js +34 -0
  94. package/dist/_browser-chunks/chunk-IE4ULIOQ.js +14 -0
  95. package/dist/_browser-chunks/chunk-IFADVEQE.js +669 -0
  96. package/dist/_browser-chunks/chunk-IMSF75WX.js +42 -0
  97. package/dist/_browser-chunks/chunk-IWQGIXJS.js +14 -0
  98. package/dist/_browser-chunks/chunk-JPUOQJUI.js +8 -0
  99. package/dist/_browser-chunks/chunk-JWSKPMPC.js +73 -0
  100. package/dist/_browser-chunks/chunk-KBK7GKBN.js +35 -0
  101. package/dist/_browser-chunks/chunk-KYSD26D6.js +1966 -0
  102. package/dist/_browser-chunks/chunk-LAWXTSXK.js +18 -0
  103. package/dist/_browser-chunks/chunk-LE2LTDW3.js +14 -0
  104. package/dist/_browser-chunks/chunk-LEVSOOLQ.js +48 -0
  105. package/dist/_browser-chunks/chunk-LTCXWKZO.js +2935 -0
  106. package/dist/_browser-chunks/chunk-LYYXDWR2.js +411 -0
  107. package/dist/_browser-chunks/chunk-MJIDTL3X.js +78 -0
  108. package/dist/_browser-chunks/chunk-MLBOOZL4.js +67 -0
  109. package/dist/_browser-chunks/chunk-N3NRW5XX.js +117 -0
  110. package/dist/_browser-chunks/chunk-N5WQGLI7.js +11 -0
  111. package/dist/_browser-chunks/chunk-NA4ITZTK.js +324 -0
  112. package/dist/_browser-chunks/chunk-NGMQJMCY.js +53 -0
  113. package/dist/_browser-chunks/chunk-NPNIBOPF.js +18 -0
  114. package/dist/_browser-chunks/chunk-NQUD4B7H.js +91 -0
  115. package/dist/_browser-chunks/chunk-NTUHL5NS.js +54 -0
  116. package/dist/_browser-chunks/chunk-NULBREPZ.js +43 -0
  117. package/dist/_browser-chunks/chunk-NZMVUW5T.js +7 -0
  118. package/dist/_browser-chunks/chunk-O24AZJZ7.js +56 -0
  119. package/dist/_browser-chunks/chunk-ONTSNQON.js +20 -0
  120. package/dist/_browser-chunks/chunk-OOETBSA7.js +502 -0
  121. package/dist/_browser-chunks/chunk-OVH3USFB.js +20 -0
  122. package/dist/_browser-chunks/chunk-OZZPSYQR.js +14 -0
  123. package/dist/_browser-chunks/chunk-PJSMZ27A.js +13 -0
  124. package/dist/_browser-chunks/chunk-PZQRXPVR.js +21 -0
  125. package/dist/_browser-chunks/chunk-QC4HFS6K.js +41 -0
  126. package/dist/_browser-chunks/chunk-QDXFODK4.js +274 -0
  127. package/dist/_browser-chunks/chunk-RBCHTR7C.js +28 -0
  128. package/dist/_browser-chunks/chunk-RMYQ3QN3.js +294 -0
  129. package/dist/_browser-chunks/chunk-S6TK43XQ.js +836 -0
  130. package/dist/_browser-chunks/chunk-SC67XZST.js +18 -0
  131. package/dist/_browser-chunks/chunk-SFVA4SBT.js +683 -0
  132. package/dist/_browser-chunks/chunk-SZYFOQMT.js +25 -0
  133. package/dist/_browser-chunks/chunk-TBJCJXK4.js +18 -0
  134. package/dist/_browser-chunks/chunk-TTBPZQ24.js +3551 -0
  135. package/dist/_browser-chunks/chunk-UMDO3KB7.js +205 -0
  136. package/dist/_browser-chunks/chunk-UMGDO2ZM.js +169 -0
  137. package/dist/_browser-chunks/chunk-V5U45XXZ.js +24 -0
  138. package/dist/_browser-chunks/chunk-W7NE2JXW.js +84 -0
  139. package/dist/_browser-chunks/chunk-WGVAAM43.js +1110 -0
  140. package/dist/_browser-chunks/chunk-WHQRNHXD.js +8 -0
  141. package/dist/_browser-chunks/chunk-WOSOWBCA.js +12 -0
  142. package/dist/_browser-chunks/chunk-WZ7KR7SH.js +85 -0
  143. package/dist/_browser-chunks/chunk-XKTORVEQ.js +255 -0
  144. package/dist/_browser-chunks/chunk-XTQCLWVH.js +1500 -0
  145. package/dist/_browser-chunks/chunk-YI2IBIQS.js +7 -0
  146. package/dist/_browser-chunks/chunk-ZEHRUHTA.js +6 -0
  147. package/dist/_browser-chunks/chunk-ZHKZKFY4.js +199 -0
  148. package/dist/_browser-chunks/matchers-YLBYSYAF.js +1263 -0
  149. package/dist/_browser-chunks/react-dom-client-4OHE3QDV.js +9 -0
  150. package/dist/_node-chunks/attached-runtime-PDBJ2EGV.js +282 -0
  151. package/dist/_node-chunks/builder-manager-VLL26RPG.js +1139 -0
  152. package/dist/_node-chunks/chunk-3CSGIJKG.js +499 -0
  153. package/dist/_node-chunks/chunk-3W4KR5GX.js +2609 -0
  154. package/dist/_node-chunks/chunk-5NRWU7S2.js +194 -0
  155. package/dist/_node-chunks/chunk-5SMIGUYF.js +102 -0
  156. package/dist/_node-chunks/chunk-63LPGIV4.js +1049 -0
  157. package/dist/_node-chunks/chunk-6DHTL5G2.js +35 -0
  158. package/dist/_node-chunks/chunk-6DRVJCYP.js +299 -0
  159. package/dist/_node-chunks/chunk-7CV4VEA2.js +620 -0
  160. package/dist/_node-chunks/chunk-7KD5DKGZ.js +79 -0
  161. package/dist/_node-chunks/chunk-7O2UIVID.js +82 -0
  162. package/dist/_node-chunks/chunk-7OY4VMAT.js +90 -0
  163. package/dist/_node-chunks/chunk-AAL6X7YG.js +1986 -0
  164. package/dist/_node-chunks/chunk-ACSO4HQP.js +32 -0
  165. package/dist/_node-chunks/chunk-BDU3ZUMK.js +98 -0
  166. package/dist/_node-chunks/chunk-BMJPOQ2S.js +11 -0
  167. package/dist/_node-chunks/chunk-BNEC3EBC.js +28 -0
  168. package/dist/_node-chunks/chunk-BPL3ERBH.js +347 -0
  169. package/dist/_node-chunks/chunk-BXDMSX3D.js +30600 -0
  170. package/dist/_node-chunks/chunk-C3PLG47Q.js +25 -0
  171. package/dist/_node-chunks/chunk-CEDR5CNM.js +74 -0
  172. package/dist/_node-chunks/chunk-CKE4R4NL.js +26 -0
  173. package/dist/_node-chunks/chunk-CSFNS7HA.js +21 -0
  174. package/dist/_node-chunks/chunk-CZ3V3HHK.js +223 -0
  175. package/dist/_node-chunks/chunk-DNV3LPV3.js +33 -0
  176. package/dist/_node-chunks/chunk-DPILYJH4.js +33 -0
  177. package/dist/_node-chunks/chunk-DQ44ZAEM.js +25 -0
  178. package/dist/_node-chunks/chunk-DR7NW2MI.js +104 -0
  179. package/dist/_node-chunks/chunk-DRCP3DQF.js +209 -0
  180. package/dist/_node-chunks/chunk-EBWZKN2I.js +1297 -0
  181. package/dist/_node-chunks/chunk-ECOW63CV.js +92 -0
  182. package/dist/_node-chunks/chunk-ENBDAHOV.js +18 -0
  183. package/dist/_node-chunks/chunk-FAEOR2AW.js +40 -0
  184. package/dist/_node-chunks/chunk-FERXOKZY.js +80 -0
  185. package/dist/_node-chunks/chunk-FJFB7TWU.js +495 -0
  186. package/dist/_node-chunks/chunk-FQGQ5KHN.js +63 -0
  187. package/dist/_node-chunks/chunk-FR2ZDWKJ.js +45 -0
  188. package/dist/_node-chunks/chunk-FRBE7ES4.js +59 -0
  189. package/dist/_node-chunks/chunk-FWAF5NBL.js +20 -0
  190. package/dist/_node-chunks/chunk-FXBZWUW3.js +7044 -0
  191. package/dist/_node-chunks/chunk-FZ453CHY.js +25 -0
  192. package/dist/_node-chunks/chunk-G2ZUFOHU.js +68 -0
  193. package/dist/_node-chunks/chunk-GBVWRZHP.js +23 -0
  194. package/dist/_node-chunks/chunk-GGE7TBVX.js +121 -0
  195. package/dist/_node-chunks/chunk-GJSYGBI5.js +47 -0
  196. package/dist/_node-chunks/chunk-GKHLTHYM.js +4744 -0
  197. package/dist/_node-chunks/chunk-GQYATLH6.js +3708 -0
  198. package/dist/_node-chunks/chunk-HCP5DG52.js +2743 -0
  199. package/dist/_node-chunks/chunk-HVOSLI2K.js +20 -0
  200. package/dist/_node-chunks/chunk-ID3WA6WR.js +171 -0
  201. package/dist/_node-chunks/chunk-IGOX6TUG.js +95 -0
  202. package/dist/_node-chunks/chunk-IL7YA7QJ.js +148 -0
  203. package/dist/_node-chunks/chunk-IUPE4SU2.js +688 -0
  204. package/dist/_node-chunks/chunk-JVWXCB3L.js +7179 -0
  205. package/dist/_node-chunks/chunk-K4O2ZAMU.js +57 -0
  206. package/dist/_node-chunks/chunk-KRWR44KT.js +25 -0
  207. package/dist/_node-chunks/chunk-KWNBN3DV.js +132 -0
  208. package/dist/_node-chunks/chunk-LG3NMXCM.js +20 -0
  209. package/dist/_node-chunks/chunk-LH5QBX2U.js +1001 -0
  210. package/dist/_node-chunks/chunk-LX2XSPPL.js +59 -0
  211. package/dist/_node-chunks/chunk-M4QNXI37.js +21 -0
  212. package/dist/_node-chunks/chunk-MBPHOLXB.js +1218 -0
  213. package/dist/_node-chunks/chunk-MIWBXEUH.js +26 -0
  214. package/dist/_node-chunks/chunk-MKUA4ZCG.js +1193 -0
  215. package/dist/_node-chunks/chunk-MQC7ZY6L.js +5468 -0
  216. package/dist/_node-chunks/chunk-MRCPS4S3.js +48 -0
  217. package/dist/_node-chunks/chunk-MY7UVHPL.js +153 -0
  218. package/dist/_node-chunks/chunk-ND323XCC.js +33 -0
  219. package/dist/_node-chunks/chunk-NGFFEW2B.js +972 -0
  220. package/dist/_node-chunks/chunk-OPG46TLN.js +1119 -0
  221. package/dist/_node-chunks/chunk-PEL4YXU6.js +19 -0
  222. package/dist/_node-chunks/chunk-QFXAGOIO.js +115 -0
  223. package/dist/_node-chunks/chunk-QGC3UWR5.js +110 -0
  224. package/dist/_node-chunks/chunk-QGVU7IFS.js +414 -0
  225. package/dist/_node-chunks/chunk-QOFBJXPH.js +1525 -0
  226. package/dist/_node-chunks/chunk-QVLHVO4X.js +532 -0
  227. package/dist/_node-chunks/chunk-R2ZCFA7I.js +60 -0
  228. package/dist/_node-chunks/chunk-RC4HPD5Q.js +26 -0
  229. package/dist/_node-chunks/chunk-RJXAXHDJ.js +415 -0
  230. package/dist/_node-chunks/chunk-SGEPJMTU.js +1094 -0
  231. package/dist/_node-chunks/chunk-SYUOBOB5.js +35 -0
  232. package/dist/_node-chunks/chunk-T5VZYRL2.js +40 -0
  233. package/dist/_node-chunks/chunk-T6IU66AM.js +69 -0
  234. package/dist/_node-chunks/chunk-THDTJJMO.js +611 -0
  235. package/dist/_node-chunks/chunk-TNFH4Y4G.js +1133 -0
  236. package/dist/_node-chunks/chunk-TY2ZY7AO.js +155 -0
  237. package/dist/_node-chunks/chunk-TZIT6SZP.js +49 -0
  238. package/dist/_node-chunks/chunk-VG2KFIOW.js +45 -0
  239. package/dist/_node-chunks/chunk-VSHYJR23.js +56 -0
  240. package/dist/_node-chunks/chunk-VUMGWJ6Y.js +844 -0
  241. package/dist/_node-chunks/chunk-WVRM6DQU.js +3767 -0
  242. package/dist/_node-chunks/chunk-YU5TVYPS.js +87 -0
  243. package/dist/_node-chunks/chunk-ZBWAA2EY.js +2106 -0
  244. package/dist/_node-chunks/chunk-ZD5TUA6I.js +20 -0
  245. package/dist/_node-chunks/chunk-ZFLK7MY5.js +144 -0
  246. package/dist/_node-chunks/dist-7OJKTBKL.js +27 -0
  247. package/dist/_node-chunks/dist-MWP6WLW4.js +16 -0
  248. package/dist/_node-chunks/local-runtime-V5YTRN24.js +78 -0
  249. package/dist/_node-chunks/mdx-plugin-CBOD52VP.js +7813 -0
  250. package/dist/_node-chunks/monorepo-GF6H53U4.js +121 -0
  251. package/dist/_node-chunks/monorepo-optimized-tests-relaxed-limits-no-story-deletion-K4TTV2DQ.js +121 -0
  252. package/dist/_node-chunks/optimized-tests-KOTSVWTN.js +22 -0
  253. package/dist/_node-chunks/pattern-copy-play-M2QNC4IZ.js +807 -0
  254. package/dist/_node-chunks/postinstallAddon-WXKJL6DP.js +20 -0
  255. package/dist/_node-chunks/rehype-external-links-3IDE4CYH.js +121 -0
  256. package/dist/_node-chunks/rehype-slug-GKB3WS3U.js +52 -0
  257. package/dist/_node-chunks/relaxed-limits-C6QU365N.js +117 -0
  258. package/dist/_node-chunks/run-TMVS3KKA.js +4792 -0
  259. package/dist/_node-chunks/run-XWBUPXLN.js +103 -0
  260. package/dist/_node-chunks/session-id-VMH57SKN.js +23 -0
  261. package/dist/_node-chunks/setup-KEEJK4WI.js +278 -0
  262. package/dist/_node-chunks/vitest.config.4.template-74HEE4WJ.js +54 -0
  263. package/dist/actions/decorator.d.ts +7 -0
  264. package/dist/actions/decorator.js +44 -0
  265. package/dist/actions/index.d.ts +67 -0
  266. package/dist/actions/index.js +29 -0
  267. package/dist/addon-a11y/index.d.ts +52 -0
  268. package/dist/addon-a11y/index.js +17 -0
  269. package/dist/addon-a11y/manager.js +1432 -0
  270. package/dist/addon-a11y/preset.js +18 -0
  271. package/dist/addon-a11y/preview.d.ts +17 -0
  272. package/dist/addon-a11y/preview.js +16 -0
  273. package/dist/addon-docs/blocks.d.ts +1080 -0
  274. package/dist/addon-docs/blocks.js +2537 -0
  275. package/dist/addon-docs/index.d.ts +236 -0
  276. package/dist/addon-docs/index.js +16 -0
  277. package/dist/addon-docs/manager.js +90 -0
  278. package/dist/addon-docs/mdx-react-shim.d.ts +1 -0
  279. package/dist/addon-docs/mdx-react-shim.js +2 -0
  280. package/dist/addon-docs/preset.js +378 -0
  281. package/dist/addon-docs/preview.d.ts +4 -0
  282. package/dist/addon-docs/preview.js +7 -0
  283. package/dist/addon-links/index.d.ts +22 -0
  284. package/dist/addon-links/index.js +23 -0
  285. package/dist/addon-links/manager.js +14 -0
  286. package/dist/addon-links/preview.d.ts +6 -0
  287. package/dist/addon-links/preview.js +12 -0
  288. package/dist/addon-links/react/index.d.ts +25 -0
  289. package/dist/addon-links/react/index.js +55 -0
  290. package/dist/addon-mcp/preset.js +1353 -0
  291. package/dist/addon-mcp/preview.js +29 -0
  292. package/dist/addon-mcp/tools/preview-stories/preview-stories-app-script.js +1129 -0
  293. package/dist/addon-ondevice-actions/index.d.ts +4 -0
  294. package/dist/addon-ondevice-actions/index.js +11 -0
  295. package/dist/addon-ondevice-actions/register.js +11 -0
  296. package/dist/addon-ondevice-controls/index.d.ts +6 -0
  297. package/dist/addon-ondevice-controls/index.js +14 -0
  298. package/dist/addon-ondevice-controls/register.js +10 -0
  299. package/dist/addon-pseudo-states/index.d.ts +35 -0
  300. package/dist/addon-pseudo-states/index.js +15 -0
  301. package/dist/addon-pseudo-states/manager.js +53 -0
  302. package/dist/addon-pseudo-states/preview.d.ts +9 -0
  303. package/dist/addon-pseudo-states/preview.js +10 -0
  304. package/dist/addon-themes/index.d.ts +80 -0
  305. package/dist/addon-themes/index.js +104 -0
  306. package/dist/addon-themes/manager.js +97 -0
  307. package/dist/addon-themes/postinstall.js +33 -0
  308. package/dist/addon-themes/preview.d.ts +6 -0
  309. package/dist/addon-themes/preview.js +8 -0
  310. package/dist/addon-vitest/constants.d.ts +132 -0
  311. package/dist/addon-vitest/constants.js +66 -0
  312. package/dist/addon-vitest/index.d.ts +4 -0
  313. package/dist/addon-vitest/index.js +8 -0
  314. package/dist/addon-vitest/manager.js +665 -0
  315. package/dist/addon-vitest/node/coverage-reporter.js +1284 -0
  316. package/dist/addon-vitest/node/vitest.js +674 -0
  317. package/dist/addon-vitest/postinstall.js +24 -0
  318. package/dist/addon-vitest/preset.js +942 -0
  319. package/dist/addon-vitest/vitest-plugin/global-setup.js +162 -0
  320. package/dist/addon-vitest/vitest-plugin/index.d.ts +56 -0
  321. package/dist/addon-vitest/vitest-plugin/index.js +463 -0
  322. package/dist/addon-vitest/vitest-plugin/setup-file-with-project-annotations.js +9 -0
  323. package/dist/addon-vitest/vitest-plugin/setup-file.browser.4.js +20 -0
  324. package/dist/addon-vitest/vitest-plugin/setup-file.js +50 -0
  325. package/dist/addon-vitest/vitest-plugin/test-utils.js +128 -0
  326. package/dist/babel/index.d.ts +1550 -0
  327. package/dist/babel/index.js +55 -0
  328. package/dist/backgrounds/index.d.ts +6 -0
  329. package/dist/backgrounds/index.js +15 -0
  330. package/dist/bin/core.js +1706 -0
  331. package/dist/bin/dispatcher.js +45 -0
  332. package/dist/bin/loader.js +116 -0
  333. package/dist/builder-vite/index.d.ts +50 -0
  334. package/dist/builder-vite/index.js +245 -0
  335. package/dist/builder-vite/preset.js +27 -0
  336. package/dist/channels/index.d.ts +2 -0
  337. package/dist/channels/index.js +352 -0
  338. package/dist/chunk-BCoJQE-f.d.ts +602 -0
  339. package/dist/chunk-BGhyFTJO.d.ts +115 -0
  340. package/dist/chunk-BGkgZp-H.d.ts +214 -0
  341. package/dist/chunk-BXLImeLy.d.ts +197 -0
  342. package/dist/chunk-Bpi2tz-6.d.ts +511 -0
  343. package/dist/chunk-C6PAgHLT.d.ts +12 -0
  344. package/dist/chunk-CFk6djyM.d.ts +55 -0
  345. package/dist/chunk-CNqjcOmK.d.ts +15 -0
  346. package/dist/chunk-CT2iXaHz.d.ts +179 -0
  347. package/dist/chunk-CV4-Z2pn.d.ts +30 -0
  348. package/dist/chunk-CYuvV2sR.d.ts +282 -0
  349. package/dist/chunk-Ct9xd6IM.d.ts +65 -0
  350. package/dist/chunk-D0NUmzXp.d.ts +253 -0
  351. package/dist/chunk-D7DwV41f.d.ts +3622 -0
  352. package/dist/chunk-DDd8BhTY.d.ts +79 -0
  353. package/dist/chunk-DROZ9oel.d.ts +669 -0
  354. package/dist/chunk-DaVb55-_.d.ts +124 -0
  355. package/dist/chunk-DgRNfmj_.d.ts +40 -0
  356. package/dist/chunk-DgzPaTw9.d.ts +61 -0
  357. package/dist/chunk-Dm-iHJ-s.d.ts +59 -0
  358. package/dist/chunk-DoIGKY33.d.ts +666 -0
  359. package/dist/chunk-Dr3R0DXk.d.ts +40 -0
  360. package/dist/chunk-Dw_4ad2Y.d.ts +34 -0
  361. package/dist/chunk-Fg1Fm__9.d.ts +13091 -0
  362. package/dist/chunk-FjDVzZTj.d.ts +62 -0
  363. package/dist/chunk-Susgfkap.d.ts +20 -0
  364. package/dist/chunk-XP8oHzpE.d.ts +6 -0
  365. package/dist/chunk-pcFXCimE.d.ts +741 -0
  366. package/dist/cli/index.d.ts +321 -0
  367. package/dist/cli/index.js +703 -0
  368. package/dist/cli/skills/content/index.d.ts +72 -0
  369. package/dist/cli/skills/content/index.js +335 -0
  370. package/dist/cli/tools/sdk/child-host.d.ts +61 -0
  371. package/dist/cli/tools/sdk/child-host.js +131 -0
  372. package/dist/cli/tools/sdk/index.d.ts +137 -0
  373. package/dist/cli/tools/sdk/index.js +44 -0
  374. package/dist/cli-commands/bin/index.js +25 -0
  375. package/dist/client-logger/index.d.ts +31 -0
  376. package/dist/client-logger/index.js +65 -0
  377. package/dist/common/index.d.ts +1091 -0
  378. package/dist/common/index.js +358 -0
  379. package/dist/components/index.d.ts +1727 -0
  380. package/dist/components/index.js +7982 -0
  381. package/dist/core-events/index.d.ts +156 -0
  382. package/dist/core-events/index.js +138 -0
  383. package/dist/core-server/index.d.ts +2200 -0
  384. package/dist/core-server/index.js +4577 -0
  385. package/dist/core-server/presets/common-manager.js +3744 -0
  386. package/dist/core-server/presets/common-override-preset.js +83 -0
  387. package/dist/core-server/presets/common-preset.js +2194 -0
  388. package/dist/create/bin/index.js +23 -0
  389. package/dist/create/index.js +25 -0
  390. package/dist/csf/csf-utils.d.ts +2 -0
  391. package/dist/csf/csf-utils.js +19 -0
  392. package/dist/csf/index.d.ts +7 -0
  393. package/dist/csf/index.js +2077 -0
  394. package/dist/csf-tools/index.d.ts +1161 -0
  395. package/dist/csf-tools/index.js +738 -0
  396. package/dist/docs-tools/index.d.ts +197 -0
  397. package/dist/docs-tools/index.js +61 -0
  398. package/dist/highlight/index.d.ts +10 -0
  399. package/dist/highlight/index.js +15 -0
  400. package/dist/instrumenter/index.d.ts +113 -0
  401. package/dist/instrumenter/index.js +2597 -0
  402. package/dist/manager/_manager-chunks/globals-runtime-BKQscPdC.js +5661 -0
  403. package/dist/manager/_manager-chunks/globals-runtime-BY3epqww.js +1807 -0
  404. package/dist/manager/_manager-chunks/globals-runtime-BdGkqNEt.js +45 -0
  405. package/dist/manager/_manager-chunks/globals-runtime-Bj5KDUJi.js +8935 -0
  406. package/dist/manager/_manager-chunks/globals-runtime-Bs75QQ_I.js +9987 -0
  407. package/dist/manager/_manager-chunks/globals-runtime-BweHuXkK.js +6838 -0
  408. package/dist/manager/_manager-chunks/globals-runtime-CA8AuIRT.js +7617 -0
  409. package/dist/manager/_manager-chunks/globals-runtime-CBviMKtt.js +446 -0
  410. package/dist/manager/_manager-chunks/globals-runtime-CJL1dQtn.js +4674 -0
  411. package/dist/manager/_manager-chunks/globals-runtime-CfurFwS_.js +121 -0
  412. package/dist/manager/_manager-chunks/globals-runtime-CvIgTRVu.js +1190 -0
  413. package/dist/manager/_manager-chunks/globals-runtime-DBba3I9c.js +5307 -0
  414. package/dist/manager/_manager-chunks/globals-runtime-DvV_TF3-.js +12214 -0
  415. package/dist/manager/_manager-chunks/globals-runtime-DwFqpqya.js +722 -0
  416. package/dist/manager/_manager-chunks/globals-runtime-NwJK8t0T.js +9274 -0
  417. package/dist/manager/_manager-chunks/globals-runtime-WZKaeKm9.js +4091 -0
  418. package/dist/manager/_manager-chunks/globals-runtime-wjkxyMn0.js +5283 -0
  419. package/dist/manager/_manager-chunks/runtime-5B2mWjEm.js +294 -0
  420. package/dist/manager/_manager-chunks/runtime-5o_11Jae.js +78 -0
  421. package/dist/manager/_manager-chunks/runtime-B_nqedQW.js +197 -0
  422. package/dist/manager/_manager-chunks/runtime-BdGkqNEt.js +45 -0
  423. package/dist/manager/_manager-chunks/runtime-Bs3bEhuy.js +1232 -0
  424. package/dist/manager/_manager-chunks/runtime-CBQsKmch.js +2351 -0
  425. package/dist/manager/_manager-chunks/runtime-DG61zYUm.js +1158 -0
  426. package/dist/manager/_manager-chunks/runtime-DtCVCy4G.js +6841 -0
  427. package/dist/manager/_manager-chunks/runtime-P663lpsR.js +528 -0
  428. package/dist/manager/_manager-chunks/runtime-eBAgOym6.js +9010 -0
  429. package/dist/manager/_manager-chunks/runtime-j9yqh0tr.js +1023 -0
  430. package/dist/manager/_manager-chunks/runtime-jj8qYc2n.js +3488 -0
  431. package/dist/manager/globals-runtime.js +2 -0
  432. package/dist/manager/globals.d.ts +23 -0
  433. package/dist/manager/globals.js +26 -0
  434. package/dist/manager/manager-stores.d.ts +2 -0
  435. package/dist/manager/manager-stores.js +19 -0
  436. package/dist/manager/runtime.js +2 -0
  437. package/dist/manager-api/index.d.ts +2 -0
  438. package/dist/manager-api/index.js +3247 -0
  439. package/dist/manager-errors.d.ts +89 -0
  440. package/dist/manager-errors.js +20 -0
  441. package/dist/mcp/index.d.ts +270 -0
  442. package/dist/mcp/index.js +305 -0
  443. package/dist/mocking-utils/index.d.ts +689 -0
  444. package/dist/mocking-utils/index.js +526 -0
  445. package/dist/mocking-utils/mocker-runtime.js +1254 -0
  446. package/dist/nextjs-vite/config/preview.js +3 -0
  447. package/dist/nextjs-vite/export-mocks/cache/index.d.ts +25 -0
  448. package/dist/nextjs-vite/export-mocks/cache/index.js +29 -0
  449. package/dist/nextjs-vite/export-mocks/headers/index.d.ts +37 -0
  450. package/dist/nextjs-vite/export-mocks/headers/index.js +54 -0
  451. package/dist/nextjs-vite/export-mocks/link/index.d.ts +9 -0
  452. package/dist/nextjs-vite/export-mocks/link/index.js +59 -0
  453. package/dist/nextjs-vite/export-mocks/navigation/index.d.ts +28 -0
  454. package/dist/nextjs-vite/export-mocks/navigation/index.js +58 -0
  455. package/dist/nextjs-vite/export-mocks/router/index.d.ts +34 -0
  456. package/dist/nextjs-vite/export-mocks/router/index.js +63 -0
  457. package/dist/nextjs-vite/index.d.ts +92 -0
  458. package/dist/nextjs-vite/index.js +59 -0
  459. package/dist/nextjs-vite/node/index.d.ts +6 -0
  460. package/dist/nextjs-vite/node/index.js +20 -0
  461. package/dist/nextjs-vite/node-stand-ins/index.d.ts +68 -0
  462. package/dist/nextjs-vite/node-stand-ins/index.js +145 -0
  463. package/dist/nextjs-vite/preset.js +727 -0
  464. package/dist/nextjs-vite/preview.d.ts +20 -0
  465. package/dist/nextjs-vite/preview.js +11 -0
  466. package/dist/nextjs-vite/vite-plugin/index.d.ts +6 -0
  467. package/dist/nextjs-vite/vite-plugin/index.js +19 -0
  468. package/dist/nextjs-vite-plugin/index.d.ts +27 -0
  469. package/dist/nextjs-vite-plugin/index.js +908 -0
  470. package/dist/nextjs-vite-plugin/mocks/storybook.global.js +29 -0
  471. package/dist/nextjs-vite-plugin/plugins/next-image/alias/image-context.js +8 -0
  472. package/dist/nextjs-vite-plugin/plugins/next-image/alias/image-default-loader.js +23 -0
  473. package/dist/nextjs-vite-plugin/plugins/next-image/alias/next-image.js +28 -0
  474. package/dist/nextjs-vite-plugin/plugins/next-image/alias/next-legacy-image.js +17 -0
  475. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/cache/index.js +29 -0
  476. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/dynamic/index.js +40 -0
  477. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/headers/index.js +55 -0
  478. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/link/index.js +63 -0
  479. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/navigation/index.js +71 -0
  480. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/router/index.js +74 -0
  481. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/rsc/server-only.js +7 -0
  482. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/safe-stable-stringify/index.js +13 -0
  483. package/dist/nextjs-vite-plugin/plugins/next-mocks/compatibility/draft-mode.compat.js +7 -0
  484. package/dist/node-logger/index.d.ts +488 -0
  485. package/dist/node-logger/index.js +41 -0
  486. package/dist/oxc-parser/index.d.ts +99 -0
  487. package/dist/oxc-parser/index.js +273 -0
  488. package/dist/oxc-parser/worker.js +37 -0
  489. package/dist/preview/_chunks/runtime-BJwGQok8.js +3873 -0
  490. package/dist/preview/_chunks/runtime-BPwAnlRx.js +10411 -0
  491. package/dist/preview/_chunks/runtime-BUnOhg9h.js +6838 -0
  492. package/dist/preview/_chunks/runtime-BZ4pNS3g.js +284 -0
  493. package/dist/preview/_chunks/runtime-Bcv1hJky.js +6305 -0
  494. package/dist/preview/_chunks/runtime-BdGkqNEt.js +45 -0
  495. package/dist/preview/_chunks/runtime-BgPhfM5P.js +3681 -0
  496. package/dist/preview/_chunks/runtime-BhSZ1Mwt.js +5262 -0
  497. package/dist/preview/_chunks/runtime-BsMjBzuq.js +53 -0
  498. package/dist/preview/_chunks/runtime-C1jgT6tJ.js +4091 -0
  499. package/dist/preview/_chunks/runtime-CkOhMcXf.js +387 -0
  500. package/dist/preview/_chunks/runtime-WapFVPAh.js +8484 -0
  501. package/dist/preview/globals.d.ts +16 -0
  502. package/dist/preview/globals.js +20 -0
  503. package/dist/preview/runtime.js +6 -0
  504. package/dist/preview-api/index.d.ts +4 -0
  505. package/dist/preview-api/index.js +149 -0
  506. package/dist/preview-errors.d.ts +186 -0
  507. package/dist/preview-errors.js +56 -0
  508. package/dist/react/docgen/docgen-worker.js +37 -0
  509. package/dist/react/entry-preview-argtypes.js +9 -0
  510. package/dist/react/entry-preview-docs.js +12 -0
  511. package/dist/react/entry-preview-rsc.js +11 -0
  512. package/dist/react/entry-preview.js +22 -0
  513. package/dist/react/index.d.ts +119 -0
  514. package/dist/react/index.js +28 -0
  515. package/dist/react/preset.js +300 -0
  516. package/dist/react/preview.d.ts +2 -0
  517. package/dist/react/preview.js +12 -0
  518. package/dist/react-native/bin/get-stories.js +34 -0
  519. package/dist/react-native/index.d.ts +160 -0
  520. package/dist/react-native/index.js +1362 -0
  521. package/dist/react-native/metro/node.d.ts +83 -0
  522. package/dist/react-native/metro/node.js +22 -0
  523. package/dist/react-native/metro/withForkbook.d.ts +2269 -0
  524. package/dist/react-native/metro/withForkbook.js +139 -0
  525. package/dist/react-native/preview.d.ts +6 -0
  526. package/dist/react-native/preview.js +20 -0
  527. package/dist/react-native/scripts/generate.d.ts +22 -0
  528. package/dist/react-native/scripts/generate.js +18 -0
  529. package/dist/react-native/stub.js +20 -0
  530. package/dist/react-native-theming/index.d.ts +119 -0
  531. package/dist/react-native-theming/index.js +316 -0
  532. package/dist/react-native-ui/index.d.ts +129 -0
  533. package/dist/react-native-ui/index.js +1448 -0
  534. package/dist/react-native-ui-common/index.d.ts +229 -0
  535. package/dist/react-native-ui-common/index.js +514 -0
  536. package/dist/react-vite/index.d.ts +4 -0
  537. package/dist/react-vite/index.js +8 -0
  538. package/dist/react-vite/node/index.d.ts +6 -0
  539. package/dist/react-vite/node/index.js +20 -0
  540. package/dist/react-vite/preset.d.ts +6 -0
  541. package/dist/react-vite/preset.js +21 -0
  542. package/dist/router/index.d.ts +209 -0
  543. package/dist/router/index.js +1259 -0
  544. package/dist/server-errors.d.ts +2 -0
  545. package/dist/server-errors.js +149 -0
  546. package/dist/shared/open-service/index.d.ts +3 -0
  547. package/dist/shared/open-service/index.js +115 -0
  548. package/dist/shared/open-service/services/docgen/worker/docgen-worker.js +75 -0
  549. package/dist/shared/open-service/toolsets/docs/public.d.ts +1296 -0
  550. package/dist/shared/open-service/toolsets/docs/public.js +991 -0
  551. package/dist/telemetry/index.d.ts +314 -0
  552. package/dist/telemetry/index.js +101 -0
  553. package/dist/test/index.d.ts +158 -0
  554. package/dist/test/index.js +19656 -0
  555. package/dist/theming/create.d.ts +15 -0
  556. package/dist/theming/create.js +12 -0
  557. package/dist/theming/index.d.ts +54 -0
  558. package/dist/theming/index.js +536 -0
  559. package/dist/types/index.d.ts +2 -0
  560. package/dist/types/index.js +48 -0
  561. package/dist/viewport/index.d.ts +275 -0
  562. package/dist/viewport/index.js +21 -0
  563. package/package.json +1030 -4
  564. package/template/nextjs-vite/cli/.eslintrc.json +6 -0
  565. package/template/nextjs-vite/cli/js/Button.jsx +42 -0
  566. package/template/nextjs-vite/cli/js/Button.stories.js +49 -0
  567. package/template/nextjs-vite/cli/js/Configure.mdx +470 -0
  568. package/template/nextjs-vite/cli/js/Header.jsx +58 -0
  569. package/template/nextjs-vite/cli/js/Header.stories.js +30 -0
  570. package/template/nextjs-vite/cli/js/Page.jsx +68 -0
  571. package/template/nextjs-vite/cli/js/Page.stories.js +28 -0
  572. package/template/nextjs-vite/cli/ts/Button.stories.ts +54 -0
  573. package/template/nextjs-vite/cli/ts/Button.tsx +39 -0
  574. package/template/nextjs-vite/cli/ts/Configure.mdx +446 -0
  575. package/template/nextjs-vite/cli/ts/Header.stories.ts +34 -0
  576. package/template/nextjs-vite/cli/ts/Header.tsx +54 -0
  577. package/template/nextjs-vite/cli/ts/Page.stories.ts +33 -0
  578. package/template/nextjs-vite/cli/ts/Page.tsx +73 -0
  579. package/template/react/cli/.eslintrc.json +5 -0
  580. package/template/react/cli/js/Button.jsx +39 -0
  581. package/template/react/cli/js/Button.stories.js +49 -0
  582. package/template/react/cli/js/Header.jsx +56 -0
  583. package/template/react/cli/js/Header.stories.js +29 -0
  584. package/template/react/cli/js/Page.jsx +69 -0
  585. package/template/react/cli/js/Page.stories.js +28 -0
  586. package/template/react/cli/ts/Button.stories.ts +54 -0
  587. package/template/react/cli/ts/Button.tsx +37 -0
  588. package/template/react/cli/ts/Header.stories.ts +34 -0
  589. package/template/react/cli/ts/Header.tsx +56 -0
  590. package/template/react/cli/ts/Page.stories.ts +33 -0
  591. package/template/react/cli/ts/Page.tsx +73 -0
  592. package/template/react-vite/cli/.eslintrc.json +5 -0
  593. package/template/react-vite/cli/js/Button.jsx +39 -0
  594. package/template/react-vite/cli/js/Button.stories.js +49 -0
  595. package/template/react-vite/cli/js/Header.jsx +56 -0
  596. package/template/react-vite/cli/js/Header.stories.js +29 -0
  597. package/template/react-vite/cli/js/Page.jsx +69 -0
  598. package/template/react-vite/cli/js/Page.stories.js +28 -0
  599. package/template/react-vite/cli/ts/Button.stories.ts +54 -0
  600. package/template/react-vite/cli/ts/Button.tsx +37 -0
  601. package/template/react-vite/cli/ts/Header.stories.ts +34 -0
  602. package/template/react-vite/cli/ts/Header.tsx +56 -0
  603. package/template/react-vite/cli/ts/Page.stories.ts +33 -0
  604. package/template/react-vite/cli/ts/Page.tsx +73 -0
@@ -0,0 +1,1133 @@
1
+ import CJS_COMPAT_NODE_URL_upaeg5sjpn from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_upaeg5sjpn from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_upaeg5sjpn from "node:module";
4
+
5
+ var __filename = CJS_COMPAT_NODE_URL_upaeg5sjpn.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_upaeg5sjpn.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_upaeg5sjpn.createRequire(import.meta.url);
8
+
9
+ // ------------------------------------------------------------
10
+ // end of CJS compatibility banner, injected by Forkbook's esbuild configuration
11
+ // ------------------------------------------------------------
12
+ import {
13
+ createCsfObject,
14
+ pathForNode,
15
+ unwrapExpression
16
+ } from "./chunk-HCP5DG52.js";
17
+ import {
18
+ invariant
19
+ } from "./chunk-CKE4R4NL.js";
20
+
21
+ // src/csf-tools/ConfigFile.ts
22
+ import { readFile, writeFile } from "node:fs/promises";
23
+ import {
24
+ babelParse,
25
+ generate,
26
+ recast,
27
+ types as t2,
28
+ traverse as traverse2
29
+ } from "@aussieljk/forkbook/internal/babel";
30
+ import { logger } from "@aussieljk/forkbook/internal/node-logger";
31
+ import { dedent } from "ts-dedent";
32
+
33
+ // src/csf-tools/ConfigObject.ts
34
+ import { traverse, types as t } from "@aussieljk/forkbook/internal/babel";
35
+ var isConfigFactory = (callee) => {
36
+ if (!callee.isIdentifier())
37
+ return !1;
38
+ let binding = callee.scope.getBinding(callee.node.name), name = binding?.path.isImportSpecifier() ? binding.path.node.imported : binding ? void 0 : callee.node;
39
+ return t.isIdentifier(name) && ["defineMain", "definePreview", "defineConfig"].includes(name.name);
40
+ }, isExportReference = (reference) => {
41
+ let parent = reference.parentPath;
42
+ return parent ? parent.isTSAsExpression() || parent.isTSSatisfiesExpression() || parent.isTSNonNullExpression() ? isExportReference(parent) : reference.isExportNamedDeclaration() || parent.isExportDefaultDeclaration() || parent.isExportSpecifier() || parent.isAssignmentExpression() && t.isMemberExpression(parent.node.left) && t.isIdentifier(parent.node.left.object, { name: "module" }) && t.isIdentifier(parent.node.left.property, { name: "exports" }) : !1;
43
+ };
44
+ function createConfigObject(config, mode, report, markChanged) {
45
+ let result = {
46
+ ok: !1,
47
+ diagnostic: {
48
+ code: "unsupported-initializer",
49
+ target: { kind: "config" },
50
+ path: [],
51
+ message: "Cannot find a mutable config root"
52
+ }
53
+ }, reject = (node, code, message) => {
54
+ result = {
55
+ ok: !1,
56
+ diagnostic: {
57
+ code,
58
+ target: { kind: "config" },
59
+ path: [],
60
+ message,
61
+ ...node.loc ? { loc: node.loc } : {}
62
+ }
63
+ };
64
+ };
65
+ return traverse(config._ast, {
66
+ Program(program) {
67
+ program.stop();
68
+ let assignments = [];
69
+ program.traverse({
70
+ AssignmentExpression(path) {
71
+ let { left } = path.node;
72
+ t.isMemberExpression(left) && (t.isIdentifier(left.object, { name: "module" }) && (t.isIdentifier(left.property, { name: "exports" }) || t.isStringLiteral(left.property, { value: "exports" })) || t.isIdentifier(left.object, { name: "exports" })) && assignments.push(path);
73
+ }
74
+ });
75
+ let root = pathForNode(program, config._exportsObject);
76
+ if (root) {
77
+ let declaration = root.findParent((parent) => parent.isVariableDeclarator());
78
+ if (mode === "mutate" && Object.values(config._exportDecls).some((exported) => exported !== declaration?.node)) {
79
+ reject(
80
+ root.node,
81
+ "ambiguous-binding",
82
+ "Cannot mutate mixed default and named config exports"
83
+ );
84
+ return;
85
+ }
86
+ for (let parent = root.parentPath; parent && !parent.isProgram(); parent = parent.parentPath) {
87
+ if (!parent.isCallExpression())
88
+ continue;
89
+ let callee = parent.get("callee");
90
+ if (!(callee.isMemberExpression() && !callee.node.computed && t.isIdentifier(callee.node.property, { name: "type" }) && parent.node.arguments.length === 0) && !(isConfigFactory(callee) && parent.node.arguments.length === 1)) {
91
+ reject(
92
+ parent.node,
93
+ "unsupported-initializer",
94
+ "Cannot mutate an arbitrary config factory call"
95
+ );
96
+ return;
97
+ }
98
+ }
99
+ let statement = root.getStatementParent();
100
+ if (statement?.isExpressionStatement() && (!t.isAssignmentExpression(statement.node.expression) || !t.isMemberExpression(statement.node.expression.left) || !t.isIdentifier(statement.node.expression.left.object, { name: "module" }) || !t.isIdentifier(statement.node.expression.left.property, { name: "exports" }))) {
101
+ reject(
102
+ root.node,
103
+ "ambiguous-binding",
104
+ "Cannot mutate a config that is not directly exported"
105
+ );
106
+ return;
107
+ }
108
+ if (!statement?.parentPath.isProgram() && !statement?.parentPath.isExportNamedDeclaration()) {
109
+ reject(
110
+ root.node,
111
+ "unsupported-initializer",
112
+ "Cannot mutate a config declared inside a function or conditional"
113
+ );
114
+ return;
115
+ }
116
+ if (declaration?.isVariableDeclarator() && t.isIdentifier(declaration.node.id)) {
117
+ let binding = declaration.scope.getBinding(declaration.node.id.name);
118
+ if (!binding?.constant || binding.referencePaths.length !== 1 || !binding.referencePaths.every(isExportReference)) {
119
+ reject(
120
+ declaration.node,
121
+ "ambiguous-binding",
122
+ "Cannot mutate a shared or reassigned config binding"
123
+ );
124
+ return;
125
+ }
126
+ }
127
+ if (assignments.length > 1 || assignments.some(
128
+ (assignment) => assignment.scope.hasBinding("module") || t.isMemberExpression(assignment.node.left) && assignment.node.left.computed || !assignment.parentPath.parentPath?.isProgram()
129
+ )) {
130
+ reject(
131
+ root.node,
132
+ "ambiguous-binding",
133
+ "Cannot mutate conditional, repeated, or shadowed module.exports"
134
+ );
135
+ return;
136
+ }
137
+ result = {
138
+ ok: !0,
139
+ object: createCsfObject({ kind: "config" }, root, [], report, markChanged)
140
+ };
141
+ return;
142
+ }
143
+ if (config.hasDefaultExport || assignments.length > 0) {
144
+ reject(
145
+ config._ast.program,
146
+ "unsupported-initializer",
147
+ "Cannot mutate a config without a static object initializer"
148
+ );
149
+ return;
150
+ }
151
+ let named = /* @__PURE__ */ new Map(), virtualRoot = t.objectExpression([]), seen = /* @__PURE__ */ new Set();
152
+ for (let statement of program.get("body"))
153
+ if (!(statement.isExportNamedDeclaration() && statement.node.exportKind === "type")) {
154
+ if (statement.isExportAllDeclaration() || statement.isExportNamedDeclaration() && statement.node.source) {
155
+ reject(
156
+ statement.node,
157
+ "unsupported-initializer",
158
+ "Cannot mutate re-exported config fields"
159
+ );
160
+ return;
161
+ }
162
+ if (statement.isExportNamedDeclaration())
163
+ for (let specifier of statement.get("specifiers")) {
164
+ if (!specifier.isExportSpecifier() || specifier.node.exportKind === "type")
165
+ continue;
166
+ let name = t.isIdentifier(specifier.node.exported) ? specifier.node.exported.name : specifier.node.exported.value;
167
+ if (!Object.hasOwn(config._exportDecls, name)) {
168
+ reject(
169
+ specifier.node,
170
+ "unsupported-initializer",
171
+ `Cannot mutate the unresolved ${name} export`
172
+ );
173
+ return;
174
+ }
175
+ }
176
+ }
177
+ for (let [name, node] of Object.entries(config._exportDecls)) {
178
+ let declaration = pathForNode(program, node);
179
+ if (!(declaration?.isVariableDeclarator() || declaration?.isFunctionDeclaration()) || !t.isIdentifier(declaration.node.id)) {
180
+ reject(
181
+ node,
182
+ "unsupported-initializer",
183
+ `Cannot mutate the ${name} export without an expression initializer`
184
+ );
185
+ return;
186
+ }
187
+ let binding = declaration.scope.getBinding(declaration.node.id.name);
188
+ if (!binding?.constant || seen.has(node) || mode === "mutate" && !binding.referencePaths.every(isExportReference)) {
189
+ reject(
190
+ node,
191
+ "ambiguous-binding",
192
+ `Cannot mutate the shared or reassigned ${name} export`
193
+ );
194
+ return;
195
+ }
196
+ seen.add(node);
197
+ let specifier = binding.referencePaths.find(
198
+ (path) => path.parentPath?.isExportSpecifier()
199
+ )?.parentPath, value = declaration.isFunctionDeclaration() ? t.toExpression(t.cloneNode(declaration.node)) : declaration.node.init;
200
+ if (!t.isExpression(value)) {
201
+ reject(
202
+ node,
203
+ "unsupported-initializer",
204
+ `Cannot mutate the ${name} export without an expression initializer`
205
+ );
206
+ return;
207
+ }
208
+ let property = t.objectProperty(t.stringLiteral(name), value);
209
+ virtualRoot.properties.push(property), named.set(property, {
210
+ declaration,
211
+ ...specifier?.isExportSpecifier() ? { specifier } : {}
212
+ });
213
+ }
214
+ let syncExports = () => {
215
+ for (let [property, entry] of named)
216
+ virtualRoot.properties.includes(property) || (entry.specifier ? entry.specifier.remove() : entry.declaration.remove(), named.delete(property));
217
+ for (let property of virtualRoot.properties) {
218
+ if (!t.isObjectProperty(property) || !t.isExpression(property.value))
219
+ continue;
220
+ let name = t.isIdentifier(property.key) ? property.key.name : t.isStringLiteral(property.key) ? property.key.value : void 0;
221
+ if (name === void 0)
222
+ continue;
223
+ let entry = named.get(property);
224
+ if (entry) {
225
+ if (entry.declaration.isFunctionDeclaration())
226
+ if (t.isFunctionExpression(property.value) && (!property.value.id || property.value.id.name === entry.declaration.node.id?.name)) {
227
+ let { params, body, async, generator, returnType, typeParameters } = property.value;
228
+ Object.assign(entry.declaration.node, {
229
+ params,
230
+ body,
231
+ async,
232
+ generator,
233
+ returnType,
234
+ typeParameters
235
+ });
236
+ } else {
237
+ let id2 = entry.declaration.node.id;
238
+ if (!id2)
239
+ continue;
240
+ let variable2 = t.variableDeclarator(id2, property.value);
241
+ entry.declaration.replaceWith(t.variableDeclaration("const", [variable2]));
242
+ let path = pathForNode(program, variable2);
243
+ path && (entry.declaration = path);
244
+ }
245
+ else entry.declaration.isVariableDeclarator() && (entry.declaration.node.init = property.value);
246
+ if (entry.specifier) {
247
+ entry.specifier.node.exported = t.isValidIdentifier(name) ? t.identifier(name) : t.stringLiteral(name);
248
+ continue;
249
+ }
250
+ if (t.isValidIdentifier(name) && (t.isIdentifier(entry.declaration.node.id, { name }) || !program.scope.hasBinding(name))) {
251
+ entry.declaration.node.id = t.identifier(name);
252
+ continue;
253
+ }
254
+ entry.declaration.remove();
255
+ }
256
+ let id = t.isValidIdentifier(name) && !program.scope.hasBinding(name) ? t.identifier(name) : program.scope.generateUidIdentifier(name), declaration = t.variableDeclarator(id, property.value), variable = t.variableDeclaration("const", [declaration]);
257
+ if (id.name === name)
258
+ program.pushContainer("body", t.exportNamedDeclaration(variable));
259
+ else {
260
+ let specifier = t.exportSpecifier(
261
+ id,
262
+ t.isValidIdentifier(name) ? t.identifier(name) : t.stringLiteral(name)
263
+ );
264
+ program.pushContainer("body", [variable, t.exportNamedDeclaration(null, [specifier])]);
265
+ }
266
+ let declarationPath = pathForNode(program, declaration);
267
+ if (declarationPath) {
268
+ let specifierPath = program.get("body").flatMap(
269
+ (statement) => statement.isExportNamedDeclaration() ? statement.get("specifiers") : []
270
+ ).find((specifier) => specifier.isExportSpecifier() && specifier.node.local === id);
271
+ named.set(property, {
272
+ declaration: declarationPath,
273
+ ...specifierPath?.isExportSpecifier() ? { specifier: specifierPath } : {}
274
+ });
275
+ }
276
+ }
277
+ program.scope.crawl(), markChanged();
278
+ };
279
+ result = {
280
+ ok: !0,
281
+ object: createCsfObject(
282
+ { kind: "config" },
283
+ {
284
+ node: virtualRoot,
285
+ detached: !0,
286
+ scope: program.scope,
287
+ buildCodeFrameError: program.buildCodeFrameError.bind(program)
288
+ },
289
+ [],
290
+ report,
291
+ syncExports
292
+ )
293
+ };
294
+ }
295
+ }), result;
296
+ }
297
+
298
+ // src/csf-tools/ConfigFile.ts
299
+ var getCsfParsingErrorMessage = ({
300
+ fileName,
301
+ expectedType,
302
+ foundType,
303
+ node
304
+ }) => dedent`
305
+ CSF Parsing error in ${fileName ?? "a config file"}: Expected '${expectedType}' but found '${foundType}' instead in '${node?.type}'.
306
+ `, propKey = (p) => t2.isIdentifier(p.key) ? p.key.name : t2.isStringLiteral(p.key) ? p.key.value : null, _getPath = (path, node) => {
307
+ if (path.length === 0)
308
+ return node;
309
+ if (t2.isObjectExpression(node)) {
310
+ let [first, ...rest] = path, field = node.properties.find((p) => propKey(p) === first);
311
+ if (field)
312
+ return _getPath(rest, field.value);
313
+ }
314
+ }, _getPathProperties = (path, node) => {
315
+ if (path.length === 0) {
316
+ if (t2.isObjectExpression(node))
317
+ return node.properties;
318
+ throw new Error("Expected object expression");
319
+ }
320
+ if (t2.isObjectExpression(node)) {
321
+ let [first, ...rest] = path, field = node.properties.find((p) => propKey(p) === first);
322
+ if (field)
323
+ return rest.length === 0 ? node.properties : _getPathProperties(rest, field.value);
324
+ }
325
+ }, _findVarDeclarator = (identifier, program) => {
326
+ let declarator = null, declarations = null;
327
+ return program.body.find((node) => (t2.isVariableDeclaration(node) ? declarations = node.declarations : t2.isExportNamedDeclaration(node) && t2.isVariableDeclaration(node.declaration) && (declarations = node.declaration.declarations), declarations && declarations.find((decl) => t2.isVariableDeclarator(decl) && t2.isIdentifier(decl.id) && decl.id.name === identifier ? (declarator = decl, !0) : !1))), declarator;
328
+ }, _findVarInitialization = (identifier, program) => _findVarDeclarator(identifier, program)?.init, NEXT_LINE_DIRECTIVE = /^\s*(@ts-(expect-error|ignore)|[a-z]+-disable-next-line|prettier-ignore|biome-ignore)\b/, getHeaderComments = (statement) => {
329
+ let leading = (statement?.comments ?? []).filter((comment) => comment.leading), directive = leading.findIndex(({ value }) => NEXT_LINE_DIRECTIVE.test(value));
330
+ return directive === -1 ? leading : leading.slice(0, directive);
331
+ }, prependStatement = (program, statement) => {
332
+ let first = program.body[0], header = getHeaderComments(first);
333
+ if (!first || !header.length) {
334
+ program.body.unshift(statement);
335
+ return;
336
+ }
337
+ let firstNonImport = program.body.findIndex((node) => !t2.isImportDeclaration(node)), index = firstNonImport === -1 ? program.body.length : firstNonImport;
338
+ if (index === 0) {
339
+ let notHeader = (comment) => !header.includes(comment);
340
+ first.comments = first.comments?.filter(notHeader), first.leadingComments = first.leadingComments?.filter(notHeader), Object.assign(statement, { comments: header, leadingComments: header });
341
+ }
342
+ program.body.splice(index, 0, statement);
343
+ }, ConfigFile = class {
344
+ constructor(ast, code, fileName) {
345
+ /**
346
+ * Identify the config, meta, story, annotation, or call argument this editor represents.
347
+ *
348
+ * @example
349
+ * ```ts
350
+ * const object = loadConfig('export default {};').parse();
351
+ * object.target; // { kind: 'config' }
352
+ * ```
353
+ */
354
+ this.target = { kind: "config" };
355
+ // No member may be private: core resolves this class from both src and dist, and any private
356
+ // member makes the emitted class type nominal, so the two identities stop being assignable.
357
+ this._changed = !1;
358
+ this._mutationDiagnostics = [];
359
+ this._exports = {};
360
+ // FIXME: this is a hack. this is only used in the case where the user is
361
+ // modifying a named export that's a scalar. The _exports map is not suitable
362
+ // for that. But rather than refactor the whole thing, we just use this as a stopgap.
363
+ this._exportDecls = {};
364
+ this.hasDefaultExport = !1;
365
+ /** Unwraps TS assertions/satisfies from a node, to get the underlying node. */
366
+ this._unwrap = (node) => t2.isTSAsExpression(node) || t2.isTSSatisfiesExpression(node) ? this._unwrap(node.expression) : node;
367
+ /**
368
+ * Resolve a declaration node by unwrapping TS assertions/satisfies and following identifiers to
369
+ * resolve the correct node in case it's an identifier.
370
+ */
371
+ this._resolveDeclaration = (node, parent = this._ast.program) => {
372
+ let decl = this._unwrap(node);
373
+ if (t2.isIdentifier(decl) && t2.isProgram(parent)) {
374
+ let initialization = _findVarInitialization(decl.name, parent);
375
+ return initialization ? this._unwrap(initialization) : decl;
376
+ }
377
+ return decl;
378
+ };
379
+ this._ast = ast, this._code = code, this.fileName = fileName;
380
+ }
381
+ /**
382
+ * Report whether this editor has applied a mutation. Reads and no-op edits leave it unchanged.
383
+ *
384
+ * @example
385
+ * ```ts
386
+ * const object = loadConfig('export default {};').parse();
387
+ * object.changed; // false
388
+ * object.set(['tags'], ['autodocs']);
389
+ * object.changed; // true
390
+ * ```
391
+ */
392
+ get changed() {
393
+ return this._changed;
394
+ }
395
+ /**
396
+ * Read diagnostics from unsupported discovery, reads, or mutations. `writeConfig` refuses to
397
+ * write a config with diagnostics, even if another edit succeeded.
398
+ *
399
+ * @example
400
+ * ```ts
401
+ * const config = loadConfig('export default { old: 1, current: 2 };').parse();
402
+ * config.rename(['old'], 'current');
403
+ * config.mutationDiagnostics.map(({ code }) => code); // ['occupied-destination']
404
+ * config.changed; // false
405
+ * ```
406
+ */
407
+ get mutationDiagnostics() {
408
+ return [...this._mutationDiagnostics];
409
+ }
410
+ /**
411
+ * Read a copy of the Babel expression at a property path. Missing fields return `undefined`.
412
+ *
413
+ * @example
414
+ * ```ts
415
+ * const object = loadConfig("export default { tags: ['docs'] };").parse();
416
+ * object.get(['tags'])?.type; // 'ArrayExpression'
417
+ * object.get(['missing']); // undefined
418
+ * ```
419
+ */
420
+ get(path) {
421
+ let editor = this._editor("read");
422
+ return editor.ok ? editor.object.get(path) : void 0;
423
+ }
424
+ /**
425
+ * Read plain values without executing code. Missing fields return `undefined`; unresolved
426
+ * expressions also return `undefined` and add a mutation diagnostic.
427
+ *
428
+ * @example
429
+ * ```ts
430
+ * const object = loadConfig("export default { tags: ['docs'], enabled: true };").parse();
431
+ * object.getValue(['tags']); // ['docs']
432
+ * object.getValue(['enabled']); // true
433
+ * object.getValue(['missing']); // undefined
434
+ * ```
435
+ */
436
+ getValue(path) {
437
+ let editor = this._editor("read");
438
+ return editor.ok ? editor.object.getValue(path) : void 0;
439
+ }
440
+ /**
441
+ * Set a plain value or Babel expression, creating missing parents. Accepts nested arrays and
442
+ * objects; top-level expression-shaped objects are interpreted as AST nodes.
443
+ *
444
+ * @example
445
+ * ```ts
446
+ * const object = loadConfig('export default {};').parse();
447
+ * object.set(['parameters', 'a11y'], { test: 'todo', enabled: true });
448
+ * // { ok: true, changed: true }
449
+ * object.getValue(['parameters']); // { a11y: { test: 'todo', enabled: true } }
450
+ * ```
451
+ */
452
+ set(path, value) {
453
+ return this._mutate((object) => object.set(path, value));
454
+ }
455
+ /**
456
+ * Replace a value using its live Babel expression. Reused nodes preserve their source formatting.
457
+ * Return a new node, or `undefined` to leave the value unchanged. Do not mutate or retain the input
458
+ * node: such changes bypass change tracking and diagnostics.
459
+ *
460
+ * @example
461
+ * ```ts
462
+ * const object = loadConfig("export default { tags: ['docs'] };").parse();
463
+ * object.transform(['tags'], (value) =>
464
+ * t.arrayExpression([t.spreadElement(value), t.stringLiteral('autodocs')])
465
+ * ); // { ok: true, changed: true }
466
+ * object.getValue(['tags']); // ['docs', 'autodocs']
467
+ * ```
468
+ */
469
+ transform(path, derive) {
470
+ return this._mutate((object) => object.transform(path, derive));
471
+ }
472
+ /**
473
+ * Remove a property and recursively clean up empty parents. Missing fields are a no-op.
474
+ *
475
+ * @example
476
+ * ```ts
477
+ * const object = loadConfig('export default { parameters: { a11y: { disable: true } } };').parse();
478
+ * object.remove(['parameters', 'a11y', 'disable']); // { ok: true, changed: true }
479
+ * object.getValue(['parameters']); // undefined
480
+ * object.remove(['parameters']); // { ok: true, changed: false }
481
+ * ```
482
+ */
483
+ remove(path) {
484
+ return this._mutate((object) => object.remove(path));
485
+ }
486
+ /**
487
+ * Rename a property within its parent. An occupied destination produces a diagnostic
488
+ * and leaves the source unchanged.
489
+ *
490
+ * @example
491
+ * ```ts
492
+ * const object = loadConfig("export default { a11y: { element: '#root' } };").parse();
493
+ * object.rename(['a11y', 'element'], 'context'); // { ok: true, changed: true }
494
+ * object.getValue(['a11y']); // { context: '#root' }
495
+ * ```
496
+ */
497
+ rename(path, name) {
498
+ return this._mutate((object) => object.rename(path, name));
499
+ }
500
+ /**
501
+ * Move a property to another path, creating missing destination parents and cleaning up
502
+ * empty source parents. Rejects occupied destinations. Use `group` when nesting siblings must
503
+ * preserve expression evaluation order.
504
+ *
505
+ * @example
506
+ * ```ts
507
+ * const object = loadConfig("export default { globals: { theme: 'dark' } };").parse();
508
+ * object.move(['globals'], ['initialGlobals']); // { ok: true, changed: true }
509
+ * object.getValue(['initialGlobals']); // { theme: 'dark' }
510
+ * object.getValue(['globals']); // undefined
511
+ * ```
512
+ */
513
+ move(from, to) {
514
+ return this._mutate((object) => object.move(from, to));
515
+ }
516
+ /**
517
+ * Nest named sibling properties under a destination, retaining their source order. Rejects
518
+ * conflicts and relocations that could change evaluation order. Missing source fields are ignored.
519
+ *
520
+ * @example
521
+ * ```ts
522
+ * const object = loadConfig('export default { showNav: false, showPanel: true };').parse();
523
+ * object.group(['layout'], ['showNav', 'showPanel']); // { ok: true, changed: true }
524
+ * object.getValue(['layout']); // { showNav: false, showPanel: true }
525
+ * object.getValue(['showNav']); // undefined
526
+ * ```
527
+ */
528
+ group(path, names) {
529
+ return this._mutate((object) => object.group(path, names));
530
+ }
531
+ _mutate(operation) {
532
+ let editor = this._editor("mutate");
533
+ return editor.ok === !0 ? operation(editor.object) : { ok: !1, changed: !1, diagnostic: editor.diagnostic };
534
+ }
535
+ _editor(mode) {
536
+ let editor = createConfigObject(
537
+ this,
538
+ mode,
539
+ (diagnostic) => this._mutationDiagnostics.push(diagnostic),
540
+ () => {
541
+ this._changed = !0, this._exports = {}, this._exportDecls = {}, this.parse();
542
+ }
543
+ );
544
+ return editor.ok === !1 && this._mutationDiagnostics.push(editor.diagnostic), editor;
545
+ }
546
+ _parseExportsObject(exportsObject) {
547
+ this._exportsObject = exportsObject, exportsObject.properties.forEach((p) => {
548
+ let exportName = propKey(p);
549
+ if (exportName) {
550
+ let exportVal = this._resolveDeclaration(p.value);
551
+ this._exports[exportName] = exportVal;
552
+ }
553
+ });
554
+ }
555
+ parse() {
556
+ this._inferQuotes();
557
+ let self = this;
558
+ return traverse2(this._ast, {
559
+ ExportDefaultDeclaration: {
560
+ enter({ node, parent }) {
561
+ self.hasDefaultExport = !0;
562
+ let decl = self._resolveDeclaration(node.declaration, parent);
563
+ for (; t2.isCallExpression(decl); )
564
+ if (t2.isObjectExpression(decl.arguments[0])) {
565
+ decl = decl.arguments[0];
566
+ break;
567
+ } else if (t2.isMemberExpression(decl.callee) && t2.isCallExpression(decl.callee.object))
568
+ decl = decl.callee.object;
569
+ else
570
+ break;
571
+ t2.isObjectExpression(decl) ? self._parseExportsObject(decl) : logger.debug(
572
+ getCsfParsingErrorMessage({
573
+ fileName: self.fileName,
574
+ expectedType: "ObjectExpression",
575
+ foundType: decl?.type,
576
+ node: decl || node.declaration
577
+ })
578
+ );
579
+ }
580
+ },
581
+ ExportNamedDeclaration: {
582
+ enter({ node, parent }) {
583
+ if (t2.isVariableDeclaration(node.declaration))
584
+ node.declaration.declarations.forEach((decl) => {
585
+ if (t2.isVariableDeclarator(decl) && t2.isIdentifier(decl.id)) {
586
+ let { name: exportName } = decl.id, exportVal = self._resolveDeclaration(decl.init, parent);
587
+ self._exports[exportName] = exportVal, self._exportDecls[exportName] = decl;
588
+ }
589
+ });
590
+ else if (t2.isFunctionDeclaration(node.declaration)) {
591
+ let decl = node.declaration;
592
+ if (t2.isIdentifier(decl.id)) {
593
+ let { name: exportName } = decl.id;
594
+ self._exportDecls[exportName] = decl, self._exports[exportName] = t2.toExpression(t2.cloneNode(decl));
595
+ }
596
+ } else node.specifiers ? node.specifiers.forEach((spec) => {
597
+ if (t2.isExportSpecifier(spec) && t2.isIdentifier(spec.local) && (t2.isIdentifier(spec.exported) || t2.isStringLiteral(spec.exported))) {
598
+ let { name: localName } = spec.local, exportName = t2.isIdentifier(spec.exported) ? spec.exported.name : spec.exported.value, decl = _findVarDeclarator(localName, self._ast.program) ?? self._ast.program.body.find(
599
+ (statement) => t2.isFunctionDeclaration(statement) && statement.id?.name === localName
600
+ );
601
+ if (decl) {
602
+ let value = t2.isFunctionDeclaration(decl) ? t2.toExpression(t2.cloneNode(decl)) : decl.init ? self._resolveDeclaration(decl.init, parent) : void 0;
603
+ if (exportName === "default" && t2.isObjectExpression(value)) {
604
+ self.hasDefaultExport = !0, self._parseExportsObject(value);
605
+ return;
606
+ }
607
+ self._exports[exportName] = value, self._exportDecls[exportName] = decl;
608
+ }
609
+ }
610
+ }) : logger.debug(
611
+ getCsfParsingErrorMessage({
612
+ fileName: self.fileName,
613
+ expectedType: "VariableDeclaration",
614
+ foundType: node.declaration?.type,
615
+ node: node.declaration
616
+ })
617
+ );
618
+ }
619
+ },
620
+ ExpressionStatement: {
621
+ enter({ node, parent }) {
622
+ if (t2.isAssignmentExpression(node.expression) && node.expression.operator === "=") {
623
+ let { left, right } = node.expression;
624
+ if (t2.isMemberExpression(left) && t2.isIdentifier(left.object) && left.object.name === "module" && t2.isIdentifier(left.property) && left.property.name === "exports") {
625
+ let exportObject = right;
626
+ exportObject = self._resolveDeclaration(exportObject, parent), t2.isObjectExpression(exportObject) ? (self._exportsObject = exportObject, exportObject.properties.forEach((p) => {
627
+ let exportName = propKey(p);
628
+ if (exportName) {
629
+ let exportVal = self._resolveDeclaration(p.value, parent);
630
+ self._exports[exportName] = exportVal;
631
+ }
632
+ })) : logger.debug(
633
+ getCsfParsingErrorMessage({
634
+ fileName: self.fileName,
635
+ expectedType: "ObjectExpression",
636
+ foundType: exportObject?.type,
637
+ node: exportObject
638
+ })
639
+ );
640
+ }
641
+ }
642
+ }
643
+ },
644
+ CallExpression: {
645
+ enter: ({ node }) => {
646
+ t2.isIdentifier(node.callee) && node.callee.name === "definePreview" && node.arguments.length === 1 && t2.isObjectExpression(node.arguments[0]) && self._parseExportsObject(node.arguments[0]);
647
+ }
648
+ }
649
+ }), self;
650
+ }
651
+ getFieldNode(path) {
652
+ let [root, ...rest] = path, exported = this._exports[root];
653
+ if (exported)
654
+ return _getPath(rest, exported);
655
+ }
656
+ getFieldProperties(path) {
657
+ let [root, ...rest] = path, exported = this._exports[root];
658
+ if (exported)
659
+ return _getPathProperties(rest, exported);
660
+ }
661
+ /**
662
+ * @example
663
+ *
664
+ * ```ts
665
+ * // 1. { framework: 'framework-name' }
666
+ * // 2. { framework: { name: 'framework-name', options: {} }
667
+ * getNameFromPath(['framework']); // => 'framework-name'
668
+ * ```
669
+ *
670
+ * @returns The name of a node in a given path, supporting the following formats:
671
+ */
672
+ getNameFromPath(path) {
673
+ let node = this.getFieldNode(path);
674
+ if (node)
675
+ return this._getPresetValue(node, "name");
676
+ }
677
+ /**
678
+ * Returns an array of names of a node in a given path, supporting the following formats:
679
+ *
680
+ * @example
681
+ *
682
+ * ```ts
683
+ * const config = {
684
+ * addons: ['first-addon', { name: 'second-addon', options: {} }],
685
+ * };
686
+ * // => ['first-addon', 'second-addon']
687
+ * getNamesFromPath(['addons']);
688
+ * ```
689
+ */
690
+ getNamesFromPath(path) {
691
+ let node = this.getFieldNode(path);
692
+ if (!node)
693
+ return;
694
+ let pathNames = [];
695
+ return t2.isArrayExpression(node) && node.elements.forEach((element) => {
696
+ pathNames.push(this._getPresetValue(element, "name"));
697
+ }), pathNames;
698
+ }
699
+ _getWrappedValue(node) {
700
+ if (t2.isCallExpression(node)) {
701
+ let arg = node.arguments[0];
702
+ if (t2.isStringLiteral(arg))
703
+ return arg.value;
704
+ }
705
+ }
706
+ /**
707
+ * Given a node and a fallback property, returns a **non-evaluated** string value of the node.
708
+ *
709
+ * 1. `{ node: 'value' }`
710
+ * 2. `{ node: { fallbackProperty: 'value' } }`
711
+ */
712
+ _getPresetValue(node, fallbackProperty) {
713
+ let value;
714
+ if (t2.isStringLiteral(node) ? value = node.value : t2.isObjectExpression(node) ? node.properties.forEach((prop) => {
715
+ t2.isObjectProperty(prop) && t2.isIdentifier(prop.key) && prop.key.name === fallbackProperty && (t2.isStringLiteral(prop.value) ? value = prop.value.value : value = this._getWrappedValue(prop.value)), t2.isObjectProperty(prop) && t2.isStringLiteral(prop.key) && prop.key.value === "name" && t2.isStringLiteral(prop.value) && (value = prop.value.value);
716
+ }) : t2.isCallExpression(node) && (value = this._getWrappedValue(node)), !value)
717
+ throw new Error(
718
+ `The given node must be a string literal or an object expression with a "${fallbackProperty}" property that is a string literal.`
719
+ );
720
+ return value;
721
+ }
722
+ removeField(path) {
723
+ let removeProperty = (properties2, prop) => {
724
+ let index = properties2.findIndex(
725
+ (p) => t2.isIdentifier(p.key) && p.key.name === prop || t2.isStringLiteral(p.key) && p.key.value === prop
726
+ );
727
+ index >= 0 && properties2.splice(index, 1);
728
+ };
729
+ if (path.length === 1) {
730
+ let removedRootProperty = !1;
731
+ if (this._ast.program.body.forEach((node) => {
732
+ if (t2.isExportNamedDeclaration(node) && t2.isVariableDeclaration(node.declaration)) {
733
+ let decl = node.declaration.declarations[0];
734
+ t2.isIdentifier(decl.id) && decl.id.name === path[0] && (this._ast.program.body.splice(this._ast.program.body.indexOf(node), 1), removedRootProperty = !0);
735
+ }
736
+ if (t2.isExportDefaultDeclaration(node)) {
737
+ let resolved = this._resolveDeclaration(node.declaration);
738
+ if (t2.isObjectExpression(resolved)) {
739
+ let properties2 = resolved.properties;
740
+ removeProperty(properties2, path[0]), removedRootProperty = !0;
741
+ }
742
+ }
743
+ if (t2.isExpressionStatement(node) && t2.isAssignmentExpression(node.expression) && t2.isMemberExpression(node.expression.left) && t2.isIdentifier(node.expression.left.object) && node.expression.left.object.name === "module" && t2.isIdentifier(node.expression.left.property) && node.expression.left.property.name === "exports" && t2.isObjectExpression(node.expression.right)) {
744
+ let properties2 = node.expression.right.properties;
745
+ removeProperty(properties2, path[0]), removedRootProperty = !0;
746
+ }
747
+ }), removedRootProperty)
748
+ return;
749
+ }
750
+ let properties = this.getFieldProperties(path);
751
+ if (properties) {
752
+ let lastPath = path.at(-1);
753
+ removeProperty(properties, lastPath);
754
+ }
755
+ }
756
+ appendValueToArray(path, value) {
757
+ let node = this.valueToNode(value);
758
+ node && this.appendNodeToArray(path, node);
759
+ }
760
+ appendNodeToArray(path, node) {
761
+ let current = this.getFieldNode(path);
762
+ if (!current)
763
+ this.set(path, t2.arrayExpression([node]));
764
+ else if (t2.isArrayExpression(current))
765
+ current.elements.push(node);
766
+ else
767
+ throw new Error(`Expected array at '${path.join(".")}', got '${current.type}'`);
768
+ }
769
+ /**
770
+ * Specialized helper to remove addons or other array entries that can either be strings or
771
+ * objects with a name property.
772
+ */
773
+ removeEntryFromArray(path, value) {
774
+ let current = this.getFieldNode(path);
775
+ if (current)
776
+ if (t2.isArrayExpression(current)) {
777
+ let index = current.elements.findIndex((element) => t2.isStringLiteral(element) ? element.value === value : t2.isObjectExpression(element) ? this._getPresetValue(element, "name") === value : this._getWrappedValue(element) === value);
778
+ if (index >= 0)
779
+ current.elements.splice(index, 1);
780
+ else
781
+ throw new Error(`Could not find '${value}' in array at '${path.join(".")}'`);
782
+ } else
783
+ throw new Error(`Expected array at '${path.join(".")}', got '${current.type}'`);
784
+ }
785
+ _inferQuotes() {
786
+ if (!this._quotes) {
787
+ let occurrences = { "'": 0, '"': 0 }, countQuotes = ({ node }) => {
788
+ let raw = node.extra?.raw;
789
+ typeof raw == "string" && (raw[0] === "'" || raw[0] === '"') && (occurrences[raw[0]] += 1);
790
+ };
791
+ traverse2(this._ast, {
792
+ StringLiteral: { enter: countQuotes },
793
+ DirectiveLiteral: { enter: countQuotes }
794
+ }), this._quotes = occurrences["'"] > occurrences['"'] ? "single" : "double";
795
+ }
796
+ return this._quotes;
797
+ }
798
+ valueToNode(value) {
799
+ let quotes = this._inferQuotes(), valueNode;
800
+ if (quotes === "single") {
801
+ let { code } = generate(t2.valueToNode(value), { jsescOption: { quotes } }), program = babelParse(`const __x = ${code}`);
802
+ traverse2(program, {
803
+ VariableDeclaration: {
804
+ enter({ node }) {
805
+ node.declarations.length === 1 && t2.isVariableDeclarator(node.declarations[0]) && t2.isIdentifier(node.declarations[0].id) && node.declarations[0].id.name === "__x" && (valueNode = node.declarations[0].init);
806
+ }
807
+ }
808
+ });
809
+ } else
810
+ valueNode = t2.valueToNode(value);
811
+ return valueNode;
812
+ }
813
+ getBodyDeclarations() {
814
+ return this._ast.program.body;
815
+ }
816
+ /**
817
+ * Edit the first object argument of method calls on a named import, including CommonJS aliases.
818
+ * Unsupported arguments add mutation diagnostics; calls without arguments are ignored.
819
+ *
820
+ * @example
821
+ * ```ts
822
+ * const manager = loadConfig(`
823
+ * import { addons } from '@aussieljk/forkbook/manager-api';
824
+ * addons.setConfig({ showNav: false });
825
+ * `).parse();
826
+ * const [object] = manager.callArguments({
827
+ * importedName: 'addons',
828
+ * methodName: 'setConfig',
829
+ * moduleNames: ['@aussieljk/forkbook/manager-api'],
830
+ * });
831
+ * object.group(['layout'], ['showNav']);
832
+ * object.getValue(['layout']); // { showNav: false }
833
+ * manager.changed; // true
834
+ * ```
835
+ */
836
+ callArguments({
837
+ importedName,
838
+ methodName,
839
+ moduleNames
840
+ }) {
841
+ let modules = new Set(moduleNames), imports = /* @__PURE__ */ new Map();
842
+ traverse2(this._ast, {
843
+ ImportDeclaration(path) {
844
+ if (!(!modules.has(path.node.source.value) || path.node.importKind === "type")) {
845
+ for (let specifier of path.node.specifiers)
846
+ if (t2.isImportSpecifier(specifier) && specifier.importKind !== "type" && t2.isIdentifier(specifier.imported, { name: importedName })) {
847
+ let bindingNodes = imports.get(specifier.local.name) ?? /* @__PURE__ */ new Set();
848
+ bindingNodes.add(specifier), imports.set(specifier.local.name, bindingNodes);
849
+ }
850
+ }
851
+ },
852
+ VariableDeclarator(path) {
853
+ let { id, init } = path.node;
854
+ if (!(!t2.isObjectPattern(id) || !t2.isCallExpression(init) || !t2.isIdentifier(init.callee, { name: "require" }) || path.scope.getBinding("require") !== void 0 || init.arguments.length !== 1 || !t2.isStringLiteral(init.arguments[0]) || !modules.has(init.arguments[0].value))) {
855
+ for (let property of id.properties)
856
+ if (t2.isObjectProperty(property) && !property.computed && (t2.isIdentifier(property.key) && property.key.name === importedName || t2.isStringLiteral(property.key) && property.key.value === importedName) && t2.isIdentifier(property.value)) {
857
+ let bindingNodes = imports.get(property.value.name) ?? /* @__PURE__ */ new Set();
858
+ bindingNodes.add(path.node), imports.set(property.value.name, bindingNodes);
859
+ }
860
+ }
861
+ }
862
+ });
863
+ let objects = [], report = (diagnostic) => this._mutationDiagnostics.push(diagnostic), markChanged = () => {
864
+ this._changed = !0;
865
+ };
866
+ return traverse2(this._ast, {
867
+ CallExpression(path) {
868
+ let { callee } = path.node;
869
+ if (!t2.isMemberExpression(callee) || !t2.isIdentifier(callee.object) || !(t2.isIdentifier(callee.property) && !callee.computed && callee.property.name === methodName || t2.isStringLiteral(callee.property) && callee.property.value === methodName))
870
+ return;
871
+ let bindingNode = path.scope.getBinding(callee.object.name)?.path.node;
872
+ if (bindingNode && imports.get(callee.object.name)?.has(bindingNode)) {
873
+ let argument = path.node.arguments[0];
874
+ if (!argument)
875
+ return;
876
+ let value = unwrapExpression(argument), target = { kind: "call-argument", importedName, methodName }, binding = path.scope.getBinding(callee.object.name);
877
+ if (!binding?.constant || !t2.isObjectExpression(value)) {
878
+ report({
879
+ code: binding?.constant ? "unsupported-initializer" : "ambiguous-binding",
880
+ target,
881
+ path: [],
882
+ message: binding?.constant ? "the call argument is not an object literal" : "the imported binding is reassigned",
883
+ ...argument.loc ? { loc: argument.loc } : {}
884
+ });
885
+ return;
886
+ }
887
+ objects.push(
888
+ createCsfObject(
889
+ target,
890
+ {
891
+ node: value,
892
+ scope: path.scope,
893
+ buildCodeFrameError: path.buildCodeFrameError.bind(path)
894
+ },
895
+ [],
896
+ report,
897
+ markChanged
898
+ )
899
+ );
900
+ }
901
+ }
902
+ }), objects;
903
+ }
904
+ setBodyDeclaration(declaration) {
905
+ this._ast.program.body.push(declaration);
906
+ }
907
+ /**
908
+ * Import specifiers for a specific require import
909
+ *
910
+ * @example
911
+ *
912
+ * ```ts
913
+ * // const { foo } = require('bar');
914
+ * setRequireImport(['foo'], 'bar');
915
+ *
916
+ * // const foo = require('bar');
917
+ * setRequireImport('foo', 'bar');
918
+ * ```
919
+ *
920
+ * @param importSpecifiers - The import specifiers to set. If a string is passed in, a default
921
+ * import will be set. Otherwise, an array of named imports will be set
922
+ * @param fromImport - The module to import from
923
+ */
924
+ setRequireImport(importSpecifier, fromImport) {
925
+ let requireDeclaration = this._ast.program.body.find((node) => {
926
+ let hasDeclaration = t2.isVariableDeclaration(node) && node.declarations.length === 1 && t2.isVariableDeclarator(node.declarations[0]) && t2.isCallExpression(node.declarations[0].init) && t2.isIdentifier(node.declarations[0].init.callee) && node.declarations[0].init.callee.name === "require" && t2.isStringLiteral(node.declarations[0].init.arguments[0]) && (node.declarations[0].init.arguments[0].value === fromImport || node.declarations[0].init.arguments[0].value === fromImport.split("node:")[1]);
927
+ return hasDeclaration && (fromImport = node.declarations[0].init.arguments[0].value), hasDeclaration;
928
+ }), hasRequireSpecifier = (name) => t2.isObjectPattern(requireDeclaration?.declarations[0].id) && requireDeclaration?.declarations[0].id.properties.find(
929
+ (specifier) => t2.isObjectProperty(specifier) && t2.isIdentifier(specifier.key) && specifier.key.name === name
930
+ ), hasDefaultRequireSpecifier = (declaration, name) => declaration.declarations.length === 1 && t2.isVariableDeclarator(declaration.declarations[0]) && t2.isIdentifier(declaration.declarations[0].id) && declaration.declarations[0].id.name === name;
931
+ if (typeof importSpecifier == "string") {
932
+ let addDefaultRequireSpecifier = () => {
933
+ prependStatement(
934
+ this._ast.program,
935
+ t2.variableDeclaration("const", [
936
+ t2.variableDeclarator(
937
+ t2.identifier(importSpecifier),
938
+ t2.callExpression(t2.identifier("require"), [t2.stringLiteral(fromImport)])
939
+ )
940
+ ])
941
+ );
942
+ };
943
+ requireDeclaration && hasDefaultRequireSpecifier(requireDeclaration, importSpecifier) || addDefaultRequireSpecifier();
944
+ } else requireDeclaration ? importSpecifier.forEach((specifier) => {
945
+ hasRequireSpecifier(specifier) || requireDeclaration.declarations[0].id.properties.push(
946
+ t2.objectProperty(t2.identifier(specifier), t2.identifier(specifier), void 0, !0)
947
+ );
948
+ }) : prependStatement(
949
+ this._ast.program,
950
+ t2.variableDeclaration("const", [
951
+ t2.variableDeclarator(
952
+ t2.objectPattern(
953
+ importSpecifier.map(
954
+ (specifier) => t2.objectProperty(t2.identifier(specifier), t2.identifier(specifier), void 0, !0)
955
+ )
956
+ ),
957
+ t2.callExpression(t2.identifier("require"), [t2.stringLiteral(fromImport)])
958
+ )
959
+ ])
960
+ );
961
+ }
962
+ /**
963
+ * Set import specifiers for a given import statement.
964
+ *
965
+ * Does not support setting type imports (yet)
966
+ *
967
+ * @example
968
+ *
969
+ * ```ts
970
+ * // import { foo } from 'bar';
971
+ * setImport(['foo'], 'bar');
972
+ *
973
+ * // import foo from 'bar';
974
+ * setImport('foo', 'bar');
975
+ *
976
+ * // import * as foo from 'bar';
977
+ * setImport({ namespace: 'foo' }, 'bar');
978
+ *
979
+ * // import 'bar';
980
+ * setImport(null, 'bar');
981
+ * ```
982
+ *
983
+ * @param importSpecifiers - The import specifiers to set. If a string is passed in, a default
984
+ * import will be set. Otherwise, an array of named imports will be set
985
+ * @param fromImport - The module to import from
986
+ */
987
+ setImport(importSpecifier, fromImport) {
988
+ let importDeclaration = this._ast.program.body.find((node) => {
989
+ let hasDeclaration = t2.isImportDeclaration(node) && (node.source.value === fromImport || node.source.value === fromImport.split("node:")[1]);
990
+ return hasDeclaration && (fromImport = node.source.value), hasDeclaration;
991
+ }), getNewImportSpecifier = (specifier) => t2.importSpecifier(t2.identifier(specifier), t2.identifier(specifier)), hasImportSpecifier = (declaration, name) => declaration.specifiers.find(
992
+ (specifier) => t2.isImportSpecifier(specifier) && t2.isIdentifier(specifier.imported) && specifier.imported.name === name
993
+ ), hasNamespaceImportSpecifier = (declaration, name) => declaration.specifiers.find(
994
+ (specifier) => t2.isImportNamespaceSpecifier(specifier) && t2.isIdentifier(specifier.local) && specifier.local.name === name
995
+ );
996
+ importSpecifier === null ? importDeclaration || prependStatement(this._ast.program, t2.importDeclaration([], t2.stringLiteral(fromImport))) : typeof importSpecifier == "string" ? importDeclaration ? ((declaration, name) => declaration.specifiers.find(
997
+ (specifier) => t2.isImportDefaultSpecifier(specifier) && t2.isIdentifier(specifier.local) && specifier.local.name === name
998
+ ))(importDeclaration, importSpecifier) || importDeclaration.specifiers.push(
999
+ t2.importDefaultSpecifier(t2.identifier(importSpecifier))
1000
+ ) : prependStatement(
1001
+ this._ast.program,
1002
+ t2.importDeclaration(
1003
+ [t2.importDefaultSpecifier(t2.identifier(importSpecifier))],
1004
+ t2.stringLiteral(fromImport)
1005
+ )
1006
+ ) : Array.isArray(importSpecifier) ? importDeclaration ? importSpecifier.forEach((specifier) => {
1007
+ hasImportSpecifier(importDeclaration, specifier) || importDeclaration.specifiers.push(getNewImportSpecifier(specifier));
1008
+ }) : prependStatement(
1009
+ this._ast.program,
1010
+ t2.importDeclaration(
1011
+ importSpecifier.map(getNewImportSpecifier),
1012
+ t2.stringLiteral(fromImport)
1013
+ )
1014
+ ) : importSpecifier.namespace && (importDeclaration ? hasNamespaceImportSpecifier(importDeclaration, importSpecifier.namespace) || importDeclaration.specifiers.push(
1015
+ t2.importNamespaceSpecifier(t2.identifier(importSpecifier.namespace))
1016
+ ) : prependStatement(
1017
+ this._ast.program,
1018
+ t2.importDeclaration(
1019
+ [t2.importNamespaceSpecifier(t2.identifier(importSpecifier.namespace))],
1020
+ t2.stringLiteral(fromImport)
1021
+ )
1022
+ ));
1023
+ }
1024
+ _removeRequireImport(importSpecifier, fromImport) {
1025
+ let requireDeclarationIndex = this._ast.program.body.findIndex((node) => t2.isVariableDeclaration(node) && node.declarations.length === 1 && t2.isVariableDeclarator(node.declarations[0]) && t2.isCallExpression(node.declarations[0].init) && t2.isIdentifier(node.declarations[0].init.callee) && node.declarations[0].init.callee.name === "require" && t2.isStringLiteral(node.declarations[0].init.arguments[0]) && (node.declarations[0].init.arguments[0].value === fromImport || node.declarations[0].init.arguments[0].value === fromImport.split("node:")[1]));
1026
+ if (requireDeclarationIndex === -1)
1027
+ return;
1028
+ let declarator = this._ast.program.body[requireDeclarationIndex].declarations[0];
1029
+ if (importSpecifier !== null) {
1030
+ if (typeof importSpecifier == "string") {
1031
+ t2.isIdentifier(declarator.id) && declarator.id.name === importSpecifier && this._ast.program.body.splice(requireDeclarationIndex, 1);
1032
+ return;
1033
+ }
1034
+ if (!(typeof importSpecifier == "object" && "namespace" in importSpecifier) && Array.isArray(importSpecifier) && t2.isObjectPattern(declarator.id)) {
1035
+ let objectPattern = declarator.id;
1036
+ importSpecifier.forEach((specifier) => {
1037
+ let index = objectPattern.properties.findIndex(
1038
+ (prop) => t2.isObjectProperty(prop) && t2.isIdentifier(prop.key) && prop.key.name === specifier
1039
+ );
1040
+ index !== -1 && objectPattern.properties.splice(index, 1);
1041
+ }), objectPattern.properties.length === 0 && this._ast.program.body.splice(requireDeclarationIndex, 1);
1042
+ }
1043
+ }
1044
+ }
1045
+ _removeImport(importSpecifier, fromImport) {
1046
+ let importDeclarationIndex = this._ast.program.body.findIndex(
1047
+ (node) => t2.isImportDeclaration(node) && (node.source.value === fromImport || node.source.value === fromImport.split("node:")[1])
1048
+ );
1049
+ if (importDeclarationIndex === -1)
1050
+ return;
1051
+ let importDeclaration = this._ast.program.body[importDeclarationIndex];
1052
+ if (importSpecifier === null) {
1053
+ importDeclaration.specifiers.length === 0 && this._ast.program.body.splice(importDeclarationIndex, 1);
1054
+ return;
1055
+ }
1056
+ if (typeof importSpecifier == "object" && "namespace" in importSpecifier) {
1057
+ let index = importDeclaration.specifiers.findIndex(
1058
+ (specifier) => t2.isImportNamespaceSpecifier(specifier) && t2.isIdentifier(specifier.local) && specifier.local.name === importSpecifier.namespace
1059
+ );
1060
+ index !== -1 && importDeclaration.specifiers.splice(index, 1);
1061
+ }
1062
+ if (typeof importSpecifier == "string") {
1063
+ let index = importDeclaration.specifiers.findIndex(
1064
+ (specifier) => t2.isImportDefaultSpecifier(specifier) && t2.isIdentifier(specifier.local) && specifier.local.name === importSpecifier
1065
+ );
1066
+ index !== -1 && importDeclaration.specifiers.splice(index, 1);
1067
+ }
1068
+ Array.isArray(importSpecifier) && importSpecifier.forEach((specifier) => {
1069
+ let index = importDeclaration.specifiers.findIndex(
1070
+ (current) => t2.isImportSpecifier(current) && t2.isIdentifier(current.imported) && current.imported.name === specifier
1071
+ );
1072
+ index !== -1 && importDeclaration.specifiers.splice(index, 1);
1073
+ }), importDeclaration.specifiers.length === 0 && this._ast.program.body.splice(importDeclarationIndex, 1);
1074
+ }
1075
+ /**
1076
+ * Remove import specifiers for a given import statement.
1077
+ *
1078
+ * Does not support removing type imports (yet)
1079
+ *
1080
+ * @example
1081
+ *
1082
+ * ```ts
1083
+ * // import { foo } from 'bar';
1084
+ * setImport(['foo'], 'bar');
1085
+ *
1086
+ * // import foo from 'bar';
1087
+ * setImport('foo', 'bar');
1088
+ *
1089
+ * // import * as foo from 'bar';
1090
+ * setImport({ namespace: 'foo' }, 'bar');
1091
+ *
1092
+ * // import 'bar';
1093
+ * setImport(null, 'bar');
1094
+ * ```
1095
+ *
1096
+ * @param importSpecifiers - The import specifiers to remove. If a string is passed in, will only
1097
+ * remove the default import. Otherwise, named imports matching the array will be removed.
1098
+ * @param fromImport - The module to import from
1099
+ */
1100
+ removeImport(importSpecifier, fromImport) {
1101
+ this._removeRequireImport(importSpecifier, fromImport), this._removeImport(importSpecifier, fromImport);
1102
+ }
1103
+ }, loadConfig = (code, fileName) => {
1104
+ let ast = babelParse(code);
1105
+ return new ConfigFile(ast, code, fileName);
1106
+ }, formatConfig = (config) => printConfig(config).code, printConfig = (config, options = {}) => recast.print(config._ast, {
1107
+ quote: config._inferQuotes(),
1108
+ // Recast defaults this to `os.EOL`, which would carriage-return printed files on Windows.
1109
+ lineTerminator: `
1110
+ `,
1111
+ ...options
1112
+ }), readConfig = async (fileName) => {
1113
+ let code = (await readFile(fileName, "utf-8")).toString();
1114
+ return loadConfig(code, fileName).parse();
1115
+ }, writeConfig = async (config, fileName) => {
1116
+ let [diagnostic] = config.mutationDiagnostics;
1117
+ invariant(!diagnostic, diagnostic?.message);
1118
+ let fname = fileName || config.fileName;
1119
+ if (!fname)
1120
+ throw new Error("Please specify a fileName for writeConfig");
1121
+ await writeFile(fname, formatConfig(config));
1122
+ }, isCsfFactoryPreview = (previewConfig) => !!previewConfig._ast.program.body.find((node) => t2.isImportDeclaration(node) && (node.source.value.includes("storybook") || node.source.value.includes("forkbook")) && node.specifiers.some((specifier) => t2.isImportSpecifier(specifier) && t2.isIdentifier(specifier.imported) && specifier.imported.name === "definePreview"));
1123
+
1124
+ export {
1125
+ getHeaderComments,
1126
+ ConfigFile,
1127
+ loadConfig,
1128
+ formatConfig,
1129
+ printConfig,
1130
+ readConfig,
1131
+ writeConfig,
1132
+ isCsfFactoryPreview
1133
+ };