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,177 @@
1
+ /**
2
+ * What a prop's value looks like, read from its type: the fields of an object, a list's items, the members of a mixed
3
+ * union, so the panel can draw them and a link's value can be checked against them.
4
+ *
5
+ * @remarks
6
+ * What JSON cannot hold (a function, a class's instance, a node) is a `named` part, which only the source's named values
7
+ * can fill: whether it offers some is known in the page. Types can be recursive and very wide (`CSSProperties`,
8
+ * `HTMLElement`), and every docs answer carries the shape, so a recursive part, a part too deep and a type too wide are
9
+ * `json`, typed by hand: the answer stays small, and the prop can still be set.
10
+ *
11
+ * @module
12
+ */
13
+ import ts from "typescript-6";
14
+ /** The deepest a shape goes before the rest is typed as JSON. */
15
+ const MOST_DEPTH = 4;
16
+ /** The most fields of one object drawn as fields: a wider one is read as JSON (`CSSProperties`). */
17
+ const MOST_FIELDS = 40;
18
+ /** The most parts of one prop's shape: past it the prop is read as JSON, so one prop cannot swell every answer. */
19
+ const MOST_PARTS = 200;
20
+ /** Whether a type is a reference to a tuple, for its element types. */
21
+ const isTupleReference = (type, checker) => checker.isTupleType(type);
22
+ /** A part JSON cannot hold, under its type's name. */
23
+ const namedPart = (type, text, walk) => ({
24
+ kind: "named",
25
+ type: text ?? walk.checker.typeToString(type),
26
+ ...(walk.checker.isTypeAssignableTo(walk.checker.getStringType(), type) ? { canTakeText: true } : {})
27
+ });
28
+ /** Whether a member's type takes `null`, which a story's own value may hold. */
29
+ const holdsNull = (type) => type.isUnion() && type.types.some((member) => (member.flags & ts.TypeFlags.Null) !== 0);
30
+ /** The fields of an object type, in the order its members are declared. */
31
+ const fieldsOf = (type, walk, depth) => type.getProperties().map((member) => {
32
+ const written = walk.checker.getTypeOfSymbolAtLocation(member, walk.node);
33
+ const memberType = walk.checker.getNonNullableType(written);
34
+ const description = walk.description(member);
35
+ return {
36
+ name: member.getName(),
37
+ shape: shapeOfType(memberType, walk, depth + 1, walk.typeText(member)),
38
+ isRequired: (member.flags & ts.SymbolFlags.Optional) === 0,
39
+ ...(holdsNull(written) ? { isNullable: true } : {}),
40
+ ...(description === "" ? {} : { description })
41
+ };
42
+ });
43
+ /** A union's shape: its literals as one choice, `true | false` as one toggle, the rest each its own. */
44
+ const unionShape = (type, walk, depth, text) => {
45
+ const members = type.types.filter((member) => (member.flags & (ts.TypeFlags.Null | ts.TypeFlags.Undefined)) === 0);
46
+ const literals = members.flatMap((member) => member.isStringLiteral() || member.isNumberLiteral() ? [member.value] : []);
47
+ const hasBoolean = members.some((member) => (member.flags & ts.TypeFlags.BooleanLiteral) !== 0);
48
+ // a node, or anything else with a part JSON cannot hold, is one thing to fill, not a choice among its parts: the first
49
+ // such part ends the reading, and the parts after it are not read for nothing
50
+ const others = [];
51
+ for (const member of members) {
52
+ if (member.isStringLiteral() ||
53
+ member.isNumberLiteral() ||
54
+ (member.flags & ts.TypeFlags.BooleanLiteral) !== 0)
55
+ continue;
56
+ const shape = shapeOfType(member, walk, depth + 1, undefined);
57
+ if (shape.kind === "named")
58
+ return namedPart(type, text, walk);
59
+ others.push(shape);
60
+ }
61
+ const shapes = [
62
+ ...(literals.length === 0 ? [] : [{ kind: "choice", values: walk.order(literals) }]),
63
+ ...(hasBoolean ? [{ kind: "boolean" }] : []),
64
+ ...others
65
+ ];
66
+ const [only] = shapes;
67
+ return only !== undefined && shapes.length === 1 ? only : { kind: "union", of: shapes };
68
+ };
69
+ /** Whether a type holds any JSON, as far as the source says: a generic's parameter says nothing either. */
70
+ const isAnyJson = (type) => (type.flags &
71
+ (ts.TypeFlags.Any | ts.TypeFlags.Unknown | ts.TypeFlags.NonPrimitive | ts.TypeFlags.TypeParameter)) !==
72
+ 0;
73
+ /** Whether a type is a text of some form: `string`, a template (`${number}px`), a brand (`string & {}`). */
74
+ const isTextType = (type) => (type.flags & (ts.TypeFlags.String | ts.TypeFlags.TemplateLiteral | ts.TypeFlags.StringMapping)) !== 0 ||
75
+ (type.isIntersection() && type.types.some(isTextType));
76
+ /** Whether a type is the global `Date`, declared by TypeScript's own library, not one of the source's by that name. */
77
+ const isGlobalDate = (type) => {
78
+ const symbol = type.getSymbol();
79
+ const file = symbol?.declarations?.[0]?.getSourceFile().fileName ?? "";
80
+ return symbol?.getName() === "Date" && /[\\/]lib\.[^\\/]*\.d\.ts$/.test(file);
81
+ };
82
+ /** An object type's shape: its fields, or any names, or JSON when it is too wide or already being read. */
83
+ const objectShape = (type, walk, depth, text) => {
84
+ const { checker } = walk;
85
+ // the global `Date`: declared by TypeScript's own library, whatever the source names otherwise
86
+ if (isGlobalDate(type))
87
+ return { kind: "date" };
88
+ // a thing with behaviour is not data (`Date`, `Map`, a class's instance): no value of JSON stands for it
89
+ const hasBehaviour = type
90
+ .getProperties()
91
+ .some((member) => (member.flags & ts.SymbolFlags.Method) !== 0 && (member.flags & ts.SymbolFlags.Optional) === 0);
92
+ if (type.getCallSignatures().length > 0 || type.getConstructSignatures().length > 0 || type.isClass())
93
+ return namedPart(type, text, walk);
94
+ if (walk.open.includes(type) || depth >= MOST_DEPTH)
95
+ return { kind: "json" };
96
+ const inner = { ...walk, open: [...walk.open, type] };
97
+ const element = checker.isArrayType(type) ? type.getNumberIndexType() : undefined;
98
+ if (element !== undefined) {
99
+ return {
100
+ kind: "list",
101
+ of: shapeOfType(checker.getNonNullableType(element), inner, depth + 1, undefined)
102
+ };
103
+ }
104
+ if (isTupleReference(type, checker)) {
105
+ const isFixed = type.target.elementFlags.every((flag) => flag === ts.ElementFlags.Required);
106
+ if (!isFixed)
107
+ return { kind: "json" };
108
+ return {
109
+ kind: "tuple",
110
+ items: checker
111
+ .getTypeArguments(type)
112
+ .map((item) => shapeOfType(checker.getNonNullableType(item), inner, depth + 1, undefined))
113
+ };
114
+ }
115
+ if (hasBehaviour)
116
+ return namedPart(type, text, walk);
117
+ const index = type.getStringIndexType();
118
+ const properties = type.getProperties();
119
+ if (index !== undefined && properties.length === 0) {
120
+ return {
121
+ kind: "record",
122
+ of: shapeOfType(checker.getNonNullableType(index), inner, depth + 1, undefined)
123
+ };
124
+ }
125
+ if (properties.length === 0 || properties.length > MOST_FIELDS)
126
+ return { kind: "json" };
127
+ return { kind: "object", fields: fieldsOf(type, inner, depth) };
128
+ };
129
+ /**
130
+ * A type's shape.
131
+ *
132
+ * @param type - the type, without `undefined` and `null`.
133
+ * @param walk - what the reading carries.
134
+ * @param depth - how deep this part is.
135
+ * @param text - the part's type as the source writes it, when it is known.
136
+ */
137
+ const shapeOfType = (type, walk, depth, text) => {
138
+ walk.count.parts += 1;
139
+ if (walk.count.parts > MOST_PARTS)
140
+ return { kind: "json" };
141
+ if (isAnyJson(type))
142
+ return { kind: "json" };
143
+ if (isTextType(type))
144
+ return { kind: "text" };
145
+ if ((type.flags & ts.TypeFlags.Number) !== 0)
146
+ return { kind: "number" };
147
+ if ((type.flags & ts.TypeFlags.Boolean) !== 0)
148
+ return { kind: "boolean" };
149
+ // one value of a discriminated union (`{ isOk: true; … }`): a toggle would let a reader write the other branch's
150
+ if ((type.flags & ts.TypeFlags.BooleanLiteral) !== 0)
151
+ return { kind: "boolean", only: walk.checker.typeToString(type) === "true" };
152
+ if (type.isStringLiteral() || type.isNumberLiteral())
153
+ return { kind: "choice", values: [type.value] };
154
+ if (type.isUnion())
155
+ return unionShape(type, walk, depth, text);
156
+ // an intersection reads as the object it makes (`Base & { extra: string }`)
157
+ if ((type.flags & ts.TypeFlags.Object) !== 0 || type.isIntersection())
158
+ return objectShape(type, walk, depth, text);
159
+ return namedPart(type, text, walk);
160
+ };
161
+ /**
162
+ * A prop's shape, when it says more than the prop's kind does.
163
+ *
164
+ * @param type - the prop's type, without `undefined` and `null`.
165
+ * @param canTakeText - whether it takes a plain text: its text field stays, rather than JSON for a type that says nothing.
166
+ * @param reading - what reading a shape needs.
167
+ * @returns the shape; none for a prop no JSON value can fill, whose named values the page looks up by its type.
168
+ */
169
+ export const shapeOfProp = (type, canTakeText, reading) => {
170
+ const count = { parts: 0 };
171
+ const shape = shapeOfType(type, { ...reading, open: [], count }, 0, undefined);
172
+ if (shape.kind === "named")
173
+ return undefined;
174
+ if (count.parts > MOST_PARTS)
175
+ return { kind: "json" };
176
+ return shape.kind === "json" && canTakeText ? undefined : shape;
177
+ };
@@ -0,0 +1,17 @@
1
+ /**
2
+ * The component a `.vue`, `.svelte` or `.astro` file is, read from its text with no framework's compiler.
3
+ *
4
+ * @remarks
5
+ * Every pattern here is bounded or a plain search for a marker: this reads every such file of a repository, any of which
6
+ * may be crafted to make a pattern take minutes.
7
+ *
8
+ * @module
9
+ */
10
+ import { type ScannedComponent } from "./componentScan.ts";
11
+ /**
12
+ * The one component of a `.vue`, `.svelte` or `.astro` file, from its text.
13
+ *
14
+ * @param file - its path.
15
+ * @param text - its text.
16
+ */
17
+ export declare const singleFileComponent: (file: string, text: string) => ScannedComponent;
@@ -0,0 +1,83 @@
1
+ /**
2
+ * The component a `.vue`, `.svelte` or `.astro` file is, read from its text with no framework's compiler.
3
+ *
4
+ * @remarks
5
+ * Every pattern here is bounded or a plain search for a marker: this reads every such file of a repository, any of which
6
+ * may be crafted to make a pattern take minutes.
7
+ *
8
+ * @module
9
+ */
10
+ import { codeKey, guidanceOfComment, nameOfFile } from "./componentScan.js";
11
+ /**
12
+ * The comment that documents a single-file component: at the very top, or first thing in its script. A comment further in
13
+ * is about a prop or a helper.
14
+ */
15
+ const leadingComment = (text) => {
16
+ const script = text.indexOf("<script");
17
+ const opened = script === -1 ? -1 : text.indexOf(">", script);
18
+ for (const [from, open, close] of [
19
+ [0, "<!--", "-->"],
20
+ [opened + 1, "/*", "*/"]
21
+ ]) {
22
+ const start = from + (text.slice(from).length - text.slice(from).trimStart().length);
23
+ if (from >= 0 && text.startsWith(open, start)) {
24
+ const end = text.indexOf(close, start);
25
+ if (end !== -1)
26
+ return text.slice(start + open.length, end);
27
+ }
28
+ }
29
+ return undefined;
30
+ };
31
+ /** A text without what stands between each pair of markers. */
32
+ const without = (text, open, close) => {
33
+ let out = "";
34
+ let index = 0;
35
+ for (let start = text.indexOf(open); start !== -1; start = text.indexOf(open, index)) {
36
+ const end = text.indexOf(close, start);
37
+ if (end === -1)
38
+ break;
39
+ out += text.slice(index, start);
40
+ index = end + close.length;
41
+ }
42
+ return out + text.slice(index);
43
+ };
44
+ /** The markup of a single-file component: its template's, or what is left without scripts and styles. */
45
+ const markupOf = (text) => {
46
+ const [open, close] = [text.indexOf("<template"), text.lastIndexOf("</template>")];
47
+ const opened = open === -1 ? -1 : text.indexOf(">", open);
48
+ if (opened !== -1 && close > opened)
49
+ return text.slice(opened + 1, close);
50
+ const plain = without(without(text, "<script", "</script>"), "<style", "</style>");
51
+ return plain.startsWith("---") ? plain.slice(plain.indexOf("---", 3) + 3) : plain;
52
+ };
53
+ /**
54
+ * The one component of a `.vue`, `.svelte` or `.astro` file, from its text.
55
+ *
56
+ * @param file - its path.
57
+ * @param text - its text.
58
+ */
59
+ export const singleFileComponent = (file, text) => {
60
+ const markup = markupOf(text);
61
+ const first = /<([a-zA-Z][\w.-]{0,80})([^<>]{0,2000})>/.exec(markup);
62
+ const classes = /(?<![:\w-])class="([^"]*)"/.exec(first?.[2] ?? "")?.[1] ?? "";
63
+ const defined = /defineProps<\{([^}]{0,5000})\}>/.exec(text)?.[1] ?? "";
64
+ const props = [
65
+ ...[...defined.matchAll(/(\w+)\??\s*:/g)].flatMap((match) => match[1] ?? []),
66
+ ...[...text.matchAll(/export let (\w+)/g)].flatMap((match) => match[1] ?? [])
67
+ ];
68
+ const renders = [...markup.matchAll(/<([A-Z][\w.]*)/g)].flatMap((match) => match[1] ?? []);
69
+ const comment = leadingComment(text);
70
+ return {
71
+ name: nameOfFile(file),
72
+ file,
73
+ line: 1,
74
+ ...(first?.[1] === undefined ? {} : { root: first[1] }),
75
+ props,
76
+ classes: classes.split(/\s+/).filter((each) => each !== ""),
77
+ renders: [...new Set(renders)],
78
+ isExported: true,
79
+ isDefault: true,
80
+ ...guidanceOfComment(comment),
81
+ ...codeKey(text, nameOfFile(file))
82
+ };
83
+ };
@@ -0,0 +1,34 @@
1
+ /**
2
+ * What several readers of source text need: lines by offset, and whether a text is safe to parse.
3
+ *
4
+ * @module
5
+ */
6
+ /**
7
+ * Where each line of a text starts, to find a line by offset without reading from the start each time.
8
+ *
9
+ * @param text - the text.
10
+ */
11
+ export declare const lineStarts: (text: string) => readonly number[];
12
+ /**
13
+ * The line of an offset, from 1.
14
+ *
15
+ * @param starts - where each line starts.
16
+ * @param offset - the offset.
17
+ */
18
+ export declare const lineAt: (starts: readonly number[], offset: number) => number;
19
+ /**
20
+ * Whether a text nests past what a parser and a walk over its tree can take: a crafted file must cost that file, and past
21
+ * this depth the parser itself overflows, which no `catch` can answer. Each kind of bracket counts on its own and never
22
+ * below zero, so closers of another kind or before their openers cancel nothing.
23
+ *
24
+ * @param text - a script.
25
+ */
26
+ export declare const isTooDeep: (text: string) => boolean;
27
+ /**
28
+ * A file's words as an answer may repeat them: what reaches an agent as data, with what can hide text or redraw a terminal
29
+ * taken out, and short.
30
+ *
31
+ * @param text - the words.
32
+ * @param longest - how many characters to keep.
33
+ */
34
+ export declare const plainWords: (text: string, longest: number) => string;
@@ -0,0 +1,72 @@
1
+ /**
2
+ * What several readers of source text need: lines by offset, and whether a text is safe to parse.
3
+ *
4
+ * @module
5
+ */
6
+ /** What opens or closes a level of a script. */
7
+ const NESTING = /<\/|\/>|<[A-Za-z]|[([{)\]}]/g;
8
+ /** What each closer closes. */
9
+ const CLOSES = { ")": "(", "]": "[", "}": "{", "</": "<", "/>": "<" };
10
+ /** How deep a script may nest before it is left out. */
11
+ const MOST_NESTED = 400;
12
+ /**
13
+ * Where each line of a text starts, to find a line by offset without reading from the start each time.
14
+ *
15
+ * @param text - the text.
16
+ */
17
+ export const lineStarts = (text) => {
18
+ const starts = [0];
19
+ for (let at = text.indexOf("\n"); at !== -1; at = text.indexOf("\n", at + 1))
20
+ starts.push(at + 1);
21
+ return starts;
22
+ };
23
+ /**
24
+ * The line of an offset, from 1.
25
+ *
26
+ * @param starts - where each line starts.
27
+ * @param offset - the offset.
28
+ */
29
+ export const lineAt = (starts, offset) => {
30
+ let [low, high] = [0, starts.length - 1];
31
+ while (low < high) {
32
+ const middle = Math.ceil((low + high) / 2);
33
+ if ((starts[middle] ?? 0) <= offset)
34
+ low = middle;
35
+ else
36
+ high = middle - 1;
37
+ }
38
+ return low + 1;
39
+ };
40
+ /** Comments and strings, whose brackets are no nesting. */
41
+ const NOT_CODE = /\/\*[^*]*(?:\*(?!\/)[^*]*)*\*\/|\/\/[^\n]*|"[^"\n]*"|'[^'\n]*'/g;
42
+ /**
43
+ * Whether a text nests past what a parser and a walk over its tree can take: a crafted file must cost that file, and past
44
+ * this depth the parser itself overflows, which no `catch` can answer. Each kind of bracket counts on its own and never
45
+ * below zero, so closers of another kind or before their openers cancel nothing.
46
+ *
47
+ * @param text - a script.
48
+ */
49
+ export const isTooDeep = (text) => {
50
+ const depths = new Map();
51
+ for (const match of text.replace(NOT_CODE, " ").matchAll(NESTING)) {
52
+ const [token = ""] = match;
53
+ const closes = CLOSES[token];
54
+ const kind = closes ?? (token.startsWith("<") ? "<" : token);
55
+ const depth = Math.max(0, (depths.get(kind) ?? 0) + (closes === undefined ? 1 : -1));
56
+ depths.set(kind, depth);
57
+ if (depth > MOST_NESTED)
58
+ return true;
59
+ }
60
+ return false;
61
+ };
62
+ /**
63
+ * A file's words as an answer may repeat them: what reaches an agent as data, with what can hide text or redraw a terminal
64
+ * taken out, and short.
65
+ *
66
+ * @param text - the words.
67
+ * @param longest - how many characters to keep.
68
+ */
69
+ export const plainWords = (text, longest) => {
70
+ const plain = text.replaceAll(/[\p{Cc}\p{Cf}]/gu, " ");
71
+ return plain.length > longest ? `${plain.slice(0, longest)}…` : plain;
72
+ };
@@ -42,6 +42,13 @@ export type SourceTokens = {
42
42
  * @param text - the module's text.
43
43
  */
44
44
  export declare const declaredSource: (file: string, text: string) => DeclaredSource;
45
+ /**
46
+ * Whether a path, its links followed where it exists, is inside a folder.
47
+ *
48
+ * @param root - the folder.
49
+ * @param path - the path.
50
+ */
51
+ export declare const isInside: (root: string, path: string) => boolean;
45
52
  /**
46
53
  * What the source in a module gives, its paths absolute.
47
54
  *
@@ -104,8 +104,13 @@ const packageRoot = (file) => {
104
104
  }
105
105
  return start;
106
106
  };
107
- /** Whether a path, its links followed where it exists, is inside a folder. */
108
- const isInside = (root, path) => {
107
+ /**
108
+ * Whether a path, its links followed where it exists, is inside a folder.
109
+ *
110
+ * @param root - the folder.
111
+ * @param path - the path.
112
+ */
113
+ export const isInside = (root, path) => {
109
114
  const real = (each) => (existsSync(each) ? realpathSync(each) : each);
110
115
  const fromRoot = relative(real(root), real(path));
111
116
  return fromRoot !== ".." && !fromRoot.startsWith(`..${sep}`) && !isAbsolute(fromRoot);
@@ -0,0 +1,49 @@
1
+ /**
2
+ * A story error's stack with the lines of the files as written: the dev server maps each place the browser names
3
+ * through the source map of the module it served there.
4
+ *
5
+ * @remarks
6
+ * A browser writes a stack in the lines of the code it ran, which Vite transformed (types taken out, JSX turned into
7
+ * calls, imports rewritten), so a throw on line 3 of a story file reads as line 19. Devtools map them; the text of
8
+ * `error.stack` a frame shows does not. The dev server already holds each module's map, so the frame sends the stack
9
+ * and gets it back mapped: no decoder or map is loaded in the frame. Only places in a module the server served and
10
+ * whose map points back to that module's own file are rewritten; the rest (a prebundled dependency, the browser's own
11
+ * code) stay as they were. Used by the plugin for a frame's live error (`liveErrors.ts`).
12
+ *
13
+ * @module
14
+ */
15
+ /** A module the dev server served, as the mapping needs it. */
16
+ export type ServedModule = {
17
+ /** Its file, as Vite writes ids. */
18
+ readonly file: string;
19
+ /** The map from the code served to its file. */
20
+ readonly map: {
21
+ readonly version: number;
22
+ readonly sources: readonly string[];
23
+ readonly names: readonly string[];
24
+ readonly mappings: string;
25
+ };
26
+ };
27
+ /** Finds the module served at an address: none when the server served nothing there, or keeps no map of it. */
28
+ export type ModuleLookup = (url: string) => Promise<ServedModule | undefined>;
29
+ /** A stack with its places mapped. */
30
+ export type MappedStack = {
31
+ /** The stack, each place it could map in the lines of the file as written. */
32
+ readonly stack: string;
33
+ /**
34
+ * The first mapped place outside `node_modules`, as `file:line:column` with the file relative to the project:
35
+ * most often the line of the story or component that threw. None when no place could be mapped.
36
+ */
37
+ readonly place?: string;
38
+ };
39
+ /** The longest stack mapped, in characters: a frame reports its own errors, yet the connection takes any text. */
40
+ export declare const MAX_STACK_LENGTH = 16000;
41
+ /**
42
+ * Maps a stack's places to the lines of their files as written.
43
+ *
44
+ * @param stack - the stack, as the browser wrote it.
45
+ * @param lookup - finds the module served at an address.
46
+ * @param root - the project's folder, which `place` is written relative to.
47
+ * @returns the stack mapped, and its first place in the project; the stack as it was past `MAX_STACK_LENGTH`.
48
+ */
49
+ export declare const mappedStack: (stack: string, lookup: ModuleLookup, root: string) => Promise<MappedStack>;
@@ -0,0 +1,96 @@
1
+ /**
2
+ * A story error's stack with the lines of the files as written: the dev server maps each place the browser names
3
+ * through the source map of the module it served there.
4
+ *
5
+ * @remarks
6
+ * A browser writes a stack in the lines of the code it ran, which Vite transformed (types taken out, JSX turned into
7
+ * calls, imports rewritten), so a throw on line 3 of a story file reads as line 19. Devtools map them; the text of
8
+ * `error.stack` a frame shows does not. The dev server already holds each module's map, so the frame sends the stack
9
+ * and gets it back mapped: no decoder or map is loaded in the frame. Only places in a module the server served and
10
+ * whose map points back to that module's own file are rewritten; the rest (a prebundled dependency, the browser's own
11
+ * code) stay as they were. Used by the plugin for a frame's live error (`liveErrors.ts`).
12
+ *
13
+ * @module
14
+ */
15
+ import { SourceMap } from "node:module";
16
+ import { fileURLToPath } from "node:url";
17
+ import { VITE_PATHS } from "./vitePaths.js";
18
+ /** The longest stack mapped, in characters: a frame reports its own errors, yet the connection takes any text. */
19
+ export const MAX_STACK_LENGTH = 16_000;
20
+ /** The most places of one stack looked up. */
21
+ const MAX_PLACES = 50;
22
+ /**
23
+ * A place in a stack: an address, then its line and column, in Chrome's (`(http://…:19:9)`), Firefox's and Safari's
24
+ * (`render@http://…:19:9`) forms.
25
+ */
26
+ const PLACE = /(https?:\/\/[^\s()]+?):(\d+):(\d+)(?=\)|\s|$)/g;
27
+ /**
28
+ * A source of a map as a path Vite writes: a map may name it absolute, as a `file:` address, or relative to the file.
29
+ *
30
+ * @param source - the source as the map names it.
31
+ * @param file - the module's file.
32
+ */
33
+ const sourcePath = (source, file) => {
34
+ if (source.startsWith("file:"))
35
+ return VITE_PATHS.normalize(fileURLToPath(source));
36
+ // an absolute source is taken as written: resolving it would give a path with no drive one on Windows
37
+ if (VITE_PATHS.isAbsolute(source))
38
+ return VITE_PATHS.normalize(source);
39
+ return VITE_PATHS.resolve(VITE_PATHS.dirname(file), source);
40
+ };
41
+ /**
42
+ * Where a place of the served code was written, in its module's own file: none when the map does not lead there.
43
+ *
44
+ * @param module - the module served at the place's address.
45
+ * @param line - the line in the code served, from 1.
46
+ * @param column - the column in the code served, from 1.
47
+ */
48
+ const originOf = (module, line, column) => {
49
+ const map = new SourceMap({
50
+ file: module.file,
51
+ version: module.map.version,
52
+ sources: [...module.map.sources],
53
+ sourcesContent: [],
54
+ names: [...module.map.names],
55
+ mappings: module.map.mappings,
56
+ sourceRoot: ""
57
+ });
58
+ const origin = map.findOrigin(line, column);
59
+ if (!("lineNumber" in origin))
60
+ return undefined;
61
+ if (sourcePath(origin.fileName, module.file) !== module.file)
62
+ return undefined;
63
+ return { line: origin.lineNumber, column: origin.columnNumber };
64
+ };
65
+ /**
66
+ * Maps a stack's places to the lines of their files as written.
67
+ *
68
+ * @param stack - the stack, as the browser wrote it.
69
+ * @param lookup - finds the module served at an address.
70
+ * @param root - the project's folder, which `place` is written relative to.
71
+ * @returns the stack mapped, and its first place in the project; the stack as it was past `MAX_STACK_LENGTH`.
72
+ */
73
+ export const mappedStack = async (stack, lookup, root) => {
74
+ if (stack.length > MAX_STACK_LENGTH)
75
+ return { stack };
76
+ const places = [...stack.matchAll(PLACE)].slice(0, MAX_PLACES);
77
+ const urls = [...new Set(places.map((match) => match[1] ?? ""))];
78
+ const found = await Promise.all(urls.map(async (url) => [url, await lookup(url)]));
79
+ const modules = new Map(found);
80
+ let place;
81
+ let mapped = "";
82
+ let from = 0;
83
+ for (const match of places) {
84
+ const [whole, url = "", line = "", column = ""] = match;
85
+ const module = modules.get(url);
86
+ const origin = module === undefined ? undefined : originOf(module, Number(line), Number(column));
87
+ if (module === undefined || origin === undefined)
88
+ continue;
89
+ mapped += `${stack.slice(from, match.index)}${url}:${origin.line}:${origin.column}`;
90
+ from = match.index + whole.length;
91
+ if (place === undefined && !module.file.includes("/node_modules/"))
92
+ place = `${VITE_PATHS.relative(root, module.file)}:${origin.line}:${origin.column}`;
93
+ }
94
+ mapped += stack.slice(from);
95
+ return place === undefined ? { stack: mapped } : { stack: mapped, place };
96
+ };
@@ -1,14 +1,29 @@
1
1
  /**
2
- * The code a story shows in the catalogue's Code card: each story's `render` as written in its file, read with Vite's
3
- * parser, never run.
2
+ * The code a story shows in the catalogue's Code card, read from its file with Vite's parser, never run: each story's
3
+ * `render` as written, and for a story drawn from its args, each arg the file writes as code.
4
4
  *
5
5
  * @remarks
6
- * A story without a `render` draws the meta's component with its args: the shell writes that JSX itself from the args
7
- * of the moment, so only the stories with a `render` need their text. A `render` written elsewhere (a helper the
8
- * story points to) shows as the name it is given, which is what the file says.
6
+ * A story's render is its own, else the meta's; a story written as a function (CSF 2), or bound from one
7
+ * (`Template.bind({})`), is its render. A render kept in a constant or a function of the file shows as that code; one
8
+ * imported from another file shows as its name, which is what the file says.
9
+ *
10
+ * A story without a render draws the meta's component with its args, and the shell writes that component in the
11
+ * framework's code from the args of the moment. Only plain data crosses from the frame, so a function, an element or
12
+ * any other code would be missing: this module gives the text of each such arg as written (`icon: <IconStar />`,
13
+ * `onClick: fn()`), the meta's args under the story's, following spreads of the file's constants and of another
14
+ * story's args. A plain literal is left to the value the frame reports, which is the same; a constant of the file is
15
+ * written by its value, an import by its name. What a spread or a value it cannot read may replace is forgotten, so
16
+ * the shell writes it from the value, never from a text the story does not draw. Pure: text in, texts out.
9
17
  *
10
18
  * @module
11
19
  */
20
+ /** A story file's code: each story's render, and each args story's args written as code. */
21
+ export type StoryFileCodeRead = {
22
+ /** Each story's render as written, by export name. */
23
+ readonly renders: Readonly<Record<string, string>>;
24
+ /** Each args story's args written as code, by export name then arg; a story with none is left out. */
25
+ readonly args: Readonly<Record<string, Readonly<Record<string, string>>>>;
26
+ };
12
27
  /**
13
28
  * Removes from every line past the first the indentation of the line the code starts on, so a `render` reads as if
14
29
  * written at the left edge.
@@ -18,10 +33,10 @@
18
33
  */
19
34
  export declare const dedented: (text: string, indent: number) => string;
20
35
  /**
21
- * Each story's `render` text in a story file.
36
+ * Each story's code in a story file: its render as written, or its args written as code.
22
37
  *
23
38
  * @param file - the file's path, for the parser (its extension decides TypeScript and JSX) and the messages.
24
39
  * @param text - the file's source.
25
40
  * @returns the texts by export name, or a message saying why the file cannot be read.
26
41
  */
27
- export declare const storyCode: (file: string, text: string) => Readonly<Record<string, string>> | string;
42
+ export declare const storyCode: (file: string, text: string) => StoryFileCodeRead | string;