forgebook 0.3.3 → 0.4.1

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 (713) hide show
  1. package/README.md +994 -72
  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 +182 -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 +62 -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 +95 -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 +204 -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 +323 -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 +29 -5
  187. package/dist/src/addressArgs.js +58 -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 +148 -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 +69 -185
  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 +83 -0
  211. package/dist/src/componentDocs.js +20 -3
  212. package/dist/src/controlCode.d.ts +27 -0
  213. package/dist/src/controlCode.js +41 -0
  214. package/dist/src/frame/callValues.d.ts +19 -0
  215. package/dist/src/frame/callValues.js +58 -0
  216. package/dist/src/frame/canvasScheme.d.ts +33 -0
  217. package/dist/src/frame/canvasScheme.js +67 -0
  218. package/dist/src/frame/controlValues.d.ts +39 -0
  219. package/dist/src/frame/controlValues.js +143 -0
  220. package/dist/src/frame/frame.css +36 -3
  221. package/dist/src/frame/frameStatus.d.ts +16 -1
  222. package/dist/src/frame/frameStatus.js +16 -1
  223. package/dist/src/frame/frameView.js +4 -3
  224. package/dist/src/frame/mountFrame.d.ts +10 -1
  225. package/dist/src/frame/mountFrame.js +160 -55
  226. package/dist/src/frame/panelControls.d.ts +67 -0
  227. package/dist/src/frame/panelControls.js +110 -0
  228. package/dist/src/frame/panelValues.d.ts +35 -0
  229. package/dist/src/frame/panelValues.js +127 -0
  230. package/dist/src/frame/playActions.d.ts +39 -0
  231. package/dist/src/frame/playActions.js +98 -0
  232. package/dist/src/frame/playStepper.d.ts +28 -0
  233. package/dist/src/frame/playStepper.js +38 -0
  234. package/dist/src/frame/playStory.d.ts +9 -1
  235. package/dist/src/frame/playStory.js +49 -3
  236. package/dist/src/frame/renderer.d.ts +34 -1
  237. package/dist/src/frame/renderer.js +24 -0
  238. package/dist/src/frame/shellChannel.d.ts +1 -1
  239. package/dist/src/frame/shellChannel.js +1 -1
  240. package/dist/src/frame/shellCheck.d.ts +17 -0
  241. package/dist/src/frame/shellCheck.js +25 -0
  242. package/dist/src/frame/shellMessageCheck.d.ts +7 -0
  243. package/dist/src/frame/shellMessageCheck.js +53 -0
  244. package/dist/src/frame/storyContent.d.ts +50 -0
  245. package/dist/src/frame/storyContent.js +73 -0
  246. package/dist/src/frame/storyModule.d.ts +9 -0
  247. package/dist/src/frame/storyModule.js +20 -2
  248. package/dist/src/frame/storyRun.d.ts +15 -7
  249. package/dist/src/frame/storyRun.js +64 -15
  250. package/dist/src/frame/valueSheets.d.ts +35 -0
  251. package/dist/src/frame/valueSheets.js +99 -0
  252. package/dist/src/hotModules.d.ts +20 -0
  253. package/dist/src/hotModules.js +23 -0
  254. package/dist/src/jsxCode.d.ts +1 -14
  255. package/dist/src/jsxCode.js +46 -10
  256. package/dist/src/liveErrors.d.ts +30 -4
  257. package/dist/src/liveErrors.js +18 -3
  258. package/dist/src/messages.d.ts +77 -27
  259. package/dist/src/messages.js +58 -100
  260. package/dist/src/namedValues.d.ts +2 -26
  261. package/dist/src/namedValues.js +0 -47
  262. package/dist/src/pageConfig.d.ts +2 -0
  263. package/dist/src/playTrace.d.ts +19 -2
  264. package/dist/src/playTrace.js +10 -5
  265. package/dist/src/plugin.d.ts +10 -3
  266. package/dist/src/previewRelay.js +9 -1
  267. package/dist/src/printable.d.ts +12 -0
  268. package/dist/src/printable.js +22 -0
  269. package/dist/src/propsSignature.d.ts +37 -0
  270. package/dist/src/propsSignature.js +40 -0
  271. package/dist/src/search.d.ts +41 -5
  272. package/dist/src/search.js +93 -23
  273. package/dist/src/searchMatch.d.ts +4 -1
  274. package/dist/src/searchMatch.js +26 -5
  275. package/dist/src/searchTypos.d.ts +88 -0
  276. package/dist/src/searchTypos.js +178 -0
  277. package/dist/src/shapeValues.d.ts +86 -0
  278. package/dist/src/shapeValues.js +295 -0
  279. package/dist/src/shell/ApiReference.js +6 -3
  280. package/dist/src/shell/ApiTableBox.d.ts +15 -0
  281. package/dist/src/shell/ApiTableBox.js +11 -0
  282. package/dist/src/shell/AppearanceMenu.d.ts +4 -1
  283. package/dist/src/shell/AppearanceMenu.js +9 -6
  284. package/dist/src/shell/AuthoredHome.js +3 -1
  285. package/dist/src/shell/CodeTab.d.ts +12 -6
  286. package/dist/src/shell/CodeTab.js +47 -3
  287. package/dist/src/shell/CodeText.d.ts +1 -1
  288. package/dist/src/shell/CodeText.js +2 -3
  289. package/dist/src/shell/CompareGrid.js +1 -1
  290. package/dist/src/shell/ComponentPage.d.ts +6 -6
  291. package/dist/src/shell/ComponentPage.js +8 -2
  292. package/dist/src/shell/CustomControl.d.ts +34 -0
  293. package/dist/src/shell/CustomControl.js +125 -0
  294. package/dist/src/shell/DocContainers.js +1 -1
  295. package/dist/src/shell/DocPage.js +2 -2
  296. package/dist/src/shell/DroppedArgsList.d.ts +2 -2
  297. package/dist/src/shell/DroppedArgsList.js +1 -1
  298. package/dist/src/shell/EmbedPage.js +30 -12
  299. package/dist/src/shell/Example.d.ts +5 -1
  300. package/dist/src/shell/Example.js +16 -8
  301. package/dist/src/shell/FrameView.d.ts +6 -3
  302. package/dist/src/shell/FrameView.js +2 -2
  303. package/dist/src/shell/HomePage.d.ts +3 -1
  304. package/dist/src/shell/HomePage.js +18 -6
  305. package/dist/src/shell/InfoTip.js +2 -2
  306. package/dist/src/shell/InteractionsTab.d.ts +11 -4
  307. package/dist/src/shell/InteractionsTab.js +18 -2
  308. package/dist/src/shell/LazyPage.js +1 -1
  309. package/dist/src/shell/PackageHtml.js +3 -1
  310. package/dist/src/shell/PageWidth.d.ts +29 -0
  311. package/dist/src/shell/PageWidth.js +18 -0
  312. package/dist/src/shell/PinnedControl.js +14 -62
  313. package/dist/src/shell/PinnedControlMenu.d.ts +44 -0
  314. package/dist/src/shell/PinnedControlMenu.js +72 -0
  315. package/dist/src/shell/PropFields.d.ts +3 -1
  316. package/dist/src/shell/PropFields.js +9 -6
  317. package/dist/src/shell/PropRows.d.ts +22 -11
  318. package/dist/src/shell/PropRows.js +62 -24
  319. package/dist/src/shell/PropsTab.d.ts +12 -5
  320. package/dist/src/shell/PropsTab.js +9 -22
  321. package/dist/src/shell/RefStoryPage.d.ts +33 -0
  322. package/dist/src/shell/RefStoryPage.js +123 -0
  323. package/dist/src/shell/SearchPanel.js +51 -24
  324. package/dist/src/shell/Shell.d.ts +18 -0
  325. package/dist/src/shell/Shell.js +141 -23
  326. package/dist/src/shell/ShortcutHelp.d.ts +22 -0
  327. package/dist/src/shell/ShortcutHelp.js +66 -0
  328. package/dist/src/shell/Sidebar.d.ts +17 -4
  329. package/dist/src/shell/Sidebar.js +92 -41
  330. package/dist/src/shell/SidebarDocs.js +2 -2
  331. package/dist/src/shell/SidebarEntries.js +5 -3
  332. package/dist/src/shell/SidebarHandle.d.ts +3 -5
  333. package/dist/src/shell/SidebarHandle.js +4 -4
  334. package/dist/src/shell/SidebarRefs.d.ts +39 -0
  335. package/dist/src/shell/SidebarRefs.js +99 -0
  336. package/dist/src/shell/SidebarSearch.js +37 -9
  337. package/dist/src/shell/SignatureReference.js +3 -1
  338. package/dist/src/shell/Stage.d.ts +10 -2
  339. package/dist/src/shell/Stage.js +29 -49
  340. package/dist/src/shell/StatusBadges.d.ts +54 -0
  341. package/dist/src/shell/StatusBadges.js +77 -0
  342. package/dist/src/shell/StoryCodeBlock.d.ts +8 -19
  343. package/dist/src/shell/StoryCodeBlock.js +7 -6
  344. package/dist/src/shell/StoryPicker.d.ts +4 -2
  345. package/dist/src/shell/StoryPicker.js +3 -3
  346. package/dist/src/shell/Switch.d.ts +29 -0
  347. package/dist/src/shell/Switch.js +11 -0
  348. package/dist/src/shell/SwitchGallery.d.ts +36 -0
  349. package/dist/src/shell/SwitchGallery.js +17 -0
  350. package/dist/src/shell/SwitchGalleryPanel.d.ts +37 -0
  351. package/dist/src/shell/SwitchGalleryPanel.js +99 -0
  352. package/dist/src/shell/TagFilter.d.ts +24 -0
  353. package/dist/src/shell/TagFilter.js +45 -0
  354. package/dist/src/shell/TagViews.d.ts +39 -0
  355. package/dist/src/shell/TagViews.js +20 -0
  356. package/dist/src/shell/Toolbar.d.ts +4 -1
  357. package/dist/src/shell/Toolbar.js +17 -7
  358. package/dist/src/shell/ToolbarControl.d.ts +3 -0
  359. package/dist/src/shell/ToolbarControl.js +23 -6
  360. package/dist/src/shell/ViewMenuPanel.js +6 -1
  361. package/dist/src/shell/argChecks.d.ts +22 -0
  362. package/dist/src/shell/argChecks.js +20 -0
  363. package/dist/src/shell/asideStory.js +7 -2
  364. package/dist/src/shell/audienceSections.css +9 -9
  365. package/dist/src/shell/catalogueContext.d.ts +1 -1
  366. package/dist/src/shell/catalogueContext.js +6 -1
  367. package/dist/src/shell/codeSpans.d.ts +27 -0
  368. package/dist/src/shell/codeSpans.js +76 -0
  369. package/dist/src/shell/compareVariants.d.ts +4 -2
  370. package/dist/src/shell/compareVariants.js +16 -8
  371. package/dist/src/shell/composition.d.ts +23 -0
  372. package/dist/src/shell/composition.js +26 -0
  373. package/dist/src/shell/controlCycle.d.ts +1 -1
  374. package/dist/src/shell/controlCycle.js +3 -2
  375. package/dist/src/shell/customControls.d.ts +62 -0
  376. package/dist/src/shell/customControls.js +81 -0
  377. package/dist/src/shell/docPage.css +22 -22
  378. package/dist/src/shell/dockTabs.d.ts +19 -3
  379. package/dist/src/shell/dockTabs.js +29 -20
  380. package/dist/src/shell/embed.css +7 -7
  381. package/dist/src/shell/frameOrder.d.ts +35 -0
  382. package/dist/src/shell/frameOrder.js +45 -0
  383. package/dist/src/shell/framesOrigin.d.ts +7 -0
  384. package/dist/src/shell/framesOrigin.js +1 -1
  385. package/dist/src/shell/galleryPlace.d.ts +20 -0
  386. package/dist/src/shell/galleryPlace.js +26 -0
  387. package/dist/src/shell/icons.d.ts +1 -0
  388. package/dist/src/shell/icons.js +1 -0
  389. package/dist/src/shell/keyboard.d.ts +14 -12
  390. package/dist/src/shell/keyboard.js +21 -6
  391. package/dist/src/shell/laterStrings.d.ts +30 -0
  392. package/dist/src/shell/laterStrings.js +43 -3
  393. package/dist/src/shell/mountShell.js +3 -0
  394. package/dist/src/shell/pageStrings.d.ts +4 -0
  395. package/dist/src/shell/pageStrings.js +4 -0
  396. package/dist/src/shell/pageTagView.d.ts +18 -0
  397. package/dist/src/shell/pageTagView.js +10 -0
  398. package/dist/src/shell/playMemory.d.ts +14 -0
  399. package/dist/src/shell/playMemory.js +8 -0
  400. package/dist/src/shell/propNotes.d.ts +23 -0
  401. package/dist/src/shell/propNotes.js +37 -0
  402. package/dist/src/shell/refIndexLoad.d.ts +17 -0
  403. package/dist/src/shell/refIndexLoad.js +38 -0
  404. package/dist/src/shell/refParts.d.ts +34 -0
  405. package/dist/src/shell/refParts.js +9 -0
  406. package/dist/src/shell/refStory.css +21 -0
  407. package/dist/src/shell/refStrings.d.ts +13 -0
  408. package/dist/src/shell/refStrings.js +21 -0
  409. package/dist/src/shell/search.css +11 -11
  410. package/dist/src/shell/shell.css +376 -169
  411. package/dist/src/shell/shellScheme.js +2 -2
  412. package/dist/src/shell/shortcutHelp.css +64 -0
  413. package/dist/src/shell/stageArgs.d.ts +53 -0
  414. package/dist/src/shell/stageArgs.js +64 -0
  415. package/dist/src/shell/statusBadges.css +51 -0
  416. package/dist/src/shell/strings.d.ts +7 -16
  417. package/dist/src/shell/strings.js +12 -17
  418. package/dist/src/shell/switchGallery.css +104 -0
  419. package/dist/src/shell/tagFilter.css +46 -0
  420. package/dist/src/shell/tagView.d.ts +20 -0
  421. package/dist/src/shell/tagView.js +10 -0
  422. package/dist/src/shell/useAddressArgs.d.ts +9 -0
  423. package/dist/src/shell/useAddressArgs.js +56 -11
  424. package/dist/src/shell/useControlKeys.js +2 -2
  425. package/dist/src/shell/useEditedProblems.d.ts +6 -0
  426. package/dist/src/shell/useEditedProblems.js +40 -0
  427. package/dist/src/shell/useFrameMessages.js +3 -0
  428. package/dist/src/shell/useFrameQueue.d.ts +8 -3
  429. package/dist/src/shell/useFrameQueue.js +42 -12
  430. package/dist/src/shell/useListedTree.d.ts +13 -0
  431. package/dist/src/shell/useListedTree.js +32 -0
  432. package/dist/src/shell/usePageFrames.js +2 -2
  433. package/dist/src/shell/usePopover.d.ts +5 -0
  434. package/dist/src/shell/usePopover.js +7 -1
  435. package/dist/src/shell/useRefIndex.d.ts +22 -0
  436. package/dist/src/shell/useRefIndex.js +36 -0
  437. package/dist/src/shell/useScrollSettled.d.ts +18 -0
  438. package/dist/src/shell/useScrollSettled.js +56 -0
  439. package/dist/src/shell/useScrollStops.d.ts +20 -0
  440. package/dist/src/shell/useScrollStops.js +41 -0
  441. package/dist/src/shell/useShortcutHelp.d.ts +18 -0
  442. package/dist/src/shell/useShortcutHelp.js +32 -0
  443. package/dist/src/shell/useSidebarOverlay.d.ts +2 -1
  444. package/dist/src/shell/useSidebarOverlay.js +12 -4
  445. package/dist/src/shell/useStoryCode.d.ts +2 -1
  446. package/dist/src/shell/useStoryCode.js +12 -7
  447. package/dist/src/shell/useToolbarLayout.d.ts +5 -1
  448. package/dist/src/shell/useToolbarLayout.js +2 -2
  449. package/dist/src/shell/useWorstCase.d.ts +8 -2
  450. package/dist/src/shell/useWorstCase.js +2 -2
  451. package/dist/src/shell/valueEditors/FileEditor.d.ts +28 -0
  452. package/dist/src/shell/valueEditors/FileEditor.js +66 -0
  453. package/dist/src/shell/valueEditors/JsonEditor.d.ts +14 -0
  454. package/dist/src/shell/valueEditors/JsonEditor.js +53 -0
  455. package/dist/src/shell/valueEditors/ListEditor.d.ts +24 -0
  456. package/dist/src/shell/valueEditors/ListEditor.js +82 -0
  457. package/dist/src/shell/valueEditors/ObjectEditor.d.ts +32 -0
  458. package/dist/src/shell/valueEditors/ObjectEditor.js +70 -0
  459. package/dist/src/shell/valueEditors/PropEditor.d.ts +37 -0
  460. package/dist/src/shell/valueEditors/PropEditor.js +53 -0
  461. package/dist/src/shell/valueEditors/RecordEditor.d.ts +20 -0
  462. package/dist/src/shell/valueEditors/RecordEditor.js +84 -0
  463. package/dist/src/shell/valueEditors/SearchSelect.d.ts +42 -0
  464. package/dist/src/shell/valueEditors/SearchSelect.js +80 -0
  465. package/dist/src/shell/valueEditors/TokenEditor.d.ts +49 -0
  466. package/dist/src/shell/valueEditors/TokenEditor.js +74 -0
  467. package/dist/src/shell/valueEditors/UnionEditor.d.ts +20 -0
  468. package/dist/src/shell/valueEditors/UnionEditor.js +64 -0
  469. package/dist/src/shell/valueEditors/ValueField.d.ts +15 -0
  470. package/dist/src/shell/valueEditors/ValueField.js +148 -0
  471. package/dist/src/shell/valueEditors/editorStrings.d.ts +56 -0
  472. package/dist/src/shell/valueEditors/editorStrings.js +66 -0
  473. package/dist/src/shell/valueEditors/fieldTypes.d.ts +31 -0
  474. package/dist/src/shell/valueEditors/fieldTypes.js +0 -0
  475. package/dist/src/shell/valueEditors/valueEditors.css +153 -0
  476. package/dist/src/shell/worstArgs.d.ts +8 -5
  477. package/dist/src/shell/worstArgs.js +14 -7
  478. package/dist/src/shellTheme.d.ts +1 -1
  479. package/dist/src/shellTheme.js +15 -1
  480. package/dist/src/shellTheme.types.d.ts +4 -0
  481. package/dist/src/shellWord.d.ts +12 -0
  482. package/dist/src/shellWord.js +15 -0
  483. package/dist/src/sourceFiles.js +2 -1
  484. package/dist/src/storyArgTypes.d.ts +57 -0
  485. package/dist/src/storyArgTypes.js +195 -0
  486. package/dist/src/storyBackground.js +14 -3
  487. package/dist/src/storyCheck.d.ts +99 -3
  488. package/dist/src/storyCheck.js +39 -1
  489. package/dist/src/storyCodeText.d.ts +52 -0
  490. package/dist/src/storyCodeText.js +30 -0
  491. package/dist/src/storyControls.d.ts +103 -0
  492. package/dist/src/storyControls.js +100 -0
  493. package/dist/src/storyStatuses.d.ts +55 -0
  494. package/dist/src/storyStatuses.js +104 -0
  495. package/dist/src/storyTagNames.d.ts +25 -0
  496. package/dist/src/storyTagNames.js +25 -0
  497. package/dist/src/storyTags.d.ts +29 -0
  498. package/dist/src/storyTags.js +85 -0
  499. package/dist/src/storyTree.d.ts +13 -0
  500. package/dist/src/storyTree.js +24 -4
  501. package/dist/src/storybookArgs.d.ts +24 -0
  502. package/dist/src/storybookArgs.js +185 -0
  503. package/dist/src/switches.d.ts +66 -3
  504. package/dist/src/switches.js +42 -1
  505. package/dist/src/valueSchema.d.ts +28 -0
  506. package/dist/src/valueSchema.js +196 -0
  507. package/dist/src/valueShape.d.ts +94 -0
  508. package/dist/src/valueShape.js +25 -0
  509. package/dist/src/viewState.d.ts +8 -3
  510. package/dist/src/viewState.js +27 -10
  511. package/dist/src/vite/adapter.d.ts +40 -2
  512. package/dist/src/vite/adapter.js +1 -0
  513. package/dist/src/vite/agent.types.d.ts +354 -7
  514. package/dist/src/vite/agentApi.d.ts +23 -0
  515. package/dist/src/vite/agentApi.js +90 -17
  516. package/dist/src/vite/agentIndex.d.ts +0 -2
  517. package/dist/src/vite/agentIndex.js +5 -6
  518. package/dist/src/vite/agentRoutes.d.ts +20 -1
  519. package/dist/src/vite/agentRoutes.js +135 -66
  520. package/dist/src/vite/agentStatuses.d.ts +42 -0
  521. package/dist/src/vite/agentStatuses.js +67 -0
  522. package/dist/src/vite/agentStoryCode.d.ts +51 -0
  523. package/dist/src/vite/agentStoryCode.js +44 -0
  524. package/dist/src/vite/agentVisibility.d.ts +47 -0
  525. package/dist/src/vite/agentVisibility.js +174 -0
  526. package/dist/src/vite/appAudit.d.ts +134 -0
  527. package/dist/src/vite/appAudit.js +333 -0
  528. package/dist/src/vite/appBuildOption.d.ts +53 -0
  529. package/dist/src/vite/appBuildOption.js +55 -0
  530. package/dist/src/vite/appTokenFiles.d.ts +92 -0
  531. package/dist/src/vite/appTokenFiles.js +433 -0
  532. package/dist/src/vite/appTokens.d.ts +23 -0
  533. package/dist/src/vite/appTokens.js +275 -0
  534. package/dist/src/vite/argControlsConfig.d.ts +30 -0
  535. package/dist/src/vite/argControlsConfig.js +176 -0
  536. package/dist/src/vite/builtTexts.d.ts +10 -0
  537. package/dist/src/vite/builtTexts.js +59 -22
  538. package/dist/src/vite/catalogueConfig.d.ts +3 -1
  539. package/dist/src/vite/catalogueConfig.js +21 -4
  540. package/dist/src/vite/changeCoverage.d.ts +74 -0
  541. package/dist/src/vite/changeCoverage.js +120 -0
  542. package/dist/src/vite/changedRoute.d.ts +30 -0
  543. package/dist/src/vite/changedRoute.js +197 -0
  544. package/dist/src/vite/checkCode.d.ts +105 -3
  545. package/dist/src/vite/checkCode.js +323 -36
  546. package/dist/src/vite/checkoutWatch.d.ts +97 -0
  547. package/dist/src/vite/checkoutWatch.js +287 -0
  548. package/dist/src/vite/closeWatch.d.ts +8 -0
  549. package/dist/src/vite/closeWatch.js +1 -1
  550. package/dist/src/vite/componentCache.d.ts +8 -0
  551. package/dist/src/vite/componentCache.js +66 -0
  552. package/dist/src/vite/componentGraph.d.ts +71 -0
  553. package/dist/src/vite/componentGraph.js +133 -0
  554. package/dist/src/vite/componentRules.d.ts +33 -0
  555. package/dist/src/vite/componentRules.js +105 -0
  556. package/dist/src/vite/componentScan.d.ts +69 -0
  557. package/dist/src/vite/componentScan.js +418 -0
  558. package/dist/src/vite/compositionCheck.d.ts +15 -0
  559. package/dist/src/vite/compositionCheck.js +243 -0
  560. package/dist/src/vite/config.d.ts +67 -1
  561. package/dist/src/vite/configFile.d.ts +15 -2
  562. package/dist/src/vite/configFile.js +109 -40
  563. package/dist/src/vite/configKeys.d.ts +15 -0
  564. package/dist/src/vite/configKeys.js +172 -0
  565. package/dist/src/vite/configLoadError.d.ts +23 -0
  566. package/dist/src/vite/configLoadError.js +71 -0
  567. package/dist/src/vite/cssDeclarations.d.ts +71 -0
  568. package/dist/src/vite/cssDeclarations.js +290 -0
  569. package/dist/src/vite/cssImports.d.ts +14 -0
  570. package/dist/src/vite/cssImports.js +48 -0
  571. package/dist/src/vite/cssReferences.d.ts +54 -0
  572. package/dist/src/vite/cssReferences.js +157 -0
  573. package/dist/src/vite/cssTokenValues.d.ts +50 -0
  574. package/dist/src/vite/cssTokenValues.js +233 -0
  575. package/dist/src/vite/designTokens.d.ts +24 -0
  576. package/dist/src/vite/designTokens.js +5 -1
  577. package/dist/src/vite/docsExtractor.d.ts +9 -3
  578. package/dist/src/vite/docsExtractor.js +11 -3
  579. package/dist/src/vite/docsProgram.d.ts +17 -4
  580. package/dist/src/vite/docsProgram.js +52 -11
  581. package/dist/src/vite/docsWorker.js +7 -2
  582. package/dist/src/vite/emptyStoryGlobs.d.ts +41 -0
  583. package/dist/src/vite/emptyStoryGlobs.js +52 -0
  584. package/dist/src/vite/fileImports.d.ts +17 -0
  585. package/dist/src/vite/fileImports.js +57 -0
  586. package/dist/src/vite/findComponent.d.ts +10 -2
  587. package/dist/src/vite/findComponent.js +27 -22
  588. package/dist/src/vite/findRoute.js +3 -2
  589. package/dist/src/vite/forcedStates.d.ts +9 -2
  590. package/dist/src/vite/forcedStates.js +12 -3
  591. package/dist/src/vite/forgebookPlugin.d.ts +2 -0
  592. package/dist/src/vite/forgebookPlugin.js +55 -73
  593. package/dist/src/vite/frameErrors.d.ts +19 -0
  594. package/dist/src/vite/frameErrors.js +70 -0
  595. package/dist/src/vite/framesServer.d.ts +12 -0
  596. package/dist/src/vite/framesServer.js +21 -4
  597. package/dist/src/vite/functionComponentDocs.js +81 -12
  598. package/dist/src/vite/generatedModules.js +4 -2
  599. package/dist/src/vite/gitChange.d.ts +38 -5
  600. package/dist/src/vite/gitChange.js +71 -11
  601. package/dist/src/vite/hiddenStoryFiles.d.ts +23 -0
  602. package/dist/src/vite/hiddenStoryFiles.js +107 -0
  603. package/dist/src/vite/hotSnippets.d.ts +38 -14
  604. package/dist/src/vite/hotSnippets.js +137 -39
  605. package/dist/src/vite/importedNames.d.ts +37 -0
  606. package/dist/src/vite/importedNames.js +138 -0
  607. package/dist/src/vite/indexFields.d.ts +6 -0
  608. package/dist/src/vite/indexFields.js +21 -0
  609. package/dist/src/vite/indexStoryFile.d.ts +8 -1
  610. package/dist/src/vite/indexStoryFile.js +22 -157
  611. package/dist/src/vite/jsxCallSites.d.ts +33 -0
  612. package/dist/src/vite/jsxCallSites.js +200 -0
  613. package/dist/src/vite/jsxInScripts.d.ts +67 -0
  614. package/dist/src/vite/jsxInScripts.js +138 -0
  615. package/dist/src/vite/jsxTree.d.ts +20 -0
  616. package/dist/src/vite/jsxTree.js +163 -0
  617. package/dist/src/vite/lineAndColumn.d.ts +13 -0
  618. package/dist/src/vite/lineAndColumn.js +18 -0
  619. package/dist/src/vite/lookAlikes.d.ts +65 -0
  620. package/dist/src/vite/lookAlikes.js +228 -0
  621. package/dist/src/vite/nearestToken.d.ts +17 -0
  622. package/dist/src/vite/nearestToken.js +9 -2
  623. package/dist/src/vite/packageEntries.d.ts +42 -0
  624. package/dist/src/vite/packageEntries.js +127 -0
  625. package/dist/src/vite/pages.d.ts +9 -1
  626. package/dist/src/vite/pages.js +119 -4
  627. package/dist/src/vite/pluginConfig.js +4 -0
  628. package/dist/src/vite/pluginIds.d.ts +2 -0
  629. package/dist/src/vite/pluginIds.js +5 -1
  630. package/dist/src/vite/pluginModules.d.ts +81 -11
  631. package/dist/src/vite/pluginModules.js +109 -21
  632. package/dist/src/vite/prebundled.d.ts +57 -15
  633. package/dist/src/vite/prebundled.js +80 -0
  634. package/dist/src/vite/previewTags.d.ts +25 -0
  635. package/dist/src/vite/previewTags.js +56 -0
  636. package/dist/src/vite/projectFiles.d.ts +54 -0
  637. package/dist/src/vite/projectFiles.js +116 -0
  638. package/dist/src/vite/projectPostcss.d.ts +70 -0
  639. package/dist/src/vite/projectPostcss.js +250 -0
  640. package/dist/src/vite/propDocs.d.ts +12 -0
  641. package/dist/src/vite/propDocs.js +187 -60
  642. package/dist/src/vite/propKind.d.ts +40 -0
  643. package/dist/src/vite/propKind.js +71 -0
  644. package/dist/src/vite/propTypeNotes.d.ts +22 -0
  645. package/dist/src/vite/propTypeNotes.js +51 -0
  646. package/dist/src/vite/publishedExports.d.ts +27 -0
  647. package/dist/src/vite/publishedExports.js +298 -0
  648. package/dist/src/vite/realFolder.d.ts +6 -0
  649. package/dist/src/vite/realFolder.js +25 -0
  650. package/dist/src/vite/refsConfig.d.ts +39 -0
  651. package/dist/src/vite/refsConfig.js +54 -0
  652. package/dist/src/vite/reuseCheck.d.ts +45 -0
  653. package/dist/src/vite/reuseCheck.js +260 -0
  654. package/dist/src/vite/runningVersions.d.ts +33 -0
  655. package/dist/src/vite/runningVersions.js +25 -0
  656. package/dist/src/vite/scriptProblems.d.ts +60 -0
  657. package/dist/src/vite/scriptProblems.js +155 -0
  658. package/dist/src/vite/searchModule.js +3 -2
  659. package/dist/src/vite/searchRoute.js +4 -2
  660. package/dist/src/vite/shapeDocs.d.ts +36 -0
  661. package/dist/src/vite/shapeDocs.js +177 -0
  662. package/dist/src/vite/singleFileComponent.d.ts +17 -0
  663. package/dist/src/vite/singleFileComponent.js +83 -0
  664. package/dist/src/vite/sourceText.d.ts +34 -0
  665. package/dist/src/vite/sourceText.js +72 -0
  666. package/dist/src/vite/sourceTokens.d.ts +7 -0
  667. package/dist/src/vite/sourceTokens.js +7 -2
  668. package/dist/src/vite/stackLines.d.ts +49 -0
  669. package/dist/src/vite/stackLines.js +96 -0
  670. package/dist/src/vite/storyCode.d.ts +22 -7
  671. package/dist/src/vite/storyCode.js +263 -37
  672. package/dist/src/vite/storyCoverage.d.ts +48 -0
  673. package/dist/src/vite/storyCoverage.js +179 -0
  674. package/dist/src/vite/storyFilesModule.d.ts +48 -3
  675. package/dist/src/vite/storyFilesModule.js +105 -15
  676. package/dist/src/vite/storyPatterns.d.ts +31 -0
  677. package/dist/src/vite/storyPatterns.js +140 -5
  678. package/dist/src/vite/storyReach.d.ts +10 -2
  679. package/dist/src/vite/storyReach.js +15 -11
  680. package/dist/src/vite/storyTopLevel.d.ts +51 -0
  681. package/dist/src/vite/storyTopLevel.js +146 -0
  682. package/dist/src/vite/storylessRoutes.d.ts +4 -3
  683. package/dist/src/vite/storylessRoutes.js +210 -19
  684. package/dist/src/vite/switchValuesCheck.d.ts +19 -0
  685. package/dist/src/vite/switchValuesCheck.js +164 -0
  686. package/dist/src/vite/switchesDocument.d.ts +15 -0
  687. package/dist/src/vite/switchesDocument.js +47 -0
  688. package/dist/src/vite/tailwindConfigTokens.d.ts +41 -0
  689. package/dist/src/vite/tailwindConfigTokens.js +306 -0
  690. package/dist/src/vite/textImports.d.ts +15 -0
  691. package/dist/src/vite/textImports.js +58 -0
  692. package/dist/src/vite/textModules.d.ts +6 -5
  693. package/dist/src/vite/textModules.js +13 -8
  694. package/dist/src/vite/tokenAnswers.d.ts +6 -2
  695. package/dist/src/vite/tokenAnswers.js +11 -7
  696. package/dist/src/vite/typeParameters.d.ts +83 -0
  697. package/dist/src/vite/typeParameters.js +270 -0
  698. package/dist/src/vite/typedControls.d.ts +31 -0
  699. package/dist/src/vite/typedControls.js +66 -0
  700. package/dist/src/vite/unionProps.d.ts +37 -0
  701. package/dist/src/vite/unionProps.js +121 -0
  702. package/dist/src/vite/unresolvedTokens.d.ts +20 -0
  703. package/dist/src/vite/unresolvedTokens.js +193 -0
  704. package/dist/src/vite/usageGraph.js +10 -52
  705. package/dist/src/vite/usageGuidance.d.ts +9 -2
  706. package/dist/src/vite/usageGuidance.js +36 -8
  707. package/dist/src/vite/usageImports.d.ts +35 -0
  708. package/dist/src/vite/usageImports.js +280 -0
  709. package/dist/src/vite/visibilityRoute.d.ts +16 -0
  710. package/dist/src/vite/visibilityRoute.js +320 -0
  711. package/dist/src/worstCase.d.ts +2 -0
  712. package/dist/src/worstCase.js +2 -0
  713. package/package.json +28 -8
