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
@@ -0,0 +1,37 @@
1
+ /**
2
+ * What a file's text imports and what it exports under another name, read with patterns and no parser: the audit's story
3
+ * coverage (`storyCoverage.ts`) reads every file of a project, single-file components among them, in a moment.
4
+ *
5
+ * @remarks
6
+ * Every pattern is bounded and never matches the same characters two ways, since a project's files can be crafted: a run of
7
+ * spaces taken both by a `\s+` and by the clause after it would make one file take seconds.
8
+ *
9
+ * @module
10
+ */
11
+ /** One name an import takes: its name in the module (`default`, `*` for all of it) and in the file. */
12
+ export type ImportedName = {
13
+ /** Its name in the module: `default`, `*` for the whole module, or an export's name. */
14
+ readonly imported: string;
15
+ /** Its name in the importing file; empty when it has none (`import("./x")`). */
16
+ readonly local: string;
17
+ };
18
+ /** What a file imports from one module. */
19
+ export type FileImport = {
20
+ /** The module, as written. */
21
+ readonly specifier: string;
22
+ /** The names taken from it. */
23
+ readonly names: readonly ImportedName[];
24
+ };
25
+ /**
26
+ * What a file's text imports: static and dynamic imports and `require`, with the members a namespace is used for.
27
+ *
28
+ * @param text - the file's text.
29
+ */
30
+ export declare const importsOf: (text: string) => FileImport[];
31
+ /**
32
+ * The names a file exports its own declarations under, when they differ: `export { Root as Dialog }` maps `Dialog` to
33
+ * `Root`.
34
+ *
35
+ * @param text - the file's text.
36
+ */
37
+ export declare const exportAliasesOf: (text: string) => ReadonlyMap<string, string>;
@@ -0,0 +1,138 @@
1
+ /**
2
+ * What a file's text imports and what it exports under another name, read with patterns and no parser: the audit's story
3
+ * coverage (`storyCoverage.ts`) reads every file of a project, single-file components among them, in a moment.
4
+ *
5
+ * @remarks
6
+ * Every pattern is bounded and never matches the same characters two ways, since a project's files can be crafted: a run of
7
+ * spaces taken both by a `\s+` and by the clause after it would make one file take seconds.
8
+ *
9
+ * @module
10
+ */
11
+ /**
12
+ * An import of values: `import A, { B as C } from "x"`; types only are left out. `import` and its first space are taken
13
+ * once, and the clause takes everything up to one space before `from`, comments in braces too, but never another
14
+ * `import`: an `import` with no `from` would otherwise be read again from every later one.
15
+ */
16
+ const STATIC_IMPORT = /\bimport\s(?!\s*type\s)((?:(?!\bimport\b)[^"';]){1,2000}?)\sfrom\s*["']([^"'\n]{1,500})["']/g;
17
+ /** A dynamic import, which takes the whole module. */
18
+ const DYNAMIC_IMPORT = /\bimport\(\s*["']([^"'\n]{1,500})["']\s*\)/g;
19
+ /** A `require`; what it is given to is read backwards from it, so no pattern is tried at every character before one. */
20
+ const REQUIRE = /\brequire\(\s*["']([^"'\n]{1,500})["']\s*\)/g;
21
+ /** How far back from a `require` its binding is looked for. */
22
+ const MOST_BACK = 2000;
23
+ /** An export of local names, without `from`: `export { Root as Dialog }`. */
24
+ const LOCAL_EXPORT = /\bexport\s{0,20}\{([^{}]{0,2000})\}(?!\s{0,20}from\b)/g;
25
+ /** Comments, which an import's braces may hold. */
26
+ const COMMENT = /\/\*[\s\S]{0,2000}?\*\/|\/\/[^\n]{0,2000}/g;
27
+ /** The names a list in braces takes: `A, B as C, type D`, with `separator` between a name and its new one. */
28
+ const bracedNames = (list, separator) => list
29
+ .replace(COMMENT, "")
30
+ .split(",")
31
+ .flatMap((part) => {
32
+ const [imported, local] = part.trim().split(separator);
33
+ if (imported === undefined || imported === "" || imported.startsWith("type "))
34
+ return [];
35
+ return [{ imported: imported.trim(), local: (local ?? imported).trim() }];
36
+ });
37
+ /** The names an import's clause takes. */
38
+ const clauseNames = (clause) => {
39
+ const braces = /\{([^}]*)\}/.exec(clause);
40
+ const names = bracedNames(braces?.[1] ?? "", /\s+as\s+/);
41
+ const rest = clause.replace(COMMENT, "").replace(/\{[^}]*\}/, "");
42
+ const namespace = /\*\s*as\s+([\w$]+)/.exec(rest);
43
+ if (namespace?.[1] !== undefined)
44
+ names.push({ imported: "*", local: namespace[1] });
45
+ const first = /^\s*([\w$]+)\s*(?:,|$)/.exec(rest);
46
+ if (first?.[1] !== undefined)
47
+ names.push({ imported: "default", local: first[1] });
48
+ return names;
49
+ };
50
+ /** A member written after a name, `UI.Button`, starting only where a name starts so each is tried once. */
51
+ const MEMBER = /(?<![\w$.])([A-Za-z_$][\w$]{0,200})\.([A-Za-z_$][\w$]{0,200})/g;
52
+ /**
53
+ * The members a file writes after each name: `UI.Button` and `<UI.Button>` list `Button` under `UI`. Read in one pass,
54
+ * since a file can import many namespaces.
55
+ *
56
+ * @param text - the file's text.
57
+ */
58
+ const membersByName = (text) => {
59
+ const members = new Map();
60
+ for (const match of text.matchAll(MEMBER)) {
61
+ const [, owner = "", member = ""] = match;
62
+ members.set(owner, (members.get(owner) ?? new Set()).add(member));
63
+ }
64
+ return members;
65
+ };
66
+ /** An import with the members its namespaces are used for added: a barrel's namespace names what it takes. */
67
+ const withMembers = (found, members) => ({
68
+ ...found,
69
+ names: found.names.flatMap((name) => name.imported === "*" && name.local !== ""
70
+ ? [
71
+ name,
72
+ ...[...(members().get(name.local) ?? [])].map((member) => ({ imported: member, local: member }))
73
+ ]
74
+ : [name])
75
+ });
76
+ /** A character a name is written with. */
77
+ const NAME_CHARACTER = /[\w$]/;
78
+ /** The name a text ends with, read backwards so a long text costs only its name; empty when it ends otherwise. */
79
+ const trailingName = (text) => {
80
+ let start = text.length;
81
+ while (start > 0 && text.length - start < 200 && NAME_CHARACTER.test(text.charAt(start - 1)))
82
+ start -= 1;
83
+ return text.slice(start);
84
+ };
85
+ /**
86
+ * What a `require` takes, from the text before it: `const { A, B: C } =` takes names, `const x =` the whole module as
87
+ * `x`, and nothing the whole module unnamed.
88
+ *
89
+ * @param before - the text just before `require`.
90
+ */
91
+ const requiredNames = (before) => {
92
+ const head = before.trimEnd();
93
+ if (!head.endsWith("="))
94
+ return [{ imported: "*", local: "" }];
95
+ const target = head.slice(0, -1).trimEnd();
96
+ if (target.endsWith("}")) {
97
+ const open = target.lastIndexOf("{");
98
+ if (open !== -1)
99
+ return bracedNames(target.slice(open + 1, -1), /\s*:\s*/);
100
+ }
101
+ return [{ imported: "*", local: trailingName(target) }];
102
+ };
103
+ /**
104
+ * What a file's text imports: static and dynamic imports and `require`, with the members a namespace is used for.
105
+ *
106
+ * @param text - the file's text.
107
+ */
108
+ export const importsOf = (text) => {
109
+ let read;
110
+ const members = () => {
111
+ read ??= membersByName(text);
112
+ return read;
113
+ };
114
+ return [
115
+ ...[...text.matchAll(STATIC_IMPORT)].map((match) => ({
116
+ specifier: match[2] ?? "",
117
+ names: clauseNames(match[1] ?? "")
118
+ })),
119
+ ...[...text.matchAll(DYNAMIC_IMPORT)].map((match) => ({
120
+ specifier: match[1] ?? "",
121
+ names: [{ imported: "*", local: "" }]
122
+ })),
123
+ ...[...text.matchAll(REQUIRE)].map((match) => ({
124
+ specifier: match[1] ?? "",
125
+ names: requiredNames(text.slice(Math.max(0, match.index - MOST_BACK), match.index))
126
+ }))
127
+ ].map((found) => withMembers(found, members));
128
+ };
129
+ /**
130
+ * The names a file exports its own declarations under, when they differ: `export { Root as Dialog }` maps `Dialog` to
131
+ * `Root`.
132
+ *
133
+ * @param text - the file's text.
134
+ */
135
+ export const exportAliasesOf = (text) => new Map([...text.matchAll(LOCAL_EXPORT)]
136
+ .flatMap((match) => bracedNames(match[1] ?? "", /\s+as\s+/))
137
+ .filter(({ imported, local }) => imported !== local)
138
+ .map(({ imported, local }) => [local, imported]));
@@ -59,3 +59,9 @@ export declare const heightOf: (fields: Fields) => number | undefined | Error;
59
59
  export declare const designOf: (fields: Fields) => FigmaLink | undefined | string | Error;
