forgebook 0.3.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (693) hide show
  1. package/README.md +917 -74
  2. package/dist/bin/forgebook/agentClient.d.ts +2 -1
  3. package/dist/bin/forgebook/agentClient.js +13 -6
  4. package/dist/bin/forgebook/agentGuide.d.ts +59 -0
  5. package/dist/bin/forgebook/agentGuide.js +203 -0
  6. package/dist/bin/forgebook/agentLoopCommands.mjs +22 -42
  7. package/dist/bin/forgebook/agentSetup/agentFiles.d.ts +55 -0
  8. package/dist/bin/forgebook/agentSetup/agentFiles.js +319 -0
  9. package/dist/bin/forgebook/agentSetup/assistantHooks.d.ts +71 -0
  10. package/dist/bin/forgebook/agentSetup/assistantHooks.js +125 -0
  11. package/dist/bin/forgebook/agentSetup/ciWorkflow.d.ts +23 -0
  12. package/dist/bin/forgebook/agentSetup/ciWorkflow.js +55 -0
  13. package/dist/bin/forgebook/agentSetup/drawCandidates.d.ts +25 -0
  14. package/dist/bin/forgebook/agentSetup/drawCandidates.js +116 -0
  15. package/dist/bin/forgebook/agentSetup/drawDiagnosis.d.ts +28 -0
  16. package/dist/bin/forgebook/agentSetup/drawDiagnosis.js +134 -0
  17. package/dist/bin/forgebook/agentSetup/drawRun.d.ts +91 -0
  18. package/dist/bin/forgebook/agentSetup/drawRun.js +353 -0
  19. package/dist/bin/forgebook/agentSetup/hookNames.d.ts +7 -0
  20. package/dist/bin/forgebook/agentSetup/hookNames.js +7 -0
  21. package/dist/bin/forgebook/agentSetup/initAgentSteps.d.ts +48 -0
  22. package/dist/bin/forgebook/agentSetup/initAgentSteps.js +104 -0
  23. package/dist/bin/forgebook/agentSetup/liftedProviders.d.ts +17 -0
  24. package/dist/bin/forgebook/agentSetup/liftedProviders.js +186 -0
  25. package/dist/bin/forgebook/agentSetup/projectRunner.d.ts +46 -0
  26. package/dist/bin/forgebook/agentSetup/projectRunner.js +85 -0
  27. package/dist/bin/forgebook/agentSetup/stopHook.d.ts +65 -0
  28. package/dist/bin/forgebook/agentSetup/stopHook.js +202 -0
  29. package/dist/bin/forgebook/agentSetup/uniformPicture.d.ts +7 -0
  30. package/dist/bin/forgebook/agentSetup/uniformPicture.js +98 -0
  31. package/dist/bin/forgebook/agentSetupCommands.d.mts +14 -0
  32. package/dist/bin/forgebook/agentSetupCommands.mjs +98 -0
  33. package/dist/bin/forgebook/agentText.d.ts +23 -3
  34. package/dist/bin/forgebook/agentText.js +175 -28
  35. package/dist/bin/forgebook/agents.md +20 -191
  36. package/dist/bin/forgebook/agentsText.js +2 -1
  37. package/dist/bin/forgebook/appBuild/appBuild.d.ts +59 -0
  38. package/dist/bin/forgebook/appBuild/appBuild.js +213 -0
  39. package/dist/bin/forgebook/appBuild/appViteConfig.d.ts +96 -0
  40. package/dist/bin/forgebook/appBuild/appViteConfig.js +320 -0
  41. package/dist/bin/forgebook/appBuild/tsconfigPaths.d.ts +14 -0
  42. package/dist/bin/forgebook/appBuild/tsconfigPaths.js +80 -0
  43. package/dist/bin/forgebook/auditCommand.d.mts +8 -0
  44. package/dist/bin/forgebook/auditCommand.mjs +75 -0
  45. package/dist/bin/forgebook/auditRun.d.ts +95 -0
  46. package/dist/bin/forgebook/auditRun.js +270 -0
  47. package/dist/bin/forgebook/browserRun.d.ts +21 -0
  48. package/dist/bin/forgebook/browserRun.js +57 -0
  49. package/dist/bin/forgebook/buildFailure.d.ts +7 -0
  50. package/dist/bin/forgebook/buildFailure.js +47 -0
  51. package/dist/bin/forgebook/buildWatch.d.ts +52 -0
  52. package/dist/bin/forgebook/buildWatch.js +137 -0
  53. package/dist/bin/forgebook/builtCatalogue.js +9 -5
  54. package/dist/bin/forgebook/catalogueCommands.d.ts +9 -0
  55. package/dist/bin/forgebook/catalogueCommands.js +23 -0
  56. package/dist/bin/forgebook/catalogueVite.d.ts +5 -1
  57. package/dist/bin/forgebook/catalogueVite.js +14 -6
  58. package/dist/bin/forgebook/commandCacheClaim.d.ts +18 -0
  59. package/dist/bin/forgebook/commandCacheClaim.js +170 -0
  60. package/dist/bin/forgebook/commandServer.d.ts +8 -0
  61. package/dist/bin/forgebook/commandServer.js +61 -13
  62. package/dist/bin/forgebook/forgebookCommands.mjs +105 -28
  63. package/dist/bin/forgebook/graphCommand.d.mts +8 -0
  64. package/dist/bin/forgebook/graphCommand.mjs +84 -0
  65. package/dist/bin/forgebook/guide/commands.md +57 -0
  66. package/dist/bin/forgebook/guide/devices.md +17 -0
  67. package/dist/bin/forgebook/guide/docs-pages.md +13 -0
  68. package/dist/bin/forgebook/guide/frameworks/angular.md +22 -0
  69. package/dist/bin/forgebook/guide/frameworks/html.md +22 -0
  70. package/dist/bin/forgebook/guide/frameworks/nextjs.md +23 -0
  71. package/dist/bin/forgebook/guide/frameworks/nuxt.md +22 -0
  72. package/dist/bin/forgebook/guide/frameworks/preact.md +16 -0
  73. package/dist/bin/forgebook/guide/frameworks/react-native-web.md +21 -0
  74. package/dist/bin/forgebook/guide/frameworks/react.md +16 -0
  75. package/dist/bin/forgebook/guide/frameworks/solid.md +18 -0
  76. package/dist/bin/forgebook/guide/frameworks/svelte.md +18 -0
  77. package/dist/bin/forgebook/guide/frameworks/sveltekit.md +23 -0
  78. package/dist/bin/forgebook/guide/frameworks/vue.md +18 -0
  79. package/dist/bin/forgebook/guide/frameworks/web-components.md +21 -0
  80. package/dist/bin/forgebook/guide/links.md +29 -0
  81. package/dist/bin/forgebook/guide/setup.md +23 -0
  82. package/dist/bin/forgebook/guide/stories.md +90 -0
  83. package/dist/bin/forgebook/guide/switches.md +43 -0
  84. package/dist/bin/forgebook/guideCommand.d.mts +13 -0
  85. package/dist/bin/forgebook/guideCommand.mjs +37 -0
  86. package/dist/bin/forgebook/importers/storybook.d.ts +21 -0
  87. package/dist/bin/forgebook/importers/storybook.js +11 -5
  88. package/dist/bin/forgebook/importers/storybookFrameworks.js +1 -1
  89. package/dist/bin/forgebook/initCommands.d.mts +11 -0
  90. package/dist/bin/forgebook/initCommands.mjs +51 -78
  91. package/dist/bin/forgebook/initConfig.d.ts +5 -3
  92. package/dist/bin/forgebook/initConfig.js +6 -3
  93. package/dist/bin/forgebook/initInstall.d.ts +15 -0
  94. package/dist/bin/forgebook/initInstall.js +77 -0
  95. package/dist/bin/forgebook/initPrint.d.ts +9 -0
  96. package/dist/bin/forgebook/initPrint.js +60 -0
  97. package/dist/bin/forgebook/initRefusals.d.ts +45 -0
  98. package/dist/bin/forgebook/initRefusals.js +91 -0
  99. package/dist/bin/forgebook/initRun.d.ts +28 -0
  100. package/dist/bin/forgebook/initRun.js +311 -0
  101. package/dist/bin/forgebook/mcpCommand.mjs +38 -4
  102. package/dist/bin/forgebook/mcpGraph.d.ts +13 -0
  103. package/dist/bin/forgebook/mcpGraph.js +24 -0
  104. package/dist/bin/forgebook/mcpTokens.d.ts +14 -0
  105. package/dist/bin/forgebook/mcpTokens.js +58 -0
  106. package/dist/bin/forgebook/mcpToolParts.d.ts +7 -0
  107. package/dist/bin/forgebook/mcpToolParts.js +10 -0
  108. package/dist/bin/forgebook/mcpTools.d.ts +13 -6
  109. package/dist/bin/forgebook/mcpTools.js +57 -90
  110. package/dist/bin/forgebook/mcpVerify.d.ts +16 -0
  111. package/dist/bin/forgebook/mcpVerify.js +36 -0
  112. package/dist/bin/forgebook/migrate/codemods.d.ts +11 -0
  113. package/dist/bin/forgebook/migrate/codemods.js +61 -0
  114. package/dist/bin/forgebook/migrate/migrate.types.d.ts +117 -0
  115. package/dist/bin/forgebook/migrate/migrate.types.js +5 -0
  116. package/dist/bin/forgebook/migrate/migrateCommand.d.mts +8 -0
  117. package/dist/bin/forgebook/migrate/migrateCommand.mjs +76 -0
  118. package/dist/bin/forgebook/migrate/migrateRun.d.ts +61 -0
  119. package/dist/bin/forgebook/migrate/migrateRun.js +210 -0
  120. package/dist/bin/forgebook/migrate/migrateText.d.ts +12 -0
  121. package/dist/bin/forgebook/migrate/migrateText.js +30 -0
  122. package/dist/bin/forgebook/migrate/migrateWrite.d.ts +27 -0
  123. package/dist/bin/forgebook/migrate/migrateWrite.js +66 -0
  124. package/dist/bin/forgebook/migrate/objectEdits.d.ts +70 -0
  125. package/dist/bin/forgebook/migrate/objectEdits.js +241 -0
  126. package/dist/bin/forgebook/migrate/playOnInBuilds.d.ts +3 -0
  127. package/dist/bin/forgebook/migrate/playOnInBuilds.js +86 -0
  128. package/dist/bin/forgebook/migrate/propGroupStrings.d.ts +5 -0
  129. package/dist/bin/forgebook/migrate/propGroupStrings.js +81 -0
  130. package/dist/bin/forgebook/newProject/newProject.d.ts +39 -0
  131. package/dist/bin/forgebook/newProject/newProject.js +180 -0
  132. package/dist/bin/forgebook/newProject/newProject.types.d.ts +97 -0
  133. package/dist/bin/forgebook/newProject/newProject.types.js +6 -0
  134. package/dist/bin/forgebook/newProject/packageManagers.d.ts +51 -0
  135. package/dist/bin/forgebook/newProject/packageManagers.js +121 -0
  136. package/dist/bin/forgebook/newProject/projectEntries.d.ts +62 -0
  137. package/dist/bin/forgebook/newProject/projectEntries.js +191 -0
  138. package/dist/bin/forgebook/newProject/projectFrameworks.d.ts +57 -0
  139. package/dist/bin/forgebook/newProject/projectFrameworks.js +148 -0
  140. package/dist/bin/forgebook/newProject/projectLook.d.ts +23 -0
  141. package/dist/bin/forgebook/newProject/projectLook.js +293 -0
  142. package/dist/bin/forgebook/newProject/projectPackages.d.ts +66 -0
  143. package/dist/bin/forgebook/newProject/projectPackages.js +178 -0
  144. package/dist/bin/forgebook/newRepair.d.ts +45 -0
  145. package/dist/bin/forgebook/newRepair.js +157 -0
  146. package/dist/bin/forgebook/newRepairRun.d.ts +69 -0
  147. package/dist/bin/forgebook/newRepairRun.js +148 -0
  148. package/dist/bin/forgebook/newStories.d.ts +23 -1
  149. package/dist/bin/forgebook/newStories.js +101 -11
  150. package/dist/bin/forgebook/newStoriesFile.d.ts +20 -1
  151. package/dist/bin/forgebook/newStoriesFile.js +43 -4
  152. package/dist/bin/forgebook/prebundleRun.d.ts +3 -1
  153. package/dist/bin/forgebook/prebundleRun.js +28 -8
  154. package/dist/bin/forgebook/proofCommand.d.mts +15 -0
  155. package/dist/bin/forgebook/proofCommand.mjs +212 -0
  156. package/dist/bin/forgebook/proofRun.d.ts +63 -0
  157. package/dist/bin/forgebook/proofRun.js +412 -0
  158. package/dist/bin/forgebook/proofText.d.ts +36 -0
  159. package/dist/bin/forgebook/proofText.js +131 -0
  160. package/dist/bin/forgebook/proofWorkflow.d.ts +29 -0
  161. package/dist/bin/forgebook/proofWorkflow.js +205 -0
  162. package/dist/bin/forgebook/setArgsTool.d.ts +8 -0
  163. package/dist/bin/forgebook/setArgsTool.js +70 -0
  164. package/dist/bin/forgebook/storyCheckCommands.mjs +42 -3
  165. package/dist/bin/forgebook/storyCheckRun.d.ts +50 -0
  166. package/dist/bin/forgebook/storyCheckRun.js +83 -9
  167. package/dist/bin/forgebook/storyFileIds.d.ts +15 -0
  168. package/dist/bin/forgebook/storyFileIds.js +14 -0
  169. package/dist/bin/forgebook/stressCases.d.ts +31 -0
  170. package/dist/bin/forgebook/stressCases.js +79 -0
  171. package/dist/bin/forgebook/stressRun.d.ts +12 -0
  172. package/dist/bin/forgebook/stressRun.js +61 -0
  173. package/dist/bin/forgebook/stressText.d.ts +27 -0
  174. package/dist/bin/forgebook/stressText.js +46 -0
  175. package/dist/bin/forgebook/verifyBase.d.ts +45 -0
  176. package/dist/bin/forgebook/verifyBase.js +196 -0
  177. package/dist/bin/forgebook/verifyCommand.d.mts +13 -0
  178. package/dist/bin/forgebook/verifyCommand.mjs +125 -0
  179. package/dist/bin/forgebook/verifyRun.d.ts +63 -0
  180. package/dist/bin/forgebook/verifyRun.js +108 -0
  181. package/dist/bin/forgebook/verifyVerdict.d.ts +40 -0
  182. package/dist/bin/forgebook/verifyVerdict.js +297 -0
  183. package/dist/bin/forgebook/workflowActions.d.ts +23 -0
  184. package/dist/bin/forgebook/workflowActions.js +23 -0
  185. package/dist/bin/forgebook-docs/catalogueMarkdown.js +12 -1
  186. package/dist/src/addressArgs.d.ts +54 -6
  187. package/dist/src/addressArgs.js +72 -16
  188. package/dist/src/addressArgsParam.d.ts +54 -0
  189. package/dist/src/addressArgsParam.js +51 -0
  190. package/dist/src/addressTexts.d.ts +14 -0
  191. package/dist/src/addressTexts.js +28 -21
  192. package/dist/src/agentIndexFile.d.ts +11 -0
  193. package/dist/src/agentIndexFile.js +11 -0
  194. package/dist/src/argConditions.d.ts +52 -0
  195. package/dist/src/argConditions.js +80 -0
  196. package/dist/src/argControl.d.ts +100 -0
  197. package/dist/src/argControl.js +0 -0
  198. package/dist/src/argExpression.d.ts +21 -0
  199. package/dist/src/argExpression.js +30 -0
  200. package/dist/src/argTypes.d.ts +40 -51
  201. package/dist/src/argTypes.js +66 -184
  202. package/dist/src/argsProps.d.ts +3 -3
  203. package/dist/src/argsProps.js +11 -5
  204. package/dist/src/bundlerErrors.d.ts +29 -0
  205. package/dist/src/bundlerErrors.js +49 -0
  206. package/dist/src/catalogue.d.ts +31 -0
  207. package/dist/src/catalogue.js +13 -2
  208. package/dist/src/catalogueRefs.d.ts +75 -0
  209. package/dist/src/catalogueRefs.js +122 -0
  210. package/dist/src/componentDocs.d.ts +71 -0
  211. package/dist/src/componentDocs.js +15 -2
  212. package/dist/src/frame/callValues.d.ts +19 -0
  213. package/dist/src/frame/callValues.js +58 -0
  214. package/dist/src/frame/canvasScheme.d.ts +33 -0
  215. package/dist/src/frame/canvasScheme.js +67 -0
  216. package/dist/src/frame/frame.css +36 -3
  217. package/dist/src/frame/frameStatus.d.ts +16 -1
  218. package/dist/src/frame/frameStatus.js +16 -1
  219. package/dist/src/frame/frameView.js +4 -3
  220. package/dist/src/frame/mountFrame.d.ts +7 -1
  221. package/dist/src/frame/mountFrame.js +153 -46
  222. package/dist/src/frame/panelValues.d.ts +35 -0
  223. package/dist/src/frame/panelValues.js +127 -0
  224. package/dist/src/frame/playActions.d.ts +39 -0
  225. package/dist/src/frame/playActions.js +98 -0
  226. package/dist/src/frame/playStepper.d.ts +28 -0
  227. package/dist/src/frame/playStepper.js +38 -0
  228. package/dist/src/frame/playStory.d.ts +9 -1
  229. package/dist/src/frame/playStory.js +49 -3
  230. package/dist/src/frame/renderer.d.ts +34 -1
  231. package/dist/src/frame/renderer.js +24 -0
  232. package/dist/src/frame/shellChannel.d.ts +1 -1
  233. package/dist/src/frame/shellChannel.js +1 -1
  234. package/dist/src/frame/shellCheck.d.ts +17 -0
  235. package/dist/src/frame/shellCheck.js +25 -0
  236. package/dist/src/frame/shellMessageCheck.d.ts +7 -0
  237. package/dist/src/frame/shellMessageCheck.js +53 -0
  238. package/dist/src/frame/storyContent.d.ts +50 -0
  239. package/dist/src/frame/storyContent.js +73 -0
  240. package/dist/src/frame/storyModule.d.ts +9 -0
  241. package/dist/src/frame/storyModule.js +20 -2
  242. package/dist/src/frame/storyRun.d.ts +15 -7
  243. package/dist/src/frame/storyRun.js +64 -15
  244. package/dist/src/frame/valueSheets.d.ts +35 -0
  245. package/dist/src/frame/valueSheets.js +99 -0
  246. package/dist/src/hotModules.d.ts +20 -0
  247. package/dist/src/hotModules.js +23 -0
  248. package/dist/src/jsxCode.d.ts +1 -14
  249. package/dist/src/jsxCode.js +46 -10
  250. package/dist/src/liveErrors.d.ts +30 -4
  251. package/dist/src/liveErrors.js +18 -3
  252. package/dist/src/messages.d.ts +77 -27
  253. package/dist/src/messages.js +58 -100
  254. package/dist/src/namedValues.d.ts +2 -26
  255. package/dist/src/namedValues.js +0 -47
  256. package/dist/src/pageConfig.d.ts +2 -0
  257. package/dist/src/playTrace.d.ts +19 -2
  258. package/dist/src/playTrace.js +10 -5
  259. package/dist/src/plugin.d.ts +10 -3
  260. package/dist/src/previewRelay.js +9 -1
  261. package/dist/src/printable.d.ts +12 -0
  262. package/dist/src/printable.js +22 -0
  263. package/dist/src/propsSignature.d.ts +37 -0
  264. package/dist/src/propsSignature.js +40 -0
  265. package/dist/src/search.d.ts +41 -5
  266. package/dist/src/search.js +93 -23
  267. package/dist/src/searchMatch.d.ts +4 -1
  268. package/dist/src/searchMatch.js +26 -5
  269. package/dist/src/searchTypos.d.ts +88 -0
  270. package/dist/src/searchTypos.js +178 -0
  271. package/dist/src/shapeValues.d.ts +86 -0
  272. package/dist/src/shapeValues.js +295 -0
  273. package/dist/src/shell/ApiReference.js +6 -3
  274. package/dist/src/shell/ApiTableBox.d.ts +15 -0
  275. package/dist/src/shell/ApiTableBox.js +11 -0
  276. package/dist/src/shell/AppearanceMenu.d.ts +4 -1
  277. package/dist/src/shell/AppearanceMenu.js +9 -6
  278. package/dist/src/shell/CodeTab.d.ts +3 -2
  279. package/dist/src/shell/CodeTab.js +3 -2
  280. package/dist/src/shell/CodeText.d.ts +1 -1
  281. package/dist/src/shell/CodeText.js +2 -3
  282. package/dist/src/shell/CompareGrid.js +1 -1
  283. package/dist/src/shell/ComponentPage.d.ts +1 -1
  284. package/dist/src/shell/ComponentPage.js +5 -1
  285. package/dist/src/shell/CustomControl.d.ts +34 -0
  286. package/dist/src/shell/CustomControl.js +132 -0
  287. package/dist/src/shell/DocContainers.js +1 -1
  288. package/dist/src/shell/DocPage.js +2 -2
  289. package/dist/src/shell/DroppedArgsList.d.ts +2 -2
  290. package/dist/src/shell/DroppedArgsList.js +1 -1
  291. package/dist/src/shell/EmbedPage.js +58 -14
  292. package/dist/src/shell/Example.d.ts +5 -1
  293. package/dist/src/shell/Example.js +16 -8
  294. package/dist/src/shell/FrameView.d.ts +6 -3
  295. package/dist/src/shell/FrameView.js +2 -2
  296. package/dist/src/shell/HomePage.d.ts +3 -1
  297. package/dist/src/shell/HomePage.js +16 -6
  298. package/dist/src/shell/InfoTip.js +2 -2
  299. package/dist/src/shell/InteractionsTab.d.ts +11 -4
  300. package/dist/src/shell/InteractionsTab.js +18 -2
  301. package/dist/src/shell/LazyPage.js +1 -1
  302. package/dist/src/shell/PackageHtml.js +3 -1
  303. package/dist/src/shell/PinnedControl.js +14 -62
  304. package/dist/src/shell/PinnedControlMenu.d.ts +44 -0
  305. package/dist/src/shell/PinnedControlMenu.js +72 -0
  306. package/dist/src/shell/PluginBlockHost.js +2 -1
  307. package/dist/src/shell/PluginTabHost.js +19 -2
  308. package/dist/src/shell/PropFields.d.ts +3 -1
  309. package/dist/src/shell/PropFields.js +9 -6
  310. package/dist/src/shell/PropRows.d.ts +23 -2
  311. package/dist/src/shell/PropRows.js +58 -19
  312. package/dist/src/shell/PropsTab.d.ts +12 -5
  313. package/dist/src/shell/PropsTab.js +9 -21
  314. package/dist/src/shell/RefStoryPage.d.ts +33 -0
  315. package/dist/src/shell/RefStoryPage.js +123 -0
  316. package/dist/src/shell/SearchPanel.js +51 -24
  317. package/dist/src/shell/Shell.d.ts +18 -0
  318. package/dist/src/shell/Shell.js +137 -22
  319. package/dist/src/shell/ShortcutHelp.d.ts +22 -0
  320. package/dist/src/shell/ShortcutHelp.js +66 -0
  321. package/dist/src/shell/Sidebar.d.ts +17 -4
  322. package/dist/src/shell/Sidebar.js +92 -41
  323. package/dist/src/shell/SidebarDocs.js +2 -2
  324. package/dist/src/shell/SidebarEntries.js +5 -3
  325. package/dist/src/shell/SidebarHandle.d.ts +3 -5
  326. package/dist/src/shell/SidebarHandle.js +4 -4
  327. package/dist/src/shell/SidebarRefs.d.ts +39 -0
  328. package/dist/src/shell/SidebarRefs.js +99 -0
  329. package/dist/src/shell/SidebarSearch.js +37 -9
  330. package/dist/src/shell/SignatureReference.js +3 -1
  331. package/dist/src/shell/Stage.d.ts +10 -2
  332. package/dist/src/shell/Stage.js +35 -60
  333. package/dist/src/shell/StatusBadges.d.ts +54 -0
  334. package/dist/src/shell/StatusBadges.js +77 -0
  335. package/dist/src/shell/StoryCodeBlock.d.ts +8 -19
  336. package/dist/src/shell/StoryCodeBlock.js +7 -6
  337. package/dist/src/shell/SwitchGallery.d.ts +36 -0
  338. package/dist/src/shell/SwitchGallery.js +17 -0
  339. package/dist/src/shell/SwitchGalleryPanel.d.ts +37 -0
  340. package/dist/src/shell/SwitchGalleryPanel.js +99 -0
  341. package/dist/src/shell/TagFilter.d.ts +24 -0
  342. package/dist/src/shell/TagFilter.js +45 -0
  343. package/dist/src/shell/TagViews.d.ts +39 -0
  344. package/dist/src/shell/TagViews.js +20 -0
  345. package/dist/src/shell/Toolbar.d.ts +4 -1
  346. package/dist/src/shell/Toolbar.js +17 -7
  347. package/dist/src/shell/ToolbarControl.d.ts +3 -0
  348. package/dist/src/shell/ToolbarControl.js +23 -6
  349. package/dist/src/shell/ViewMenuPanel.js +6 -1
  350. package/dist/src/shell/argChecks.d.ts +22 -0
  351. package/dist/src/shell/argChecks.js +20 -0
  352. package/dist/src/shell/asideStory.d.ts +17 -4
  353. package/dist/src/shell/asideStory.js +21 -4
  354. package/dist/src/shell/audienceSections.css +9 -9
  355. package/dist/src/shell/catalogueContext.d.ts +1 -1
  356. package/dist/src/shell/catalogueContext.js +6 -1
  357. package/dist/src/shell/codeSpans.d.ts +27 -0
  358. package/dist/src/shell/codeSpans.js +76 -0
  359. package/dist/src/shell/compareVariants.d.ts +4 -2
  360. package/dist/src/shell/compareVariants.js +16 -8
  361. package/dist/src/shell/composition.d.ts +23 -0
  362. package/dist/src/shell/composition.js +26 -0
  363. package/dist/src/shell/controlCycle.d.ts +1 -1
  364. package/dist/src/shell/controlCycle.js +3 -2
  365. package/dist/src/shell/customControls.d.ts +55 -0
  366. package/dist/src/shell/customControls.js +70 -0
  367. package/dist/src/shell/docPage.css +22 -22
  368. package/dist/src/shell/dockTabs.d.ts +19 -3
  369. package/dist/src/shell/dockTabs.js +28 -20
  370. package/dist/src/shell/embed.css +7 -7
  371. package/dist/src/shell/framesOrigin.d.ts +7 -0
  372. package/dist/src/shell/framesOrigin.js +1 -1
  373. package/dist/src/shell/galleryPlace.d.ts +20 -0
  374. package/dist/src/shell/galleryPlace.js +26 -0
  375. package/dist/src/shell/icons.d.ts +1 -0
  376. package/dist/src/shell/icons.js +1 -0
  377. package/dist/src/shell/keyboard.d.ts +14 -12
  378. package/dist/src/shell/keyboard.js +21 -6
  379. package/dist/src/shell/laterStrings.d.ts +29 -0
  380. package/dist/src/shell/laterStrings.js +42 -3
  381. package/dist/src/shell/mountShell.js +3 -0
  382. package/dist/src/shell/pageStrings.d.ts +4 -0
  383. package/dist/src/shell/pageStrings.js +4 -0
  384. package/dist/src/shell/pageTagView.d.ts +18 -0
  385. package/dist/src/shell/pageTagView.js +10 -0
  386. package/dist/src/shell/playMemory.d.ts +14 -0
  387. package/dist/src/shell/playMemory.js +8 -0
  388. package/dist/src/shell/propNotes.d.ts +23 -0
  389. package/dist/src/shell/propNotes.js +37 -0
  390. package/dist/src/shell/refIndexLoad.d.ts +17 -0
  391. package/dist/src/shell/refIndexLoad.js +38 -0
  392. package/dist/src/shell/refParts.d.ts +34 -0
  393. package/dist/src/shell/refParts.js +9 -0
  394. package/dist/src/shell/refStory.css +21 -0
  395. package/dist/src/shell/refStrings.d.ts +13 -0
  396. package/dist/src/shell/refStrings.js +21 -0
  397. package/dist/src/shell/search.css +11 -11
  398. package/dist/src/shell/shell.css +348 -168
  399. package/dist/src/shell/shellScheme.js +2 -2
  400. package/dist/src/shell/shortcutHelp.css +64 -0
  401. package/dist/src/shell/stageArgs.d.ts +53 -0
  402. package/dist/src/shell/stageArgs.js +64 -0
  403. package/dist/src/shell/statusBadges.css +51 -0
  404. package/dist/src/shell/strings.d.ts +7 -16
  405. package/dist/src/shell/strings.js +12 -17
  406. package/dist/src/shell/switchGallery.css +104 -0
  407. package/dist/src/shell/tagFilter.css +46 -0
  408. package/dist/src/shell/tagView.d.ts +20 -0
  409. package/dist/src/shell/tagView.js +10 -0
  410. package/dist/src/shell/useAddressArgs.d.ts +27 -2
  411. package/dist/src/shell/useAddressArgs.js +71 -14
  412. package/dist/src/shell/useControlKeys.js +2 -2
  413. package/dist/src/shell/useEditedProblems.d.ts +6 -0
  414. package/dist/src/shell/useEditedProblems.js +40 -0
  415. package/dist/src/shell/useFrameMessages.js +3 -0
  416. package/dist/src/shell/useListedTree.d.ts +13 -0
  417. package/dist/src/shell/useListedTree.js +32 -0
  418. package/dist/src/shell/usePageFrames.js +2 -2
  419. package/dist/src/shell/usePopover.d.ts +5 -0
  420. package/dist/src/shell/usePopover.js +7 -1
  421. package/dist/src/shell/useRefIndex.d.ts +22 -0
  422. package/dist/src/shell/useRefIndex.js +36 -0
  423. package/dist/src/shell/useScrollStops.d.ts +20 -0
  424. package/dist/src/shell/useScrollStops.js +41 -0
  425. package/dist/src/shell/useShortcutHelp.d.ts +18 -0
  426. package/dist/src/shell/useShortcutHelp.js +32 -0
  427. package/dist/src/shell/useSidebarOverlay.d.ts +2 -1
  428. package/dist/src/shell/useSidebarOverlay.js +12 -4
  429. package/dist/src/shell/useStoryCode.d.ts +2 -1
  430. package/dist/src/shell/useStoryCode.js +12 -7
  431. package/dist/src/shell/useToolbarLayout.d.ts +5 -1
  432. package/dist/src/shell/useToolbarLayout.js +2 -2
  433. package/dist/src/shell/useWorstCase.d.ts +8 -2
  434. package/dist/src/shell/useWorstCase.js +2 -2
  435. package/dist/src/shell/valueEditors/FileEditor.d.ts +28 -0
  436. package/dist/src/shell/valueEditors/FileEditor.js +66 -0
  437. package/dist/src/shell/valueEditors/JsonEditor.d.ts +14 -0
  438. package/dist/src/shell/valueEditors/JsonEditor.js +53 -0
  439. package/dist/src/shell/valueEditors/ListEditor.d.ts +24 -0
  440. package/dist/src/shell/valueEditors/ListEditor.js +82 -0
  441. package/dist/src/shell/valueEditors/ObjectEditor.d.ts +32 -0
  442. package/dist/src/shell/valueEditors/ObjectEditor.js +70 -0
  443. package/dist/src/shell/valueEditors/PropEditor.d.ts +37 -0
  444. package/dist/src/shell/valueEditors/PropEditor.js +53 -0
  445. package/dist/src/shell/valueEditors/RecordEditor.d.ts +20 -0
  446. package/dist/src/shell/valueEditors/RecordEditor.js +84 -0
  447. package/dist/src/shell/valueEditors/SearchSelect.d.ts +42 -0
  448. package/dist/src/shell/valueEditors/SearchSelect.js +80 -0
  449. package/dist/src/shell/valueEditors/TokenEditor.d.ts +49 -0
  450. package/dist/src/shell/valueEditors/TokenEditor.js +74 -0
  451. package/dist/src/shell/valueEditors/UnionEditor.d.ts +20 -0
  452. package/dist/src/shell/valueEditors/UnionEditor.js +64 -0
  453. package/dist/src/shell/valueEditors/ValueField.d.ts +15 -0
  454. package/dist/src/shell/valueEditors/ValueField.js +147 -0
  455. package/dist/src/shell/valueEditors/editorStrings.d.ts +56 -0
  456. package/dist/src/shell/valueEditors/editorStrings.js +66 -0
  457. package/dist/src/shell/valueEditors/fieldTypes.d.ts +31 -0
  458. package/dist/src/shell/valueEditors/fieldTypes.js +0 -0
  459. package/dist/src/shell/valueEditors/valueEditors.css +153 -0
  460. package/dist/src/shell/worstArgs.d.ts +8 -5
  461. package/dist/src/shell/worstArgs.js +14 -7
  462. package/dist/src/shellTheme.d.ts +1 -1
  463. package/dist/src/shellTheme.js +15 -1
  464. package/dist/src/shellTheme.types.d.ts +4 -0
  465. package/dist/src/shellWord.d.ts +12 -0
  466. package/dist/src/shellWord.js +15 -0
  467. package/dist/src/sourceFiles.js +2 -1
  468. package/dist/src/storyArgTypes.d.ts +57 -0
  469. package/dist/src/storyArgTypes.js +195 -0
  470. package/dist/src/storyBackground.js +14 -3
  471. package/dist/src/storyCheck.d.ts +85 -3
  472. package/dist/src/storyCheck.js +23 -1
  473. package/dist/src/storyCodeText.d.ts +46 -0
  474. package/dist/src/storyCodeText.js +27 -0
  475. package/dist/src/storyControls.d.ts +100 -0
  476. package/dist/src/storyControls.js +100 -0
  477. package/dist/src/storyStatuses.d.ts +55 -0
  478. package/dist/src/storyStatuses.js +104 -0
  479. package/dist/src/storyTagNames.d.ts +25 -0
  480. package/dist/src/storyTagNames.js +25 -0
  481. package/dist/src/storyTags.d.ts +29 -0
  482. package/dist/src/storyTags.js +85 -0
  483. package/dist/src/storyTree.d.ts +13 -0
  484. package/dist/src/storyTree.js +24 -4
  485. package/dist/src/storybookArgs.d.ts +24 -0
  486. package/dist/src/storybookArgs.js +185 -0
  487. package/dist/src/switches.d.ts +66 -3
  488. package/dist/src/switches.js +42 -1
  489. package/dist/src/valueSchema.d.ts +28 -0
  490. package/dist/src/valueSchema.js +196 -0
  491. package/dist/src/valueShape.d.ts +94 -0
  492. package/dist/src/valueShape.js +25 -0
  493. package/dist/src/viewState.d.ts +8 -3
  494. package/dist/src/viewState.js +27 -10
  495. package/dist/src/vite/adapter.d.ts +40 -2
  496. package/dist/src/vite/adapter.js +1 -0
  497. package/dist/src/vite/agent.types.d.ts +347 -7
  498. package/dist/src/vite/agentApi.d.ts +23 -0
  499. package/dist/src/vite/agentApi.js +90 -17
  500. package/dist/src/vite/agentIndex.d.ts +0 -2
  501. package/dist/src/vite/agentIndex.js +5 -6
  502. package/dist/src/vite/agentRoutes.d.ts +20 -1
  503. package/dist/src/vite/agentRoutes.js +106 -65
  504. package/dist/src/vite/agentStatuses.d.ts +42 -0
  505. package/dist/src/vite/agentStatuses.js +67 -0
  506. package/dist/src/vite/agentStoryCode.d.ts +48 -0
  507. package/dist/src/vite/agentStoryCode.js +38 -0
  508. package/dist/src/vite/agentVisibility.d.ts +47 -0
  509. package/dist/src/vite/agentVisibility.js +174 -0
  510. package/dist/src/vite/appAudit.d.ts +134 -0
  511. package/dist/src/vite/appAudit.js +333 -0
  512. package/dist/src/vite/appBuildOption.d.ts +53 -0
  513. package/dist/src/vite/appBuildOption.js +55 -0
  514. package/dist/src/vite/appTokenFiles.d.ts +92 -0
  515. package/dist/src/vite/appTokenFiles.js +433 -0
  516. package/dist/src/vite/appTokens.d.ts +23 -0
  517. package/dist/src/vite/appTokens.js +275 -0
  518. package/dist/src/vite/builtTexts.d.ts +10 -0
  519. package/dist/src/vite/builtTexts.js +59 -22
  520. package/dist/src/vite/catalogueConfig.d.ts +3 -1
  521. package/dist/src/vite/catalogueConfig.js +15 -3
  522. package/dist/src/vite/changeCoverage.d.ts +74 -0
  523. package/dist/src/vite/changeCoverage.js +120 -0
  524. package/dist/src/vite/changedRoute.d.ts +30 -0
  525. package/dist/src/vite/changedRoute.js +197 -0
  526. package/dist/src/vite/checkCode.d.ts +105 -3
  527. package/dist/src/vite/checkCode.js +323 -36
  528. package/dist/src/vite/checkoutWatch.d.ts +97 -0
  529. package/dist/src/vite/checkoutWatch.js +287 -0
  530. package/dist/src/vite/closeWatch.d.ts +8 -0
  531. package/dist/src/vite/closeWatch.js +1 -1
  532. package/dist/src/vite/componentCache.d.ts +8 -0
  533. package/dist/src/vite/componentCache.js +66 -0
  534. package/dist/src/vite/componentGraph.d.ts +71 -0
  535. package/dist/src/vite/componentGraph.js +133 -0
  536. package/dist/src/vite/componentRules.d.ts +33 -0
  537. package/dist/src/vite/componentRules.js +105 -0
  538. package/dist/src/vite/componentScan.d.ts +69 -0
  539. package/dist/src/vite/componentScan.js +418 -0
  540. package/dist/src/vite/compositionCheck.d.ts +15 -0
  541. package/dist/src/vite/compositionCheck.js +243 -0
  542. package/dist/src/vite/config.d.ts +32 -1
  543. package/dist/src/vite/configFile.d.ts +14 -2
  544. package/dist/src/vite/configFile.js +124 -40
  545. package/dist/src/vite/configKeys.d.ts +15 -0
  546. package/dist/src/vite/configKeys.js +171 -0
  547. package/dist/src/vite/configLoadError.d.ts +23 -0
  548. package/dist/src/vite/configLoadError.js +71 -0
  549. package/dist/src/vite/cssDeclarations.d.ts +71 -0
  550. package/dist/src/vite/cssDeclarations.js +290 -0
  551. package/dist/src/vite/cssImports.d.ts +14 -0
  552. package/dist/src/vite/cssImports.js +48 -0
  553. package/dist/src/vite/cssReferences.d.ts +54 -0
  554. package/dist/src/vite/cssReferences.js +157 -0
  555. package/dist/src/vite/cssTokenValues.d.ts +50 -0
  556. package/dist/src/vite/cssTokenValues.js +233 -0
  557. package/dist/src/vite/designTokens.d.ts +24 -0
  558. package/dist/src/vite/designTokens.js +5 -1
  559. package/dist/src/vite/docsExtractor.d.ts +9 -3
  560. package/dist/src/vite/docsExtractor.js +11 -3
  561. package/dist/src/vite/docsProgram.d.ts +17 -4
  562. package/dist/src/vite/docsProgram.js +52 -11
  563. package/dist/src/vite/docsWorker.js +7 -2
  564. package/dist/src/vite/emptyStoryGlobs.d.ts +41 -0
  565. package/dist/src/vite/emptyStoryGlobs.js +52 -0
  566. package/dist/src/vite/fileImports.d.ts +17 -0
  567. package/dist/src/vite/fileImports.js +57 -0
  568. package/dist/src/vite/findComponent.d.ts +10 -2
  569. package/dist/src/vite/findComponent.js +27 -22
  570. package/dist/src/vite/findRoute.js +3 -2
  571. package/dist/src/vite/forcedStates.d.ts +9 -2
  572. package/dist/src/vite/forcedStates.js +12 -3
  573. package/dist/src/vite/forgebookPlugin.d.ts +2 -0
  574. package/dist/src/vite/forgebookPlugin.js +52 -72
  575. package/dist/src/vite/frameErrors.d.ts +19 -0
  576. package/dist/src/vite/frameErrors.js +70 -0
  577. package/dist/src/vite/framesServer.d.ts +12 -0
  578. package/dist/src/vite/framesServer.js +21 -4
  579. package/dist/src/vite/functionComponentDocs.js +81 -12
  580. package/dist/src/vite/generatedModules.js +4 -2
  581. package/dist/src/vite/gitChange.d.ts +38 -5
  582. package/dist/src/vite/gitChange.js +71 -11
  583. package/dist/src/vite/hiddenStoryFiles.d.ts +23 -0
  584. package/dist/src/vite/hiddenStoryFiles.js +107 -0
  585. package/dist/src/vite/hotSnippets.d.ts +38 -14
  586. package/dist/src/vite/hotSnippets.js +137 -39
  587. package/dist/src/vite/importedNames.d.ts +37 -0
  588. package/dist/src/vite/importedNames.js +138 -0
  589. package/dist/src/vite/indexFields.d.ts +6 -0
  590. package/dist/src/vite/indexFields.js +21 -0
  591. package/dist/src/vite/indexStoryFile.d.ts +8 -1
  592. package/dist/src/vite/indexStoryFile.js +22 -157
  593. package/dist/src/vite/jsxCallSites.d.ts +33 -0
  594. package/dist/src/vite/jsxCallSites.js +200 -0
  595. package/dist/src/vite/jsxInScripts.d.ts +67 -0
  596. package/dist/src/vite/jsxInScripts.js +138 -0
  597. package/dist/src/vite/jsxTree.d.ts +20 -0
  598. package/dist/src/vite/jsxTree.js +163 -0
  599. package/dist/src/vite/lineAndColumn.d.ts +13 -0
  600. package/dist/src/vite/lineAndColumn.js +18 -0
  601. package/dist/src/vite/lookAlikes.d.ts +65 -0
  602. package/dist/src/vite/lookAlikes.js +228 -0
  603. package/dist/src/vite/nearestToken.d.ts +17 -0
  604. package/dist/src/vite/nearestToken.js +9 -2
  605. package/dist/src/vite/packageEntries.d.ts +42 -0
  606. package/dist/src/vite/packageEntries.js +127 -0
  607. package/dist/src/vite/pages.d.ts +9 -1
  608. package/dist/src/vite/pages.js +108 -4
  609. package/dist/src/vite/pluginConfig.js +4 -0
  610. package/dist/src/vite/pluginIds.d.ts +2 -0
  611. package/dist/src/vite/pluginIds.js +5 -1
  612. package/dist/src/vite/pluginModules.d.ts +81 -11
  613. package/dist/src/vite/pluginModules.js +109 -21
  614. package/dist/src/vite/prebundled.d.ts +57 -15
  615. package/dist/src/vite/prebundled.js +80 -0
  616. package/dist/src/vite/previewTags.d.ts +25 -0
  617. package/dist/src/vite/previewTags.js +56 -0
  618. package/dist/src/vite/projectFiles.d.ts +54 -0
  619. package/dist/src/vite/projectFiles.js +116 -0
  620. package/dist/src/vite/projectPostcss.d.ts +70 -0
  621. package/dist/src/vite/projectPostcss.js +250 -0
  622. package/dist/src/vite/propDocs.d.ts +12 -0
  623. package/dist/src/vite/propDocs.js +130 -58
  624. package/dist/src/vite/propKind.d.ts +40 -0
  625. package/dist/src/vite/propKind.js +71 -0
  626. package/dist/src/vite/propTypeNotes.d.ts +22 -0
  627. package/dist/src/vite/propTypeNotes.js +51 -0
  628. package/dist/src/vite/publishedExports.d.ts +27 -0
  629. package/dist/src/vite/publishedExports.js +298 -0
  630. package/dist/src/vite/realFolder.d.ts +6 -0
  631. package/dist/src/vite/realFolder.js +25 -0
  632. package/dist/src/vite/refsConfig.d.ts +39 -0
  633. package/dist/src/vite/refsConfig.js +54 -0
  634. package/dist/src/vite/reuseCheck.d.ts +45 -0
  635. package/dist/src/vite/reuseCheck.js +260 -0
  636. package/dist/src/vite/runningVersions.d.ts +33 -0
  637. package/dist/src/vite/runningVersions.js +25 -0
  638. package/dist/src/vite/scriptProblems.d.ts +60 -0
  639. package/dist/src/vite/scriptProblems.js +155 -0
  640. package/dist/src/vite/searchModule.js +3 -2
  641. package/dist/src/vite/searchRoute.js +4 -2
  642. package/dist/src/vite/shapeDocs.d.ts +36 -0
  643. package/dist/src/vite/shapeDocs.js +177 -0
  644. package/dist/src/vite/singleFileComponent.d.ts +17 -0
  645. package/dist/src/vite/singleFileComponent.js +83 -0
  646. package/dist/src/vite/sourceText.d.ts +34 -0
  647. package/dist/src/vite/sourceText.js +72 -0
  648. package/dist/src/vite/sourceTokens.d.ts +7 -0
  649. package/dist/src/vite/sourceTokens.js +7 -2
  650. package/dist/src/vite/stackLines.d.ts +49 -0
  651. package/dist/src/vite/stackLines.js +96 -0
  652. package/dist/src/vite/storyCode.d.ts +22 -7
  653. package/dist/src/vite/storyCode.js +263 -37
  654. package/dist/src/vite/storyCoverage.d.ts +48 -0
  655. package/dist/src/vite/storyCoverage.js +179 -0
  656. package/dist/src/vite/storyFilesModule.d.ts +48 -3
  657. package/dist/src/vite/storyFilesModule.js +105 -15
  658. package/dist/src/vite/storyPatterns.d.ts +31 -0
  659. package/dist/src/vite/storyPatterns.js +140 -5
  660. package/dist/src/vite/storyReach.d.ts +10 -2
  661. package/dist/src/vite/storyReach.js +15 -11
  662. package/dist/src/vite/storyTopLevel.d.ts +51 -0
  663. package/dist/src/vite/storyTopLevel.js +146 -0
  664. package/dist/src/vite/storylessRoutes.d.ts +4 -3
  665. package/dist/src/vite/storylessRoutes.js +210 -19
  666. package/dist/src/vite/switchValuesCheck.d.ts +19 -0
  667. package/dist/src/vite/switchValuesCheck.js +164 -0
  668. package/dist/src/vite/switchesDocument.d.ts +15 -0
  669. package/dist/src/vite/switchesDocument.js +47 -0
  670. package/dist/src/vite/tailwindConfigTokens.d.ts +41 -0
  671. package/dist/src/vite/tailwindConfigTokens.js +306 -0
  672. package/dist/src/vite/textImports.d.ts +15 -0
  673. package/dist/src/vite/textImports.js +58 -0
  674. package/dist/src/vite/textModules.d.ts +6 -5
  675. package/dist/src/vite/textModules.js +13 -8
  676. package/dist/src/vite/tokenAnswers.d.ts +6 -2
  677. package/dist/src/vite/tokenAnswers.js +11 -7
  678. package/dist/src/vite/typeParameters.d.ts +83 -0
  679. package/dist/src/vite/typeParameters.js +270 -0
  680. package/dist/src/vite/unionProps.d.ts +37 -0
  681. package/dist/src/vite/unionProps.js +121 -0
  682. package/dist/src/vite/unresolvedTokens.d.ts +20 -0
  683. package/dist/src/vite/unresolvedTokens.js +193 -0
  684. package/dist/src/vite/usageGraph.js +10 -52
  685. package/dist/src/vite/usageGuidance.d.ts +9 -2
  686. package/dist/src/vite/usageGuidance.js +36 -8
  687. package/dist/src/vite/usageImports.d.ts +35 -0
  688. package/dist/src/vite/usageImports.js +280 -0
  689. package/dist/src/vite/visibilityRoute.d.ts +16 -0
  690. package/dist/src/vite/visibilityRoute.js +320 -0
  691. package/dist/src/worstCase.d.ts +2 -0
  692. package/dist/src/worstCase.js +2 -0
  693. package/package.json +28 -8