@@ -1,206 +1,35 @@
1
1
  ## Stories (Forgebook)
2
2
 
3
3
  This project's components have stories, shown by [Forgebook](https://github.com/ensiria/forgebook) (`forgebook dev`).
4
- When you add or change a component, add or change its stories, then check them with the commands below: they answer
5
- in JSON with `--json`, and every answer about a story carries the links that open it for a person.
4
+ A component you add or change gets its stories added or changed in the same change, whether or not a check asks for them.
6
5
 
7
- ### Writing a story file
8
-
9
- - One file per component, beside it: `Badge.tsx` and `Badge.stories.tsx`, in CSF 3 (Storybook's format; Forgebook
10
- reads it, never MDX or addons). Files with the same title are one component, as in Storybook: each story keeps its
11
- own file (`file` in `forgebook stories --json`), and the component lists them all (`files`).
12
- - Every named export of a story file is a story; leave helpers and data out with the meta's `excludeStories`.
13
- - The catalogue lists the files its `stories` globs name in `forgebook.config.ts`; a glob that starts with `!` leaves
14
- files out (`"!src/**/drafts/**"`), whatever its place in the list. A new story file that `forgebook stories` does not
15
- list is outside the globs, left out by a `!` one, or refused by Vite's `server.fs.deny` (the dev server warns): put it
16
- where they list it, or change the globs on purpose.
17
- - Story ids are Storybook's (`inputs-readmore--open-by-default`, prefixed by the source's id); the commands also take
18
- the ids Forgebook gave before (`inputs-read-more--open-by-default`) and answer with the current one.
19
- - The meta is the default export; the stories are named exports, each with a one-line TSDoc saying what it shows (the
20
- catalogue shows that sentence):
21
-
22
- ```tsx
23
- import type { Meta, Story } from "@forgebook/react";
24
-
25
- import { Badge } from "./Badge";
26
-
27
- export default { title: "Data/Badge", component: Badge } satisfies Meta<typeof Badge>;
28
-
29
- /** The label as most pages use it. */
30
- export const Default: Story<typeof Badge> = { args: { label: "New" }, parameters: { main: true } };
31
- ```
32
-
33
- - In a Vue project, the same with `Badge.vue` and `Badge.stories.ts`: the types from `@forgebook/vue`, the component by its
34
- default import, a slot as the arg `#name` (`"#default": "Text"`) and an event as its listener (`onRemove`). Open a `.vue`
35
- file's script with its TSDoc block: that comment is the component's.
36
- - In a Svelte project, the same with `Badge.svelte` and `Badge.stories.ts`: the types from `@forgebook/svelte`, the
37
- component by its default import, a snippet's text as the arg `#name` (`"#children": "Text"`), a callback prop as it is
38
- (`onremove`), and a render returning `{ Component, props }`. The `<!-- @component -->` comment is the component's.
39
- - In a Solid or Preact project, the same as React's, with the types from `@forgebook/solid` or `@forgebook/preact`. In
40
- Solid a render runs once: read the args inside its JSX (`<Badge label={args.label} />`) or spread them
41
- (`<Badge {...args} />`), never destructured, so a new value reaches the story without starting it over.
42
- - With custom elements, `my-badge.ts` and `MyBadge.stories.ts`: the types from `@forgebook/web-components`, the element by
43
- its tag (`component: "my-badge"`, the module imported for its definition) or its class. An arg's prefix says what it
44
- sets: `label` the attribute, `.items` the property, `#icon` a slot (`#default` the unnamed one), `@change` an event the
45
- catalogue records, which a render does not bind. A render returns a Lit template. The props come from the package's
46
- `custom-elements.json`: run its analyzer after changing an element, or the docs show the old one.
47
- - With no framework, `button.ts` and `button.stories.ts`: the types from `@forgebook/html`, the meta's `component` the
48
- function that draws (`createButton(args)`, returning an HTML string or a DOM node) and `satisfies
49
- Meta<typeof createButton>`, so the args are its first parameter, documented by that type's TSDoc; a story without a
50
- render calls it with the args. A story that only has a render types it with `Meta<ButtonArgs>`, or describes its args
51
- in `argTypes` (plain JavaScript). A text arg written into HTML is the story's to escape; a shared link hands it only
52
- plain words.
53
- - In a Nuxt project, the same, the types from `@forgebook/nuxt`: a component's auto-imports, aliases and Nuxt's
54
- components work as in the app. Set what Nuxt would have given it with `parameters.nuxt`: `route` (a path, or
55
- `{ name, params }` of a page), `data` (what `useAsyncData` and `useFetch` return, by key; `useFetch`'s key is the
56
- request as made, `/api/products?page=2`), `state`, `cookies`, `runtimeConfig.public` and `appConfig`. A story's
57
- `nuxt` replaces the meta's, whole. Its router moves and `navigateTo` calls are listed among the story's events; a
58
- play reads them with `storyNuxt()` from `@forgebook/nuxt/story`.
59
- - In an Angular or Analog project, `badge.component.ts` and `Badge.stories.ts`: the types and Storybook's helpers
60
- (`applicationConfig`, `moduleMetadata`, `componentWrapperDecorator`, `argsToTemplate`) from `@forgebook/angular`, the
61
- class by its name, an input or an output by the name a template binds (its alias), an output's arg a handler, projected
62
- content as `#default` or `#<selector>` (`"#[icon]": "*"`), and a template in a render as
63
- `({ props: args, template: "…" })`. The Code tab writes the story by the component's selector.
64
- - In a SvelteKit app (`framework: sveltekit()`), the types come from `@forgebook/sveltekit`, and a story sets the page its
65
- components read with `parameters.sveltekit`: `page: { url: "/blog/hello" }` (the route and params are read from
66
- `src/routes`), `page.data` or the page's own `load` (run before the story is drawn, its fetch answered by
67
- `parameters.msw` in the frame and in the server tests, where a fetch of the page's origin that no handler answers
68
- fails the story), and `forms.result` for what an enhanced form's action answers. Links and `goto` move the story's page and are listed among
69
- its events; in a play, `storyPage()` from `@forgebook/sveltekit/page` reads where it went and the calls it made. A
70
- component that imports `$app/env/private` or `$app/server` fails in its frame by design: give it what it reads instead.
71
- - `parameters.main: true` marks the one real, well-made use drawn at the top of the component's page.
72
- - `parameters.group` puts a story under a heading of the page (`"states"`, `"worst-case"`); keep one story per
73
- meaningful state, not one per prop value.
74
- - Add a worst case: very long text, words without spaces, huge numbers (`forgebook new` writes one).
75
- - To try a component as on a phone, the catalogue's Touch switch (`touch=touch` in a view: `--view "touch=touch"`)
76
- sends the story a finger's events and a phone's hover and pointer media; a tap on a text field focuses it and puts the
77
- caret there. It is a simulation: native scrolling, the
78
- virtual keyboard and real Safari still need a device, or `forgebook dev --touch` (Chromium's real touch).
79
- A story reads it as `context.globals.touch` (`"mouse"` or `"touch"`) or fixes it with
80
- `globals: { touch: "touch" }`. A story meant for a phone writes `parameters.touch: true` (or its meta does): the
81
- catalogue draws it with a finger and offers a toggle to turn that off.
82
- - In a React Native project (`reactNativeWeb()` in `forgebook.config.ts`), stories are written as React's, their
83
- types from `@forgebook/react-native-web`, and drawn in the browser through react-native-web. A screen that fills
84
- the window (`style={{ flex: 1 }}`) needs `parameters.layout: "fullscreen"`; the app's root providers
85
- (`SafeAreaProvider`, a theme) go in the preview's decorators. A component that calls a native module or a gesture
86
- of native code does not draw in a browser: give it a `.web.tsx` file, or mock what it calls in the preview.
87
- - A link or an embed may carry the Props tab's values (`args=` in the address, JSON). The catalogue applies only the
88
- props the story's panel can set, with a value of their type; to show a story with other values, write a story with
89
- those args rather than a link.
90
- - `parameters.height` gives the frame the room an overlay the story opens needs (a menu, a popover), in CSS px.
91
- - A screen meant for a phone or a tablet can be shown in a drawn device by default:
92
- `parameters: { device: { frame: true, model: "iphone-16" } }` (on the meta for every story; `orientation:
93
- "landscape"` turns it; a story in a device is touched as a phone is, unless `touch: false`). The models: `iphone-16`, `iphone-16-pro-max`, `iphone-16e`, `pixel-9`, `galaxy-s24`, `phone`
94
- (generic), `ipad-mini`, `ipad-pro-13`. The status bar, the camera's cut and the home indicator sit
95
- around it: the story is drawn inside the safe areas. A screen drawn edge to edge says `edgeToEdge: true` and pads
96
- itself with `var(--forgebook-safe-area-top, env(safe-area-inset-top))` (and `-bottom`, `-left`, `-right`). `get_story` returns the setting as `device`. Pictures and
97
- tests stay unframed unless a view names a model: `forgebook shot <id> --view "iphone-16"` (or `"dark pixel-9
98
- landscape"`) gives a framed picture.
99
- - A hook or a function gets stories about logic: `parameters: { logic: true }` on the meta, its `component` the hook
100
- (`satisfies LogicMeta<typeof useUndo>` in React), each story a `render` with a small scene using it and a `play`
101
- that tries it. The catalogue documents its signature from its types and TSDoc (`@param`, `@returns`), and the tests
102
- check it once instead of in every look. A title like `Hooks/useUndo` puts it in a Hooks section.
103
- - `parameters.design: { figma: "<node link>" }` on the meta links a component to its design in Figma; a story writes its
104
- own over it. `forgebook story` returns it as `design` (the link, `fileKey`, `nodeId`, and the `address` to hand a
105
- person); with `@forgebook/plugin-figma` listed the panel adds a Design tab.
106
- - `parameters.msw: { handlers: [...] }` answers a story's requests, with `@forgebook/plugin-msw` listed in the
107
- configuration's `plugins`, which also adds a Network tab; without the plugin the parameter does nothing.
108
- - Texts a person reads come from the source's texts, not from the story: `args: { label: storyText("badge.new") }`
109
- (`@forgebook/story-format/texts`), or `useStoryText()` inside a `render`. A source gives each language's table, or a
110
- loader of it (`texts: { en: () => import("./locales/en.json") }`), which keeps the texts out of the catalogue's page.
111
- - Write `title`, `parameters.main`, `group`, `height`, `touch`, `logic`, `requiredFirst` and `design.figma` as plain
112
- values: the catalogue reads them without running the file.
113
- - In a Next.js project (`framework: nextjs()`), stories take their types from `@forgebook/nextjs`. A story says where
114
- its component is with `parameters.nextjs.navigation` (`pathname`, `query`, `params`; `router` for the Pages Router),
115
- and what its server code reads with `nextjs.cookies`, `headers` and `draftMode`. A link or a router call moves the
116
- story's route and is listed among its events; a `play` reads where it went with `storyRoute()`
117
- (`@forgebook/nextjs/route`). Async server components are drawn; what they reach on a server (a database, the file
118
- system) is not there: fetch it and mock it with `parameters.msw`. In the server tests a server component's `fetch` never
119
- reaches the network, whatever its address: a fetch no handler answers fails the story, naming the address.
120
-
121
- - Say when a component is for and when it is not, in its TSDoc: `@useWhen`, `@avoidWhen`, `@alternatives`, `@deprecated`,
122
- `@replacedBy`. `forgebook story` returns them as `docs.guidance`: read them before using a component, and never use a
123
- deprecated one.
124
- - A component with many props names their groups in its TSDoc (`@group Paging`): `forgebook story` returns each
125
- prop's `group`, and a prop typed with a documented object (`texts?: FinderTexts`) its `members`, each with its type,
126
- default and TSDoc: read them to know every text a component takes before passing one.
127
- - `forgebook story --json` and `get_story` give `requiredProps` at the top, the names of the component's props every
128
- use must set (events among them; a subcomponent's say it with their own `isRequired`); `docs.props` stays in the
129
- order of the source, whatever the catalogue's `requiredFirst` shows a person.
130
- Set every name in `requiredProps` when you use the component or write its story.
131
-
132
- ### Docs pages
133
-
134
- Guides live in Markdown files, listed in the catalogue's Docs section. Read one before writing against it
135
- (`npx forgebook page <id>`). When you write one: front matter with `title` (`Guides/Theming`), `order` and `description`, a
136
- fence named `story <id>` for a live story and `props <component id>` for an API table, and links to other pages by their
137
- file (`./colours.md#brand`). A page never holds a story's code: show the story. Blocks are `:::note`, `:::tip`,
138
- `:::important`, `:::caution`, `:::danger` (or GitHub's `> [!NOTE]`), `::::tabs{syncKey="…"}` around `:::tab[Label]`,
139
- `:::steps` around a numbered list, `::::cards` around `:::card[Title]` and `::link-card[Title]{href="…"}`; a block inside
140
- another has fewer colons. A code fence takes `title="…"`, `{1,4-6}`, `ins={…}`, `del={…}`, `wrap`, and `diff lang="tsx"`.
141
- After writing one, run `npx forgebook pages`: it fails with each problem's line and column.
142
-
143
- The catalogue's home may be written too (`forgebook.home.md`): `npx forgebook page home` reads it, and its values
144
- (`{{components}}`) and pieces (`::families`, `::libraries`, `::recent`, `::pages`) are listed in the README.
145
-
146
- ### Links for a person
147
-
148
- Every story's `links` hold its page (`address`), its frame (`frame`), its component's page (`component`) and its
149
- embed (`embed`). A component's
150
- page can be drawn for who reads it: add an audience to the view, and send that link. `designer` shows usage guidance first
151
- and no code, `coder` the API first with the code open, `tester` what the stories cover and their accessibility check:
6
+ ### Before you say a change is done
152
7
 
153
8
  ```sh
154
- npx forgebook story <id> --view audience=designer --json # links.component opens the page for a designer
9
+ npx forgebook verify --json # every changed UI file in stories that ran, every variant, and check-code
10
+ npx forgebook check-code --json # what the change adds against the design system, tokens file or not
155
11
  ```
156
12
 
157
- Each story also says whether a `play` function acts on it (`hasPlay`), and `tags` holds `!test` when the generated tests
158
- leave it out.
13
+ A non-zero exit (`not-verified`, `failed`) means not done, and a UI file with no stories, or `unseen`, is `not-verified`: `fix` names the
14
+ next step, usually writing them; do it and run it again. Report `partly-verified` with what `skipped` says, never as verified. To look at one story, `npx forgebook check <id> --json`
15
+ and `npx forgebook shot <id> --view "dark 360"`.
159
16
 
160
- ### Commands
17
+ ### Look it up when you need it
161
18
 
162
- | Command | What it is for |
19
+ | Command | What it answers |
163
20
  |---|---|
164
- | `npx forgebook find "selectable card" --json` | Whether what you need already exists, in your own words: ask before writing a component |
165
- | `npx forgebook search onValueChange --json` | The whole catalogue by its text: which component has a prop, where the docs say something, with the address of the exact heading or prop |
166
- | `npx forgebook new src/Badge.tsx` | A component's first stories, from its typed props (`Badge.vue` or `badge.component.ts` writes `Badge.stories.ts`) |
167
- | `npx forgebook stories --component badge --json` | The stories and their ids; fails when a story file is broken |
168
- | `npx forgebook story <id> --json` | One story: the props every use must set (`requiredProps`), its args, its component's props, the components whose stories use it, its design |
169
- | `npx forgebook pages --json` | The docs pages, with their ids and addresses; fails when a page names what is not there |
170
- | `npx forgebook page <id> --json` | One docs page: its Markdown, its headings, the address that opens it |
171
- | `npx forgebook check <id> --json` | The catalogue's checks on one story: accessibility, spills, overlays, a modal's focus, errors, a failed play |
172
- | `npx forgebook check <id> --json` | The catalogue's checks on one story: accessibility, spills, overlays, errors, a failed play |
173
- | `npx forgebook plugins --json` | The plugins the catalogue lists: their tabs (`tab=<id>` in a view opens one), switches and docs fences |
174
- | `npx forgebook tokens --category color --json` | The design tokens, of the catalogue and of the libraries it shows; `clashes` says whose value stands where two disagree |
175
- | `npx forgebook tokens --nearest "#1c1b1b" --json` | The token to write instead of a raw value; the type comes from the value, or `--type padding` |
176
- | `npx forgebook check-page http://localhost:3000/checkout --json` | The same checks on a real page of the application: the screen you built, not only its stories |
177
- | `npx forgebook changed --json` | The stories your change touches, through what they import |
178
- | `npx forgebook verify --json` | The checks on all of them, with one exit code: run it before you say a change is done |
179
- | `npx forgebook check-code --json` | What your change adds against the design system: raw values, with the token to use, turned-off checks, deleted tests |
180
- | `npx forgebook errors --json` | What the open frames reported while you edited: render errors, failed plays |
181
- | `npx forgebook shot <id> --view "dark 360"` | The story as a picture, to look at it (a view as words, or `theme=dark&width=360`); a model's id in the view (`iphone-16`) frames it in that device |
182
- | `npx forgebook story <id> --json` | Its `links`: `address` in the catalogue, `frame` alone, `embed` with no chrome, for a wiki or an iframe |
183
- | `npx forgebook shot <id> --update` then `npx forgebook diff <id> --json` | Baselines, then what changed against them: the region, the percentage, a marked picture |
184
-
185
- Never write a raw colour or size when a token exists: ask `tokens --nearest` first, and use a match only when it says
186
- `isClose` or `isExact`. A match that is not close means no token fits: say so, do not force one.
187
-
188
- A catalogue may turn off its accessibility check (`a11y: false`) or its component docs (`componentDocs: false`). Then a
189
- check's report says `"a11y": "off"` (it ran no axe: a pass says nothing of accessibility), and `story` says
190
- `"componentDocs": "off"` with no `docs` and no required props: read the component's source for its props, and the
191
- story's args for what it sets; `changed` finds no story through the imports, so check the stories you touched by name.
21
+ | `npx forgebook find "selectable card" --json` | Whether it already exists: ask before writing a component |
22
+ | `npx forgebook story <id> --json` | `requiredProps` (set every name), props, `docs.guidance` (never use a deprecated component), the `links` a person opens |
23
+ | `npx forgebook tokens --nearest "#1c1b1b" --json` | The token to write instead of a raw colour or size; only when it says `isClose` or `isExact` |
24
+ | `npx forgebook search onValueChange --json` | A prop or a sentence anywhere in the catalogue |
25
+ | `npx forgebook guide <topic>` | The full text on demand: `stories`, `devices`, `switches`, `docs-pages`, `links`, `commands`, `setup`, a framework's name, or `all`; with no topic, the list |
192
26
 
193
- A story's frame runs on its own origin (the dev server's second port), unless the catalogue keeps it on its own
194
- (`frames: "same-origin"`, `forgebook dev --frames same-origin`): open a story by the `page` or `frame` link an answer
195
- gives, never by building a frame's address yourself, and do not expect a story's code to reach the catalogue's page or
196
- its API.
27
+ `npx forgebook <command> --help` gives the options. With an MCP client, `npx forgebook mcp` offers the same as tools:
28
+ `find_component`, `get_story`, `nearest_token`, `check_story`, `story_shot`, `get_guide`.
197
29
 
198
- An edit you save reaches the open story at once, a story file's in tens of milliseconds. One that the open story does
199
- not show may not have reached the dev server: in a container, a Windows drive under WSL or a network drive, run it
200
- with `forgebook dev --poll`.
30
+ ### Writing a story
201
31
 
202
- Run `npx forgebook <command> --help` for the options. With an MCP client, `npx forgebook mcp` offers the same as tools.
32
+ One file per component, beside it, in CSF 3 (`npx forgebook new <component file>` writes the first). Every named export is a
33
+ story, with a one-line TSDoc. Add a worst case: very long text, words without spaces, huge numbers.
203
34
 
204
- A client that renders MCP Apps also gets `story_preview`, which shows a story to the person, live, inside the conversation.
205
- You do not see what it shows: to look at a story yourself, use `shot` (`story_shot`). Where the tool is not listed, the
206
- client cannot show one: give the person the story's link, or its picture.
35
+ {{framework}}
@@ -29,7 +29,8 @@ export const withAgentsSection = (existing, section) => {
29
29
  const after = existing.slice(end + AGENTS_END.length).replace(/^\n/, "");
30
30
  return `${existing.slice(0, start)}${block}${after}`;
31
31
  }
32
- return `${existing.replace(/\n*$/, "")}\n\n${block}`;
32
+ // not a pattern anchored at the end, which backtracks on a long run of blank lines
33
+ return `${existing.trimEnd()}\n\n${block}`;
33
34
  };
34
35
  /**
35
36
  * Where the skill is written, from the project's root: `.agents/skills` is the Agent Skills standard's folder, which
@@ -0,0 +1,59 @@
1
+ import type { ConfigEnv, PluginOption } from "vite";
2
+ import type { ResolvedConfig } from "../../../src/vite/configFile.ts";
3
+ /** What a catalogue read of the app's build, for the line it prints and for tools. */
4
+ export type AppBuildReport = {
5
+ /** The Vite configuration it loaded, from the catalogue's folder; none when it loaded none. */
6
+ readonly viteConfig: string | undefined;
7
+ /** The names of the plugins of it the catalogue runs. */
8
+ readonly plugins: readonly string[];
9
+ /** The names of the plugins of it the catalogue leaves out. */
10
+ readonly leftOutPlugins: readonly string[];
11
+ /** Whether `tsconfig.json`'s `paths` are read. */
12
+ readonly tsconfigPaths: boolean;
13
+ /** Whether the project's PostCSS runs. */
14
+ readonly postcss: boolean;
15
+ /** What could not be read, each with what to do. */
16
+ readonly problems: readonly string[];
17
+ };
18
+ /** A catalogue's Vite plugins for the app's build, and what they read. */
19
+ export type AppBuild = {
20
+ /** The plugins; none for a project with nothing to read. */
21
+ readonly plugins: readonly PluginOption[];
22
+ /** What they read. */
23
+ readonly report: AppBuildReport;
24
+ };
25
+ /**
26
+ * The sentence for a Vite configuration that did not load.
27
+ *
28
+ * @param file - the file.
29
+ * @param error - what it threw.
30
+ */
31
+ export declare const viteConfigProblem: (file: string, error: unknown) => string;
32
+ /** The line a catalogue prints of what it read; none when it read nothing. */
33
+ export declare const appBuildLine: (report: AppBuildReport) => string | undefined;
34
+ /** What a catalogue will read of a project's build, as a command that runs none of it tells. */
35
+ export type AppBuildPlan = {
36
+ /** The Vite configuration it will load, from the project's folder; none when there is nothing to load. */
37
+ readonly viteConfig: string | undefined;
38
+ /** Whether it will read `tsconfig.json`'s `paths`, which runs nothing. */
39
+ readonly tsconfigPaths: boolean;
40
+ /** The PostCSS configuration it will run, as a path; none when there is none. */
41
+ readonly postcss: string | undefined;
42
+ /** The files whose code runs when the catalogue starts, from the project's folder. */
43
+ readonly runsCode: readonly string[];
44
+ };
45
+ /**
46
+ * What a catalogue will read of a project's build, from the files alone: nothing here runs any of it.
47
+ *
48
+ * @param dir - the project's folder.
49
+ * @param framework - the adapter's name.
50
+ */
51
+ export declare const appBuildPlan: (dir: string, framework: string) => AppBuildPlan;
52
+ /**
53
+ * What a catalogue reads of the app's build.
54
+ *
55
+ * @param config - the catalogue's configuration, read.
56
+ * @param environment - the command and the mode the catalogue runs for.
57
+ * @param isOneShot - whether the server is a one-shot command's, which leaves out the plugins' `configureServer`.
58
+ */
59
+ export declare const appBuildOf: (config: ResolvedConfig, environment: ConfigEnv, isOneShot?: boolean) => Promise<AppBuild>;
@@ -0,0 +1,213 @@
1
+ /**
2
+ * The app's own build, as a catalogue draws its stories with it: the Vite plugins that give the catalogue the project's
3
+ * `tsconfig` paths, what its `vite.config` keeps, and its PostCSS.
4
+ *
5
+ * @remarks
6
+ * A project with none of these pays a few file checks, and nothing is imported. A framework whose adapter reads a part
7
+ * itself keeps doing so: Next.js has no Vite configuration and runs PostCSS itself, Nuxt and SvelteKit bring their
8
+ * aliases from their own configuration, SvelteKit reads its `vite.config` for its options, and React Native runs its
9
+ * own PostCSS. What could not be read never stops a catalogue: the stories that do not need it still draw, and each
10
+ * problem is said once with what to do.
11
+ *
12
+ * @module
13
+ */
14
+ import { existsSync } from "node:fs";
15
+ import { join, relative } from "node:path";
16
+ import { PostcssConfigError, postcssConfigPlace, projectPostcss, watchedFiles } from "../../../src/vite/projectPostcss.js";
17
+ import { isWorthLoading, loadAppViteConfig, viteConfigFile } from "./appViteConfig.js";
18
+ import { hasTsconfigPaths } from "./tsconfigPaths.js";
19
+ /** The names of a Nuxt config, whose modules the Nuxt adapter loads. */
20
+ const NUXT_CONFIGS = ["nuxt.config.ts", "nuxt.config.js", "nuxt.config.mjs"];
21
+ /** What each framework's adapter reads itself, by the adapter's name. */
22
+ const READ_BY_ADAPTER = {
23
+ nextjs: ["vite-config", "postcss", "tsconfig-paths"],
24
+ nuxt: ["vite-config", "tsconfig-paths"],
25
+ sveltekit: ["vite-config"],
26
+ angular: ["vite-config"],
27
+ "react-native-web": ["postcss"]
28
+ };
29
+ /** A style sheet PostCSS runs on: plain CSS, a component's style block among them; Sass compiles its own first. */
30
+ const CSS_FILE = /\.(?:css|pcss|postcss)(?:\?.*)?$/;
31
+ /**
32
+ * Whether a sheet is one nobody sees: a global sheet on the server, which loads a preview for its args and parameters.
33
+ * Run through Tailwind 3 there, it scanned every component, most of a command's start. A module's sheet keeps its class
34
+ * names, which a component reads wherever it runs.
35
+ *
36
+ * @param consumer - who the environment serves.
37
+ * @param id - the sheet.
38
+ */
39
+ const isUnseenOnServer = (consumer, id) => consumer === "server" && !CSS_MODULE.test(id);
40
+ /** A CSS module, whose class names a component reads wherever it runs. */
41
+ const CSS_MODULE = /\.module\.[a-z]+(?:\?.*)?$/;
42
+ /** A style sheet's imports that are not compiled, which Vite's own CSS pipeline leaves alone too. */
43
+ const NOT_COMPILED = /[?&](?:raw|url)\b/;
44
+ /**
45
+ * The plugin that runs the project's PostCSS before Lightning CSS.
46
+ *
47
+ * @param dir - the catalogue's folder.
48
+ * @param inlinePlugins - what the app's `css.postcss` makes; the project's file is read when none.
49
+ * @returns the plugin, or none for a project with no PostCSS.
50
+ */
51
+ const postcssPlugin = (dir, inlinePlugins) => {
52
+ const run = projectPostcss(dir, inlinePlugins === undefined ? {} : { plugins: inlinePlugins });
53
+ if (run === undefined)
54
+ return undefined;
55
+ let isSaid = false;
56
+ // Vite runs the project's PostCSS itself when the catalogue's CSS goes through PostCSS rather than Lightning CSS (an
57
+ // app's configuration may ask for it): a second run would cost every style sheet as much again, for the same output
58
+ let isRunByVite = false;
59
+ const isLeftAlone = (id) => isRunByVite || NOT_COMPILED.test(id);
60
+ return {
61
+ name: "forgebook:app-postcss",
62
+ enforce: "pre",
63
+ configResolved(resolved) {
64
+ isRunByVite = resolved.css.transformer !== "lightningcss";
65
+ },
66
+ transform: {
67
+ filter: { id: CSS_FILE },
68
+ async handler(code, id) {
69
+ if (isLeftAlone(id))
70
+ return undefined;
71
+ if (isUnseenOnServer(this.environment.config.consumer, id))
72
+ return { code: "", map: null };
73
+ let result;
74
+ try {
75
+ result = await run(code, id.split("?")[0] ?? id);
76
+ }
77
+ catch (error) {
78
+ if (!(error instanceof PostcssConfigError))
79
+ throw error;
80
+ if (!isSaid)
81
+ this.warn(`The project's PostCSS could not be loaded: ${error.message}. Set appBuild: { postcss: false } to leave it out`);
82
+ isSaid = true;
83
+ return undefined;
84
+ }
85
+ // the files a plugin read (Tailwind CSS reads the components for their classes) renew the style sheet
86
+ for (const watched of watchedFiles(result.messages))
87
+ this.addWatchFile(watched);
88
+ return { code: result.css, map: null };
89
+ }
90
+ }
91
+ };
92
+ };
93
+ /**
94
+ * The sentence for a Vite configuration that did not load.
95
+ *
96
+ * @param file - the file.
97
+ * @param error - what it threw.
98
+ */
99
+ export const viteConfigProblem = (file, error) => `${file} could not be loaded, so its aliases and plugins are not in the catalogue: ${error instanceof Error ? error.message.split("\n")[0] : String(error)}. Fix it, or set \`appBuild: { viteConfig: false }\` in the catalogue's configuration`;
100
+ /** The line a catalogue prints of what it read; none when it read nothing. */
101
+ export const appBuildLine = (report) => {
102
+ const parts = [
103
+ ...(report.viteConfig === undefined
104
+ ? []
105
+ : [`${report.viteConfig}${report.plugins.length === 0 ? "" : ` (${report.plugins.join(", ")})`}`]),
106
+ ...(report.tsconfigPaths ? ["tsconfig paths"] : []),
107
+ ...(report.postcss ? ["PostCSS"] : [])
108
+ ];
109
+ return parts.length === 0 ? undefined : `Drawing with the app's build: ${parts.join(", ")}`;
110
+ };
111
+ /**
112
+ * What a catalogue will read of a project's build, from the files alone: nothing here runs any of it.
113
+ *
114
+ * @param dir - the project's folder.
115
+ * @param framework - the adapter's name.
116
+ */
117
+ export const appBuildPlan = (dir, framework) => {
118
+ const readByAdapter = READ_BY_ADAPTER[framework] ?? [];
119
+ const file = readByAdapter.includes("vite-config") ? undefined : viteConfigFile(dir, undefined);
120
+ const viteConfig = file !== undefined && isWorthLoading(dir, file) ? file : undefined;
121
+ const place = readByAdapter.includes("postcss") ? undefined : postcssConfigPlace(dir);
122
+ const postcss = place === undefined ? undefined : relative(dir, place.file);
123
+ return {
124
+ viteConfig,
125
+ tsconfigPaths: !readByAdapter.includes("tsconfig-paths") && hasTsconfigPaths(dir),
126
+ postcss,
127
+ // a JSON file too: the plugins it names run, and a path in it can name a file of the project's
128
+ runsCode: [
129
+ ...(viteConfig === undefined ? [] : [viteConfig]),
130
+ ...(postcss === undefined ? [] : [postcss]),
131
+ // Nuxt's adapter loads the project's modules through its nuxt.config
132
+ ...(framework === "nuxt" ? NUXT_CONFIGS.filter((name) => existsSync(join(dir, name))) : [])
133
+ ]
134
+ };
135
+ };
136
+ /**
137
+ * The plugin that gives Vite what was read, and says what it read and what it could not.
138
+ *
139
+ * @param fields - what the app's configuration keeps, and the `paths` reading.
140
+ * @param report - what was read.
141
+ */
142
+ const settingsPlugin = (fields, report) => ({
143
+ name: "forgebook:app-build",
144
+ config: () => fields,
145
+ configResolved: (resolved) => {
146
+ const line = appBuildLine(report);
147
+ if (line !== undefined)
148
+ resolved.logger.info(`[forgebook] ${line}`);
149
+ // an error's level: a command's server logs nothing less, and the run must not pass this over in silence
150
+ for (const problem of report.problems)
151
+ resolved.logger.error(`[forgebook] ${problem}`);
152
+ }
153
+ });
154
+ /**
155
+ * Loads the app's Vite configuration, when the catalogue reads it and it has something to give.
156
+ *
157
+ * @param config - the catalogue's configuration, read.
158
+ * @param environment - the command and the mode the catalogue runs for.
159
+ * @param isReadingPaths - whether Vite reads `tsconfig` paths here.
160
+ * @param isOneShot - whether the server is a one-shot command's.
161
+ * @returns what it gives; why it could not be loaded.
162
+ */
163
+ const appViteConfigOf = async (config, environment, isReadingPaths, isOneShot) => {
164
+ const isOwn = READ_BY_ADAPTER[config.framework.name]?.includes("vite-config") === true;
165
+ const file = isOwn ? undefined : viteConfigFile(config.dir, config.appBuild.viteConfig);
166
+ if (file === undefined || !isWorthLoading(config.dir, file))
167
+ return {};
168
+ try {
169
+ return {
170
+ app: await loadAppViteConfig(config.dir, file, environment, config.framework.name, config.appBuild, isReadingPaths, isOneShot)
171
+ };
172
+ }
173
+ catch (error) {
174
+ return { problem: viteConfigProblem(file, error) };
175
+ }
176
+ };
177
+ /**
178
+ * What a catalogue reads of the app's build.
179
+ *
180
+ * @param config - the catalogue's configuration, read.
181
+ * @param environment - the command and the mode the catalogue runs for.
182
+ * @param isOneShot - whether the server is a one-shot command's, which leaves out the plugins' `configureServer`.
183
+ */
184
+ export const appBuildOf = async (config, environment, isOneShot = false) => {
185
+ const options = config.appBuild;
186
+ const readByAdapter = READ_BY_ADAPTER[config.framework.name] ?? [];
187
+ const tsconfigPaths = options.tsconfigPaths && !readByAdapter.includes("tsconfig-paths") && hasTsconfigPaths(config.dir);
188
+ const { app, problem } = await appViteConfigOf(config, environment, tsconfigPaths, isOneShot);
189
+ const postcss = options.postcss && !readByAdapter.includes("postcss")
190
+ ? postcssPlugin(config.dir, app?.postcssPlugins)
191
+ : undefined;
192
+ const report = {
193
+ viteConfig: app?.file,
194
+ plugins: (app?.plugins ?? []).map((plugin) => plugin.name),
195
+ leftOutPlugins: app?.leftOut ?? [],
196
+ tsconfigPaths,
197
+ postcss: postcss !== undefined,
198
+ problems: [...(problem === undefined ? [] : [problem]), ...(app?.notes ?? [])]
199
+ };
200
+ const fields = app?.fields ?? {};
201
+ const settings = tsconfigPaths
202
+ ? { ...fields, resolve: { ...fields.resolve, tsconfigPaths: true } }
203
+ : fields;
204
+ const isEmpty = Object.keys(settings).length === 0 && report.problems.length === 0 && appBuildLine(report) === undefined;
205
+ return {
206
+ plugins: [
207
+ ...(isEmpty ? [] : [settingsPlugin(settings, report)]),
208
+ ...(app?.plugins ?? []),
209
+ ...(postcss === undefined ? [] : [postcss])
210
+ ],
211
+ report
212
+ };
213
+ };
@@ -0,0 +1,96 @@
1
+ import type { ConfigEnv, Plugin, UserConfig } from "vite";
2
+ import type { ResolvedAppBuild } from "../../../src/vite/appBuildOption.ts";
3
+ /**
4
+ * Whether a `vite.config` can hold nothing for a catalogue, as its text shows: it loads only Vite and the framework's
5
+ * plugin, and names none of the settings taken nor anything a plugin written in the file would hold.
6
+ *
7
+ * @remarks
8
+ * The usual configuration of a new project is exactly this, and loading it means bundling it and starting the module
9
+ * graph it imports, which a project with nothing to read must not pay. The check only ever errs towards loading: a word
10
+ * in a comment loads a file that gives nothing.
11
+ *
12
+ * @param text - the file's text.
13
+ */
14
+ export declare const holdsNothingForCatalogue: (text: string) => boolean;
15
+ /** The app's Vite configuration, as a catalogue takes it. */
16
+ export type AppViteConfig = {
17
+ /** The file, from the catalogue's folder. */
18
+ readonly file: string;
19
+ /** What is about how its modules and style sheets resolve and compile. */
20
+ readonly fields: UserConfig;
21
+ /** The plugins kept. */
22
+ readonly plugins: readonly Plugin[];
23
+ /** The names of the plugins left out, each once. */
24
+ readonly leftOut: readonly string[];
25
+ /** The PostCSS plugins its `css.postcss` makes; none when it makes none. */
26
+ readonly postcssPlugins: readonly unknown[] | undefined;
27
+ /** What it sets that a catalogue cannot do, each said. */
28
+ readonly notes: readonly string[];
29
+ };
30
+ /**
31
+ * The app's Vite configuration file, from the catalogue's folder, or none.
32
+ *
33
+ * @param dir - the catalogue's folder.
34
+ * @param asked - `appBuild.viteConfig`.
35
+ */
36
+ export declare const viteConfigFile: (dir: string, asked: string | false | undefined) => string | undefined;
37
+ /**
38
+ * Whether the app's Vite configuration is worth loading.
39
+ *
40
+ * @param dir - the catalogue's folder.
41
+ * @param file - the file, from there.
42
+ */
43
+ export declare const isWorthLoading: (dir: string, file: string) => boolean;
44
+ /**
45
+ * Whether one of the app's plugins goes into the catalogue.
46
+ *
47
+ * @param name - the plugin's name.
48
+ * @param framework - the adapter's name.
49
+ * @param options - what the catalogue's configuration asks.
50
+ * @param isReadingPaths - whether Vite reads `tsconfig` paths here, which a plugin that does the same is then not needed for.
51
+ */
52
+ export declare const keepsAppPlugin: (name: string, framework: string, options: ResolvedAppBuild, isReadingPaths?: boolean) => boolean;
53
+ /**
54
+ * A `define` without a whole environment written out: a catalogue bundles code the app does not (Testing Library reads
55
+ * `process.env`), so what the app kept out of its bundles would reach the catalogue's.
56
+ *
57
+ * @param define - the configuration's.
58
+ */
59
+ export declare const withoutWholeEnvironment: (define: NonNullable<UserConfig["define"]>) => NonNullable<UserConfig["define"]>;
60
+ /**
61
+ * What a catalogue takes of the app's configuration besides its plugins: what decides how a module resolves and
62
+ * compiles. `root`, `base`, `build`, `server`, `preview` and `test` are about the app's page and output.
63
+ *
64
+ * @param config - the configuration, loaded.
65
+ * @param dir - the catalogue's folder, which its relative paths are read against when it names no root.
66
+ */
67
+ export declare const appConfigFields: (config: UserConfig, dir: string) => UserConfig;
68
+ /**
69
+ * One of the app's plugins, kept from reaching past what a catalogue takes of an app.
70
+ *
71
+ * @remarks
72
+ * What its `config` returns goes through the same filter as the file's, or a plugin could set the host, `fs.strict` or the
73
+ * output. Its `configureServer` runs at the normal time, after the middlewares that keep each origin to itself: `order: "pre"`
74
+ * would answer ahead of them. Its `transformIndexHtml` reaches the frames and not the catalogue's page, whose origin holds the
75
+ * agent API: a story's frame is what the app's page stands for. A one-shot command's server runs no `configureServer` at all:
76
+ * that hook is where a plugin starts a backend or a watcher of its own, whose output on an inherited stdout would break a
77
+ * command's `--json`, and nothing a story asks for in the moment it is checked needs what it sets up for edits.
78
+ *
79
+ * @param plugin - the plugin.
80
+ * @param dir - the folder its relative paths are read against.
81
+ * @param isOneShot - whether the server is a one-shot command's.
82
+ */
83
+ export declare const guardedAppPlugin: (plugin: Plugin, dir: string, isOneShot?: boolean) => Plugin;
84
+ /**
85
+ * Loads the app's Vite configuration, and takes what a catalogue takes of it.
86
+ *
87
+ * @param dir - the catalogue's folder.
88
+ * @param file - the file, from there.
89
+ * @param environment - the command and the mode it is loaded for: a configuration may be a function of them.
90
+ * @param framework - the adapter's name.
91
+ * @param options - what the catalogue's configuration asks.
92
+ * @param isReadingPaths - whether Vite reads `tsconfig` paths here.
93
+ * @param isOneShot - whether the server is a one-shot command's.
94
+ * @throws what the file throws when it loads.
95
+ */
96
+ export declare const loadAppViteConfig: (dir: string, file: string, environment: ConfigEnv, framework: string, options: ResolvedAppBuild, isReadingPaths: boolean, isOneShot: boolean) => Promise<AppViteConfig>;