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,40 @@
1
+ /**
2
+ * A prop's kind (the panel's group and control) and the type it is read from: a choice, a text, a number, a toggle, an
3
+ * event or anything else, across the variants of a union of props that declare it and through a generic's type
4
+ * parameters. Used by `propDocs.ts`.
5
+ *
6
+ * @module
7
+ */
8
+ import ts from "typescript-6";
9
+ import type { PropKind } from "../componentDocs.ts";
10
+ import type { PropReading } from "./propDocs.ts";
11
+ import { type Generics } from "./typeParameters.ts";
12
+ /** Whether a type is a union of string or number literals (a choice). */
13
+ export declare const literalValues: (type: ts.Type) => (string | number)[] | undefined;
14
+ /** A prop's kind, from its name and its type without `undefined`. */
15
+ export declare const kindOf: (name: string, type: ts.Type, eventName: RegExp) => PropKind;
16
+ /** A prop's type and kind, read across the variants of a union of props that declare it. */
17
+ export type TypeAndKind = {
18
+ /** Its type, without `undefined`: what a type parameter is shown as, for a prop typed by one. */
19
+ readonly type: ts.Type;
20
+ /** Its type in each other variant that declares it. */
21
+ readonly variantTypes: readonly ts.Type[];
22
+ /** Whether those variants type it otherwise. */
23
+ readonly isMixed: boolean;
24
+ /** Its kind, shared by every variant's type. */
25
+ readonly kind: PropKind;
26
+ /**
27
+ * The checker and the bindings when its type, as the component takes it, still holds a type parameter
28
+ * (`readonly TItem[]`): its text then replaces them. None otherwise.
29
+ */
30
+ readonly generic: Generics | undefined;
31
+ };
32
+ /**
33
+ * A prop's type and kind.
34
+ *
35
+ * @param symbol - the prop.
36
+ * @param reading - how the framework's props differ, and the other variants'.
37
+ * @param checker - the program's checker.
38
+ * @param node - where the code names the component.
39
+ */
40
+ export declare const typeAndKind: (symbol: ts.Symbol, { taken, eventName, variants, bindings }: PropReading, checker: ts.TypeChecker, node: ts.Node) => TypeAndKind;
@@ -0,0 +1,71 @@
1
+ /**
2
+ * A prop's kind (the panel's group and control) and the type it is read from: a choice, a text, a number, a toggle, an
3
+ * event or anything else, across the variants of a union of props that declare it and through a generic's type
4
+ * parameters. Used by `propDocs.ts`.
5
+ *
6
+ * @module
7
+ */
8
+ import ts from "typescript-6";
9
+ import { genericShownType, hasTypeParameter } from "./typeParameters.js";
10
+ /** No bindings: each type parameter is shown by its own constraint. */
11
+ const NO_BINDINGS = new Map();
12
+ /** An event: a function prop named `on` and a capital (React's `onPress`). */
13
+ const EVENT_NAME = /^on[A-Z]/;
14
+ /** Whether a type is a union of string or number literals (a choice). */
15
+ export const literalValues = (type) => {
16
+ if (!type.isUnion())
17
+ return undefined;
18
+ const values = type.types.map((member) => member.isStringLiteral() || member.isNumberLiteral() ? member.value : undefined);
19
+ return values.every((value) => value !== undefined)
20
+ ? values.filter((value) => value !== undefined)
21
+ : undefined;
22
+ };
23
+ /** A prop's kind, from its name and its type without `undefined`. */
24
+ export const kindOf = (name, type, eventName) => {
25
+ if (eventName.test(name) && type.getCallSignatures().length > 0)
26
+ return "event";
27
+ if (type.flags & ts.TypeFlags.Boolean || type.flags & ts.TypeFlags.BooleanLiteral)
28
+ return "toggle";
29
+ if (literalValues(type) !== undefined)
30
+ return "choice";
31
+ if (type.flags & ts.TypeFlags.String)
32
+ return "text";
33
+ if (type.flags & ts.TypeFlags.Number)
34
+ return "number";
35
+ return "other";
36
+ };
37
+ /**
38
+ * A prop's kind across the variants that declare it: theirs when all share one, `other` otherwise.
39
+ *
40
+ * @param name - the prop's name.
41
+ * @param types - its type in each variant, without `undefined`.
42
+ * @param eventName - what an event's name is.
43
+ */
44
+ const sharedKind = (name, types, eventName) => {
45
+ const kinds = new Set(types.map((type) => kindOf(name, type, eventName)));
46
+ const [only] = kinds;
47
+ return kinds.size === 1 && only !== undefined ? only : "other";
48
+ };
49
+ /**
50
+ * A prop's type and kind.
51
+ *
52
+ * @param symbol - the prop.
53
+ * @param reading - how the framework's props differ, and the other variants'.
54
+ * @param checker - the program's checker.
55
+ * @param node - where the code names the component.
56
+ */
57
+ export const typeAndKind = (symbol, { taken, eventName = EVENT_NAME, variants = [], bindings }, checker, node) => {
58
+ const ownType = taken?.type ?? checker.getTypeOfSymbolAtLocation(symbol, node);
59
+ const isGeneric = hasTypeParameter(ownType, checker);
60
+ // a prop typed by a type parameter takes what that parameter is shown as: its kind and control follow from it
61
+ const shown = (each) => checker.getNonNullableType(genericShownType(each, checker) ?? each);
62
+ const type = shown(ownType);
63
+ const variantTypes = variants.map((variant) => shown(checker.getTypeOfSymbolAtLocation(variant, node)));
64
+ // two variants that write the same type have two of it: alike is what each accepts of the other
65
+ const isMixed = variantTypes.some((variantType) => !checker.isTypeAssignableTo(variantType, type) || !checker.isTypeAssignableTo(type, variantType));
66
+ const name = symbol.getName();
67
+ const kind = isMixed ? sharedKind(name, [type, ...variantTypes], eventName) : kindOf(name, type, eventName);
68
+ // a type parameter is replaced only where the component leaves it open: a props type it instantiates is read as is
69
+ const generic = isGeneric ? { checker, bindings: bindings ?? NO_BINDINGS } : undefined;
70
+ return { type, variantTypes, isMixed, kind, generic };
71
+ };
@@ -0,0 +1,22 @@
1
+ /**
2
+ * What a prop's type cannot say plainly: a generic's type parameter and what it is shown as (`typeParameters.ts`), a
3
+ * name the checker cannot find, an `any`. `propDocs` lists a note for each, so a reader sees why a type is not the one
4
+ * the source wrote, or why it says nothing.
5
+ *
6
+ * @module
7
+ */
8
+ import ts from "typescript-6";
9
+ import type { PropTypeNote } from "../componentDocs.ts";
10
+ import { type DeclaredType, type Generics } from "./typeParameters.ts";
11
+ /**
12
+ * Why a prop's type is not the one its source writes, or says nothing: each generic type parameter and what it is
13
+ * shown as, each name the checker cannot find, and an `any` with neither.
14
+ *
15
+ * @param declared - the prop's declared types.
16
+ * @param type - the prop's type as the checker has it, without `undefined`.
17
+ * @param checker - the program's checker.
18
+ * @param generics - the checker and the bindings when the component leaves a type parameter of the prop's type open;
19
+ * none otherwise.
20
+ * @returns the notes, in source order, each once; empty when the type is read as written.
21
+ */
22
+ export declare const propTypeNotes: (declared: readonly DeclaredType[], type: ts.Type, checker: ts.TypeChecker, generics: Generics | undefined) => PropTypeNote[];
@@ -0,0 +1,51 @@
1
+ /**
2
+ * What a prop's type cannot say plainly: a generic's type parameter and what it is shown as (`typeParameters.ts`), a
3
+ * name the checker cannot find, an `any`. `propDocs` lists a note for each, so a reader sees why a type is not the one
4
+ * the source wrote, or why it says nothing.
5
+ *
6
+ * @module
7
+ */
8
+ import ts from "typescript-6";
9
+ import { genericNotes, referencesIn } from "./typeParameters.js";
10
+ /**
11
+ * Whether a type reference names something the checker cannot find: no symbol, or an import of nothing.
12
+ *
13
+ * @param reference - the reference.
14
+ * @param checker - the program's checker.
15
+ */
16
+ const isUnresolved = (reference, checker) => {
17
+ const symbol = checker.getSymbolAtLocation(reference.typeName);
18
+ if (symbol === undefined)
19
+ return true;
20
+ const target = symbol.flags & ts.SymbolFlags.Alias ? checker.getAliasedSymbol(symbol) : symbol;
21
+ return (target.declarations ?? []).length === 0;
22
+ };
23
+ /**
24
+ * Why a prop's type is not the one its source writes, or says nothing: each generic type parameter and what it is
25
+ * shown as, each name the checker cannot find, and an `any` with neither.
26
+ *
27
+ * @param declared - the prop's declared types.
28
+ * @param type - the prop's type as the checker has it, without `undefined`.
29
+ * @param checker - the program's checker.
30
+ * @param generics - the checker and the bindings when the component leaves a type parameter of the prop's type open;
31
+ * none otherwise.
32
+ * @returns the notes, in source order, each once; empty when the type is read as written.
33
+ */
34
+ export const propTypeNotes = (declared, type, checker, generics) => {
35
+ const notes = new Map();
36
+ for (const note of generics === undefined ? [] : genericNotes(declared, generics)) {
37
+ if (note.reason === "generic")
38
+ notes.set(`generic:${note.parameter}`, note);
39
+ }
40
+ for (const node of declared) {
41
+ for (const reference of referencesIn(node)) {
42
+ if (!isUnresolved(reference, checker))
43
+ continue;
44
+ const name = reference.typeName.getText();
45
+ notes.set(`unresolved:${name}`, { reason: "unresolved", name });
46
+ }
47
+ }
48
+ if (notes.size === 0 && type.flags & ts.TypeFlags.Any)
49
+ notes.set("any", { reason: "any" });
50
+ return [...notes.values()];
51
+ };
@@ -0,0 +1,27 @@
1
+ /** A published file, with the components it declares. */
2
+ export type PublishedFile = {
3
+ /** The file, absolute. */
4
+ readonly file: string;
5
+ /** The names it publishes them under, in the order they are first met. */
6
+ readonly names: readonly string[];
7
+ /** Whether one of them plainly takes props: a parameter, a type argument. */
8
+ readonly takesProps: boolean;
9
+ /** Whether one of them has a doc comment on its declaration, or the file a `@module` one. */
10
+ readonly hasComment: boolean;
11
+ };
12
+ /** What `publishedComponents` asks of the disk. */
13
+ export type ExportsDisk = {
14
+ /** A file's text; none when it does not exist. */
15
+ readonly readText: (file: string) => string | undefined;
16
+ /** The file a relative import names, from the file importing it; none when none is found or it is out of reach. */
17
+ readonly resolve: (specifier: string, from: string) => string | undefined;
18
+ /** Told of an import written through a project's alias, which this cannot follow. */
19
+ readonly onAlias?: (specifier: string, from: string) => void;
20
+ };
21
+ /**
22
+ * The components some entries publish, one element per declaring file.
23
+ *
24
+ * @param entries - the entries' source files, absolute.
25
+ * @param disk - what is asked of the disk.
26
+ */
27
+ export declare const publishedComponents: (entries: readonly string[], disk: ExportsDisk) => PublishedFile[];
@@ -0,0 +1,298 @@
1
+ /**
2
+ * The components a package's entries export, by the file that declares each: what "published" means to `verify`.
3
+ *
4
+ * @remarks
5
+ * Read from each file's syntax, with no program: a whole package must take moments on a change that touches one file, and
6
+ * an export's shape says enough. Only relative paths are followed, since a package's own files are what it publishes and
7
+ * another package of the repository has its own entries. A file counts as one finding however many parts it declares
8
+ * (`Dialog`, `DialogTrigger`): one story page shows them together, and a finding per part would bury the one that matters.
9
+ * Only what reads as a component counts. A context, a value, a constant in capitals and a hook are published too, and no
10
+ * story is owed for them.
11
+ *
12
+ * @module
13
+ */
14
+ import ts from "typescript-6";
15
+ /** A file that is a component by its extension alone: its default export is what it draws. */
16
+ const COMPONENT_FILE = /\.(?:vue|svelte|astro)$/;
17
+ /** A file whose capitalised functions draw something. */
18
+ const DRAWN_FILE = /\.[cm]?[jt]sx$/;
19
+ /** A script's text that defines a component with no JSX in it. */
20
+ const DEFINES_COMPONENT = /\bcustomElements\.define\(|@customElement\(|\bextends\s+(?:LitElement|HTMLElement)\b|@Component\(|\bdefineComponent\(|\bforwardRef\(|\bcreateElement\(|\bstyled[.(]|<\/[A-Za-z][\w.-]{0,80}>|<[A-Z][\w.]{0,80}[^<>\n]{0,500}\/>/;
21
+ /** A name a component can have: capitalised and not a constant. */
22
+ const COMPONENT_NAME = /^[A-Z](?:[a-z0-9]|[A-Z]+[a-z0-9])\w*$|^[A-Z]$/;
23
+ /** A call whose result is no component. */
24
+ const NOT_A_COMPONENT_CALL = /^(?:React\.)?(?:createContext|cva|tv|defineConfig|Symbol|Object\.freeze)$/;
25
+ /** An import through a project's alias rather than a package's name. */
26
+ const ALIASED = /^(?:[@~#]\/|#)/;
27
+ /** Whether a call's name says its result is no component. */
28
+ const isPlainCall = (call) => NOT_A_COMPONENT_CALL.test(call.expression.getText());
29
+ /** How the expression a name is given reads. */
30
+ const shapeOfExpression = (node) => {
31
+ if (ts.isArrowFunction(node) || ts.isFunctionExpression(node))
32
+ return { takesProps: node.parameters.length > 0 };
33
+ if (ts.isClassExpression(node))
34
+ return { takesProps: true };
35
+ if (ts.isCallExpression(node)) {
36
+ if (isPlainCall(node))
37
+ return undefined;
38
+ const inner = node.arguments.find((each) => ts.isArrowFunction(each) || ts.isFunctionExpression(each));
39
+ const typed = (node.typeArguments?.length ?? 0) > 0;
40
+ return { takesProps: typed || (inner !== undefined && (shapeOfExpression(inner)?.takesProps ?? false)) };
41
+ }
42
+ if (ts.isTaggedTemplateExpression(node))
43
+ return { takesProps: false };
44
+ // `export const Tooltip = Primitive.Root`, a library's part under a name of its own
45
+ if (ts.isPropertyAccessExpression(node) && /^[A-Z]/.test(node.name.text))
46
+ return { takesProps: false };
47
+ if (ts.isAsExpression(node) || ts.isParenthesizedExpression(node) || ts.isSatisfiesExpression(node))
48
+ return shapeOfExpression(node.expression);
49
+ return undefined;
50
+ };
51
+ /** How a variable's declaration reads: its value, or the type it is written with. */
52
+ const shapeOfVariable = (declaration) => {
53
+ const shape = declaration.initializer === undefined ? undefined : shapeOfExpression(declaration.initializer);
54
+ if (shape !== undefined || declaration.type === undefined)
55
+ return shape;
56
+ return ts.isTypeReferenceNode(declaration.type) && /(?:FC|ComponentType)\b/.test(declaration.type.getText())
57
+ ? { takesProps: (declaration.type.typeArguments?.length ?? 0) > 0 }
58
+ : undefined;
59
+ };
60
+ /** Whether a statement carries a modifier. */
61
+ const hasModifier = (node, kind) => ts.getModifiers(node)?.some((modifier) => modifier.kind === kind) ?? false;
62
+ /** The named variables a statement declares. */
63
+ const variablesOf = (statement) => statement.declarationList.declarations.filter((declaration) => ts.isIdentifier(declaration.name));
64
+ /** A variable's name, which `variablesOf` has seen to be an identifier. */
65
+ const variableName = (declaration) => declaration.name.getText();
66
+ /** Reads what a statement declares into a file's scope. */
67
+ const addDeclared = (statement, scope) => {
68
+ const isCommented = ts.getJSDocCommentsAndTags(statement).length > 0;
69
+ const declare = (name, shape) => {
70
+ scope.declared.set(name, shape);
71
+ if (isCommented)
72
+ scope.commented.add(name);
73
+ };
74
+ if (ts.isFunctionDeclaration(statement) && statement.name !== undefined)
75
+ declare(statement.name.text, { takesProps: statement.parameters.length > 0 });
76
+ if (ts.isClassDeclaration(statement) && statement.name !== undefined)
77
+ declare(statement.name.text, { takesProps: true });
78
+ if (ts.isVariableStatement(statement))
79
+ for (const declaration of variablesOf(statement))
80
+ declare(variableName(declaration), shapeOfVariable(declaration));
81
+ };
82
+ /** Reads what a statement imports into a file's scope; a type's import brings no component. */
83
+ const addImported = (statement, scope) => {
84
+ if (!ts.isImportDeclaration(statement) || !ts.isStringLiteral(statement.moduleSpecifier))
85
+ return;
86
+ const from = statement.moduleSpecifier.text;
87
+ const clause = statement.importClause;
88
+ if (clause === undefined || clause.isTypeOnly)
89
+ return;
90
+ if (clause.name !== undefined)
91
+ scope.imported.set(clause.name.text, { from, name: "default" });
92
+ if (clause.namedBindings === undefined || !ts.isNamedImports(clause.namedBindings))
93
+ return;
94
+ for (const each of clause.namedBindings.elements)
95
+ if (!each.isTypeOnly)
96
+ scope.imported.set(each.name.text, { from, name: (each.propertyName ?? each.name).text });
97
+ };
98
+ /** How a default export written in place reads. */
99
+ const defaultThing = (expression, file, isDrawn) => {
100
+ const shape = shapeOfExpression(expression);
101
+ return shape === undefined
102
+ ? undefined
103
+ : { file, isComponent: isDrawn, takesProps: shape.takesProps, hasComment: false };
104
+ };
105
+ /** How TypeScript is told to read a file. */
106
+ const scriptKindOf = (file) => {
107
+ if (/\.tsx$/.test(file))
108
+ return ts.ScriptKind.TSX;
109
+ if (/\.jsx$/.test(file))
110
+ return ts.ScriptKind.JSX;
111
+ if (/\.[cm]?js$/.test(file))
112
+ return ts.ScriptKind.JSX;
113
+ return ts.ScriptKind.TS;
114
+ };
115
+ /** Records an export, when it is something this can tell of. */
116
+ const record = (context, name, thing) => {
117
+ if (thing !== undefined)
118
+ context.found.set(name, thing);
119
+ };
120
+ /** Adds what `export { … }`, with or without a `from`, exports. */
121
+ const addNamedExports = (clause, specifier, context) => {
122
+ for (const each of clause.elements) {
123
+ if (each.isTypeOnly)
124
+ continue;
125
+ const name = (each.propertyName ?? each.name).text;
126
+ const thing = specifier === undefined ? context.local(name) : context.followed(specifier, name);
127
+ record(context, each.name.text, thing);
128
+ }
129
+ };
130
+ /** Adds what an `export … from`, or `export { … }`, exports. */
131
+ const addExportDeclaration = (statement, context) => {
132
+ if (statement.isTypeOnly)
133
+ return;
134
+ const { moduleSpecifier, exportClause } = statement;
135
+ const specifier = moduleSpecifier !== undefined && ts.isStringLiteral(moduleSpecifier) ? moduleSpecifier.text : undefined;
136
+ if (exportClause !== undefined && ts.isNamedExports(exportClause)) {
137
+ addNamedExports(exportClause, specifier, context);
138
+ return;
139
+ }
140
+ if (specifier === undefined)
141
+ return;
142
+ // `export * as Dialog from`, or `export *`: either way what that file exports is published under its own name
143
+ for (const [name, thing] of context.allOf(specifier)) {
144
+ if (name !== "default" && !context.found.has(name))
145
+ context.found.set(name, thing);
146
+ }
147
+ };
148
+ /** Adds what `export default <expression>` exports. */
149
+ const addExportAssignment = (statement, context) => {
150
+ const { expression } = statement;
151
+ const thing = ts.isIdentifier(expression)
152
+ ? context.local(expression.text)
153
+ : defaultThing(expression, context.file, context.isDrawn);
154
+ record(context, "default", thing);
155
+ };
156
+ /** Adds what `export function` or `export class`, with a name or as the default, exports. */
157
+ const addExportedDeclaration = (statement, context) => {
158
+ const name = statement.name?.text;
159
+ const thing = name === undefined
160
+ ? {
161
+ file: context.file,
162
+ isComponent: context.isDrawn,
163
+ takesProps: ts.isClassDeclaration(statement),
164
+ hasComment: ts.getJSDocCommentsAndTags(statement).length > 0
165
+ }
166
+ : context.local(name);
167
+ const isDefault = hasModifier(statement, ts.SyntaxKind.DefaultKeyword);
168
+ record(context, isDefault ? "default" : (name ?? "default"), thing);
169
+ };
170
+ /** Adds what one statement exports. */
171
+ const addExports = (statement, context) => {
172
+ if (ts.isExportDeclaration(statement)) {
173
+ addExportDeclaration(statement, context);
174
+ return;
175
+ }
176
+ if (ts.isExportAssignment(statement)) {
177
+ if (!statement.isExportEquals)
178
+ addExportAssignment(statement, context);
179
+ return;
180
+ }
181
+ if (!ts.canHaveModifiers(statement) || !hasModifier(statement, ts.SyntaxKind.ExportKeyword))
182
+ return;
183
+ if (ts.isVariableStatement(statement)) {
184
+ for (const declaration of variablesOf(statement)) {
185
+ const name = variableName(declaration);
186
+ record(context, name, context.local(name));
187
+ }
188
+ return;
189
+ }
190
+ if (ts.isFunctionDeclaration(statement) || ts.isClassDeclaration(statement))
191
+ addExportedDeclaration(statement, context);
192
+ };
193
+ /**
194
+ * Reads files' exports, each file once.
195
+ *
196
+ * @param disk - what is asked of the disk.
197
+ * @returns what reads one file; a file reached again while it is read (a cycle) has none yet, as a cycle adds nothing.
198
+ */
199
+ const exportReader = (disk) => {
200
+ const seen = new Map();
201
+ const targetOf = (specifier, from) => {
202
+ if (ALIASED.test(specifier))
203
+ disk.onAlias?.(specifier, from);
204
+ return specifier.startsWith(".") ? disk.resolve(specifier, from) : undefined;
205
+ };
206
+ const exportsOf = (file) => {
207
+ const known = seen.get(file);
208
+ if (known !== undefined)
209
+ return known;
210
+ const found = new Map();
211
+ seen.set(file, found);
212
+ const text = disk.readText(file);
213
+ if (text === undefined)
214
+ return found;
215
+ if (COMPONENT_FILE.test(file)) {
216
+ found.set("default", { file, isComponent: true, takesProps: false, hasComment: false });
217
+ return found;
218
+ }
219
+ const source = ts.createSourceFile(file, text, ts.ScriptTarget.Latest, true, scriptKindOf(file));
220
+ const isDrawn = DRAWN_FILE.test(file) || DEFINES_COMPONENT.test(text);
221
+ const scope = { declared: new Map(), commented: new Set(), imported: new Map() };
222
+ for (const statement of source.statements) {
223
+ addDeclared(statement, scope);
224
+ addImported(statement, scope);
225
+ }
226
+ const followed = (specifier, name) => {
227
+ const target = targetOf(specifier, file);
228
+ return target === undefined ? undefined : exportsOf(target).get(name);
229
+ };
230
+ // once per file: the text may be large, and every export of it asks
231
+ const hasModuleComment = text.includes("@module");
232
+ const context = {
233
+ file,
234
+ isDrawn,
235
+ found,
236
+ followed,
237
+ allOf: (specifier) => {
238
+ const target = targetOf(specifier, file);
239
+ return target === undefined ? new Map() : exportsOf(target);
240
+ },
241
+ local: (name) => {
242
+ const imported = scope.imported.get(name);
243
+ if (imported !== undefined)
244
+ return followed(imported.from, imported.name);
245
+ if (!scope.declared.has(name))
246
+ return undefined;
247
+ const shape = scope.declared.get(name);
248
+ return {
249
+ file,
250
+ isComponent: isDrawn && shape !== undefined,
251
+ takesProps: shape?.takesProps ?? false,
252
+ hasComment: scope.commented.has(name) || hasModuleComment
253
+ };
254
+ }
255
+ };
256
+ for (const statement of source.statements)
257
+ addExports(statement, context);
258
+ return found;
259
+ };
260
+ return exportsOf;
261
+ };
262
+ /** The name a file goes by: its own, or its folder's for an index. */
263
+ const stemOf = (file) => {
264
+ const parts = file.split("/");
265
+ const name = (parts.at(-1) ?? "").replace(/\.[^.]+$/, "");
266
+ return name === "index" ? (parts.at(-2) ?? name) : name;
267
+ };
268
+ /** The name a published thing goes by, when it reads as a component: a default export by its file's. */
269
+ const componentNameOf = (name, thing) => {
270
+ if (!thing.isComponent)
271
+ return undefined;
272
+ const stem = stemOf(thing.file);
273
+ const named = name === "default" ? `${stem.charAt(0).toUpperCase()}${stem.slice(1)}` : name;
274
+ return COMPONENT_NAME.test(named) && !named.endsWith("Context") ? named : undefined;
275
+ };
276
+ /**
277
+ * The components some entries publish, one element per declaring file.
278
+ *
279
+ * @param entries - the entries' source files, absolute.
280
+ * @param disk - what is asked of the disk.
281
+ */
282
+ export const publishedComponents = (entries, disk) => {
283
+ const exportsOf = exportReader(disk);
284
+ const files = new Map();
285
+ const things = entries.flatMap((entry) => [...exportsOf(entry)]);
286
+ for (const [name, thing] of things) {
287
+ const named = componentNameOf(name, thing);
288
+ if (named === undefined)
289
+ continue;
290
+ const file = files.get(thing.file) ?? { names: [], takesProps: false, hasComment: false };
291
+ if (!file.names.includes(named))
292
+ file.names.push(named);
293
+ file.takesProps ||= thing.takesProps;
294
+ file.hasComment ||= thing.hasComment;
295
+ files.set(thing.file, file);
296
+ }
297
+ return [...files].map(([file, each]) => ({ file, ...each }));
298
+ };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * A folder's real path; for one not made yet, its nearest folder that is, with the rest of the path after it.
3
+ *
4
+ * @param folder - the folder, absolute.
5
+ */
6
+ export declare const realFolder: (folder: string) => string;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * A folder written as Vite writes its root: links followed and, on Windows, short names (`RUNNER~1`) written out in
3
+ * full. The configuration's folder and the build's output are named this way, so they compare with Vite's root.
4
+ *
5
+ * @remarks
6
+ * Vite reads its root with one of Node's two real paths on Windows, the plain one until a check it runs in the
7
+ * background ends and the native one after: they agree only on a path already written out. A root that differs from
8
+ * the folder the pages are named under makes the build's names climb out of it, and an output it does not see inside
9
+ * it is never emptied.
10
+ *
11
+ * @module
12
+ */
13
+ import { existsSync, realpathSync } from "node:fs";
14
+ import { basename, dirname, join } from "node:path";
15
+ /**
16
+ * A folder's real path; for one not made yet, its nearest folder that is, with the rest of the path after it.
17
+ *
18
+ * @param folder - the folder, absolute.
19
+ */
20
+ export const realFolder = (folder) => {
21
+ if (existsSync(folder))
22
+ return realpathSync.native(folder);
23
+ const parent = dirname(folder);
24
+ return parent === folder ? folder : join(realFolder(parent), basename(folder));
25
+ };
@@ -0,0 +1,39 @@
1
+ /**
2
+ * The configuration's `refs`, checked and made ready for the shell, and what the shell's generated entry says of them:
3
+ * the catalogues shown in the sidebar after this one's stories.
4
+ *
5
+ * @module
6
+ */
7
+ import { type CatalogueRef } from "../catalogueRefs.ts";
8
+ import type { RefOption } from "./config.ts";
9
+ import type { ResolvedConfig } from "./configFile.ts";
10
+ /** The composed catalogues, ready for the shell, in the configuration's order. */
11
+ export type ResolvedRefs = readonly CatalogueRef[];
12
+ /**
13
+ * Why the configuration's `refs` cannot be used, or none.
14
+ *
15
+ * @param config - the configuration, as loaded.
16
+ */
17
+ export declare const refsProblem: (config: object) => string | undefined;
18
+ /**
19
+ * The composed catalogues, each address its folder, in the configuration's order.
20
+ *
21
+ * @param refs - the configuration's `refs`, checked by `refsProblem`.
22
+ */
23
+ export declare const resolvedRefs: (refs: Readonly<Record<string, RefOption>> | undefined) => readonly CatalogueRef[];
24
+ /** The module that draws the composed catalogues, imported only by a catalogue that composes one. */
25
+ export declare const REFS_MODULE = "forgebook/shell/refs";
26
+ /**
27
+ * The composed catalogues and the code that draws them, for the shell; nothing for a catalogue that composes none, so
28
+ * its first load carries not even the way to that code.
29
+ *
30
+ * @param config - the configuration.
31
+ */
32
+ export declare const refsLines: (config: Pick<ResolvedConfig, "refs">) => string[];
33
+ /**
34
+ * What the plugin defines in the build for composition: whether the catalogue composes others, so a shell that composes
35
+ * none has every part of composition removed.
36
+ *
37
+ * @param refs - the composed catalogues.
38
+ */
39
+ export declare const refsDefine: (refs: ResolvedRefs) => Readonly<Record<string, string>>;
@@ -0,0 +1,54 @@
1
+ /**
2
+ * The configuration's `refs`, checked and made ready for the shell, and what the shell's generated entry says of them:
3
+ * the catalogues shown in the sidebar after this one's stories.
4
+ *
5
+ * @module
6
+ */
7
+ import { refFolder, refProblem } from "../catalogueRefs.js";
8
+ import { codeLiteral } from "../codeLiteral.js";
9
+ /**
10
+ * Why the configuration's `refs` cannot be used, or none.
11
+ *
12
+ * @param config - the configuration, as loaded.
13
+ */
14
+ export const refsProblem = (config) => {
15
+ const refs = Reflect.get(config, "refs");
16
+ if (refs === undefined)
17
+ return undefined;
18
+ if (typeof refs !== "object" || refs === null || Array.isArray(refs))
19
+ return 'refs must be an object of catalogues by id (`refs: { "design-system": { title, url } }`)';
20
+ return Object.entries(refs).flatMap(([id, ref]) => refProblem(id, ref) ?? [])[0];
21
+ };
22
+ /**
23
+ * The composed catalogues, each address its folder, in the configuration's order.
24
+ *
25
+ * @param refs - the configuration's `refs`, checked by `refsProblem`.
26
+ */
27
+ export const resolvedRefs = (refs) => Object.entries(refs ?? {}).map(([id, ref]) => ({ id, title: ref.title.trim(), url: refFolder(ref.url) }));
28
+ /** The module that draws the composed catalogues, imported only by a catalogue that composes one. */
29
+ export const REFS_MODULE = "forgebook/shell/refs";
30
+ /**
31
+ * The composed catalogues and the code that draws them, for the shell; nothing for a catalogue that composes none, so
32
+ * its first load carries not even the way to that code.
33
+ *
34
+ * @param config - the configuration.
35
+ */
36
+ export const refsLines = (config) => config.refs.length === 0
37
+ ? []
38
+ : [
39
+ " refs: {",
40
+ ` catalogues: ${codeLiteral(config.refs)},`,
41
+ ` load: () => import(${codeLiteral(REFS_MODULE)}).then((module) => module.RefPart)`,
42
+ " },"
43
+ ];
44
+ /** The name the build gives whether the catalogue composes others (`shell/composition.ts`). */
45
+ const REFS_CONSTANT = "__FORGEBOOK_REFS__";
46
+ /**
47
+ * What the plugin defines in the build for composition: whether the catalogue composes others, so a shell that composes
48
+ * none has every part of composition removed.
49
+ *
50
+ * @param refs - the composed catalogues.
51
+ */
52
+ export const refsDefine = (refs) => ({
53
+ [REFS_CONSTANT]: JSON.stringify(refs.length > 0)
54
+ });