@@ -0,0 +1,148 @@
1
+ /** The packages `forgebook` itself asks the project for: its shell is React. Vite is its own. */
2
+ export const FORGEBOOK_PEERS = {
3
+ react: "18.2.0",
4
+ "react-dom": "18.2.0"
5
+ };
6
+ /** The names `--framework` takes, the order of the supported list. */
7
+ export const FRAMEWORK_NAMES = [
8
+ "react",
9
+ "vue",
10
+ "svelte",
11
+ "solid",
12
+ "preact",
13
+ "web-components",
14
+ "angular",
15
+ "nextjs",
16
+ "nuxt",
17
+ "sveltekit",
18
+ "react-native-web",
19
+ "html"
20
+ ];
21
+ /** Angular's packages its adapter needs, all from the same lowest version. */
22
+ const ANGULAR_PEERS = Object.fromEntries(["build", "common", "compiler", "compiler-cli", "core", "platform-browser"].map((name) => [
23
+ `@angular/${name}`,
24
+ "20.0.0"
25
+ ]));
26
+ /** The usual folders of a project's components. */
27
+ const SOURCE_FOLDERS = ["src", "components", "lib"];
28
+ /** Every framework, by its adapter's name. */
29
+ export const PROJECT_FRAMEWORKS = {
30
+ react: {
31
+ label: "React",
32
+ markers: ["react"],
33
+ builtOn: [],
34
+ peers: { react: "18.2.0", "react-dom": "18.2.0" },
35
+ storyExtension: "tsx",
36
+ sourceFolders: SOURCE_FOLDERS
37
+ },
38
+ vue: {
39
+ label: "Vue",
40
+ markers: ["vue"],
41
+ builtOn: [],
42
+ peers: { vue: "3.5.0" },
43
+ storyExtension: "ts",
44
+ sourceFolders: SOURCE_FOLDERS
45
+ },
46
+ svelte: {
47
+ label: "Svelte",
48
+ markers: ["svelte"],
49
+ builtOn: [],
50
+ peers: { svelte: "5.46.4" },
51
+ storyExtension: "ts",
52
+ sourceFolders: SOURCE_FOLDERS
53
+ },
54
+ solid: {
55
+ label: "Solid",
56
+ markers: ["solid-js"],
57
+ builtOn: [],
58
+ peers: { "solid-js": "1.9.0" },
59
+ storyExtension: "tsx",
60
+ sourceFolders: SOURCE_FOLDERS
61
+ },
62
+ preact: {
63
+ label: "Preact",
64
+ markers: ["preact"],
65
+ builtOn: [],
66
+ peers: { preact: "10.19.0" },
67
+ storyExtension: "tsx",
68
+ sourceFolders: SOURCE_FOLDERS
69
+ },
70
+ "web-components": {
71
+ label: "Lit",
72
+ markers: ["lit"],
73
+ builtOn: [],
74
+ peers: { lit: "3.2.0" },
75
+ storyExtension: "ts",
76
+ sourceFolders: SOURCE_FOLDERS
77
+ },
78
+ angular: {
79
+ label: "Angular",
80
+ markers: ["@angular/core"],
81
+ builtOn: [],
82
+ peers: ANGULAR_PEERS,
83
+ storyExtension: "ts",
84
+ sourceFolders: ["src", "projects"]
85
+ },
86
+ nextjs: {
87
+ label: "Next.js",
88
+ markers: ["next"],
89
+ builtOn: ["react"],
90
+ peers: { next: "15.0.0", react: "19.0.0", "react-dom": "19.0.0" },
91
+ storyExtension: "tsx",
92
+ sourceFolders: ["src", "app", "components", "lib"]
93
+ },
94
+ nuxt: {
95
+ label: "Nuxt",
96
+ markers: ["nuxt"],
97
+ builtOn: ["vue"],
98
+ peers: { vue: "3.5.0", "vue-router": "4.5.0" },
99
+ storyExtension: "ts",
100
+ sourceFolders: ["app", "components"]
101
+ },
102
+ sveltekit: {
103
+ label: "SvelteKit",
104
+ markers: ["@sveltejs/kit"],
105
+ builtOn: ["svelte"],
106
+ peers: { svelte: "5.46.4" },
107
+ storyExtension: "ts",
108
+ sourceFolders: ["src"]
109
+ },
110
+ "react-native-web": {
111
+ label: "React Native Web",
112
+ markers: ["react-native", "react-native-web", "expo"],
113
+ builtOn: ["react"],
114
+ peers: {
115
+ react: "18.2.0",
116
+ "react-dom": "18.2.0",
117
+ "react-native": "0.76.0",
118
+ "react-native-web": "0.21.0"
119
+ },
120
+ storyExtension: "tsx",
121
+ sourceFolders: ["src", "app", "components", "lib"]
122
+ },
123
+ html: {
124
+ label: "plain HTML",
125
+ markers: [],
126
+ builtOn: [],
127
+ peers: {},
128
+ storyExtension: "ts",
129
+ sourceFolders: SOURCE_FOLDERS
130
+ }
131
+ };
132
+ /** Whether a package's declared version is Preact standing in for it (`"react": "npm:@preact/compat"`). */
133
+ const isPreactAlias = (specifier) => specifier?.includes("preact/compat") === true;
134
+ /**
135
+ * The framework a project is on.
136
+ *
137
+ * @param declared - the packages it declares, with their versions as written.
138
+ */
139
+ export const detectFramework = (declared) => {
140
+ const adapters = FRAMEWORK_NAMES.filter((name) => declared.has(`@forgebook/${name}`));
141
+ const isOnIt = (name) => PROJECT_FRAMEWORKS[name].markers.some((marker) => declared.has(marker) && !isPreactAlias(declared.get(marker)));
142
+ const found = adapters.length > 0 ? adapters : FRAMEWORK_NAMES.filter(isOnIt);
143
+ const candidates = found.filter((name) => !found.some((other) => PROJECT_FRAMEWORKS[other].builtOn.includes(name)));
144
+ const [only] = candidates;
145
+ if (only === undefined)
146
+ return { kind: "unknown" };
147
+ return candidates.length === 1 ? { kind: "found", framework: only } : { kind: "ambiguous", candidates };
148
+ };
@@ -0,0 +1,23 @@
1
+ import type { ImportedFramework } from "../importers/storybookFrameworks.ts";
2
+ import type { NextStep } from "./newProject.types.ts";
3
+ /** What a project's files say about how its stories should look. */
4
+ export type ProjectLook = {
5
+ /** The style sheets a preview loads, as its imports write them. */
6
+ readonly styleSheets: readonly string[];
7
+ /** What was left to do. */
8
+ readonly nextSteps: readonly NextStep[];
9
+ };
10
+ /**
11
+ * Whether the project has a PostCSS configuration of its own.
12
+ *
13
+ * @param projectDir - the project's folder.
14
+ */
15
+ export declare const hasPostcssConfig: (projectDir: string) => boolean;
16
+ /**
17
+ * Reads what makes a project's stories look and work as its app does.
18
+ *
19
+ * @param projectDir - the project's folder, absolute.
20
+ * @param framework - its framework.
21
+ * @param declared - the packages it declares.
22
+ */
23
+ export declare const readProjectLook: (projectDir: string, framework: ImportedFramework, declared: ReadonlyMap<string, string>) => ProjectLook;
@@ -0,0 +1,293 @@
1
+ /**
2
+ * What makes a project's stories look and work as its app does, read from its files: the global style sheets a preview
3
+ * must load, and, named as next steps, what cannot be worked out from outside (providers, portals, the head).
4
+ *
5
+ * @remarks
6
+ * A catalogue runs no entry of the app, so what one does for the app does not happen for a story. A style sheet is the
7
+ * one thing written for the project, because its import is the same one line everywhere; the others need code only the
8
+ * project knows, so each is reported with where it was read and what to do. The app's build is another matter: the
9
+ * catalogue reads it when it starts (`appBuild`), so nothing is asked of the project for its aliases, plugins or PostCSS.
10
+ *
11
+ * @module
12
+ */
13
+ import { existsSync, readFileSync, realpathSync, statSync } from "node:fs";
14
+ import { dirname, isAbsolute, join, relative, resolve } from "node:path";
15
+ import ts from "typescript-6";
16
+ import { VITE_PATHS } from "../../../src/vite/vitePaths.js";
17
+ import { angularProviders, angularStyles, bodyIds, isStyleSheet, markupWrappers, pageFacts, styleSheetImports, vueInstalls } from "./projectEntries.js";
18
+ import { installedVersion } from "./projectPackages.js";
19
+ /** The extensions an entry script may have. */
20
+ const ENTRY_EXTENSIONS = ["tsx", "ts", "jsx", "js", "mts", "mjs"];
21
+ /** The app's entries where its page names none, without their extension. */
22
+ const ENTRY_NAMES = {
23
+ nextjs: ["app/layout", "src/app/layout", "pages/_app", "src/pages/_app"],
24
+ "react-native-web": ["app/_layout", "src/app/_layout", "App", "src/App", "index"],
25
+ angular: ["src/main", "src/app/app.config"]
26
+ };
27
+ /** A Vite project's usual entries, for one whose page cannot be read. */
28
+ const VITE_ENTRY_NAMES = ["src/main", "src/index"];
29
+ /** The page each framework starts from; Vite's `index.html` when not named. */
30
+ const PAGES = {
31
+ nextjs: undefined,
32
+ nuxt: undefined,
33
+ "react-native-web": undefined,
34
+ sveltekit: "src/app.html",
35
+ angular: "src/index.html"
36
+ };
37
+ /** The names a PostCSS configuration may have. */
38
+ const POSTCSS_FILES = [
39
+ "postcss.config.js",
40
+ "postcss.config.mjs",
41
+ "postcss.config.cjs",
42
+ "postcss.config.ts",
43
+ "postcss.config.mts",
44
+ "postcss.config.cts",
45
+ ".postcssrc",
46
+ ".postcssrc.json",
47
+ ".postcssrc.js",
48
+ ".postcssrc.cjs",
49
+ ".postcssrc.yaml",
50
+ ".postcssrc.yml"
51
+ ];
52
+ /** The largest file read, in bytes: an entry is small, and the readers need not meet a planted giant. */
53
+ const MAX_FILE_SIZE = 1_000_000;
54
+ /** A package specifier: a name, with its scope and a path inside it. */
55
+ const PACKAGE_SPECIFIER = /^(?:@[a-z0-9~-][\w.~-]*\/)?[a-z0-9~-][\w.~-]*(?:\/[\w.@~-]+)*$/;
56
+ /** Whether a path is a file. */
57
+ const isFile = (path) => existsSync(path) && statSync(path).isFile();
58
+ /** A file's text; empty past the size the readers take. */
59
+ const readText = (path) => statSync(path).size > MAX_FILE_SIZE ? "" : readFileSync(path, "utf8");
60
+ /**
61
+ * Whether a file is really inside the project, links followed. A project's text decides what is read here and what a
62
+ * preview imports, so it cannot be allowed to name a file elsewhere on the machine.
63
+ */
64
+ const isInside = (projectDir, file) => {
65
+ const path = relative(realpathSync(projectDir), realpathSync(file));
66
+ return path !== "" && !path.startsWith("..") && !isAbsolute(path);
67
+ };
68
+ /**
69
+ * Whether the project has a PostCSS configuration of its own.
70
+ *
71
+ * @param projectDir - the project's folder.
72
+ */
73
+ export const hasPostcssConfig = (projectDir) => POSTCSS_FILES.some((name) => isFile(join(projectDir, name)));
74
+ /** A path from the project's folder, as an import or a message writes it. */
75
+ const fromProject = (projectDir, file) => VITE_PATHS.normalize(relative(projectDir, file));
76
+ /** The aliases `tsconfig.json` and `tsconfig.app.json` declare (`@/*` to `./src/*`), which Vite's templates keep there. */
77
+ const tsconfigAliases = (projectDir) => ["tsconfig.json", "tsconfig.app.json"].flatMap((name) => {
78
+ const file = join(projectDir, name);
79
+ if (!isFile(file))
80
+ return [];
81
+ const parsed = ts.parseConfigFileTextToJson(file, readText(file)).config;
82
+ const options = typeof parsed === "object" && parsed !== null && "compilerOptions" in parsed
83
+ ? parsed.compilerOptions
84
+ : undefined;
85
+ const paths = typeof options === "object" && options !== null && "paths" in options ? options.paths : undefined;
86
+ if (typeof paths !== "object" || paths === null)
87
+ return [];
88
+ return Object.entries(paths).flatMap(([alias, targets]) => {
89
+ const target = Array.isArray(targets) ? targets[0] : undefined;
90
+ return typeof target === "string" ? [{ alias, target, file: name }] : [];
91
+ });
92
+ });
93
+ /** A bare specifier if it names a package the project has: one it does not have would stop every story from loading. */
94
+ const packageImport = (specifier, { projectDir, declared }) => {
95
+ if (!PACKAGE_SPECIFIER.test(specifier) || specifier.split("/").includes(".."))
96
+ return undefined;
97
+ const parts = specifier.split("/");
98
+ const name = parts.slice(0, specifier.startsWith("@") ? 2 : 1).join("/");
99
+ return declared.has(name) || installedVersion(projectDir, name) !== undefined ? specifier : undefined;
100
+ };
101
+ /**
102
+ * A style sheet as a preview beside the configuration imports it, or none when it is not one, is outside the project, or
103
+ * cannot be found from here: an import that does not load stops every story.
104
+ *
105
+ * @param specifier - the import or the page's address.
106
+ * @param fromFile - the file that names it, absolute.
107
+ * @param scope - what it is read against.
108
+ */
109
+ const previewImport = (specifier, fromFile, scope) => {
110
+ const { projectDir, aliases } = scope;
111
+ if (!isStyleSheet(specifier))
112
+ return undefined;
113
+ const local = (file) => isFile(file) && isInside(projectDir, file) ? `./${fromProject(projectDir, file)}` : undefined;
114
+ if (specifier.startsWith("."))
115
+ return local(resolve(dirname(fromFile), specifier));
116
+ if (specifier.startsWith("/"))
117
+ return local(join(projectDir, specifier));
118
+ for (const { alias, target } of aliases) {
119
+ const prefix = alias.replace(/\*$/, "");
120
+ if (specifier.startsWith(prefix))
121
+ return local(resolve(projectDir, target.replace(/\*$/, ""), specifier.slice(prefix.length)));
122
+ }
123
+ return packageImport(specifier, scope);
124
+ };
125
+ /** The entry scripts of a project: the ones its page starts, else the usual names. */
126
+ const entryFiles = (projectDir, framework, pageScripts) => {
127
+ if (framework === "nuxt")
128
+ return [];
129
+ if (framework === "sveltekit")
130
+ return ["src/routes/+layout.svelte", "src/routes/+layout@.svelte"]
131
+ .map((name) => join(projectDir, name))
132
+ .filter(isFile);
133
+ const started = pageScripts
134
+ .map((script) => join(projectDir, script.replace(/^\//, "")))
135
+ .filter((file) => /\.[cm]?[jt]sx?$/.test(file) && isFile(file) && isInside(projectDir, file));
136
+ if (started.length > 0)
137
+ return started;
138
+ const names = ENTRY_NAMES[framework] ?? VITE_ENTRY_NAMES;
139
+ return names.flatMap((name) => {
140
+ const found = ENTRY_EXTENSIONS.map((extension) => join(projectDir, `${name}.${extension}`)).find(isFile);
141
+ return found === undefined ? [] : [found];
142
+ });
143
+ };
144
+ /** What a framework's entry says it wraps the app in. */
145
+ const wrappersIn = (framework, text) => {
146
+ if (framework === "vue")
147
+ return vueInstalls(text);
148
+ if (framework === "angular")
149
+ return angularProviders(text);
150
+ if (framework === "web-components" || framework === "html" || framework === "nuxt")
151
+ return [];
152
+ return markupWrappers(text);
153
+ };
154
+ /** The sentence about a PostCSS configuration a catalogue cannot read: YAML, which would take a parser of its own. */
155
+ const buildSteps = (projectDir) => [".postcssrc.yaml", ".postcssrc.yml"]
156
+ .filter((name) => isFile(join(projectDir, name)))
157
+ .map((file) => ({
158
+ kind: "postcss",
159
+ file,
160
+ message: `${file} is not run: the catalogue reads PostCSS's JSON and script files, so write it as postcss.config.mjs, or stories draw without what its plugins add`
161
+ }));
162
+ /** Reads a JSON file; none for one that is not there or cannot be read. */
163
+ const readJsonFile = (file) => {
164
+ if (!isFile(file))
165
+ return undefined;
166
+ try {
167
+ const parsed = JSON.parse(readText(file));
168
+ return parsed;
169
+ }
170
+ catch {
171
+ return undefined;
172
+ }
173
+ };
174
+ /** A `styles` entry as an import: a file of the project's where there is one, else the package `ng add` names. */
175
+ const angularSpecifier = (projectDir, style) => {
176
+ const path = style.replace(/^\.\//, "");
177
+ if (path.startsWith("node_modules/"))
178
+ return path.slice("node_modules/".length);
179
+ return isFile(join(projectDir, path)) ? `./${path}` : path;
180
+ };
181
+ /** The style sheets named by a page, the entries and `angular.json`, each with the file that names it. */
182
+ const namedStyleSheets = (projectDir, framework, pageFile, facts, texts) => [
183
+ ...(pageFile === undefined
184
+ ? []
185
+ : (facts?.styleSheets ?? []).map((href) => ({
186
+ // an address in a page is relative to it, never a package's name
187
+ specifier: /^[./]/.test(href) ? href : `./${href}`,
188
+ fromFile: pageFile
189
+ }))),
190
+ ...texts.flatMap(({ file, text }) => styleSheetImports(text).map((specifier) => ({ specifier, fromFile: file }))),
191
+ ...(framework === "angular"
192
+ ? angularStyles(readJsonFile(join(projectDir, "angular.json"))).map((style) => ({
193
+ specifier: angularSpecifier(projectDir, style),
194
+ fromFile: join(projectDir, "angular.json")
195
+ }))
196
+ : [])
197
+ ];
198
+ /** The next steps one entry file gives rise to. */
199
+ const entrySteps = (projectDir, framework, { file, text }) => {
200
+ const shown = fromProject(projectDir, file);
201
+ const wrappers = wrappersIn(framework, text);
202
+ return [
203
+ ...(wrappers.length === 0
204
+ ? []
205
+ : [
206
+ {
207
+ kind: "provider",
208
+ file: shown,
209
+ message: `${shown} sets up ${wrappers.join(", ")}: a component that needs one fails in a story until the preview gives it, in a decorator`
210
+ }
211
+ ]),
212
+ ...(framework === "nextjs" && /from\s+["']next\/font\//.test(text)
213
+ ? [
214
+ {
215
+ kind: "font",
216
+ file: shown,
217
+ message: `${shown} sets its fonts with next/font on the page: stories show the fallback until a decorator in the preview applies their class`
218
+ }
219
+ ]
220
+ : [])
221
+ ];
222
+ };
223
+ /**
224
+ * The next steps a page gives rise to: an element beside the app's root that the entry does not mount on is a portal's
225
+ * or a widget's, and what its head loads from elsewhere stories do not get.
226
+ */
227
+ const pageSteps = (page, framework, facts, texts) => {
228
+ const entries = texts.map(({ text }) => text).join("\n");
229
+ const ids = framework === "nextjs"
230
+ ? texts.flatMap(({ text }) => bodyIds(text))
231
+ : (facts?.bodyIds ?? []).filter((id) => !entries.includes(id));
232
+ const links = facts?.remoteLinks ?? [];
233
+ return [
234
+ ...(ids.length === 0
235
+ ? []
236
+ : [
237
+ {
238
+ kind: "portal",
239
+ file: page,
240
+ message: `The app's page holds ${ids.map((id) => `#${id}`).join(", ")}: a component that portals into one finds nothing in a story's frame until a decorator adds it`
241
+ }
242
+ ]),
243
+ ...(links.length === 0
244
+ ? []
245
+ : [
246
+ {
247
+ kind: "head",
248
+ file: page,
249
+ message: `${page ?? "The page"} links ${links.join(", ")}: give them to \`head\` in the configuration, or stories draw without them`
250
+ }
251
+ ])
252
+ ];
253
+ };
254
+ /**
255
+ * Reads what makes a project's stories look and work as its app does.
256
+ *
257
+ * @param projectDir - the project's folder, absolute.
258
+ * @param framework - its framework.
259
+ * @param declared - the packages it declares.
260
+ */
261
+ export const readProjectLook = (projectDir, framework, declared) => {
262
+ const page = framework in PAGES ? PAGES[framework] : "index.html";
263
+ const pageFile = page === undefined ? undefined : join(projectDir, page);
264
+ const facts = pageFile !== undefined && isFile(pageFile) ? pageFacts(readText(pageFile)) : undefined;
265
+ const texts = entryFiles(projectDir, framework, facts?.scripts ?? []).map((file) => ({
266
+ file,
267
+ text: readText(file)
268
+ }));
269
+ const scope = { projectDir, aliases: tsconfigAliases(projectDir), declared };
270
+ const steps = [];
271
+ const styleSheets = new Set();
272
+ for (const { specifier, fromFile } of namedStyleSheets(projectDir, framework, pageFile, facts, texts)) {
273
+ const found = previewImport(specifier, fromFile, scope);
274
+ const shown = fromProject(projectDir, fromFile);
275
+ if (found !== undefined)
276
+ styleSheets.add(found);
277
+ else
278
+ steps.push({
279
+ kind: "style-sheet",
280
+ file: shown,
281
+ message: `${shown} loads ${specifier}, which could not be read as a style sheet of this project or of a package it has: import it in the preview yourself if stories need it`
282
+ });
283
+ }
284
+ return {
285
+ styleSheets: [...styleSheets],
286
+ nextSteps: [
287
+ ...steps,
288
+ ...texts.flatMap((entry) => entrySteps(projectDir, framework, entry)),
289
+ ...pageSteps(page, framework, facts, texts),
290
+ ...buildSteps(projectDir)
291
+ ]
292
+ };
293
+ };
@@ -0,0 +1,66 @@
1
+ import type { ImportedFramework } from "../importers/storybookFrameworks.ts";
2
+ /** A package below the lowest version Forgebook takes. */
3
+ export type TooOldPackage = {
4
+ /** Its name. */
5
+ readonly name: string;
6
+ /** The version found, as written. */
7
+ readonly found: string;
8
+ /** The lowest version taken. */
9
+ readonly floor: string;
10
+ };
11
+ /** What a project has of the packages the configuration needs. */
12
+ export type PackageState = {
13
+ /** What it neither declares nor can load. */
14
+ readonly missing: readonly string[];
15
+ /** What it declares too old. */
16
+ readonly tooOld: readonly TooOldPackage[];
17
+ /** Whether something it declares is not installed yet. */
18
+ readonly hasUninstalled: boolean;
19
+ };
20
+ /**
21
+ * Whether what a project wrote or has installed cannot reach a floor: `^8.0.1` can reach `8.3.4`, `^18.3.0` cannot reach
22
+ * `19.0.0`, and a range counts by its best alternative, since a library's `^18 || ^19` takes the floor's major too.
23
+ *
24
+ * @param version - the version or the range.
25
+ * @param floor - the lowest version taken.
26
+ */
27
+ export declare const isBelowFloor: (version: string, floor: string) => boolean;
28
+ /**
29
+ * The packages a project declares, with their versions as written: a design system's framework is a peer.
30
+ *
31
+ * @param projectDir - the project's folder.
32
+ */
33
+ export declare const declaredPackages: (projectDir: string) => ReadonlyMap<string, string>;
34
+ /**
35
+ * How the install command names a package: Angular's own at the project's major, since the latest of one beside the
36
+ * rest at an older major does not install.
37
+ *
38
+ * @param name - the package.
39
+ * @param declared - the packages the project declares.
40
+ */
41
+ export declare const installSpecifier: (name: string, declared: ReadonlyMap<string, string>) => string;
42
+ /**
43
+ * The version of a package a folder can load, read from its `package.json`.
44
+ *
45
+ * @param dir - the folder.
46
+ * @param name - the package.
47
+ * @returns its version, `""` for one that names none, or none when it is not installed.
48
+ */
49
+ export declare const installedVersion: (dir: string, name: string) => string | undefined;
50
+ /**
51
+ * The packages a configuration needs with the lowest version of each: `forgebook`, the adapter, what either asks the
52
+ * project for, and what the adapter's options add (no floor, written as `0.0.0`). Forgebook's own Vite is its dependency,
53
+ * so a project's is no concern here.
54
+ *
55
+ * @param framework - the framework.
56
+ * @param extraPeers - what its options add.
57
+ */
58
+ export declare const requiredPackages: (framework: ImportedFramework, extraPeers: readonly string[]) => ReadonlyMap<string, string>;
59
+ /**
60
+ * What a project has of the packages a configuration needs.
61
+ *
62
+ * @param dir - the project's folder.
63
+ * @param declared - the packages it declares, with their versions as written.
64
+ * @param required - the packages needed, with the lowest version of each.
65
+ */
66
+ export declare const packageState: (dir: string, declared: ReadonlyMap<string, string>, required: ReadonlyMap<string, string>) => PackageState;