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,13 +1,15 @@
1
1
  /**
2
2
  * What Forgebook's plugin sets in Vite's configuration for a catalogue: its folder as the root, what to pre-bundle, the
3
- * pages as the build's inputs, the build's script names, and the dev server's reads kept to each origin.
3
+ * pages as the build's inputs, the build's script names, no single-page fallback, and the dev server's reads kept to
4
+ * each origin.
4
5
  *
5
6
  * @module
6
7
  */
7
8
  import { readFileSync } from "node:fs";
8
9
  import { packageResolver } from "./configFile.js";
9
10
  import { pageModulePath } from "./pages.js";
10
- import { prebundled, scannedEntries } from "./prebundled.js";
11
+ import { prebundled, scannedEntries, scanOptions } from "./prebundled.js";
12
+ import { refsDefine } from "./refsConfig.js";
11
13
  /**
12
14
  * A file's text, or none when it cannot be read.
13
15
  *
@@ -34,14 +36,25 @@ const hasOwnOutput = (userConfig) => userConfig.build?.rolldownOptions?.output !
34
36
  *
35
37
  * @param config - the catalogue's configuration.
36
38
  * @param userConfig - the configuration so far, whose own `server.cors` and build output the plugin leaves alone.
39
+ * @param findings - where the dependency scan's warnings and problems go.
37
40
  */
