forgebook 0.3.2 → 0.4.0

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 (693) hide show
  1. package/README.md +917 -74
  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 +175 -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 +57 -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 +90 -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 +196 -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 +297 -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 +54 -6
  187. package/dist/src/addressArgs.js +72 -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 +100 -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 +66 -184
  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 +71 -0
  211. package/dist/src/componentDocs.js +15 -2
  212. package/dist/src/frame/callValues.d.ts +19 -0
  213. package/dist/src/frame/callValues.js +58 -0
  214. package/dist/src/frame/canvasScheme.d.ts +33 -0
  215. package/dist/src/frame/canvasScheme.js +67 -0
  216. package/dist/src/frame/frame.css +36 -3
  217. package/dist/src/frame/frameStatus.d.ts +16 -1
  218. package/dist/src/frame/frameStatus.js +16 -1
  219. package/dist/src/frame/frameView.js +4 -3
  220. package/dist/src/frame/mountFrame.d.ts +7 -1
  221. package/dist/src/frame/mountFrame.js +153 -46
  222. package/dist/src/frame/panelValues.d.ts +35 -0
  223. package/dist/src/frame/panelValues.js +127 -0
  224. package/dist/src/frame/playActions.d.ts +39 -0
  225. package/dist/src/frame/playActions.js +98 -0
  226. package/dist/src/frame/playStepper.d.ts +28 -0
  227. package/dist/src/frame/playStepper.js +38 -0
  228. package/dist/src/frame/playStory.d.ts +9 -1
  229. package/dist/src/frame/playStory.js +49 -3
  230. package/dist/src/frame/renderer.d.ts +34 -1
  231. package/dist/src/frame/renderer.js +24 -0
  232. package/dist/src/frame/shellChannel.d.ts +1 -1
  233. package/dist/src/frame/shellChannel.js +1 -1
  234. package/dist/src/frame/shellCheck.d.ts +17 -0
  235. package/dist/src/frame/shellCheck.js +25 -0
  236. package/dist/src/frame/shellMessageCheck.d.ts +7 -0
  237. package/dist/src/frame/shellMessageCheck.js +53 -0
  238. package/dist/src/frame/storyContent.d.ts +50 -0
  239. package/dist/src/frame/storyContent.js +73 -0
  240. package/dist/src/frame/storyModule.d.ts +9 -0
  241. package/dist/src/frame/storyModule.js +20 -2
  242. package/dist/src/frame/storyRun.d.ts +15 -7
  243. package/dist/src/frame/storyRun.js +64 -15
  244. package/dist/src/frame/valueSheets.d.ts +35 -0
  245. package/dist/src/frame/valueSheets.js +99 -0
  246. package/dist/src/hotModules.d.ts +20 -0
  247. package/dist/src/hotModules.js +23 -0
  248. package/dist/src/jsxCode.d.ts +1 -14
  249. package/dist/src/jsxCode.js +46 -10
  250. package/dist/src/liveErrors.d.ts +30 -4
  251. package/dist/src/liveErrors.js +18 -3
  252. package/dist/src/messages.d.ts +77 -27
  253. package/dist/src/messages.js +58 -100
  254. package/dist/src/namedValues.d.ts +2 -26
  255. package/dist/src/namedValues.js +0 -47
  256. package/dist/src/pageConfig.d.ts +2 -0
  257. package/dist/src/playTrace.d.ts +19 -2
  258. package/dist/src/playTrace.js +10 -5
  259. package/dist/src/plugin.d.ts +10 -3
  260. package/dist/src/previewRelay.js +9 -1
  261. package/dist/src/printable.d.ts +12 -0
  262. package/dist/src/printable.js +22 -0
  263. package/dist/src/propsSignature.d.ts +37 -0
  264. package/dist/src/propsSignature.js +40 -0
  265. package/dist/src/search.d.ts +41 -5
  266. package/dist/src/search.js +93 -23
  267. package/dist/src/searchMatch.d.ts +4 -1
  268. package/dist/src/searchMatch.js +26 -5
  269. package/dist/src/searchTypos.d.ts +88 -0
  270. package/dist/src/searchTypos.js +178 -0
  271. package/dist/src/shapeValues.d.ts +86 -0
  272. package/dist/src/shapeValues.js +295 -0
  273. package/dist/src/shell/ApiReference.js +6 -3
  274. package/dist/src/shell/ApiTableBox.d.ts +15 -0
  275. package/dist/src/shell/ApiTableBox.js +11 -0
  276. package/dist/src/shell/AppearanceMenu.d.ts +4 -1
  277. package/dist/src/shell/AppearanceMenu.js +9 -6
  278. package/dist/src/shell/CodeTab.d.ts +3 -2
  279. package/dist/src/shell/CodeTab.js +3 -2
  280. package/dist/src/shell/CodeText.d.ts +1 -1
  281. package/dist/src/shell/CodeText.js +2 -3
  282. package/dist/src/shell/CompareGrid.js +1 -1
  283. package/dist/src/shell/ComponentPage.d.ts +1 -1
  284. package/dist/src/shell/ComponentPage.js +5 -1
  285. package/dist/src/shell/CustomControl.d.ts +34 -0
  286. package/dist/src/shell/CustomControl.js +132 -0
  287. package/dist/src/shell/DocContainers.js +1 -1
  288. package/dist/src/shell/DocPage.js +2 -2
  289. package/dist/src/shell/DroppedArgsList.d.ts +2 -2
  290. package/dist/src/shell/DroppedArgsList.js +1 -1
  291. package/dist/src/shell/EmbedPage.js +58 -14
  292. package/dist/src/shell/Example.d.ts +5 -1
  293. package/dist/src/shell/Example.js +16 -8
  294. package/dist/src/shell/FrameView.d.ts +6 -3
  295. package/dist/src/shell/FrameView.js +2 -2
  296. package/dist/src/shell/HomePage.d.ts +3 -1
  297. package/dist/src/shell/HomePage.js +16 -6
  298. package/dist/src/shell/InfoTip.js +2 -2
  299. package/dist/src/shell/InteractionsTab.d.ts +11 -4
  300. package/dist/src/shell/InteractionsTab.js +18 -2
  301. package/dist/src/shell/LazyPage.js +1 -1
  302. package/dist/src/shell/PackageHtml.js +3 -1
  303. package/dist/src/shell/PinnedControl.js +14 -62
  304. package/dist/src/shell/PinnedControlMenu.d.ts +44 -0
  305. package/dist/src/shell/PinnedControlMenu.js +72 -0
  306. package/dist/src/shell/PluginBlockHost.js +2 -1
  307. package/dist/src/shell/PluginTabHost.js +19 -2
  308. package/dist/src/shell/PropFields.d.ts +3 -1
  309. package/dist/src/shell/PropFields.js +9 -6
  310. package/dist/src/shell/PropRows.d.ts +23 -2
  311. package/dist/src/shell/PropRows.js +58 -19
  312. package/dist/src/shell/PropsTab.d.ts +12 -5
  313. package/dist/src/shell/PropsTab.js +9 -21
  314. package/dist/src/shell/RefStoryPage.d.ts +33 -0
  315. package/dist/src/shell/RefStoryPage.js +123 -0
  316. package/dist/src/shell/SearchPanel.js +51 -24
  317. package/dist/src/shell/Shell.d.ts +18 -0
  318. package/dist/src/shell/Shell.js +137 -22
  319. package/dist/src/shell/ShortcutHelp.d.ts +22 -0
  320. package/dist/src/shell/ShortcutHelp.js +66 -0
  321. package/dist/src/shell/Sidebar.d.ts +17 -4
  322. package/dist/src/shell/Sidebar.js +92 -41
  323. package/dist/src/shell/SidebarDocs.js +2 -2
  324. package/dist/src/shell/SidebarEntries.js +5 -3
  325. package/dist/src/shell/SidebarHandle.d.ts +3 -5
  326. package/dist/src/shell/SidebarHandle.js +4 -4
  327. package/dist/src/shell/SidebarRefs.d.ts +39 -0
  328. package/dist/src/shell/SidebarRefs.js +99 -0
  329. package/dist/src/shell/SidebarSearch.js +37 -9
  330. package/dist/src/shell/SignatureReference.js +3 -1
  331. package/dist/src/shell/Stage.d.ts +10 -2
  332. package/dist/src/shell/Stage.js +35 -60
  333. package/dist/src/shell/StatusBadges.d.ts +54 -0
  334. package/dist/src/shell/StatusBadges.js +77 -0
  335. package/dist/src/shell/StoryCodeBlock.d.ts +8 -19
  336. package/dist/src/shell/StoryCodeBlock.js +7 -6
  337. package/dist/src/shell/SwitchGallery.d.ts +36 -0
  338. package/dist/src/shell/SwitchGallery.js +17 -0
  339. package/dist/src/shell/SwitchGalleryPanel.d.ts +37 -0
  340. package/dist/src/shell/SwitchGalleryPanel.js +99 -0
  341. package/dist/src/shell/TagFilter.d.ts +24 -0
  342. package/dist/src/shell/TagFilter.js +45 -0
  343. package/dist/src/shell/TagViews.d.ts +39 -0
  344. package/dist/src/shell/TagViews.js +20 -0
  345. package/dist/src/shell/Toolbar.d.ts +4 -1
  346. package/dist/src/shell/Toolbar.js +17 -7
  347. package/dist/src/shell/ToolbarControl.d.ts +3 -0
  348. package/dist/src/shell/ToolbarControl.js +23 -6
  349. package/dist/src/shell/ViewMenuPanel.js +6 -1
  350. package/dist/src/shell/argChecks.d.ts +22 -0
  351. package/dist/src/shell/argChecks.js +20 -0
  352. package/dist/src/shell/asideStory.d.ts +17 -4
  353. package/dist/src/shell/asideStory.js +21 -4
  354. package/dist/src/shell/audienceSections.css +9 -9
  355. package/dist/src/shell/catalogueContext.d.ts +1 -1
  356. package/dist/src/shell/catalogueContext.js +6 -1
  357. package/dist/src/shell/codeSpans.d.ts +27 -0
  358. package/dist/src/shell/codeSpans.js +76 -0
  359. package/dist/src/shell/compareVariants.d.ts +4 -2
  360. package/dist/src/shell/compareVariants.js +16 -8
  361. package/dist/src/shell/composition.d.ts +23 -0
  362. package/dist/src/shell/composition.js +26 -0
  363. package/dist/src/shell/controlCycle.d.ts +1 -1
  364. package/dist/src/shell/controlCycle.js +3 -2
  365. package/dist/src/shell/customControls.d.ts +55 -0
  366. package/dist/src/shell/customControls.js +70 -0
  367. package/dist/src/shell/docPage.css +22 -22
  368. package/dist/src/shell/dockTabs.d.ts +19 -3
  369. package/dist/src/shell/dockTabs.js +28 -20
  370. package/dist/src/shell/embed.css +7 -7
  371. package/dist/src/shell/framesOrigin.d.ts +7 -0
  372. package/dist/src/shell/framesOrigin.js +1 -1
  373. package/dist/src/shell/galleryPlace.d.ts +20 -0
  374. package/dist/src/shell/galleryPlace.js +26 -0
  375. package/dist/src/shell/icons.d.ts +1 -0
  376. package/dist/src/shell/icons.js +1 -0
  377. package/dist/src/shell/keyboard.d.ts +14 -12
  378. package/dist/src/shell/keyboard.js +21 -6
  379. package/dist/src/shell/laterStrings.d.ts +29 -0
  380. package/dist/src/shell/laterStrings.js +42 -3
  381. package/dist/src/shell/mountShell.js +3 -0
  382. package/dist/src/shell/pageStrings.d.ts +4 -0
  383. package/dist/src/shell/pageStrings.js +4 -0
  384. package/dist/src/shell/pageTagView.d.ts +18 -0
  385. package/dist/src/shell/pageTagView.js +10 -0
  386. package/dist/src/shell/playMemory.d.ts +14 -0
  387. package/dist/src/shell/playMemory.js +8 -0
  388. package/dist/src/shell/propNotes.d.ts +23 -0
  389. package/dist/src/shell/propNotes.js +37 -0
  390. package/dist/src/shell/refIndexLoad.d.ts +17 -0
  391. package/dist/src/shell/refIndexLoad.js +38 -0
  392. package/dist/src/shell/refParts.d.ts +34 -0
  393. package/dist/src/shell/refParts.js +9 -0
  394. package/dist/src/shell/refStory.css +21 -0
  395. package/dist/src/shell/refStrings.d.ts +13 -0
  396. package/dist/src/shell/refStrings.js +21 -0
  397. package/dist/src/shell/search.css +11 -11
  398. package/dist/src/shell/shell.css +348 -168
  399. package/dist/src/shell/shellScheme.js +2 -2
  400. package/dist/src/shell/shortcutHelp.css +64 -0
  401. package/dist/src/shell/stageArgs.d.ts +53 -0
  402. package/dist/src/shell/stageArgs.js +64 -0
  403. package/dist/src/shell/statusBadges.css +51 -0
  404. package/dist/src/shell/strings.d.ts +7 -16
  405. package/dist/src/shell/strings.js +12 -17
  406. package/dist/src/shell/switchGallery.css +104 -0
  407. package/dist/src/shell/tagFilter.css +46 -0
  408. package/dist/src/shell/tagView.d.ts +20 -0
  409. package/dist/src/shell/tagView.js +10 -0
  410. package/dist/src/shell/useAddressArgs.d.ts +27 -2
  411. package/dist/src/shell/useAddressArgs.js +71 -14
  412. package/dist/src/shell/useControlKeys.js +2 -2
  413. package/dist/src/shell/useEditedProblems.d.ts +6 -0
  414. package/dist/src/shell/useEditedProblems.js +40 -0
  415. package/dist/src/shell/useFrameMessages.js +3 -0
  416. package/dist/src/shell/useListedTree.d.ts +13 -0
  417. package/dist/src/shell/useListedTree.js +32 -0
  418. package/dist/src/shell/usePageFrames.js +2 -2
  419. package/dist/src/shell/usePopover.d.ts +5 -0
  420. package/dist/src/shell/usePopover.js +7 -1
  421. package/dist/src/shell/useRefIndex.d.ts +22 -0
  422. package/dist/src/shell/useRefIndex.js +36 -0
  423. package/dist/src/shell/useScrollStops.d.ts +20 -0
  424. package/dist/src/shell/useScrollStops.js +41 -0
  425. package/dist/src/shell/useShortcutHelp.d.ts +18 -0
  426. package/dist/src/shell/useShortcutHelp.js +32 -0
  427. package/dist/src/shell/useSidebarOverlay.d.ts +2 -1
  428. package/dist/src/shell/useSidebarOverlay.js +12 -4
  429. package/dist/src/shell/useStoryCode.d.ts +2 -1
  430. package/dist/src/shell/useStoryCode.js +12 -7
  431. package/dist/src/shell/useToolbarLayout.d.ts +5 -1
  432. package/dist/src/shell/useToolbarLayout.js +2 -2
  433. package/dist/src/shell/useWorstCase.d.ts +8 -2
  434. package/dist/src/shell/useWorstCase.js +2 -2
  435. package/dist/src/shell/valueEditors/FileEditor.d.ts +28 -0
  436. package/dist/src/shell/valueEditors/FileEditor.js +66 -0
  437. package/dist/src/shell/valueEditors/JsonEditor.d.ts +14 -0
  438. package/dist/src/shell/valueEditors/JsonEditor.js +53 -0
  439. package/dist/src/shell/valueEditors/ListEditor.d.ts +24 -0
  440. package/dist/src/shell/valueEditors/ListEditor.js +82 -0
  441. package/dist/src/shell/valueEditors/ObjectEditor.d.ts +32 -0
  442. package/dist/src/shell/valueEditors/ObjectEditor.js +70 -0
  443. package/dist/src/shell/valueEditors/PropEditor.d.ts +37 -0
  444. package/dist/src/shell/valueEditors/PropEditor.js +53 -0
  445. package/dist/src/shell/valueEditors/RecordEditor.d.ts +20 -0
  446. package/dist/src/shell/valueEditors/RecordEditor.js +84 -0
  447. package/dist/src/shell/valueEditors/SearchSelect.d.ts +42 -0
  448. package/dist/src/shell/valueEditors/SearchSelect.js +80 -0
  449. package/dist/src/shell/valueEditors/TokenEditor.d.ts +49 -0
  450. package/dist/src/shell/valueEditors/TokenEditor.js +74 -0
  451. package/dist/src/shell/valueEditors/UnionEditor.d.ts +20 -0
  452. package/dist/src/shell/valueEditors/UnionEditor.js +64 -0
  453. package/dist/src/shell/valueEditors/ValueField.d.ts +15 -0
  454. package/dist/src/shell/valueEditors/ValueField.js +147 -0
  455. package/dist/src/shell/valueEditors/editorStrings.d.ts +56 -0
  456. package/dist/src/shell/valueEditors/editorStrings.js +66 -0
  457. package/dist/src/shell/valueEditors/fieldTypes.d.ts +31 -0
  458. package/dist/src/shell/valueEditors/fieldTypes.js +0 -0
  459. package/dist/src/shell/valueEditors/valueEditors.css +153 -0
  460. package/dist/src/shell/worstArgs.d.ts +8 -5
  461. package/dist/src/shell/worstArgs.js +14 -7
  462. package/dist/src/shellTheme.d.ts +1 -1
  463. package/dist/src/shellTheme.js +15 -1
  464. package/dist/src/shellTheme.types.d.ts +4 -0
  465. package/dist/src/shellWord.d.ts +12 -0
  466. package/dist/src/shellWord.js +15 -0
  467. package/dist/src/sourceFiles.js +2 -1
  468. package/dist/src/storyArgTypes.d.ts +57 -0
  469. package/dist/src/storyArgTypes.js +195 -0
  470. package/dist/src/storyBackground.js +14 -3
  471. package/dist/src/storyCheck.d.ts +85 -3
  472. package/dist/src/storyCheck.js +23 -1
  473. package/dist/src/storyCodeText.d.ts +46 -0
  474. package/dist/src/storyCodeText.js +27 -0
  475. package/dist/src/storyControls.d.ts +100 -0
  476. package/dist/src/storyControls.js +100 -0
  477. package/dist/src/storyStatuses.d.ts +55 -0
  478. package/dist/src/storyStatuses.js +104 -0
  479. package/dist/src/storyTagNames.d.ts +25 -0
  480. package/dist/src/storyTagNames.js +25 -0
  481. package/dist/src/storyTags.d.ts +29 -0
  482. package/dist/src/storyTags.js +85 -0
  483. package/dist/src/storyTree.d.ts +13 -0
  484. package/dist/src/storyTree.js +24 -4
  485. package/dist/src/storybookArgs.d.ts +24 -0
  486. package/dist/src/storybookArgs.js +185 -0
  487. package/dist/src/switches.d.ts +66 -3
  488. package/dist/src/switches.js +42 -1
  489. package/dist/src/valueSchema.d.ts +28 -0
  490. package/dist/src/valueSchema.js +196 -0
  491. package/dist/src/valueShape.d.ts +94 -0
  492. package/dist/src/valueShape.js +25 -0
  493. package/dist/src/viewState.d.ts +8 -3
  494. package/dist/src/viewState.js +27 -10
  495. package/dist/src/vite/adapter.d.ts +40 -2
  496. package/dist/src/vite/adapter.js +1 -0
  497. package/dist/src/vite/agent.types.d.ts +347 -7
  498. package/dist/src/vite/agentApi.d.ts +23 -0
  499. package/dist/src/vite/agentApi.js +90 -17
  500. package/dist/src/vite/agentIndex.d.ts +0 -2
  501. package/dist/src/vite/agentIndex.js +5 -6
  502. package/dist/src/vite/agentRoutes.d.ts +20 -1
  503. package/dist/src/vite/agentRoutes.js +106 -65
  504. package/dist/src/vite/agentStatuses.d.ts +42 -0
  505. package/dist/src/vite/agentStatuses.js +67 -0
  506. package/dist/src/vite/agentStoryCode.d.ts +48 -0
  507. package/dist/src/vite/agentStoryCode.js +38 -0
  508. package/dist/src/vite/agentVisibility.d.ts +47 -0
  509. package/dist/src/vite/agentVisibility.js +174 -0
  510. package/dist/src/vite/appAudit.d.ts +134 -0
  511. package/dist/src/vite/appAudit.js +333 -0
  512. package/dist/src/vite/appBuildOption.d.ts +53 -0
  513. package/dist/src/vite/appBuildOption.js +55 -0
  514. package/dist/src/vite/appTokenFiles.d.ts +92 -0
  515. package/dist/src/vite/appTokenFiles.js +433 -0
  516. package/dist/src/vite/appTokens.d.ts +23 -0
  517. package/dist/src/vite/appTokens.js +275 -0
  518. package/dist/src/vite/builtTexts.d.ts +10 -0
  519. package/dist/src/vite/builtTexts.js +59 -22
  520. package/dist/src/vite/catalogueConfig.d.ts +3 -1
  521. package/dist/src/vite/catalogueConfig.js +15 -3
  522. package/dist/src/vite/changeCoverage.d.ts +74 -0
  523. package/dist/src/vite/changeCoverage.js +120 -0
  524. package/dist/src/vite/changedRoute.d.ts +30 -0
  525. package/dist/src/vite/changedRoute.js +197 -0
  526. package/dist/src/vite/checkCode.d.ts +105 -3
  527. package/dist/src/vite/checkCode.js +323 -36
  528. package/dist/src/vite/checkoutWatch.d.ts +97 -0
  529. package/dist/src/vite/checkoutWatch.js +287 -0
  530. package/dist/src/vite/closeWatch.d.ts +8 -0
  531. package/dist/src/vite/closeWatch.js +1 -1
  532. package/dist/src/vite/componentCache.d.ts +8 -0
  533. package/dist/src/vite/componentCache.js +66 -0
  534. package/dist/src/vite/componentGraph.d.ts +71 -0
  535. package/dist/src/vite/componentGraph.js +133 -0
  536. package/dist/src/vite/componentRules.d.ts +33 -0
  537. package/dist/src/vite/componentRules.js +105 -0
  538. package/dist/src/vite/componentScan.d.ts +69 -0
  539. package/dist/src/vite/componentScan.js +418 -0
  540. package/dist/src/vite/compositionCheck.d.ts +15 -0
  541. package/dist/src/vite/compositionCheck.js +243 -0
  542. package/dist/src/vite/config.d.ts +32 -1
  543. package/dist/src/vite/configFile.d.ts +14 -2
  544. package/dist/src/vite/configFile.js +124 -40
  545. package/dist/src/vite/configKeys.d.ts +15 -0
  546. package/dist/src/vite/configKeys.js +171 -0
  547. package/dist/src/vite/configLoadError.d.ts +23 -0
  548. package/dist/src/vite/configLoadError.js +71 -0
  549. package/dist/src/vite/cssDeclarations.d.ts +71 -0
  550. package/dist/src/vite/cssDeclarations.js +290 -0
  551. package/dist/src/vite/cssImports.d.ts +14 -0
  552. package/dist/src/vite/cssImports.js +48 -0
  553. package/dist/src/vite/cssReferences.d.ts +54 -0
  554. package/dist/src/vite/cssReferences.js +157 -0
  555. package/dist/src/vite/cssTokenValues.d.ts +50 -0
  556. package/dist/src/vite/cssTokenValues.js +233 -0
  557. package/dist/src/vite/designTokens.d.ts +24 -0
  558. package/dist/src/vite/designTokens.js +5 -1
  559. package/dist/src/vite/docsExtractor.d.ts +9 -3
  560. package/dist/src/vite/docsExtractor.js +11 -3
  561. package/dist/src/vite/docsProgram.d.ts +17 -4
  562. package/dist/src/vite/docsProgram.js +52 -11
  563. package/dist/src/vite/docsWorker.js +7 -2
  564. package/dist/src/vite/emptyStoryGlobs.d.ts +41 -0
  565. package/dist/src/vite/emptyStoryGlobs.js +52 -0
  566. package/dist/src/vite/fileImports.d.ts +17 -0
  567. package/dist/src/vite/fileImports.js +57 -0
  568. package/dist/src/vite/findComponent.d.ts +10 -2
  569. package/dist/src/vite/findComponent.js +27 -22
  570. package/dist/src/vite/findRoute.js +3 -2
  571. package/dist/src/vite/forcedStates.d.ts +9 -2
  572. package/dist/src/vite/forcedStates.js +12 -3
  573. package/dist/src/vite/forgebookPlugin.d.ts +2 -0
  574. package/dist/src/vite/forgebookPlugin.js +52 -72
  575. package/dist/src/vite/frameErrors.d.ts +19 -0
  576. package/dist/src/vite/frameErrors.js +70 -0
  577. package/dist/src/vite/framesServer.d.ts +12 -0
  578. package/dist/src/vite/framesServer.js +21 -4
  579. package/dist/src/vite/functionComponentDocs.js +81 -12
  580. package/dist/src/vite/generatedModules.js +4 -2
  581. package/dist/src/vite/gitChange.d.ts +38 -5
  582. package/dist/src/vite/gitChange.js +71 -11
  583. package/dist/src/vite/hiddenStoryFiles.d.ts +23 -0
  584. package/dist/src/vite/hiddenStoryFiles.js +107 -0
  585. package/dist/src/vite/hotSnippets.d.ts +38 -14
  586. package/dist/src/vite/hotSnippets.js +137 -39
  587. package/dist/src/vite/importedNames.d.ts +37 -0
  588. package/dist/src/vite/importedNames.js +138 -0
  589. package/dist/src/vite/indexFields.d.ts +6 -0
  590. package/dist/src/vite/indexFields.js +21 -0
  591. package/dist/src/vite/indexStoryFile.d.ts +8 -1
  592. package/dist/src/vite/indexStoryFile.js +22 -157
  593. package/dist/src/vite/jsxCallSites.d.ts +33 -0
  594. package/dist/src/vite/jsxCallSites.js +200 -0
  595. package/dist/src/vite/jsxInScripts.d.ts +67 -0
  596. package/dist/src/vite/jsxInScripts.js +138 -0
  597. package/dist/src/vite/jsxTree.d.ts +20 -0
  598. package/dist/src/vite/jsxTree.js +163 -0
  599. package/dist/src/vite/lineAndColumn.d.ts +13 -0
  600. package/dist/src/vite/lineAndColumn.js +18 -0
  601. package/dist/src/vite/lookAlikes.d.ts +65 -0
  602. package/dist/src/vite/lookAlikes.js +228 -0
  603. package/dist/src/vite/nearestToken.d.ts +17 -0
  604. package/dist/src/vite/nearestToken.js +9 -2
  605. package/dist/src/vite/packageEntries.d.ts +42 -0
  606. package/dist/src/vite/packageEntries.js +127 -0
  607. package/dist/src/vite/pages.d.ts +9 -1
  608. package/dist/src/vite/pages.js +108 -4
  609. package/dist/src/vite/pluginConfig.js +4 -0
  610. package/dist/src/vite/pluginIds.d.ts +2 -0
  611. package/dist/src/vite/pluginIds.js +5 -1
  612. package/dist/src/vite/pluginModules.d.ts +81 -11
  613. package/dist/src/vite/pluginModules.js +109 -21
  614. package/dist/src/vite/prebundled.d.ts +57 -15
  615. package/dist/src/vite/prebundled.js +80 -0
  616. package/dist/src/vite/previewTags.d.ts +25 -0
  617. package/dist/src/vite/previewTags.js +56 -0
  618. package/dist/src/vite/projectFiles.d.ts +54 -0
  619. package/dist/src/vite/projectFiles.js +116 -0
  620. package/dist/src/vite/projectPostcss.d.ts +70 -0
  621. package/dist/src/vite/projectPostcss.js +250 -0
  622. package/dist/src/vite/propDocs.d.ts +12 -0
  623. package/dist/src/vite/propDocs.js +130 -58
  624. package/dist/src/vite/propKind.d.ts +40 -0
  625. package/dist/src/vite/propKind.js +71 -0
  626. package/dist/src/vite/propTypeNotes.d.ts +22 -0
  627. package/dist/src/vite/propTypeNotes.js +51 -0
  628. package/dist/src/vite/publishedExports.d.ts +27 -0
  629. package/dist/src/vite/publishedExports.js +298 -0
  630. package/dist/src/vite/realFolder.d.ts +6 -0
  631. package/dist/src/vite/realFolder.js +25 -0
  632. package/dist/src/vite/refsConfig.d.ts +39 -0
  633. package/dist/src/vite/refsConfig.js +54 -0
  634. package/dist/src/vite/reuseCheck.d.ts +45 -0
  635. package/dist/src/vite/reuseCheck.js +260 -0
  636. package/dist/src/vite/runningVersions.d.ts +33 -0
  637. package/dist/src/vite/runningVersions.js +25 -0
  638. package/dist/src/vite/scriptProblems.d.ts +60 -0
  639. package/dist/src/vite/scriptProblems.js +155 -0
  640. package/dist/src/vite/searchModule.js +3 -2
  641. package/dist/src/vite/searchRoute.js +4 -2
  642. package/dist/src/vite/shapeDocs.d.ts +36 -0
  643. package/dist/src/vite/shapeDocs.js +177 -0
  644. package/dist/src/vite/singleFileComponent.d.ts +17 -0
  645. package/dist/src/vite/singleFileComponent.js +83 -0
  646. package/dist/src/vite/sourceText.d.ts +34 -0
  647. package/dist/src/vite/sourceText.js +72 -0
  648. package/dist/src/vite/sourceTokens.d.ts +7 -0
  649. package/dist/src/vite/sourceTokens.js +7 -2
  650. package/dist/src/vite/stackLines.d.ts +49 -0
  651. package/dist/src/vite/stackLines.js +96 -0
  652. package/dist/src/vite/storyCode.d.ts +22 -7
  653. package/dist/src/vite/storyCode.js +263 -37
  654. package/dist/src/vite/storyCoverage.d.ts +48 -0
  655. package/dist/src/vite/storyCoverage.js +179 -0
  656. package/dist/src/vite/storyFilesModule.d.ts +48 -3
  657. package/dist/src/vite/storyFilesModule.js +105 -15
  658. package/dist/src/vite/storyPatterns.d.ts +31 -0
  659. package/dist/src/vite/storyPatterns.js +140 -5
  660. package/dist/src/vite/storyReach.d.ts +10 -2
  661. package/dist/src/vite/storyReach.js +15 -11
  662. package/dist/src/vite/storyTopLevel.d.ts +51 -0
  663. package/dist/src/vite/storyTopLevel.js +146 -0
  664. package/dist/src/vite/storylessRoutes.d.ts +4 -3
  665. package/dist/src/vite/storylessRoutes.js +210 -19
  666. package/dist/src/vite/switchValuesCheck.d.ts +19 -0
  667. package/dist/src/vite/switchValuesCheck.js +164 -0
  668. package/dist/src/vite/switchesDocument.d.ts +15 -0
  669. package/dist/src/vite/switchesDocument.js +47 -0
  670. package/dist/src/vite/tailwindConfigTokens.d.ts +41 -0
  671. package/dist/src/vite/tailwindConfigTokens.js +306 -0
  672. package/dist/src/vite/textImports.d.ts +15 -0
  673. package/dist/src/vite/textImports.js +58 -0
  674. package/dist/src/vite/textModules.d.ts +6 -5
  675. package/dist/src/vite/textModules.js +13 -8
  676. package/dist/src/vite/tokenAnswers.d.ts +6 -2
  677. package/dist/src/vite/tokenAnswers.js +11 -7
  678. package/dist/src/vite/typeParameters.d.ts +83 -0
  679. package/dist/src/vite/typeParameters.js +270 -0
  680. package/dist/src/vite/unionProps.d.ts +37 -0
  681. package/dist/src/vite/unionProps.js +121 -0
  682. package/dist/src/vite/unresolvedTokens.d.ts +20 -0
  683. package/dist/src/vite/unresolvedTokens.js +193 -0
  684. package/dist/src/vite/usageGraph.js +10 -52
  685. package/dist/src/vite/usageGuidance.d.ts +9 -2
  686. package/dist/src/vite/usageGuidance.js +36 -8
  687. package/dist/src/vite/usageImports.d.ts +35 -0
  688. package/dist/src/vite/usageImports.js +280 -0
  689. package/dist/src/vite/visibilityRoute.d.ts +16 -0
  690. package/dist/src/vite/visibilityRoute.js +320 -0
  691. package/dist/src/worstCase.d.ts +2 -0
  692. package/dist/src/worstCase.js +2 -0
  693. package/package.json +28 -8