60
60
  /** `parameters.docs.description.<kind>`, when written as a plain string. */
61
61
  export declare const docsDescription: (fields: Fields, kind: "story" | "component") => string | undefined;
62
+ /**
63
+ * `parameters.status`, as the status addons of Storybook write it (`"beta"`, `{ type: "beta" }`, `{ type: ["beta"] }`),
64
+ * read as tags so a catalogue moved from Storybook keeps its statuses: `undefined` when none. Never a problem: the
65
+ * parameter is another tool's, so a value written otherwise or by code is left alone.
66
+ */
67
+ export declare const statusTagsOf: (fields: Fields) => readonly string[] | undefined;
@@ -5,6 +5,7 @@
5
5
  *
6
6
  * @module
7
7
  */
8
+ import { TOOL_TAGS } from "../storyTagNames.js";
8
9
  import { figmaLink } from "./figmaLink.js";
9
10
  /**
10
11
  * An expression without the TypeScript wrappers a meta is often written with (`satisfies Meta<…>`, `as Meta`).
@@ -147,3 +148,23 @@ export const docsDescription = (fields, kind) => {
147
148
  const text = propertyValue(description, kind);
148
149
  return text?.type === "Literal" && typeof text.value === "string" ? text.value : undefined;
149
150
  };
151
+ /** The strings an expression writes plainly: a string, or a list of strings; none for anything else. */
152
+ const plainStrings = (expression) => {
153
+ if (expression?.type === "Literal")
154
+ return typeof expression.value === "string" ? [expression.value] : undefined;
155
+ if (expression?.type !== "ArrayExpression")
156
+ return undefined;
157
+ const strings = expression.elements.flatMap((element) => element?.type === "Literal" && typeof element.value === "string" ? [element.value] : []);
158
+ return strings.length === expression.elements.length ? strings : undefined;
159
+ };
160
+ /**
161
+ * `parameters.status`, as the status addons of Storybook write it (`"beta"`, `{ type: "beta" }`, `{ type: ["beta"] }`),
162
+ * read as tags so a catalogue moved from Storybook keeps its statuses: `undefined` when none. Never a problem: the
163
+ * parameter is another tool's, so a value written otherwise or by code is left alone.
164
+ */
165
+ export const statusTagsOf = (fields) => {
166
+ const status = parameter(fields, "status");
167
+ const written = status?.type === "ObjectExpression" ? propertyValue(status, "type") : status;
168
+ // a status names what a component is: never a tool's tag, which would list or test a story its meta left out
169
+ return plainStrings(written)?.filter((tag) => tag !== "" && !tag.startsWith("!") && !TOOL_TAGS.has(tag));
170
+ };
@@ -6,7 +6,8 @@
6
6
  * The sidebar lists every story before any is loaded, so the index comes from the code itself, parsed with Vite's