38
- export const catalogueConfig = (config, userConfig) => ({
41
+ export const catalogueConfig = (config, userConfig, findings = {}) => ({
39
42
  root: config.dir,
43
+ // a hoisted workspace can keep a package's React in its folder while the adapter, at the root, reads another copy, and
44
+ // every component then fails with "invalid hook call": the catalogue's folder decides
45
+ resolve: { dedupe: ["react", "react-dom"] },
46
+ // a catalogue that composes no other has every part of composition removed from its shell (`shell/composition.ts`)
47
+ define: refsDefine(config.refs),
40
48
  // the pages are generated, so Vite's scanner cannot find what they import: it is named here, and the
41
49
  // story files (the project's and the sources') are scanned for what their components import
42
50
  optimizeDeps: {
43
51
  include: prebundled(config, packageResolver(config.dir)),
44
- entries: scannedEntries(config, packageResolver(config.dir), readTextFile)
52
+ entries: scannedEntries(config, packageResolver(config.dir), readTextFile),
53
+ rolldownOptions: scanOptions({
54
+ root: config.dir,
55
+ isJsxInScripts: config.framework.compilesJsxInScripts === true,
56
+ ...findings
57
+ })
45
58
  },
46
59
  build: {
47
60
  rolldownOptions: {
@@ -56,6 +69,10 @@ export const catalogueConfig = (config, userConfig) => ({
56
69
  : { output: { chunkFileNames: "assets/[hash].js", hashCharacters: "base36" } })
57
70
  }
58
71
  },
72
+ // the plugin serves the catalogue's pages itself, so the only page a single-page fallback could answer with is the
73
+ // app's own `index.html`: a story's missing image would get it, and the server would load the whole app its scripts
74
+ // reach, pre-bundle again what the stories never import, and reload every frame open (unless the app chose its own)
75
+ ...(userConfig.appType === undefined ? { appType: "mpa" } : {}),
59
76
  // Vite lets any localhost page read the server: neither origin needs another's reads, and the guards
60
77
  // would be the only wall left between the frames and the catalogue (unless the app chose its own)
61
78
  ...(config.frames.kind === "isolated" && userConfig.server?.cors === undefined
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Which changed files a person sees, and which stories show them: what `verify` holds a change to.
3
+ *
4
+ * @remarks
5
+ * Pure. A UI file is a component or a style sheet, by its extension, and a story file; a plain script is one only when
6
+ * its text defines or draws a component, since most scripts are logic a change may touch freely, and a script a story
7
+ * reaches is checked by that story anyway. Tests, type declarations and what a tool wrote are not. A file reached through
8
+ * another component's stories counts as covered, and says so: a private part rarely has stories of its own, and they run
9
+ * it. A file only another catalogue of the repository can answer for is named and neither passes nor fails; any other
10
+ * file nothing reaches is this catalogue's to fail, or a component in a package beside it would pass unseen.
11
+ *
12
+ * @module
13
+ */
14
+ import type { ChangedUiFile } from "./agent.types.ts";
15
+ import type { ReachedStory } from "./storyReach.ts";
16
+ /**
17
+ * Whether a changed file is one a person sees.
18
+ *
19
+ * @param file - the file, relative to the repository.
20
+ * @param readText - its text; a plain script's is read to tell whether it defines a component.
21
+ */
22
+ export declare const isUiFile: (file: string, readText: (file: string) => string) => boolean;
23
+ /** A story with its id, as the catalogue lists it. */
24
+ export type IdentifiedStory = {
25
+ /** Its id. */
26
+ readonly id: string;
27
+ /** What it reaches. */
28
+ readonly reach: ReachedStory;
29
+ };
30
+ /**
31
+ * The forms a deleted file can have left in the graph: what still imports it wrote it with no extension, or by its
32
+ * folder.
33
+ *
34
+ * @param file - the deleted file, absolute.
35
+ */
36
+ export declare const deletedForms: (file: string) => readonly string[];
37
+ /** What `changedUiFiles` reads. */
38
+ export type UiFilesInput = {
39
+ /** The files that changed, with their forms in the graph, relative to the repository and to the catalogue. */
40
+ readonly files: readonly {
41
+ readonly file: string;
42
+ readonly path: string;
43
+ readonly absolute: string;
44
+ readonly isDeleted: boolean;
45
+ }[];
46
+ /** The catalogue's stories. */
47
+ readonly stories: readonly IdentifiedStory[];
48
+ /** The files every story shows. */
49
+ readonly everyStoryFiles: ReadonlySet<string>;
50
+ /** Whether a file, in the graph's form, belongs to another catalogue of the repository. */
51
+ readonly isOtherCatalogues: (absolute: string) => boolean;
52
+ /** Reads a file by its path relative to the repository. */
53
+ readonly readText: (file: string) => string;
54
+ };
55
+ /**
56
+ * The changed files a person sees: those this catalogue can show, with their stories, and those it cannot speak for. A
57
+ * deleted file with no story behind it is left out, as there is nothing left to look at, and so is what every story shows
58
+ * while the catalogue has no story.
59
+ *
60
+ * @param input - the change and the catalogue.
61
+ */
62
+ export declare const changedUiFiles: ({ files, stories, everyStoryFiles, isOtherCatalogues, readText }: UiFilesInput) => {
63
+ readonly uiFiles: readonly ChangedUiFile[];
64
+ readonly outside: readonly string[];
65
+ };
66
+ /**
67
+ * Whether the nearest catalogue above a file is another one.
68
+ *
69
+ * @param file - the file, absolute, under the catalogue's root as named.
70
+ * @param own - this catalogue's folder.
71
+ * @param root - the repository's folder, in the same form: nothing above it is looked at.
72
+ * @param hasCatalogue - whether a folder holds a catalogue's configuration.
73
+ */
74
+ export declare const belongsToOtherCatalogue: (file: string, own: string, root: string, hasCatalogue: (folder: string) => boolean) => boolean;
@@ -0,0 +1,120 @@
1
+ import { CHECKED_FILE } from "./checkCode.js";
2
+ import { VITE_PATHS } from "./vitePaths.js";
3
+ /** A story file, in any framework's extension; a snapshot of one is not. */
4
+ const STORY_FILE = /\.stories\.(?:[cm]?[jt]sx?|vue|svelte|astro)$/;
5
+ /** A test's file or helper, wherever it sits. */
6
+ const TEST_FILE = /(?:\.test\.|\.spec\.|\.e2e\.|\.cy\.|_test\.|(?:^|\/)(?:__tests__|__mocks__|__snapshots__|e2e|cypress)\/|(?:^|\/)test-?utils\.)/;
7
+ /** A folder of tests; under `src` a folder of that name is as likely a feature. */
8
+ const TESTS_FOLDER = /(?:^|\/)tests?\//;
9
+ /** What is under `src`. */
10
+ const UNDER_SRC = /(?:^|\/)src\//;
11
+ /** What is written by a tool, or only types: nobody sees it change. */
12
+ const NOT_SEEN = /(?:\.d\.[cm]?ts$|\.min\.|(?:^|\/)(?:dist|generated|node_modules)\/)/;
13
+ /** Components and sheets `check-code` does not read for values, and an Angular component's files. */
14
+ const OTHER_UI_FILE = /(?:\.component\.(?:ts|html)|\.(?:css|styles?)\.[cm]?[jt]s|\.(?:pcss|postcss|styl))$/;
15
+ /** A plain script. */
16
+ const SCRIPT_FILE = /\.[cm]?[jt]s$/;
17
+ /** A script's text that defines a component: a custom element, an Angular component, a Vue one, a tagged template. */
18
+ const DEFINES_COMPONENT = /\bcustomElements\.define\(|@customElement\(|\bextends\s+(?:LitElement|HTMLElement)\b|@Component\(|\bdefineComponent\(|(?<![\w./-])html`/;
19
+ /** A JavaScript file, which may hold JSX with no extension to say so; TypeScript cannot without `.tsx`. */
20
+ const PLAIN_JAVASCRIPT = /\.[cm]?js$/;
21
+ /** JSX in a file's text: a closing tag, or a component closed on itself. */
22
+ const DRAWS_JSX = /<\/[A-Za-z][\w.-]{0,80}>|<[A-Z][\w.]{0,80}[^<>\n]{0,500}\/>/;
23
+ /**
24
+ * Whether a changed file is one a person sees.
25
+ *
26
+ * @param file - the file, relative to the repository.
27
+ * @param readText - its text; a plain script's is read to tell whether it defines a component.
28
+ */
29
+ export const isUiFile = (file, readText) => {
30
+ if (TEST_FILE.test(file) || NOT_SEEN.test(file))
31
+ return false;
32
+ if (TESTS_FOLDER.test(file) && !UNDER_SRC.test(file))
33
+ return false;
34
+ if (STORY_FILE.test(file) || CHECKED_FILE.test(file) || OTHER_UI_FILE.test(file))
35
+ return true;
36
+ if (!SCRIPT_FILE.test(file))
37
+ return false;
38
+ const text = readText(file);
39
+ return DEFINES_COMPONENT.test(text) || (PLAIN_JAVASCRIPT.test(file) && DRAWS_JSX.test(text));
40
+ };
41
+ /**
42
+ * The forms a deleted file can have left in the graph: what still imports it wrote it with no extension, or by its
43
+ * folder.
44
+ *
45
+ * @param file - the deleted file, absolute.
46
+ */
47
+ export const deletedForms = (file) => {
48
+ const bare = file.replace(/\.[^./]+$/, "");
49
+ return [file, bare, ...(bare.endsWith("/index") ? [bare.slice(0, -"/index".length)] : [])];
50
+ };
51
+ /**
52
+ * How a changed file is covered.
53
+ *
54
+ * @param forms - the file's forms in the graph.
55
+ * @param stories - the catalogue's stories.
56
+ * @param everyStory - whether every story shows it: the catalogue's preview and its sheets.
57
+ */
58
+ const coverageOf = (forms, stories, everyStory) => {
59
+ const reaching = everyStory
60
+ ? stories
61
+ : stories.filter(({ reach }) => forms.some((form) => reach.files.includes(form)));
62
+ // what every story shows is none's own, though a story may name it
63
+ const isOwn = !everyStory && reaching.some(({ reach }) => forms.some((form) => reach.own.includes(form)));
64
+ const covering = isOwn ? "own" : "through";
65
+ return { coverage: reaching.length === 0 ? "none" : covering, stories: reaching.map(({ id }) => id) };
66
+ };
67
+ /**
68
+ * The changed files a story can show: what every story shows is none of them while the catalogue has no story, as a
69
+ * catalogue just set up has its preview and nothing yet that shows it.
70
+ *
71
+ * @param files - the changed files.
72
+ * @param stories - the catalogue's stories.
73
+ * @param everyStoryFiles - the files every story shows.
74
+ */
75
+ const shownFiles = (files, stories, everyStoryFiles) => stories.length > 0 ? files : files.filter(({ absolute }) => !everyStoryFiles.has(absolute));
76
+ /**
77
+ * The changed files a person sees: those this catalogue can show, with their stories, and those it cannot speak for. A
78
+ * deleted file with no story behind it is left out, as there is nothing left to look at, and so is what every story shows
79
+ * while the catalogue has no story.
80
+ *
81
+ * @param input - the change and the catalogue.
82
+ */
83
+ export const changedUiFiles = ({ files, stories, everyStoryFiles, isOtherCatalogues, readText }) => {
84
+ const uiFiles = [];
85
+ const outside = [];
86
+ for (const { file, path, absolute, isDeleted } of shownFiles(files, stories, everyStoryFiles)) {
87
+ if (!isUiFile(file, isDeleted ? () => "" : readText))
88
+ continue;
89
+ const forms = isDeleted ? deletedForms(absolute) : [absolute];
90
+ const found = coverageOf(forms, stories, everyStoryFiles.has(absolute));
91
+ if (found.coverage === "none" && isDeleted)
92
+ continue;
93
+ if (found.coverage === "none" && isOtherCatalogues(absolute))
94
+ outside.push(file);
95
+ else
96
+ uiFiles.push({ file, path, ...found });
97
+ }
98
+ return { uiFiles, outside };
99
+ };
100
+ /**
101
+ * Whether the nearest catalogue above a file is another one.
102
+ *
103
+ * @param file - the file, absolute, under the catalogue's root as named.
104
+ * @param own - this catalogue's folder.
105
+ * @param root - the repository's folder, in the same form: nothing above it is looked at.
106
+ * @param hasCatalogue - whether a folder holds a catalogue's configuration.
107
+ */
108
+ export const belongsToOtherCatalogue = (file, own, root, hasCatalogue) => {
109
+ let folder = VITE_PATHS.dirname(file);
110
+ while (folder === root || folder.startsWith(`${root}/`)) {
111
+ if (folder === own)
112
+ return false;
113
+ if (hasCatalogue(folder))
114
+ return true;
115
+ if (folder === root)
116
+ return false;
117
+ folder = VITE_PATHS.dirname(folder);
118
+ }
119
+ return false;
120
+ };
@@ -0,0 +1,30 @@
1
+ import { type AgentAnswer, type RouteContext } from "./agentRoutes.ts";
2
+ import { type IdentifiedStory } from "./changeCoverage.ts";
3
+ import type { ResolveSource } from "./storylessRoutes.ts";
4
+ /** A story the reach found in the tree, with its source and the file as that source lists it. */
5
+ export type FoundStory = IdentifiedStory & {
6
+ /** Its source's id. */
7
+ readonly source: string;
8
+ /** Its file, as its source lists it (`./src/Badge.stories.tsx`). */
9
+ readonly file: string;
10
+ };
11
+ /**
12
+ * The catalogue's stories with what each reaches, and each group's answer, whose failure a route has to say.
13
+ *
14
+ * @param loaded - the sources.
15
+ * @param tree - their story tree.
16
+ */
17
+ export declare const identifiedStories: (loaded: RouteContext["loaded"], tree: RouteContext["tree"]) => Promise<{
18
+ readonly groups: readonly {
19
+ readonly source: string;
20
+ readonly reach: unknown;
21
+ }[];
22
+ readonly identified: readonly FoundStory[];
23
+ }>;
24
+ /**
25
+ * The stories a change touches and the changed UI files with their stories.
26
+ *
27
+ * @param context - what the routes read.
28
+ * @param resolveSource - finds the file of a source's module.
29
+ */
30
+ export declare const changedAnswer: ({ config, loaded, tree, params, pages, view }: RouteContext, resolveSource: ResolveSource) => Promise<AgentAnswer>;
@@ -0,0 +1,197 @@
1
+ /**
2
+ * The answer to `changed`: the stories a change touches, read from the files git names and the import graph "Used in"
3
+ * reads, and for each changed UI file the stories that show it.
4
+ *
5
+ * @remarks
6
+ * The preview and the style sheets it or a source's module name are shown by every story, though no story imports them.
7
+ * Only those count: a preview also imports its decorators, often from a library's barrel, and following that would
8
+ * make a component look covered for being exported.
9
+ *
10
+ * @module
11
+ */
12
+ import { readFileSync } from "node:fs";
13
+ import { realpath } from "node:fs/promises";
14
+ import { offersUsedIn, readsComponentDocs } from "../catalogue.js";
15
+ import { isComponentDocs } from "../componentDocs.js";
16
+ import { propsSignature, writtenSignature } from "../propsSignature.js";
17
+ import { shellWord } from "../shellWord.js";
18
+ import { sourceFiles } from "../sourceFiles.js";
19
+ import { findComponentByTitle } from "../storyTree.js";
20
+ import { storyLinks } from "./agentApi.js";
21
+ import { settled } from "./agentRoutes.js";
22
+ import { belongsToOtherCatalogue, changedUiFiles, deletedForms } from "./changeCoverage.js";
23
+ import { findConfigFile } from "./configFile.js";
24
+ import { catalogueChangedFiles, changeBase, changedFiles, noBaseReason } from "./gitChange.js";
25
+ import { affectedStories } from "./storyReach.js";
26
+ import { assetImports, sheetImports } from "./textImports.js";
27
+ import { VITE_PATHS } from "./vitePaths.js";
28
+ /** Whether a value is a list of stories with what they reach. */
29
+ const isReach = (value) => Array.isArray(value);
30
+ /** A file's text; a file that cannot be read has none. */
31
+ const textOf = (file) => {
32
+ try {
33
+ return readFileSync(file, "utf8");
34
+ }
35
+ catch {
36
+ return "";
37
+ }
38
+ };
39
+ /** The files every story shows: the previews, and the sheets they and the sources' modules name, followed. */
40
+ const everyStoryFiles = async (config, resolveSource) => {
41
+ const sourceModules = await Promise.all(config.sources.map(async (specifier) => {
42
+ const id = await resolveSource(specifier).catch(() => undefined);
43
+ return id?.split("?")[0];
44
+ }));
45
+ const modules = [...config.previews, ...sourceModules.flatMap((file) => file ?? [])]
46
+ .filter((file) => VITE_PATHS.isAbsolute(file))
47
+ .map((file) => VITE_PATHS.normalize(file));
48
+ const found = new Set(config.previews.map((file) => VITE_PATHS.normalize(file)));
49
+ const queue = modules.flatMap((file) => assetImports(file, textOf(file)));
50
+ while (queue.length > 0) {
51
+ const sheet = queue.pop() ?? "";
52
+ if (found.has(sheet))
53
+ continue;
54
+ found.add(sheet);
55
+ queue.push(...sheetImports(sheet, textOf(sheet)));
56
+ }
57
+ return found;
58
+ };
59
+ /** Why a group's reach could not be read, when that is what it answered. */
60
+ const failureOf = (reach) => typeof reach === "string" ? `The stories' imports could not be read: ${reach}` : undefined;
61
+ /** Without the import graph no story is found, which must not read as a change that touches none. */
62
+ const graphProblems = (config) => {
63
+ if (offersUsedIn(config.lists))
64
+ return [];
65
+ return [
66
+ readsComponentDocs(config.lists)
67
+ ? "No story is found through the imports: the catalogue turns Used in off (usedIn: false), whose import graph this reads"
68
+ : "No story is found through the imports: the catalogue reads no component docs (componentDocs: false), whose programs read the import graph"
69
+ ];
70
+ };
71
+ /**
72
+ * The touched story files `forgebook new` wrote for other props than their component has now.
73
+ *
74
+ * @param touched - the touched story files, once each.
75
+ * @param dir - the catalogue's folder.
76
+ * @param root - the repository's folder, as the catalogue's folder is reached.
77
+ */
78
+ const outdatedFiles = async (touched, dir, root) => {
79
+ const found = await Promise.all(touched.map(async (file) => {
80
+ const written = writtenSignature(textOf(file.absolute));
81
+ if (written === undefined)
82
+ return [];
83
+ // only a file that says what it was written for is compared: docs that cannot be read leave it alone
84
+ const docs = await settled(file.docs);
85
+ if (!("value" in docs) || !isComponentDocs(docs.value))
86
+ return [];
87
+ const current = propsSignature(docs.value.props);
88
+ if (current === written)
89
+ return [];
90
+ const path = VITE_PATHS.relative(dir, file.absolute);
91
+ return [
92
+ {
93
+ file: VITE_PATHS.relative(root, file.absolute),
94
+ path,
95
+ story: file.story,
96
+ component: docs.value.name,
97
+ written,
98
+ current,
99
+ // the names reach a command an agent runs, so they are quoted; the signature is eight hexadecimal digits
100
+ fix: `check the args in ${shellWord(path)} against the props npx forgebook story ${shellWord(file.story)} --json lists, then set its forgebook-props line to ${current}; or write it again with npx forgebook new on the component file it imports, with --force, which replaces any edit`
101
+ }
102
+ ];
103
+ }));
104
+ return found.flat();
105
+ };
106
+ /**
107
+ * The catalogue's stories with what each reaches, and each group's answer, whose failure a route has to say.
108
+ *
109
+ * @param loaded - the sources.
110
+ * @param tree - their story tree.
111
+ */
112
+ export const identifiedStories = async (loaded, tree) => {
113
+ const groups = await Promise.all(loaded.sources.flatMap((source) => source.files.map(async (group) => ({ source: source.id, reach: await group.reach?.() }))));
114
+ const identified = groups.flatMap(({ source, reach }) => (isReach(reach) ? reach : []).flatMap((story) => {
115
+ const component = findComponentByTitle(tree, source, story.title)?.component;
116
+ const found = [...(component?.stories ?? []), ...(component?.unlisted ?? [])].find((each) => each.exportName === story.exportName);
117
+ return found === undefined ? [] : [{ id: found.id, reach: story, source, file: found.file }];
118
+ }));
119
+ return { groups, identified };
120
+ };
121
+ /**
122
+ * The stories a change touches and the changed UI files with their stories.
123
+ *
124
+ * @param context - what the routes read.
125
+ * @param resolveSource - finds the file of a source's module.
126
+ */
127
+ export const changedAnswer = async ({ config, loaded, tree, params, pages, view }, resolveSource) => {
128
+ const since = params.get("since") || "HEAD";
129
+ const base = await changeBase(config.dir, since);
130
+ if (base === undefined)
131
+ return { status: 400, body: { error: await noBaseReason(config.dir, since) } };
132
+ const { root, files, deleted } = await changedFiles(config.dir, base);
133
+ const { groups, identified } = await identifiedStories(loaded, tree);
134
+ const realDir = await realpath(config.dir);
135
+ const absolute = catalogueChangedFiles(config.dir, realDir, root, files);
136
+ const gone = new Set(deleted);
137
+ const changed = absolute.flatMap((file, index) => gone.has(files[index] ?? "") ? deletedForms(file) : [file]);
138
+ const shownByAll = await everyStoryFiles(config, resolveSource);
139
+ const touched = absolute.some((file) => shownByAll.has(file))
140
+ ? identified.map(({ reach }) => reach)
141
+ : affectedStories(identified.map(({ reach }) => reach), changed);
142
+ const touchedSet = new Set(touched);
143
+ const touchedFiles = new Map();
144
+ for (const story of identified.filter(({ reach }) => touchedSet.has(reach))) {
145
+ const source = loaded.sources.find((each) => each.id === story.source);
146
+ if (source !== undefined && !touchedFiles.has(story.reach.storyFile))
147
+ touchedFiles.set(story.reach.storyFile, {
148
+ absolute: story.reach.storyFile,
149
+ story: story.id,
150
+ docs: sourceFiles(source).docs[story.file]
151
+ });
152
+ }
153
+ const outdated = await outdatedFiles([...touchedFiles.values()], config.dir, VITE_PATHS.join(config.dir, VITE_PATHS.relative(realDir, root)));
154
+ const stories = identified
155
+ .filter(({ reach }) => touchedSet.has(reach))
156
+ .map(({ id, reach }) => ({
157
+ id,
158
+ title: reach.title,
159
+ links: storyLinks(pages, id, view)
160
+ }));
161
+ const { uiFiles, outside } = changedUiFiles({
162
+ files: files.map((file, index) => {
163
+ const inCatalogue = absolute[index] ?? "";
164
+ return {
165
+ file,
166
+ path: VITE_PATHS.relative(config.dir, inCatalogue),
167
+ absolute: inCatalogue,
168
+ isDeleted: gone.has(file)
169
+ };
170
+ }),
171
+ stories: identified,
172
+ everyStoryFiles: shownByAll,
173
+ isOtherCatalogues: (file) => belongsToOtherCatalogue(file, VITE_PATHS.normalize(config.dir), VITE_PATHS.join(config.dir, VITE_PATHS.relative(realDir, root)), (folder) => findConfigFile(folder) !== undefined),
174
+ readText: (file) => textOf(VITE_PATHS.join(root, file))
175
+ });
176
+ const unread = loaded.sources.flatMap((source) => sourceFiles(source).problems ?? []);
177
+ const problems = [
178
+ ...new Set([
179
+ ...unread,
180
+ ...graphProblems(config),
181
+ ...groups.flatMap(({ reach }) => failureOf(reach) ?? []),
182
+ ...tree.problems
183
+ ])
184
+ ];
185
+ const body = {
186
+ schema: 1,
187
+ since,
188
+ files,
189
+ stories,
190
+ uiFiles,
191
+ outside,
192
+ problems,
193
+ ...(unread.length === 0 ? {} : { unread }),
194
+ ...(outdated.length === 0 ? {} : { outdated })
195
+ };
196
+ return { status: 200, body };
197
+ };
@@ -8,7 +8,15 @@
8
8
  * output), and it does not read a `#` as a colour unless it stands as a value. A raw colour is named whether or not a
9
9
  * token is close; a size only when it equals a token, since most sizes are not the design system's. A fix is the token's
10
10
  * name, not code to paste, and it is offered only when one token clearly fits: forcing the nearest is how a wrong colour
11
- * gets a token's name. Props, imports and deprecated components are not checked here.
11
+ * gets a token's name. Props are the type checker's; what a change reuses is `reuseCheck.ts`'s.
12
+ *
13
+ * React reads a bare number in a style object as pixels, so `padding: 16` there is a size like `16px`. The same keys are
14
+ * options of other code (`fitView({ padding: 16 })`), and an added line seldom shows where its object starts: such a
15
+ * number fails only on a line that says the object is a style, and is advice elsewhere.
16
+ *
17
+ * A token read from an application says less than one in a tokens file, which someone wrote for this use: a project's
18
+ * `--sidebar-width: 16px` does not make every `16px` a mistake. So a size is compared with those of the same role only:
19
+ * spacing with spacing, a radius with a radius, a font's size with a font's size. A size with no such role is left alone.
12
20
  *
13
21
  * @module
14
22
  */
@@ -23,7 +31,18 @@ export type AddedLine = {
23
31
  readonly text: string;
24
32
  };
25
33
  /** The rules. */
26
- export type CodeRule = "raw-color" | "raw-size" | "suppression" | "deleted-test";
34
+ export type CodeRule = "raw-color" | "raw-size" | "suppression" | "deleted-test" | "deprecated-component" | "duplicate-component" | "composition";
35
+ /** A value a comment says is meant. */
36
+ export type ExcusedValue = {
37
+ /** The file, relative to the repository. */
38
+ readonly file: string;
39
+ /** The comment's line. */
40
+ readonly line: number;
41
+ /** The rule it excuses. */
42
+ readonly rule: "raw-color" | "raw-size" | "duplicate-component" | "composition";
43
+ /** Why, as the comment says. */
44
+ readonly reason: string;
45
+ };
27
46
  /** What a check found. */
28
47
  export type CodeProblem = {
29
48
  /** The rule. */
@@ -39,6 +58,27 @@ export type CodeProblem = {
39
58
  /** What to do, in a sentence. */
40
59
  readonly message: string;
41
60
  };
61
+ /** A size, signed or in Tailwind's brackets. */
62
+ export declare const SIZE: RegExp;
63
+ /** The files where a raw value is a mistake: styles and components. */
64
+ export declare const CHECKED_FILE: RegExp;
65
+ /**
66
+ * Where raw values belong: stories, tests, tokens and what a tool wrote; and what is drawn where a page's custom
67
+ * properties do not reach, as an email or a generated social image.
68
+ */
69
+ export declare const LEFT_ALONE: RegExp;
70
+ /** A line that defines a value: a custom property or a Sass variable, where raw values belong. */
71
+ export declare const DEFINES_VALUE: RegExp;
72
+ /** Past this a line is data or a minified bundle, written by no one, and these patterns would take long to read it. */
73
+ export declare const LONGEST_LINE = 2000;
74
+ /** What a size is for. */
75
+ export type SizeRole = "space" | "radius" | "font";
76
+ /**
77
+ * A line's code, without what follows a `//` or a comment's start.
78
+ *
79
+ * @param text - the line.
80
+ */
81
+ export declare const withoutComment: (text: string) => string;
42
82
  /**
43
83
  * The lines a unified diff adds. A header is read only outside a hunk, since an added line of `++ x` looks like one.
44
84
  *
@@ -59,7 +99,69 @@ export declare const fileLines: (file: string, text: string) => AddedLine[];
59
99
  */
60
100
  export declare const deletedTests: (deleted: readonly string[]) => CodeProblem[];
61
101
  /**
62
- * What lines a change adds break. Only code is read: a rule named in a sentence is not that rule.
102
+ * The colours written by hand in a line of code, leaving out what is not the system's to give.
103
+ *
104
+ * @param written - the line, its comment taken off.
105
+ */
106
+ export declare const rawColorsOf: (written: string) => readonly string[];
107
+ /**
108
+ * What a size in a line is for, and whether a class holds it; none when it stands in a sum no token can replace.
109
+ *
110
+ * @param before - the line up to the size.
111
+ */
112
+ export declare const roleInLine: (before: string) => {
113
+ readonly role: SizeRole;
114
+ readonly isClass: boolean;
115
+ } | undefined;
116
+ /**
117
+ * The tokens a size can be compared with where it stands: a tokens file's all, an application's of its role. Tailwind's
118
+ * own scale counts only in a class's brackets, where a class of that scale says the same (`p-[16px]`, `p-4`): in a sheet
119
+ * or a style, a size equal to a step of a scale nobody there chose means nothing.
120
+ *
121
+ * @param tokens - the tokens.
122
+ * @param before - the line up to the size.
123
+ */
124
+ export declare const sizeTokens: (tokens: readonly DesignToken[], before: string) => readonly DesignToken[];
125
+ /** Something to weigh, which fails nothing. */
126
+ export type CodeAdvice = {
127
+ /** The file, relative to the repository. */
128
+ readonly file: string;
129
+ /** The line in it. */
130
+ readonly line: number;
131
+ /** What to weigh, in a sentence. */
132
+ readonly message: string;
133
+ };
134
+ /** What the checks found: what fails, and what to weigh. */
135
+ export type CodeFindings = {
136
+ /** What fails. */
137
+ readonly problems: readonly CodeProblem[];
138
+ /** What to weigh. */
139
+ readonly advice: readonly CodeAdvice[];
140
+ };
141
+ /**
142
+ * A file with its block comments blanked and its lines kept, so what is commented out does not count as used. A `/*` right
143
+ * after a word or a star or a quote is a path's pattern (`src/**` then `/*.ts`), not a comment.
144
+ *
145
+ * @param text - the file.
146
+ */
147
+ export declare const withoutBlockComments: (text: string) => string;
148
+ /**
149
+ * The values a change excuses with a comment: said in the answer, so a reader sees every one, and an agent gains nothing
150
+ * by hiding a value this way.
151
+ *
152
+ * @param lines - the added lines.
153
+ */
154
+ export declare const excusedValues: (lines: readonly AddedLine[]) => ExcusedValue[];
155
+ /**
156
+ * What lines a change adds break, and what they hold to weigh. Only code is read: a rule named in a sentence is not that
157
+ * rule.
158
+ *
159
+ * @param lines - the added lines.
160
+ * @param tokens - the catalogue's tokens; none skips the checks on values, which have nothing to compare with.
161
+ */
162
+ export declare const codeFindings: (lines: readonly AddedLine[], tokens: readonly DesignToken[]) => CodeFindings;
163
+ /**
164
+ * What lines a change adds break.
63
165
  *
64
166
  * @param lines - the added lines.
65
167
  * @param tokens - the catalogue's tokens; none skips the checks on values, which have nothing to compare with.