@@ -1,5 +1,6 @@
1
1
  import ts from "typescript-6";
2
2
  import type { PropDocs } from "../componentDocs.ts";
3
+ import { type Bindings } from "./typeParameters.ts";
3
4
  /**
4
5
  * A symbol, through an import to what it names.
5
6
  *
@@ -40,6 +41,17 @@ export type PropReading = {
40
41
  * capital by default.
41
42
  */
42
43
  readonly eventName?: RegExp | undefined;
44
+ /**
45
+ * The same prop as the other variants of a union of props declare it (`selected?: Date` beside `selected?: Date[]`):
46
+ * their written types join its own. When their types differ, what only one of them would say (an event's signature,
47
+ * a value's shape, an object's members) is left out, and its kind is `other` unless all share one.
48
+ */
49
+ readonly variants?: readonly ts.Symbol[] | undefined;
50
+ /**
51
+ * What the props type's type parameters stand for in the component (`typeParameters.ts`), so a type parameter left
52
+ * open is shown by the component's constraint; none reads each by its own.
53
+ */
54
+ readonly bindings?: Bindings | undefined;
43
55
  };
44
56
  /**
45
57
  * One prop's docs.
@@ -12,18 +12,11 @@
12
12
  import { dirname } from "node:path";
13
13
  import ts from "typescript-6";
14
14
  import { summaryOf, tagOf } from "./docsProgram.js";
15
+ import { literalValues, typeAndKind } from "./propKind.js";
16
+ import { propTypeNotes } from "./propTypeNotes.js";
17
+ import { shapeOfProp } from "./shapeDocs.js";
15
18
  import { unwrapped } from "./storyMeta.js";
16
- /** An event: a function prop named `on` and a capital (React's `onPress`). */
17
- const EVENT_NAME = /^on[A-Z]/;
18
- /** Whether a type is a union of string or number literals (a choice). */
19
- const literalValues = (type) => {
20
- if (!type.isUnion())
21
- return undefined;
22
- const values = type.types.map((member) => member.isStringLiteral() || member.isNumberLiteral() ? member.value : undefined);
23
- return values.every((value) => value !== undefined)
24
- ? values.filter((value) => value !== undefined)
25
- : undefined;
26
- };
19
+ import { genericFreeText, usesTypeParameter } from "./typeParameters.js";
27
20
  /** A literal value an expression writes (`"md"`, `3`, `-1`), or none for anything else. */