7
7
  * parser (the same files Vite compiles). It reads a meta written inline or as a constant (`export default meta`,
8
8
  * `export { meta as default }`), `includeStories`, `excludeStories`, `__namedExportsOrder`, the meta's and the
9
- * stories' `tags`, the TSDoc above a story, and `parameters.docs.description`.
9
+ * stories' `tags` (with `parameters.status`, the status addons' way of writing one), the TSDoc above a story, and
10
+ * `parameters.docs.description`.
10
11
  *
11
12
  * Every named export the meta lets in is a story, as Storybook's indexer has it, whatever writes its value: an object
12
13
  * (CSF 3), a function with its properties assigned after it (CSF 2: `A.storyName`, `A.parameters`), a template bound
@@ -33,6 +34,12 @@ export type IndexOptions = {
33
34
  /** The title from the file's path (`Inputs/Select`); none when the file's place gives none. */
34
35
  readonly autoTitle?: string;
35
36
  };
37
+ /**
38
+ * Tags as Storybook combines them: the meta's, then the story's, a `!name` taking `name` away.
39
+ *
40
+ * @param lists - the tag lists, outermost first.
41
+ */
42
+ export declare const combinedTags: (lists: readonly (readonly string[] | undefined)[]) => readonly string[];
36
43
  /**
37
44
  * A story file's meta object, as the index reads it: inline or a constant of the file, exported by default or by name.
38
45
  *
@@ -6,7 +6,8 @@
6
6
  * The sidebar lists every story before any is loaded, so the index comes from the code itself, parsed with Vite's
7
7
  * parser (the same files Vite compiles). It reads a meta written inline or as a constant (`export default meta`,
8
8
  * `export { meta as default }`), `includeStories`, `excludeStories`, `__namedExportsOrder`, the meta's and the
9
- * stories' `tags`, the TSDoc above a story, and `parameters.docs.description`.
9
+ * stories' `tags` (with `parameters.status`, the status addons' way of writing one), the TSDoc above a story, and
10
+ * `parameters.docs.description`.
10
11
  *
11
12
  * Every named export the meta lets in is a story, as Storybook's indexer has it, whatever writes its value: an object
12
13
  * (CSF 3), a function with its properties assigned after it (CSF 2: `A.storyName`, `A.parameters`), a template bound
@@ -27,10 +28,11 @@
27
28
  * @module
28
29
  */
