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
@@ -8,13 +8,25 @@
8
8
  *
9
9
  * @module
10
10
  */
11
- import { readFile } from "node:fs/promises";
11
+ import { readFile, realpath } from "node:fs/promises";
12
12
  import { isAbsolute, join, relative, resolve } from "node:path";
13
13
  import { codeLiteral } from "../codeLiteral.js";
14
- import { addedLines, checkedCode, deletedTests, fileLines } from "./checkCode.js";
14
+ import { smallFileText } from "./appTokenFiles.js";
15
+ import { readAppTokens } from "./appTokens.js";
16
+ import { addedLines, codeFindings, deletedTests, excusedValues, fileLines, LEFT_ALONE } from "./checkCode.js";
17
+ import { currentComponents } from "./componentCache.js";
18
+ import { graphDocument } from "./componentGraph.js";
19
+ import { COMPONENT_FILE } from "./componentScan.js";
20
+ import { compositionFindings } from "./compositionCheck.js";
15
21
  import { gitChange, gitOutput } from "./gitChange.js";
22
+ import { workspacePackages } from "./projectFiles.js";
23
+ import { reuseFindings } from "./reuseCheck.js";
16
24
  import { readTokenFiles, sourceTokensIn } from "./sourceTokens.js";
17
25
  import { TOKEN_ANSWERS, tokenSummary } from "./tokenAnswers.js";
26
+ /** How many component files a change may touch and still be compared: past this it is a move or a rewrite. */
27
+ const MOST_REUSE_FILES = 300;
28
+ /** Fewer colours than this in what an application declares is no palette to compare with. */
29
+ const FEWEST_COLORS = 5;
18
30
  /**
19
31
  * What one source's module declares; a module the bundler answers itself has no text to read, so it declares none.
20
32
  *
@@ -39,14 +51,14 @@ const sourceDeclaration = async (specifier, resolveSource, watch) => {
39
51
  }
40
52
  };
41
53
  /**
42
- * The catalogue's tokens, read at each question, so an edited file answers at once and costs nothing unasked. Sources
43
- * are read from their modules' text, each source's files before the catalogue's, which win a clash.
54
+ * The tokens a catalogue and its sources name, read at each question, so an edited file answers at once and costs nothing
55
+ * unasked. Sources are read from their modules' text, each source's files before the catalogue's, which win a clash.
44
56
  *
45
57
  * @param config - the catalogue's configuration.
46
58
  * @param resolveSource - finds the file of a source's module.
47
59
  * @param watch - told of every file read: the sources' modules and the tokens files; none by default.
48
60
  */