28
21
  const literalOfExpression = (expression) => {
29
22
  if (ts.isStringLiteral(expression) || ts.isNoSubstitutionTemplateLiteral(expression))
@@ -131,25 +124,48 @@ const writtenLiterals = (node, checker, seen) => {
131
124
  return [...fromArguments, ...(alias === undefined ? [] : writtenLiterals(alias.type, checker, seen))];
132
125
  };
133
126
  /**
134
- * A choice's values in the order the source writes them: the checker's order follows the order it happened to meet
135
- * the types in, which a program kept between reads changes from one read to the next.
127
+ * What puts a choice's values in the order the source writes them: the checker's order follows the order it happened to
128
+ * meet the types in, which a program kept between reads changes from one read to the next.
129
+ *
130
+ * @remarks
131
+ * A prop's shape asks for the order of every union inside it, and a library's unions can hold hundreds of values (an
132
+ * icon's name): the declared values are read once per prop, on the first ask, and each value's place is looked up, not
133
+ * searched for.
136
134
  *
137
- * @param values - the values, in the checker's order.
138
135
  * @param declared - the prop's declared type nodes.
139
136
  * @param checker - the type checker.
140
- * @returns the values, those the source writes in its order first, any other after them in the checker's order.
137
+ * @returns the sorter: given values in the checker's order, those the source writes in its order first, any other
138
+ * after them in the checker's order.
141
139
  */
142
- const writtenOrder = (values, declared, checker) => {
143
- const seen = new Set();
144
- const written = declared.flatMap((node) => ts.isMethodSignature(node) ? [] : writtenLiterals(node, checker, seen));
145
- const rank = (value) => {
146
- const index = written.indexOf(value);
147
- return index === -1 ? written.length : index;
140
+ const writtenOrderOf = (declared, checker) => {
141
+ let places;
142
+ let unwritten = 0;
143
+ return (values) => {
144
+ if (places === undefined) {
145
+ const seen = new Set();
146
+ const written = declared.flatMap((node) => ts.isMethodSignature(node) ? [] : writtenLiterals(node, checker, seen));
147
+ places = new Map();
148
+ unwritten = written.length;
149
+ // a value written twice keeps its first place, as a search from the start would find it
150
+ for (const [index, value] of written.entries())
151
+ if (!places.has(value))
152
+ places.set(value, index);
153
+ }
154
+ const known = places;
155
+ const rank = (value) => known.get(value) ?? unwritten;
156
+ return [...values].sort((left, right) => rank(left) - rank(right));
148
157
  };
149
- return [...values].sort((left, right) => rank(left) - rank(right));
150
158
  };
151
159
  /** A choice's type as TypeScript writes it, its members in the given order (`"md" | "sm"`). */
152
160
  const choiceTypeText = (values) => values.map((value) => (typeof value === "string" ? JSON.stringify(value) : String(value))).join(" | ");
161
+ /**
162
+ * Declarations by file and position: a prop several variants declare comes with them in the order the checker met
163
+ * the variants, which a program kept between reads changes.
164
+ *
165
+ * @param declarations - the declarations.
166
+ */
167
+ const byPosition = (declarations) => [...declarations].sort((left, right) => left.getSourceFile().fileName.localeCompare(right.getSourceFile().fileName) ||
168
+ left.getStart() - right.getStart());
153
169
  /**
154
170
  * The props in the order the source declares them: those declared in the component's own folder first, then the
155
171
  * ones it takes from elsewhere, each by file and position. The checker's order follows the types it met first (an
@@ -160,7 +176,7 @@ const choiceTypeText = (values) => values.map((value) => (typeof value === "stri
160
176
  */
161
177
  export const declarationOrder = (props, componentFolder) => {
162
178
  const keyOf = (prop) => {
163
- const [declaration] = prop.declarations ?? [];
179
+ const [declaration] = byPosition(prop.declarations ?? []);
164
180
  if (declaration === undefined)
165
181
  return [2, "", 0];
166
182
  const file = declaration.getSourceFile().fileName;
@@ -172,8 +188,15 @@ export const declarationOrder = (props, componentFolder) => {
172
188
  return leftOwn - rightOwn || leftFile.localeCompare(rightFile) || leftAt - rightAt;
173
189
  });
174
190
  };
175
- /** A type node's text as the source writes it, on one line. */
176
- const nodeText = (node) => node.getText().replace(/\s+/g, " ").trim();
191
+ /**
192
+ * A type node's text as the source writes it, on one line; given a checker, each generic type parameter it uses
193
+ * replaced by what it is shown as (`typeParameters.ts`).
194
+ */
195
+ const nodeText = (node, generic) => (generic === undefined ? node.getText() : genericFreeText(node, generic))
196
+ // an inline object's TSDoc is the docs' to read, not part of its type
197
+ .replace(/\/\*[\s\S]*?\*\//g, "")
198
+ .replace(/\s+/g, " ")
199
+ .trim();
177
200
  /**
178
201
  * Whether a type node adds nothing a prop can take: `undefined` and `null` (left out as the checker's `NonNullable`
179
202
  * did) and `never` (a branch of the props where the prop is not allowed).
@@ -200,7 +223,7 @@ const declaredMembers = (node) => {
200
223
  *
201
224
  * @param symbol - the prop.
202
225
  */
203
- const declaredTypesOf = (symbol) => (symbol.declarations ?? []).flatMap((declaration) => {
226
+ const declaredTypesOf = (symbol) => byPosition(symbol.declarations ?? []).flatMap((declaration) => {
204
227
  if (ts.isMethodSignature(declaration))
205
228
  return [declaration];
206
229
  return (ts.isPropertySignature(declaration) || ts.isPropertyDeclaration(declaration)) &&
@@ -214,36 +237,51 @@ const declaredTypesOf = (symbol) => (symbol.declarations ?? []).flatMap((declara
214
237
  * between reads changes from one read to the next.
215
238
  *
216
239
  * @param declaredTypes - the prop's declared type nodes.
240
+ * @param generic - the checker and the bindings when the prop's type is still generic, to replace the type parameters
241
+ * its text uses; none to write it as it is.
217
242
  * @returns the text, or none when the prop writes no type (the caller falls back to the checker's).
218
243
  */
219
- const writtenTypeText = (declaredTypes) => {
244
+ const writtenTypeText = (declaredTypes, generic) => {
245
+ const text = (node) => nodeText(node, generic);
220
246
  const texts = declaredTypes.flatMap((declared) => {
221
247
  if (!ts.isMethodSignature(declared))
222
- return declaredMembers(declared).map(nodeText);
223
- const parameters = declared.parameters.map(nodeText).join(", ");
224
- return [`(${parameters}) => ${declared.type === undefined ? "void" : nodeText(declared.type)}`];
248
+ return declaredMembers(declared).map(text);
249
+ const parameters = declared.parameters.map(text).join(", ");
250
+ return [`(${parameters}) => ${declared.type === undefined ? "void" : text(declared.type)}`];
225
251
  });
226
252
  // each branch's members once, in the order the branches write them
227
253
  const unique = [...new Set(texts)];
228
254
  return unique.length === 0 ? undefined : unique.join(" | ");
229
255
  };
256
+ /**
257
+ * A prop's type as the source writes it, or none for the checker's: a text naming a type parameter the component
258
+ * instantiates (`value: TValue` in `BaseProps<string>`) says less than the checker's `string`.
259
+ *
260
+ * @param declared - the prop's declared types.
261
+ * @param generic - the checker and the bindings when the prop's type is still generic.
262
+ * @param checker - the program's checker.
263
+ */
264
+ const writtenText = (declared, generic, checker) => generic === undefined && usesTypeParameter(declared, checker)
265
+ ? undefined
266
+ : writtenTypeText(declared, generic);
230
267
  /**
231
268
  * An event's signature as the source writes it: a function type among the prop's declared members, or a method.
232
269
  *
233
270
  * @param declaredTypes - the event prop's declared type nodes.
271
+ * @param generic - the checker and the bindings when the event's type is still generic, as `writtenTypeText` takes them.
234
272
  * @returns the signature, or none when the source writes none in place (a named handler type).
235
273
  */
236
- const writtenSignature = (declaredTypes) => {
274
+ const writtenSignature = (declaredTypes, generic) => {
237
275
  const nodes = declaredTypes.flatMap((declared) => ts.isMethodSignature(declared) ? [declared] : declaredMembers(declared));
238
276
  const fn = nodes.find((node) => ts.isMethodSignature(node) || ts.isFunctionTypeNode(node));
239
277
  if (fn === undefined)
240
278
  return undefined;
241
279
  return {
242
280
  parameters: fn.parameters.map((parameter) => ({
243
- name: nodeText(parameter.name),
244
- type: parameter.type === undefined ? "unknown" : nodeText(parameter.type)
281
+ name: nodeText(parameter.name, undefined),
282
+ type: parameter.type === undefined ? "unknown" : nodeText(parameter.type, generic)
245
283
  })),
246
- returns: fn.type === undefined ? "void" : nodeText(fn.type)
284
+ returns: fn.type === undefined ? "void" : nodeText(fn.type, generic)
247
285
  };
248
286
  };
249
287
  /** An event's signature. */
@@ -259,20 +297,6 @@ const signatureOf = (type, checker, node) => {
259
297
  returns: checker.typeToString(signature.getReturnType())
260
298
  };
261
299
  };
262
- /** A prop's kind, from its name and its type without `undefined`. */
263
- const kindOf = (name, type, eventName) => {
264
- if (eventName.test(name) && type.getCallSignatures().length > 0)
265
- return "event";
266
- if (type.flags & ts.TypeFlags.Boolean || type.flags & ts.TypeFlags.BooleanLiteral)
267
- return "toggle";
268
- if (literalValues(type) !== undefined)
269
- return "choice";
270
- if (type.flags & ts.TypeFlags.String)
271
- return "text";
272
- if (type.flags & ts.TypeFlags.Number)
273
- return "number";
274
- return "other";
275
- };
276
300
  /** Whether a symbol is declared outside the package (a DOM attribute from React's types). */
277
301
  export const isForeign = (symbol) => (symbol.declarations ?? []).every((declaration) => declaration.getSourceFile().fileName.includes("/node_modules/"));
278
302
  /**
@@ -334,6 +358,22 @@ const groupingOf = (symbol, kind, type, checker, node) => {
334
358
  ...(members === undefined ? {} : { members })
335
359
  };
336
360
  };
361
+ /**
362
+ * A choice's values across the variants' types that declare it, each once, in the order the source writes them.
363
+ *
364
+ * @param kind - the prop's kind: only a choice has values.
365
+ * @param types - its type in each variant, its own first.
366
+ * @param declared - its declared types, for their order.
367
+ * @param checker - the program's checker.
368
+ */
369
+ const choicesOf = (kind, types, declared, checker) => {
370
+ if (kind !== "choice")
371
+ return undefined;
372
+ const lists = types.map(literalValues);
373
+ return lists.every((list) => list !== undefined)
374
+ ? writtenOrderOf(declared, checker)([...new Set(lists.flat())])
375
+ : undefined;
376
+ };
337
377
  /**
338
378
  * One prop's docs.
339
379
  *
@@ -343,23 +383,26 @@ const groupingOf = (symbol, kind, type, checker, node) => {
343
383
  * @param reading - how the framework's props differ from a plain function's; none for a plain prop.
344
384
  */
345
385
  export const propDocs = (symbol, checker, node, reading = {}) => {
346
- const { taken, eventName = EVENT_NAME } = reading;
347
- const type = checker.getNonNullableType(taken?.type ?? checker.getTypeOfSymbolAtLocation(symbol, node));
386
+ const { taken, variants = [] } = reading;
348
387
  const takenNodes = taken?.typeNode === undefined ? [] : [taken.typeNode];
349
- const declared = taken === undefined ? declaredTypesOf(symbol) : takenNodes;
388
+ const declared = taken === undefined ? [symbol, ...variants].flatMap(declaredTypesOf) : takenNodes;
389
+ const { type, variantTypes, isMixed, kind, generic } = typeAndKind(symbol, reading, checker, node);
350
390
  const name = symbol.getName();
351
- const kind = kindOf(name, type, eventName);
352
391
  const defaultValue = tagOf(symbol, checker, "defaultValue");
353
- const checkerChoices = kind === "choice" ? literalValues(type) : undefined;
354
- const choices = checkerChoices === undefined ? undefined : writtenOrder(checkerChoices, declared, checker);
355
- const signature = kind === "event" ? (writtenSignature(declared) ?? signatureOf(type, checker, node)) : undefined;
392
+ const choices = choicesOf(kind, [type, ...variantTypes], declared, checker);
393
+ // what one variant's type says of its values is not true of the others'
394
+ const signature = kind === "event" && !isMixed
395
+ ? (writtenSignature(declared, generic) ?? signatureOf(type, checker, node))
396
+ : undefined;
356
397
  // a node takes a text: the panel can set it as one, which covers labels, titles and children
357
- const canTakeText = kind === "other" && checker.isTypeAssignableTo(checker.getStringType(), type);
398
+ const canTakeText = kind === "other" &&
399
+ [type, ...variantTypes].every((each) => checker.isTypeAssignableTo(checker.getStringType(), each));
400
+ const notes = propTypeNotes(declared, type, checker, generic);
358
401
  return {
359
402
  name,
360
403
  kind,
361
404
  type: choices === undefined
362
- ? (writtenTypeText(declared) ?? checker.typeToString(type))
405
+ ? (writtenText(declared, generic, checker) ?? checker.typeToString(type))
363
406
  : choiceTypeText(choices),
364
407
  description: summaryOf(symbol, checker),
365
408
  isRequired: (symbol.flags & ts.SymbolFlags.Optional) === 0,
@@ -367,7 +410,36 @@ export const propDocs = (symbol, checker, node, reading = {}) => {
367
410
  ...(choices === undefined ? {} : { choices }),
368
411
  ...(signature === undefined ? {} : { signature }),
369
412
  ...(canTakeText ? { canTakeText } : {}),
370
- ...groupingOf(symbol, kind, type, checker, node)
413
+ ...(isMixed
414
+ ? {}
415
+ : {
416
+ ...editingOf(symbol, { kind, type, canTakeText, declared, checker, node }),
417
+ ...groupingOf(symbol, kind, type, checker, node)
418
+ }),
419
+ ...(notes.length === 0 ? {} : { notes })
420
+ };
421
+ };
422
+ /**
423
+ * How a prop's value is edited, beyond its kind: what it looks like, and the tokens its TSDoc asks for.
424
+ *
425
+ * @param symbol - the prop.
426
+ * @param prop - what is known of it.
427
+ */
428
+ const editingOf = (symbol, prop) => {
429
+ const { kind, type, canTakeText, declared, checker, node } = prop;
430
+ const shape = kind === "other"
431
+ ? shapeOfProp(type, canTakeText, {
432
+ checker,
433
+ node,
434
+ order: writtenOrderOf(declared, checker),
435
+ typeText: (member) => writtenTypeText(declaredTypesOf(member)),
436
+ description: (member) => summaryOf(member, checker)
437
+ })
438
+ : undefined;
439
+ const token = tagOf(symbol, checker, "token");
440
+ return {
441
+ ...(shape === undefined ? {} : { shape }),
442
+ ...(token === undefined || token === "" ? {} : { token })
371
443
  };
372
444
  };
373
445
  /** The props whose keys are the component's parts. */
@@ -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[];