29
30
  import { indexedParameters } from "./indexedParameters.js";
30
- import { controlsOf, designOf, docsDescription, groupOf, heightOf, objectFields, parameter, propertyValue, propGroupsOf, stringField, stringListOf, unwrapped } from "./indexFields.js";
31
- import { moduleName, namedExports } from "./storyExports.js";
31
+ import { controlsOf, designOf, docsDescription, groupOf, heightOf, objectFields, parameter, propertyValue, propGroupsOf, statusTagsOf, stringField, stringListOf } from "./indexFields.js";
32
+ import { lineAndColumn } from "./lineAndColumn.js";
32
33
  import { parseStoryFile } from "./storyParse.js";
33
34
  import { playField } from "./storyPlay.js";
35
+ import { metaObject, objectOf, storyExports, topLevelOf } from "./storyTopLevel.js";
34
36
  /**
35
37
  * The first sentence of the TSDoc right above a statement, without its tags; `undefined` when there is none.
36
38
  *
@@ -60,7 +62,7 @@ const leadingSentence = (text, comments, start) => {
60
62
  *
61
63
  * @param lists - the tag lists, outermost first.
62
64
  */
63
- const combinedTags = (lists) => {
65
+ export const combinedTags = (lists) => {
64
66
  const tags = new Set();
65
67
  for (const tag of lists.flatMap((list) => list ?? [])) {
66
68
  if (tag.startsWith("!")) {
@@ -101,13 +103,14 @@ const identityOf = (own) => {
101
103
  };
102
104
  /**
103
105
  * What the index reads of one story: its own id (`parameters.__id`), its name (`name`, or CSF 2's `storyName`),
104
- * controls, group, height, design, whether it is the demo, and its tags under the meta's.
106
+ * controls, group, height, design, whether it is the demo, and its tags under the meta's. A story's
107
+ * `parameters.status` replaces the meta's, as a story's parameter does.
105
108
  *
106
109
  * @param fields - the story's fields: its own, for its name and id, and all it has, for the rest.
107
- * @param metaTags - the meta's tags.
110
+ * @param meta - the meta's tags and its `parameters.status`, as written.
108
111
  * @param notes - the file's notes, which a design left out adds to.
109
112
  */
110
- const storyFields = ({ own, fields }, metaTags, notes) => {
113
+ const storyFields = ({ own, fields }, meta, notes) => {
111
114
  const controls = controlsOf(fields);
112
115
  if (controls instanceof Error)
113
116
  return controls;
@@ -125,7 +128,7 @@ const storyFields = ({ own, fields }, metaTags, notes) => {
125
128
  const ownTags = stringListOf(fields, "tags");
126
129
  if (ownTags instanceof Error)
127
130
  return ownTags;
128
- const tags = combinedTags([metaTags, ownTags]);
131
+ const tags = combinedTags([meta.tags, statusTagsOf(fields) ?? meta.status, ownTags]);
129
132
  const main = parameter(fields, "main");
130
133
  const flags = indexedParameters(fields);
131
134
  if (flags instanceof Error)
@@ -141,68 +144,6 @@ const storyFields = ({ own, fields }, metaTags, notes) => {
141
144
  ...(tags.length > 0 ? { tags } : {})
142
145
  };
143
146
  };
144
- /**
145
- * The property a top-level statement assigns to a name, when it assigns one.
146
- *
147
- * @param statement - the statement.
148
- */
149
- const assignedProperty = (statement) => {
150
- if (statement.type !== "ExpressionStatement")
151
- return undefined;
152
- const { expression } = statement;
153
- if (expression.type !== "AssignmentExpression" || expression.left.type !== "MemberExpression")
154
- return undefined;
155
- const { object, property } = expression.left;
156
- if (object.type !== "Identifier" || property.type !== "Identifier")
157
- return undefined;
158
- return { name: object.name, property: property.name, value: unwrapped(expression.right) };
159
- };
160
- /**
161
- * The constants a top-level statement declares with a value, exported or not.
162
- *
163
- * @param statement - the statement.
164
- */
165
- const declaredBy = (statement) => {
166
- const declaration = statement.type === "ExportNamedDeclaration" ? statement.declaration : statement;
167
- if (declaration?.type !== "VariableDeclaration")
168
- return [];
169
- return declaration.declarations.flatMap(({ id, init }) => id.type === "Identifier" && init !== null ? [{ name: id.name, value: unwrapped(init) }] : []);
170
- };
171
- /**
172
- * The file's top level: its constants, exported or not, and the properties assigned to names.
173
- *
174
- * @param program - the parsed file.
175
- */
176
- const topLevelOf = (program) => {
177
- const values = new Map();
178
- const assigned = new Map();
179
- for (const statement of program.body) {
180
- for (const declared of declaredBy(statement))
181
- values.set(declared.name, declared.value);
182
- const property = assignedProperty(statement);
183
- if (property === undefined)
184
- continue;
185
- const properties = assigned.get(property.name) ?? new Map();
186
- properties.set(property.property, property.value);
187
- assigned.set(property.name, properties);
188
- }
189
- return { values, assigned };
190
- };
191
- /**
192
- * The object a value is, or the one the constants it names lead to (`export const B = A`); `undefined` for any other
193
- * value, or for names that lead back to themselves.
194
- *
195
- * @param top - the file's top level.
196
- * @param value - the value.
197
- * @param seen - the names followed so far.
198
- */
199
- const objectOf = (top, value, seen = new Set()) => {
200
- if (value?.type === "ObjectExpression")
201
- return value;
202
- if (value?.type !== "Identifier" || seen.has(value.name))
203
- return undefined;
204
- return objectOf(top, top.values.get(value.name), new Set([...seen, value.name]));
205
- };
206
147
  /**
207
148
  * A story's fields, by the export that names it: what is assigned to it after its declaration (`A.storyName = "…"`),
208
149
  * else the object its value is or names. A story from another file has none.
@@ -221,73 +162,6 @@ const storyFieldsOf = (top, named) => {
221
162
  const read = (from) => (name) => assigned?.get(name) ?? (from === undefined ? undefined : propertyValue(from, name));
222
163
  return { own: read(declared), fields: read(object) };
223
164
  };
224
- /**
225
- * Whether an export is a story, as the meta's `includeStories` and `excludeStories` say (a list of names or a regular
226
- * expression, written plainly).
227
- *
228
- * @param meta - the meta's fields.
229
- * @param exportName - the export.
230
- */
231
- const isIncluded = (meta, exportName) => {
232
- const matches = (name) => {
233
- const filter = meta(name);
234
- if (filter?.type === "ArrayExpression")
235
- return filter.elements.some((element) => element?.type === "Literal" && element.value === exportName);
236
- if (filter?.type === "Literal" && "regex" in filter && filter.regex !== undefined)
237
- return new RegExp(filter.regex.pattern, filter.regex.flags).test(exportName);
238
- return undefined;
239
- };
240
- return matches("includeStories") !== false && matches("excludeStories") !== true;
241
- };
242
- /**
243
- * The order `__namedExportsOrder` writes, when the file writes one plainly.
244
- *
245
- * @param top - the file's top level.
246
- */
247
- const exportsOrder = (top) => {
248
- const order = top.values.get("__namedExportsOrder");
249
- if (order?.type !== "ArrayExpression")
250
- return undefined;
251
- return order.elements.flatMap((element) => element?.type === "Literal" && typeof element.value === "string" ? [element.value] : []);
252
- };
253
- /**
254
- * The meta exported by name (`export { meta as default }`), when it is a constant of the file written as an object.
255
- *
256
- * @param program - the parsed file.
257
- * @param top - the file's top level.
258
- */
259
- const namedMeta = (program, top) => {
260
- for (const statement of program.body) {
261
- if (statement.type !== "ExportNamedDeclaration" || statement.source !== null)
262
- continue;
263
- const specifier = statement.specifiers.find((each) => moduleName(each.exported) === "default");
264
- if (specifier === undefined)
265
- continue;
266
- const value = top.values.get(moduleName(specifier.local));
267
- return value?.type === "ObjectExpression" ? value : undefined;
268
- }
269
- return undefined;
270
- };
271
- /**
272
- * The meta's object: the default export, inline or a constant of the file (`export default meta`,
273
- * `export { meta as default }`).
274
- *
275
- * @param program - the parsed file.
276
- * @param top - the file's top level.
277
- */
278
- const metaObject = (program, top) => {
279
- const meta = program.body.find((statement) => statement.type === "ExportDefaultDeclaration");
280
- if (meta === undefined)
281
- return namedMeta(program, top);
282
- const { declaration } = meta;
283
- if (declaration.type === "FunctionDeclaration" ||
284
- declaration.type === "ClassDeclaration" ||
285
- declaration.type === "TSInterfaceDeclaration")
286
- return undefined;
287
- const expression = unwrapped(declaration);
288
- const value = expression.type === "Identifier" ? top.values.get(expression.name) : expression;
289
- return value?.type === "ObjectExpression" ? value : undefined;
290
- };
291
165
  /**
292
166
  * A story file's meta object, as the index reads it: inline or a constant of the file, exported by default or by name.
293
167
  *
@@ -384,21 +258,6 @@ const metaFieldsOf = (meta, notes) => {
384
258
  ...(description === undefined ? {} : { description })
385
259
  };
386
260
  };
387
- /**
388
- * The exports that are stories, in the order of `__namedExportsOrder` when the file writes one, else of the file.
389
- *
390
- * @param program - the parsed file.
391
- * @param top - the file's top level.
392
- * @param meta - the meta's fields, for `includeStories` and `excludeStories`.
393
- */
394
- const storyExports = (program, top, meta) => {
395
- const exported = namedExports(program).filter(({ exportName }) => exportName !== "__namedExportsOrder" && isIncluded(meta, exportName));
396
- const order = exportsOrder(top);
397
- if (order === undefined)
398
- return exported;
399
- const rank = (name) => (order.includes(name) ? order.indexOf(name) : order.length);
400
- return [...exported].sort((first, second) => rank(first.exportName) - rank(second.exportName));
401
- };
402
261
  /**
403
262
  * The index of one story file.
404
263
  *
@@ -410,8 +269,11 @@ const storyExports = (program, top, meta) => {
410
269
  export const indexStoryFile = (file, text, options = {}) => {
411
270
  const { program, comments, errors } = parseStoryFile(file, text);
412
271
  const [error] = errors;
413
- if (error !== undefined)
414
- return `${file} does not parse: ${error.message}`;
272
+ if (error !== undefined) {
273
+ const [label] = error.labels;
274
+ const place = label === undefined ? file : `${file}:${lineAndColumn(text, label.start)}`;
275
+ return `${place} does not parse: ${error.message}`;
276
+ }
415
277
  const top = topLevelOf(program);
416
278
  const metaNode = metaObject(program, top);
417
279
  if (metaNode === undefined)
@@ -420,9 +282,10 @@ export const indexStoryFile = (file, text, options = {}) => {
420
282
  const title = titleOf(meta, options);
421
283
  if (typeof title === "string")
422
284
  return `${file}: ${title}`;
423
- const metaTags = stringListOf(meta, "tags");
424
- if (metaTags instanceof Error)
425
- return `${file}: the meta's ${metaTags.message}`;
285
+ const writtenTags = stringListOf(meta, "tags");
286
+ if (writtenTags instanceof Error)
287
+ return `${file}: the meta's ${writtenTags.message}`;
288
+ const metaTags = { tags: writtenTags, status: statusTagsOf(meta) };
426
289
  const stories = [];
427
290
  const storyNotes = [];
428
291
  for (const named of storyExports(program, top, meta)) {
@@ -442,10 +305,12 @@ export const indexStoryFile = (file, text, options = {}) => {
442
305
  if (metaFields instanceof Error)
443
306
  return `${file}: the meta's ${metaFields.message}`;
444
307
  const notes = [...title.notes, ...metaNotes, ...storyNotes];
308
+ const tags = combinedTags([metaTags.tags, metaTags.status]);
445
309
  return {
446
310
  title: title.title,
447
311
  stories,
448
312
  ...metaFields,
313
+ ...(tags.length > 0 ? { tags } : {}),
449
314
  ...(notes.length > 0 ? { notes } : {})
450
315
  };
451
316
  };
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Where an application draws a JSX component, read from its program with the TypeScript checker (no code runs): each
3
+ * element whose tag is the component, with the props it gives a literal value. `forgebook new` takes its values from
4
+ * them, so a first story shows the component as the application uses it rather than with a prop's name for its text.
5
+ *
6
+ * @remarks
7
+ * Shared by the frameworks whose components are functions of their props (React, Preact, Solid). The program is the
8
+ * component's configuration's, read whole. Story files, tests and declaration files are left out: they are not the
9
+ * application. A value is kept only when it is a literal (a string, a number, `true`, `false`, `null`, a list or an
10
+ * object of them); one that depends on the caller's state would not mean anything in a story. A child that is plain text
11
+ * is `children`.
12
+ *
13
+ * @module
14
+ */
15
+ import ts from "typescript-6";
16
+ import type { ExtractCallSites } from "./adapter.ts";
17
+ /**
18
+ * An expression as code a story can hold, when it is a literal: shared with the frameworks that read their templates'
19
+ * bindings as expressions (Vue's `:size="3"`).
20
+ *
21
+ * @param node - the expression.
22
+ * @param depth - how deep in a list or an object it is.
23
+ * @returns the code; none when it is not a literal.
24
+ */
25
+ export declare const literalExpressionCode: (node: ts.Expression, depth?: number) => string | undefined;
26
+ /**
27
+ * Where the application draws a component a file exports.
28
+ *
29
+ * @param file - the component's file, absolute.
30
+ * @param name - the export's name (`default` for a default export).
31
+ * @returns the call sites; a message when the file or the export cannot be read.
32
+ */
33
+ export declare const jsxCallSites: ExtractCallSites;