49
- export const catalogueTokens = async (config, resolveSource, watch = () => undefined) => {
61
+ const namedTokens = async (config, resolveSource, watch = () => undefined) => {
50
62
  const declared = await Promise.all(config.sources.map((specifier) => sourceDeclaration(specifier, resolveSource, watch)));
51
63
  const own = config.tokens.map(({ path, mode }) => ({ path, mode, label: relative(config.dir, path) }));
52
64
  const files = [...declared.flatMap((source) => source.files), ...own];
@@ -59,7 +71,52 @@ export const catalogueTokens = async (config, resolveSource, watch = () => undef
59
71
  clashes,
60
72
  problems: [...declaring, ...problems],
61
73
  unread: declared.flatMap((source) => (source.unread === undefined ? [] : [source.unread])),
62
- isConfigured: files.length > 0 || declaring.length > 0
74
+ isConfigured: files.length > 0 || declaring.length > 0,
75
+ sources: files.map(({ label }) => ({ kind: "tokens-file", file: label })),
76
+ notes: []
77
+ };
78
+ };
79
+ /** What the application declares; a failure of the system (a folder gone) is a note, with no machine's path in it. */
80
+ const appTokensOf = (dir) => {
81
+ try {
82
+ return readAppTokens(dir);
83
+ }
84
+ catch (error) {
85
+ const code = error instanceof Error && "code" in error ? String(error.code) : "an error";
86
+ return {
87
+ tokens: [],
88
+ clashes: [],
89
+ sources: [],
90
+ files: [],
91
+ problems: [],
92
+ unread: [`the application's files: ${code}`]
93
+ };
94
+ }
95
+ };
96
+ /**
97
+ * The tokens an agent is answered from: what the catalogue and its sources name or, when they name none, what the
98
+ * application already declares, which is read from its files and never run. A catalogue that says `tokens: []` wants
99
+ * none, so a named file is not the only way to say so.
100
+ *
101
+ * @param config - the catalogue's configuration.
102
+ * @param resolveSource - finds the file of a source's module.
103
+ * @param watch - told of every file read; none by default.
104
+ */
105
+ export const catalogueTokens = async (config, resolveSource, watch = () => undefined) => {
106
+ const named = await namedTokens(config, resolveSource, watch);
107
+ if (named.isConfigured || config.isAppTokensOff === true)
108
+ return named;
109
+ const app = appTokensOf(config.dir);
110
+ for (const file of app.files)
111
+ watch(file);
112
+ return {
113
+ ...named,
114
+ tokens: app.tokens,
115
+ problems: app.problems,
116
+ clashes: app.clashes,
117
+ isConfigured: app.tokens.length > 0,
118
+ sources: app.sources,
119
+ notes: app.unread
63
120
  };
64
121
  };
65
122
  /**
@@ -72,12 +129,110 @@ export const catalogueTokens = async (config, resolveSource, watch = () => undef
72
129
  * @param resolveSource - finds the file of a source's module.
73
130
  */
74
131
  export const tokensModule = async (config, watch, resolveSource) => {
75
- const { tokens, problems, unread } = await catalogueTokens(config, resolveSource, watch);
132
+ const { tokens, problems, unread } = await namedTokens(config, resolveSource, watch);
76
133
  // in both forms: Vite's, and the system's, which a Windows error message writes
77
134
  const shown = (problem) => problem.replaceAll(config.dir, ".").replaceAll(resolve(config.dir), ".");
78
135
  const value = { tokens: tokens.map(tokenSummary), problems: [...unread, ...problems].map(shown) };
79
136
  return { code: `export default ${codeLiteral(value)};`, moduleType: "js" };
80
137
  };
138
+ /**
139
+ * The tokens worth comparing a change with. A named tokens file is the system whatever its size. In what an application
140
+ * merely declares, a handful of colours (a brand colour, a chart's) is no palette: against it every colour written by hand
141
+ * would read as a mistake, and a check that says so on every line gets turned off.
142
+ */
143
+ const checkableTokens = ({ tokens, sources }) => {
144
+ if (sources.some((source) => source.kind === "tokens-file"))
145
+ return tokens;
146
+ const colors = tokens.filter((token) => token.type === "color").length;
147
+ return colors >= FEWEST_COLORS ? tokens : tokens.filter((token) => token.type !== "color");
148
+ };
149
+ /** How many sizes in objects that may not be styles an answer lists: past this, a file of options would bury the rest. */
150
+ const MOST_CODE_ADVICE = 20;
151
+ /**
152
+ * What added lines break: values only in the catalogue's folder when the tokens are what that folder's application
153
+ * declares, since a repository's other packages have systems of their own. A turned-off check is one everywhere. Only
154
+ * the compared values give advice: with no tokens there is nothing to weigh.
155
+ */
156
+ const codeFindingsOf = (added, tokens, inFolder) => {
157
+ const compared = codeFindings(added.filter(({ file }) => inFolder(file)), tokens);
158
+ const elsewhere = codeFindings(added.filter(({ file }) => !inFolder(file)), []);
159
+ return { problems: [...compared.problems, ...elsewhere.problems], advice: compared.advice };
160
+ };
161
+ /** What a change's values were not compared with, and why, in the words `skipped` gives. */
162
+ const notCheckedLine = (hasColors, hasSizes, { tokens }) => {
163
+ if (hasColors && hasSizes)
164
+ return [];
165
+ const what = [...(hasColors ? [] : ["colours"]), ...(hasSizes ? [] : ["sizes"])].join(" and ");
166
+ const reason = tokens.length === 0
167
+ ? "no tokens file"
168
+ : `too few tokens of that kind in the application (${tokens.length})`;
169
+ return [`${what} not checked: ${reason}`];
170
+ };
171
+ /** What a change's files were, at the commit it starts from: a file it adds has none. */
172
+ const filesAtBase = async (root, base, files) => {
173
+ const read = await Promise.all(files.map(async (file) => ({
174
+ file,
175
+ text: await gitOutput(root, "show", `${base}:${file}`).catch(() => undefined)
176
+ })));
177
+ return read.flatMap(({ file, text }) => (text === undefined ? [] : [{ file, text }]));
178
+ };
179
+ /**
180
+ * What a change adds against the project's components, read over the whole repository, since the one a new component
181
+ * copies may live in another package. Only a change to a component's file costs this reading.
182
+ */
183
+ const reuseOf = async (root, change, added) => {
184
+ try {
185
+ return await readReuse(root, change, added);
186
+ }
187
+ catch (error) {
188
+ // a crafted file past what a walk can take costs this part of the answer, and says so
189
+ const reason = error instanceof RangeError ? "a file nests too deep" : "it could not be read";
190
+ return {
191
+ problems: [],
192
+ advice: [],
193
+ excused: [],
194
+ hasRules: false,
195
+ notes: [`components not compared: ${reason}`]
196
+ };
197
+ }
198
+ };
199
+ /** What `reuseOf` reads. */
200
+ const readReuse = async (root, change, added) => {
201
+ const isComponent = (file) => COMPONENT_FILE.test(file) && !LEFT_ALONE.test(file);
202
+ const touched = new Set(added.flatMap(({ file }) => (isComponent(file) ? [file] : [])));
203
+ const empty = { problems: [], advice: [], excused: [], notes: [], hasRules: false };
204
+ if (touched.size === 0)
205
+ return empty;
206
+ const deleted = change.deleted.filter(isComponent);
207
+ if (touched.size + deleted.length > MOST_REUSE_FILES) {
208
+ return {
209
+ ...empty,
210
+ notes: [`components not compared: the change touches more than ${MOST_REUSE_FILES} of them`]
211
+ };
212
+ }
213
+ const notes = [];
214
+ const components = currentComponents(root, notes);
215
+ const changed = [...touched].flatMap((file) => {
216
+ const text = smallFileText(join(root, file));
217
+ return text === undefined ? [] : [{ file, text }];
218
+ });
219
+ const packages = workspacePackages(root);
220
+ const composition = compositionFindings(added, changed, components, packages);
221
+ const findings = reuseFindings({
222
+ added,
223
+ changed,
224
+ previous: await filesAtBase(root, change.base, [...touched, ...deleted]),
225
+ components,
226
+ packages
227
+ });
228
+ return {
229
+ problems: [...findings.problems, ...composition.problems],
230
+ advice: findings.advice,
231
+ excused: [...findings.excused, ...composition.excused],
232
+ hasRules: components.some((each) => each.rules !== undefined),
233
+ notes: notes.map((note) => `components not all compared: ${note}`)
234
+ };
235
+ };
81
236
  /**
82
237
  * What a change adds that breaks the design system. It needs nothing of the stories, like the tokens, so a story broken
83
238
  * mid-edit does not stop it; tokens that were asked for and cannot be read do, or a check would pass having checked less.
@@ -89,7 +244,9 @@ export const tokensModule = async (config, watch, resolveSource) => {
89
244
  */
90
245
  const checkCodeAnswer = async (config, params, resolveSource) => {
91
246
  const since = params.get("since") || "HEAD";
92
- const { tokens, problems, unread } = await catalogueTokens(config, resolveSource);
247
+ const reading = await catalogueTokens(config, resolveSource);
248
+ const { problems, unread } = reading;
249
+ const tokens = checkableTokens(reading);
93
250
  if (problems.length > 0) {
94
251
  return { status: 400, body: { error: `The tokens files have problems: ${problems.join("; ")}` } };
95
252
  }
@@ -98,29 +255,63 @@ const checkCodeAnswer = async (config, params, resolveSource) => {
98
255
  return { status: 400, body: { error: change } };
99
256
  const root = (await gitOutput(config.dir, "rev-parse", "--show-toplevel")).trim();
100
257
  const fresh = await Promise.all(change.untracked.map(async (file) => fileLines(file, await readFile(join(root, file), "utf8").catch(() => ""))));
101
- const hasTokens = tokens.length > 0;
258
+ const hasNamedFile = reading.sources.some((source) => source.kind === "tokens-file");
259
+ const added = [...addedLines(change.diff), ...fresh.flat()];
260
+ const folder = relative(root, await realpath(config.dir)).replaceAll("\\", "/");
261
+ const isInCatalogue = (file) => folder === "" || file === folder || file.startsWith(`${folder}/`);
262
+ const inFolder = (file) => hasNamedFile || isInCatalogue(file);
263
+ const hasColors = tokens.some((token) => token.type === "color") || (hasNamedFile && tokens.length > 0);
264
+ const hasSizes = tokens.some((token) => token.type === "dimension") || (hasNamedFile && tokens.length > 0);
265
+ const reuse = await reuseOf(root, change, added.filter(({ file }) => isInCatalogue(file)));
266
+ const code = codeFindingsOf(added, tokens, inFolder);
102
267
  const body = {
103
268
  schema: 1,
104
269
  since,
105
- checked: hasTokens
106
- ? ["raw-color", "raw-size", "suppression", "deleted-test"]
107
- : ["suppression", "deleted-test"],
270
+ checked: [
271
+ ...(hasColors ? ["raw-color"] : []),
272
+ ...(hasSizes ? ["raw-size"] : []),
273
+ "suppression",
274
+ "deleted-test",
275
+ "deprecated-component",
276
+ "duplicate-component",
277
+ ...(reuse.hasRules ? ["composition"] : [])
278
+ ],
108
279
  skipped: [
109
- ...(hasTokens ? [] : ["Colours and sizes: this catalogue names no tokens file."]),
110
- ...unread.map((source) => `Tokens of a source: ${source}`)
280
+ ...notCheckedLine(hasColors, hasSizes, reading),
281
+ ...reuse.notes,
282
+ ...unread.map((source) => `tokens of a source not checked: ${source}`),
283
+ ...(code.advice.length > MOST_CODE_ADVICE
284
+ ? [`${code.advice.length - MOST_CODE_ADVICE} more sizes in objects to weigh not listed`]
285
+ : [])
111
286
  ],
112
- problems: [
113
- ...checkedCode([...addedLines(change.diff), ...fresh.flat()], tokens),
114
- ...deletedTests(change.deleted)
115
- ]
287
+ problems: [...code.problems, ...deletedTests(change.deleted), ...reuse.problems],
288
+ advice: [...code.advice.slice(0, MOST_CODE_ADVICE), ...reuse.advice],
289
+ tokenSources: reading.sources,
290
+ tokenClashes: reading.clashes.length,
291
+ tokenNotes: [...reading.notes],
292
+ notCompared: [...new Set(added.flatMap(({ file }) => (inFolder(file) ? [] : [file])))],
293
+ excused: [...excusedValues(added.filter(({ file }) => inFolder(file))), ...reuse.excused]
116
294
  };
117
295
  return { status: 200, body };
118
296
  };
297
+ /** The map of the project, for a client with no shell. */
298
+ const graphAnswer = async (config, params) => {
299
+ const limit = Number(params.get("limit"));
300
+ return {
301
+ status: 200,
302
+ body: graphDocument(config.dir, {
303
+ component: params.get("component") || undefined,
304
+ intent: params.get("intent") || undefined,
305
+ limit: Number.isInteger(limit) && limit > 0 ? limit : undefined
306
+ })
307
+ };
308
+ };
119
309
  /** The answers that need nothing of the stories, so a story broken mid-edit cannot take them down. */
120
310
  export const STORYLESS_ROUTES = {
121
311
  ...Object.fromEntries(Object.entries(TOKEN_ANSWERS).map(([route, answer]) => [
122
312
  route,
123
313
  async (config, params, resolveSource) => answer(await catalogueTokens(config, resolveSource), params)
124
314
  ])),
125
- "check-code": checkCodeAnswer
315
+ "check-code": checkCodeAnswer,
316
+ graph: graphAnswer
126
317
  };
@@ -0,0 +1,19 @@
1
+ import { type ViewSwitch } from "../switches.ts";
2
+ import { type VitePaths } from "./vitePaths.ts";
3
+ /**
4
+ * Why the settings of a catalogue's switches' values cannot be used, or none.
5
+ *
6
+ * @param switches - the catalogue's switches, the ready-made ones among them: a value may imply one.
7
+ * @param dir - the configuration's folder.
8
+ * @param paths - how paths are read; Vite's by default.
9
+ */
10
+ export declare const switchValuesProblem: (switches: readonly ViewSwitch[], dir: string, paths?: VitePaths) => string | undefined;
11
+ /**
12
+ * The switches with their values' files as absolute paths, as the generated pages import them. Their settings are
13
+ * checked already.
14
+ *
15
+ * @param switches - the catalogue's switches.
16
+ * @param dir - the configuration's folder.
17
+ * @param paths - how paths are read; Vite's by default.
18
+ */
19
+ export declare const withAbsoluteValueFiles: (switches: readonly ViewSwitch[], dir: string, paths?: VitePaths) => readonly ViewSwitch[];
@@ -0,0 +1,164 @@
1
+ /**
2
+ * What a catalogue's configuration may set on its switches' values, checked on Node before anything runs: a gallery's
3
+ * previews, what a value implies, a value's own style sheet; and their files' paths made absolute.
4
+ *
5
+ * @remarks
6
+ * Only here, not in `switches.ts`: a page has no use for these answers, and they need the files, so a first load carries
7
+ * none of it. A preview and a sheet are never named by an address, which is what the checks on their paths and values
8
+ * hold: a preset's remote picture or font would make every reader of the catalogue call a server its author may never
9
+ * have chosen. A sheet's contents are not read: like a source's sheets, it is the author's own CSS, compiled by Vite, and
10
+ * what it imports is theirs to decide.
11
+ *
12
+ * @module
13
+ */
14
+ import { existsSync } from "node:fs";
15
+ import { LANGUAGE_SWITCH_ID, switchControl } from "../switches.js";
16
+ import { VITE_PATHS } from "./vitePaths.js";
17
+ /** The most colours a preview shows: past them, none has room to read. */
18
+ const MAX_SWATCHES = 8;
19
+ /** The longest font name a preview takes: a family's name, never a list or a rule. */
20
+ const MAX_FONT_NAME = 64;
21
+ /** A scheme, or a `//` or `\\` address: what makes a path an address. A drive letter (`C:\`) has one letter only. */
22
+ const ADDRESS = /^(?:[a-z][a-z0-9+.-]+:|\/\/|\\\\)/i;
23
+ /** The pictures a browser draws in an `img`. */
24
+ const PICTURE_FILE = /\.(?:avif|gif|jpe?g|png|svg|webp)$/i;
25
+ /** The style sheets Vite compiles. */
26
+ const SHEET_FILE = /\.(?:css|less|sass|scss|styl|stylus)$/i;
27
+ /** A colour as CSS writes one: a word, a hex or a function of plain numbers; never `url()` or a rule. */
28
+ const COLOUR = /^(?:#[0-9a-f]{3,8}|[a-z]+|(?:rgb|rgba|hsl|hsla|hwb|lab|lch|oklab|oklch)\([0-9a-z.,%/\s-]+\))$/i;
29
+ /** A font's name: letters, digits, spaces and dashes, in any script. */
30
+ const FONT_NAME = /^[\p{L}\p{N}][\p{L}\p{N} _-]*$/u;
31
+ /**
32
+ * Why a value's file cannot be used, or none.
33
+ *
34
+ * @param what - what names it in the answer.
35
+ * @param path - the file, as the configuration writes it.
36
+ * @param file - which files it may be.
37
+ * @param kinds - their kinds, for the answer.
38
+ * @param dir - the configuration's folder.
39
+ * @param paths - how paths are read.
40
+ */
41
+ const fileProblem = (what, path, file, kinds, dir, paths) => {
42
+ if (typeof path !== "string" || path === "")
43
+ return `${what} must be a file's path`;
44
+ if (ADDRESS.test(path))
45
+ return `${what} is an address ("${path}"): give a file's path, nothing is loaded from an address`;
46
+ if (!file.test(path))
47
+ return `${what} must be ${kinds} ("${path}")`;
48
+ return existsSync(paths.resolve(dir, path)) ? undefined : `${what} names no file ("${path}")`;
49
+ };
50
+ /**
51
+ * Why a value's preview cannot be used, or none.
52
+ *
53
+ * @param what - what names it in the answer.
54
+ * @param preview - the preview, as the configuration writes it.
55
+ * @param dir - the configuration's folder.
56
+ * @param paths - how paths are read.
57
+ */
58
+ const previewProblem = (what, preview, dir, paths) => {
59
+ const keys = Object.keys(preview);
60
+ const unknown = keys.find((key) => !["image", "swatches", "font"].includes(key));
61
+ if (unknown !== undefined)
62
+ return `${what} has no "${unknown}": it takes image, or swatches and font`;
63
+ if ("image" in preview) {
64
+ if (keys.length > 1)
65
+ return `${what} takes image, or swatches and font, not both`;
66
+ return fileProblem(what, preview.image, PICTURE_FILE, "a picture", dir, paths);
67
+ }
68
+ const { swatches, font } = preview;
69
+ if (!Array.isArray(swatches) || swatches.length === 0 || swatches.length > MAX_SWATCHES)
70
+ return `${what} needs image, or swatches: 1 to ${MAX_SWATCHES} colours`;
71
+ const wrong = swatches.find((colour) => typeof colour !== "string" || !COLOUR.test(colour));
72
+ if (wrong !== undefined)
73
+ return `${what} has a swatch that is not a plain colour (${String(wrong)})`;
74
+ if (font !== undefined &&
75
+ (typeof font !== "string" || font.length > MAX_FONT_NAME || !FONT_NAME.test(font)))
76
+ return `${what} has a font that is not a name (${String(font)}): one family's name, nothing is loaded for it`;
77
+ return undefined;
78
+ };
79
+ /**
80
+ * Why what a value implies cannot be used, or none: every switch and value named exists, a value does not imply its own
81
+ * switch, and what it implies implies nothing further, so a view always has one answer.
82
+ *
83
+ * @param what - what names it in the answer.
84
+ * @param each - the switch.
85
+ * @param implies - the values it implies.
86
+ * @param switches - the catalogue's switches.
87
+ */
88
+ const impliesProblem = (what, each, implies, switches) => {
89
+ for (const [id, value] of Object.entries(implies)) {
90
+ const target = switches.find((candidate) => candidate.id === id);
91
+ // a source may offer languages this configuration does not know: the switch and its values exist only in the page
92
+ if (id === LANGUAGE_SWITCH_ID)
93
+ continue;
94
+ if (target === undefined)
95
+ return `${what} implies a switch there is not ("${id}")`;
96
+ if (target === each)
97
+ return `${what} implies its own switch`;
98
+ const implied = target.values.find((candidate) => candidate.value === value);
99
+ if (implied === undefined)
100
+ return `${what} implies a value "${id}" does not have ("${value}")`;
101
+ // Compare leaves out a value that only follows the system: a switch implied there would have no cell at all
102
+ if (implied.scheme === "system")
103
+ return `${what} implies ${id}=${value}, which only follows the system`;
104
+ if (implied.implies !== undefined)
105
+ return `${what} implies ${id}=${value}, which implies more: an implied value implies nothing further`;
106
+ }
107
+ return undefined;
108
+ };
109
+ /**
110
+ * Why one value's settings cannot be used, or none.
111
+ *
112
+ * @param each - the switch.
113
+ * @param value - the value.
114
+ * @param switches - the catalogue's switches.
115
+ * @param dir - the configuration's folder.
116
+ * @param paths - how paths are read.
117
+ */
118
+ const valueProblem = (each, value, switches, dir, paths) => {
119
+ const what = `The switch "${each.id}", value "${value.value}":`;
120
+ if (value.preview !== undefined && switchControl(each) !== "gallery")
121
+ return `${what} a preview shows only in a gallery: add control: "gallery" to the switch`;
122
+ return ((value.preview === undefined
123
+ ? undefined
124
+ : previewProblem(`${what} its preview`, value.preview, dir, paths)) ??
125
+ (value.implies === undefined ? undefined : impliesProblem(what, each, value.implies, switches)) ??
126
+ (value.sheet === undefined
127
+ ? undefined
128
+ : fileProblem(`${what} its sheet`, value.sheet, SHEET_FILE, "a style sheet", dir, paths)));
129
+ };
130
+ /**
131
+ * Why the settings of a catalogue's switches' values cannot be used, or none.
132
+ *
133
+ * @param switches - the catalogue's switches, the ready-made ones among them: a value may imply one.
134
+ * @param dir - the configuration's folder.
135
+ * @param paths - how paths are read; Vite's by default.
136
+ */
137
+ export const switchValuesProblem = (switches, dir, paths = VITE_PATHS) => {
138
+ for (const each of switches) {
139
+ for (const value of each.values) {
140
+ const problem = valueProblem(each, value, switches, dir, paths);
141
+ if (problem !== undefined)
142
+ return problem;
143
+ }
144
+ }
145
+ return undefined;
146
+ };
147
+ /**
148
+ * The switches with their values' files as absolute paths, as the generated pages import them. Their settings are
149
+ * checked already.
150
+ *
151
+ * @param switches - the catalogue's switches.
152
+ * @param dir - the configuration's folder.
153
+ * @param paths - how paths are read; Vite's by default.
154
+ */
155
+ export const withAbsoluteValueFiles = (switches, dir, paths = VITE_PATHS) => switches.map((each) => ({
156
+ ...each,
157
+ values: each.values.map((value) => ({
158
+ ...value,
159
+ ...(value.sheet === undefined ? {} : { sheet: paths.resolve(dir, value.sheet) }),
160
+ ...(value.preview !== undefined && "image" in value.preview
161
+ ? { preview: { image: paths.resolve(dir, value.preview.image) } }
162
+ : {})
163
+ }))
164
+ }));
@@ -0,0 +1,15 @@
1
+ /**
2
+ * What `forgebook switches` and `list_switches` answer: the switches a catalogue offers, so an agent can name a value in
3
+ * a view (`--view look=night`) and see what it brings with it without opening the shell.
4
+ *
5
+ * @module
6
+ */
7
+ import { type ViewSwitch } from "../switches.ts";
8
+ import type { SwitchesDocument } from "./agent.types.ts";
9
+ /**
10
+ * The document of a catalogue's switches.
11
+ *
12
+ * @param switches - the catalogue's switches, the ready-made ones among them, their files absolute.
13
+ * @param dir - the configuration's folder.
14
+ */
15
+ export declare const switchesDocument: (switches: readonly ViewSwitch[], dir: string) => SwitchesDocument;
@@ -0,0 +1,47 @@
1
+ /**
2
+ * What `forgebook switches` and `list_switches` answer: the switches a catalogue offers, so an agent can name a value in
3
+ * a view (`--view look=night`) and see what it brings with it without opening the shell.
4
+ *
5
+ * @module
6
+ */
7
+ import { switchControl } from "../switches.js";
8
+ import { VITE_PATHS } from "./vitePaths.js";
9
+ /** A file's path as the document gives it. */
10
+ const fromDir = (dir, file) => VITE_PATHS.relative(dir, file);
11
+ /**
12
+ * A value as the document gives it, its files by their path from the configuration's folder.
13
+ *
14
+ * @param each - the switch.
15
+ * @param value - the value.
16
+ * @param dir - the configuration's folder.
17
+ */
18
+ const documentValue = (each, value, dir) => {
19
+ const { preview, implies, sheet } = value;
20
+ return {
21
+ value: value.value,
22
+ label: value.label,
23
+ view: `${each.id}=${value.value}`,
24
+ ...(implies === undefined ? {} : { implies }),
25
+ ...(sheet === undefined ? {} : { sheet: fromDir(dir, sheet) }),
26
+ ...(preview === undefined
27
+ ? {}
28
+ : { preview: "image" in preview ? { image: fromDir(dir, preview.image) } : preview })
29
+ };
30
+ };
31
+ /**
32
+ * The document of a catalogue's switches.
33
+ *
34
+ * @param switches - the catalogue's switches, the ready-made ones among them, their files absolute.
35
+ * @param dir - the configuration's folder.
36
+ */
37
+ export const switchesDocument = (switches, dir) => ({
38
+ schema: 1,
39
+ switches: switches.map((each) => ({
40
+ id: each.id,
41
+ label: each.label,
42
+ default: each.default,
43
+ control: switchControl(each),
44
+ ...(each.role === undefined ? {} : { role: each.role }),
45
+ values: each.values.map((value) => documentValue(each, value, dir))
46
+ }))
47
+ });
@@ -0,0 +1,41 @@
1
+ /** A theme value the file writes. */
2
+ export type ConfigToken = {
3
+ /** Its name, as Tailwind 4 names it. */
4
+ readonly name: string;
5
+ /** Its value. */
6
+ readonly value: string;
7
+ /** Its type, from the theme key that holds it. */
8
+ readonly type: string;
9
+ };
10
+ /** What a configuration file gives. */
11
+ export type TailwindConfigReading = {
12
+ /** Its tokens. */
13
+ readonly tokens: readonly ConfigToken[];
14
+ /** What cannot be read without running it, one line each. */
15
+ readonly unread: readonly string[];
16
+ /** The modules its `presets` name, to read in turn. */
17
+ readonly presets: readonly string[];
18
+ /** The theme keys it replaces rather than extends: Tailwind's defaults for these do not apply. */
19
+ readonly replaced: readonly string[];
20
+ /** How it reaches Tailwind's default palette by name (`colors.blue` from `tailwindcss/colors`). */
21
+ readonly paletteAliases: readonly {
22
+ readonly name: string;
23
+ readonly palette: string;
24
+ }[];
25
+ };
26
+ /**
27
+ * Reads a Tailwind configuration's text.
28
+ *
29
+ * @param file - its path, for the parser (its extension says TypeScript).
30
+ * @param text - its text.
31
+ */
32
+ export declare const readTailwindConfig: (file: string, text: string) => TailwindConfigReading;
33
+ /**
34
+ * The colours of Tailwind's default palette, from the text of `tailwindcss/lib/public/colors.js`: only an object of
35
+ * plain strings, read and not run, as any other file here.
36
+ *
37
+ * @param file - its path.
38
+ * @param text - its text.
39
+ * @returns each colour's name as Tailwind 4 names it, with its value.
40
+ */
41
+ export declare const readTailwindPalette: (file: string, text: string) => ConfigToken[];