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
@@ -18,6 +18,7 @@ import { LOAD_RELOADS_KEY } from "../frame/staleModule.js";
18
18
  import { PREVIEWS_EVENT } from "../hotModules.js";
19
19
  import { PLAY_TOOLS_PACKAGES } from "./configFile.js";
20
20
  import { pluginFrameModule } from "./pluginConfig.js";
21
+ import { refsLines } from "./refsConfig.js";
21
22
  import { DOCS_PAGES_SPECIFIER_PREFIX, FILES_SPECIFIER_PREFIX, storyFilesGroupText } from "./storyFilesModule.js";
22
23
  import { HOME_QUERY } from "./textQueries.js";
23
24
  import { VITE_PATHS } from "./vitePaths.js";
@@ -27,6 +28,8 @@ export const PAGE_FILES = ["index.html", "frame.html"];
27
28
  export const CONFIG_MODULE = "virtual:forgebook/config";
28
29
  /** The module the shell reads the design tokens from, imported on first use: a page that shows none never loads it. */
29
30
  export const TOKENS_MODULE = "virtual:forgebook/tokens";
31
+ /** The previews of the catalogue's galleries, with each picture's address: loaded when a gallery first opens. */
32
+ export const SWITCH_PREVIEWS_MODULE = "virtual:forgebook/switch-previews";
30
33
  /**
31
34
  * The entries the pages load, by page: file names in the configuration's folder, never written to disk. Named as
32
35
  * files rather than virtual modules because the build names a page's chunk and its style sheet after its entry, and a
@@ -80,6 +83,18 @@ export const pageModuleOf = (path, dir, paths = VITE_PATHS) => {
80
83
  * @param text - the text.
81
84
  */
82
85
  const escaped = (text) => text.replace(/[&<>"]/g, (character) => `&#${character.charCodeAt(0)};`);
86
+ /**
87
+ * A script as the page carries it: each line without its indent, and the lines that only comment left out. Every
88
+ * frame of a catalogue loads it, and a build counts it in every frame page it writes; the source keeps its indents and
89
+ * comments for whoever reads it.
90
+ *
91
+ * @param script - the script, one statement or brace per line, no string that spans lines.
92
+ */
93
+ const compactScript = (script) => script
94
+ .split("\n")
95
+ .map((line) => line.trim())
96
+ .filter((line) => line !== "" && !line.startsWith("//"))
97
+ .join("\n");
83
98
  /**
84
99
  * What a frame shows when its code fails before the frame starts: a preview or a source that throws while it loads, or
85
100
  * a module that cannot be loaded at all. The frame's own code never runs then, so without this the frame stays blank
@@ -189,25 +204,86 @@ export const pageHtml = (page, config, placement) => [
189
204
  " </head>",
190
205
  " <body>",
191
206
  ' <div id="root"></div>',
192
- ...(page === "frame.html" ? [` <script>${frameLoadGuard(placement)}</script>`] : []),
207
+ ...(page === "frame.html" ? [` <script>${compactScript(frameLoadGuard(placement))}</script>`] : []),
193
208
  ` <script type="module" src="/${PAGE_ENTRIES[page]}"></script>`,
194
209
  " </body>",
195
210
  "</html>",
196
211
  ""
197
212
  ].join("\n");
213
+ /**
214
+ * A switch as the pages read it from the configuration's data: without its values' previews and sheets, which the
215
+ * pages' entries import by themselves, so each first load carries no more than a name for what it may never fetch.
216
+ *
217
+ * @param each - the switch.
218
+ */
219
+ const pageSwitch = (each) => ({
220
+ ...each,
221
+ values: each.values.map(({ preview: _preview, sheet: _sheet, ...value }) => value)
222
+ });
223
+ /**
224
+ * An import of a file for its address alone. Never inlined, whatever its size: a small file's bytes would otherwise
225
+ * land in the page that imports it, in the first load of a catalogue that may never draw it.
226
+ *
227
+ * @param name - the imported name.
228
+ * @param file - the file's path.
229
+ */
230
+ const addressImport = (name, file) => `import ${name} from ${codeLiteral(`${file}?url&no-inline`)};`;
231
+ /**
232
+ * The module of the galleries' previews: by switch id then value, with each picture's address.
233
+ *
234
+ * @param config - the configuration.
235
+ */
236
+ export const switchPreviewsModule = (config) => {
237
+ const imports = [];
238
+ const switches = (config.switches ?? []).flatMap((each) => {
239
+ const values = each.values.flatMap(({ value, preview }) => {
240
+ if (preview === undefined)
241
+ return [];
242
+ if (!("image" in preview)) {
243
+ // only the checked fields: serialising the object itself would let a `toJSON` write what was not checked
244
+ const { swatches, font } = preview;
245
+ return [`${codeLiteral(value)}: ${codeLiteral({ swatches: [...swatches], font })}`];
246
+ }
247
+ const name = `picture${imports.length}`;
248
+ imports.push(addressImport(name, preview.image));
249
+ return [`${codeLiteral(value)}: { image: ${name} }`];
250
+ });
251
+ return values.length === 0 ? [] : [`${codeLiteral(each.id)}: { ${values.join(", ")} }`];
252
+ });
253
+ return [...imports, `export default { ${switches.join(", ")} };`, ""].join("\n");
254
+ };
255
+ /**
256
+ * The imports of the switches' values' sheets, and the frame's list of their addresses.
257
+ *
258
+ * @param config - the configuration.
259
+ */
260
+ const valueSheetsCode = (config) => {
261
+ const imports = [];
262
+ const list = (config.switches ?? []).flatMap((each) => each.values.flatMap(({ value, sheet }) => {
263
+ if (sheet === undefined)
264
+ return [];
265
+ const name = `valueSheet${imports.length}`;
266
+ imports.push(addressImport(name, sheet));
267
+ return [`${codeLiteral(`${each.id}=${value}`)}: ${name}`];
268
+ }));
269
+ return { imports, list };
270
+ };
198
271
  /**
199
272
  * The configuration's data, as the pages' module exports it.
200
273
  *
201
274
  * @param config - the configuration.
202
275
  * @param frames - where the frames run: known on the dev server once both of its ports listen.
203
276
  */
204
- export const configModule = (config, frames) => {
277
+ export const configModule = (config, frames, isServing) => {
205
278
  const data = {
206
279
  title: config.title,
207
280
  heights: config.heights,
208
- switches: config.switches,
281
+ switches: config.switches?.map(pageSwitch),
282
+ // only a dev server draws a home with no story: a built catalogue carries nothing of the project's layout
283
+ ...(isServing ? { storyGlobs: config.stories } : {}),
209
284
  languages: config.languages,
210
- lists: config.lists,
285
+ // a reader of published docs did not ask for a story to play; a dev server's author did
286
+ lists: isServing ? config.lists : { play: "off", ...config.lists },
211
287
  frames
212
288
  };
213
289
  return `export default ${codeLiteral(data)};`;
@@ -277,6 +353,32 @@ const pluginViewLines = (config) => {
277
353
  ` pluginHosts: () => import(${codeLiteral(PLUGIN_HOSTS_MODULE)}).then((module) => module.pluginHosts),`
278
354
  ];
279
355
  };
356
+ /**
357
+ * The shell's list of the custom controls, each with the import that loads it when a story names it; nothing for a
358
+ * catalogue without any, whose entry is then what it would be with no such feature.
359
+ *
360
+ * @param config - the configuration.
361
+ */
362
+ const argControlLines = (config) => {
363
+ const controls = Object.entries(config.argControls);
364
+ return controls.length === 0
365
+ ? []
366
+ : [
367
+ " argControls: {",
368
+ ...controls.map(([name, { module }]) => ` ${codeLiteral(name)}: () => import(${codeLiteral(module)}),`),
369
+ " },"
370
+ ];
371
+ };
372
+ /**
373
+ * The frame's list of the custom controls' frame modules, each with the import that loads it when the shell first gives
374
+ * the story a value of that control; nothing for a catalogue whose controls have none.
375
+ *
376
+ * @param config - the configuration.
377
+ */
378
+ const argControlFrameLines = (config) => {
379
+ const frames = Object.entries(config.argControls).flatMap(([name, { frame }]) => frame === undefined ? [] : [` ${codeLiteral(name)}: () => import(${codeLiteral(frame)}),`]);
380
+ return frames.length === 0 ? [] : [" argControls: {", ...frames, " },"];
381
+ };
280
382
  /**
281
383
  * The shell's entry: the shell mounted with the configuration's data, the logo, the sources and the code writer.
282
384
  *
@@ -300,12 +402,15 @@ export const shellEntry = (config) => {
300
402
  ...(config.heights === undefined ? [] : [" heights: config.heights,"]),
301
403
  ...(config.home === undefined ? [] : [` home: ${writtenHomeCode(config.home)},`]),
302
404
  ` sources: ${sources.list},`,
405
+ ...(config.stories.length === 0 ? [] : [" storyGlobs: config.storyGlobs,"]),
303
406
  ' frameUrl: "frame.html",',
304
407
  " frames: config.frames,",
305
408
  " languages: config.languages,",
306
409
  ...(config.switches === undefined ? [] : [" switches: config.switches,"]),
307
410
  " lists: config.lists,",
411
+ ...refsLines(config),
308
412
  ...pluginViewLines(config),
413
+ ...argControlLines(config),
309
414
  ...(config.framework.addressTexts === undefined
310
415
  ? []
311
416
  : [` addressTexts: ${codeLiteral(config.framework.addressTexts)},`]),
@@ -313,6 +418,12 @@ export const shellEntry = (config) => {
313
418
  ...(config.tokens.length === 0 && config.sources.length === 0
314
419
  ? []
315
420
  : [` loadTokens: () => import(${codeLiteral(TOKENS_MODULE)}).then((module) => module.default),`]),
421
+ // only for a catalogue with previews: the others' first load carries not even the way to them
422
+ ...(config.switches?.some((each) => each.values.some((value) => value.preview !== undefined))
423
+ ? [
424
+ ` loadSwitchPreviews: () => import(${codeLiteral(SWITCH_PREVIEWS_MODULE)}).then((module) => module.default),`
425
+ ]
426
+ : []),
316
427
  " codeOf",
317
428
  " });",
318
429
  ""
@@ -356,6 +467,7 @@ const previewsHot = (previews) => previews.length === 0
356
467
  * found, which leaves the card to say so.
357
468
  */
358
469
  export const frameEntry = (config, axe) => {
470
+ const valueSheets = valueSheetsCode(config);
359
471
  const sources = sourcesCode(config);
360
472
  const frames = config.plugins.flatMap((plugin) => {
361
473
  const frame = pluginFrameModule(plugin, config.framework.name);
@@ -366,6 +478,7 @@ export const frameEntry = (config, axe) => {
366
478
  `import config from ${codeLiteral(CONFIG_MODULE)};`,
367
479
  ...(axe?.imports ?? []),
368
480
  ...sources.imports,
481
+ ...valueSheets.imports,
369
482
  ...config.previews.map((file, index) => `import * as preview${index} from ${codeLiteral(file)};`),
370
483
  ...frames.map((plugin, index) => `import { frame as pluginFrame${index} } from ${codeLiteral(plugin.frame)};`),
371
484
  'const root = document.getElementById("root");',
@@ -375,9 +488,11 @@ export const frameEntry = (config, axe) => {
375
488
  ...(axe === undefined ? [] : [` axeUrl: ${axe.value},`]),
376
489
  " languages: config.languages,",
377
490
  ...(config.switches === undefined ? [] : [" switches: config.switches,"]),
491
+ ...(valueSheets.list.length === 0 ? [] : [` valueSheets: { ${valueSheets.list.join(", ")} },`]),
378
492
  " lists: config.lists,",
379
493
  " frames: config.frames,",
380
494
  ...(config.hasPlayTools ? [playToolsLoader()] : []),
495
+ ...argControlFrameLines(config),
381
496
  ...(frames.length === 0
382
497
  ? []
383
498
  : [
@@ -101,6 +101,10 @@ const shapeProblem = (plugin) => {
101
101
  ];
102
102
  if (named.some((name) => typeof name !== "string"))
103
103
  return `the plugin "${plugin.id}" adds something with no id`;
104
+ // a configuration is not type-checked: what a value brings stays the catalogue's to declare
105
+ const isOverreaching = (plugin.switches ?? []).some((each) => (each.values ?? []).some((value) => ["implies", "preview", "sheet"].some((key) => key in value)));
106
+ if (isOverreaching)
107
+ return `the plugin "${plugin.id}" gives a switch's value implies, preview or sheet: those are the catalogue's`;
104
108
  const { frame } = plugin;
105
109
  const isFrame = frame === undefined || typeof frame === "string" || (typeof frame === "object" && frame !== null);
106
110
  return isFrame ? undefined : `the plugin "${plugin.id}" names a frame that is no specifier`;
@@ -40,3 +40,5 @@ export declare const namesGroup: (code: string) => boolean;
40
40
  export declare const CONFIG_ID = "\0virtual:forgebook/config";
41
41
  /** The resolved id of the design tokens' module. */
42
42
  export declare const TOKENS_ID = "\0virtual:forgebook/tokens";
43
+ /** The resolved id of the galleries' previews. */
44
+ export declare const SWITCH_PREVIEWS_ID = "\0virtual:forgebook/switch-previews";
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * @module
6
6
  */
7
- import { CONFIG_MODULE, TOKENS_MODULE } from "./pages.js";
7
+ import { CONFIG_MODULE, SWITCH_PREVIEWS_MODULE, TOKENS_MODULE } from "./pages.js";
8
8
  import { FILES_PREFIX } from "./pluginModules.js";
9
9
  import { DOCS_PAGES_SPECIFIER_PREFIX, FILES_SPECIFIER_PREFIX, GROUP_SEPARATOR, PAGES_SEARCH_PREFIX, REACH_PREFIX, SEARCH_PREFIX, storyFilesGroupText, TEXTS_PREFIX, USAGE_PREFIX } from "./storyFilesModule.js";
10
10
  /** The query that asks for the story files a pattern matches (`../src/**\/*.stories.tsx?forgebook-files`). */
@@ -61,6 +61,8 @@ export const virtualId = (source) => {
61
61
  return CONFIG_ID;
62
62
  if (source === TOKENS_MODULE)
63
63
  return TOKENS_ID;
64
+ if (source === SWITCH_PREVIEWS_MODULE)
65
+ return SWITCH_PREVIEWS_ID;
64
66
  return VIRTUAL_PREFIXES.some((prefix) => source.startsWith(prefix)) ? `\0${source}` : undefined;
65
67
  };
66
68
  /**
@@ -97,3 +99,5 @@ export const namesGroup = (code) => [FILES_QUERY, DOCS_PAGES_QUERY, ...VIRTUAL_P
97
99
  export const CONFIG_ID = `\0${CONFIG_MODULE}`;
98
100
  /** The resolved id of the design tokens' module. */
99
101
  export const TOKENS_ID = `\0${TOKENS_MODULE}`;
102
+ /** The resolved id of the galleries' previews. */
103
+ export const SWITCH_PREVIEWS_ID = `\0${SWITCH_PREVIEWS_MODULE}`;
@@ -8,10 +8,12 @@
8
8
  *
9
9
  * @module
10
10
  */
11
+ import type { ViteDevServer } from "vite";
12
+ import type { ResolvedConfig } from "./configFile.ts";
11
13
  import type { DiskCache } from "./diskCache.ts";
12
14
  import type { DocsExtractor, DocsResult } from "./docsExtractor.ts";
13
15
  import type { PackJson } from "./packedModule.ts";
14
- import { type GroupLoaders, type IndexedStoryFile, type IsFileKept, type KeptIndex } from "./storyFilesModule.ts";
16
+ import { type GroupLoaders, type IndexedStoryFile, type IsFileKept, type KeptIndex, type RefusedStoryFile } from "./storyFilesModule.ts";
15
17
  /**
16
18
  * The id of a group of story files' module: virtual, with the declaring module's folder and the patterns after it,
17
19
  * whether a `?forgebook-files` import or the group's specifier (`FILES_SPECIFIER_PREFIX`) names it.
@@ -52,38 +54,99 @@ export declare const docsModule: (component: DocsResult, watch: (file: string) =
52
54
  * @param watch - adds a file whose edit renews the module (each story file).
53
55
  * @param loaders - the group's loaders besides its story files'.
54
56
  * @param cache - the pattern's index kept between starts; none reads every file.
55
- * @param warm - starts reading the docs of a story file ahead of its request; none in a test run.
57
+ * @param warm - starts reading the docs of the group's story files ahead of their requests; none in a test run.
56
58
  * @param startTexts - a build's: starts reading the files' docs, code and pages, which the module imports from the
57
59
  * group's texts module (`builtTexts.ts`); none imports each from its query.
58
60
  * @param isKept - whether a listed file may be read; every one by default.
59
- * @throws when a story file cannot be indexed.
61
+ * @param isForgiving - whether a file that cannot be indexed is named among the catalogue's problems while the others
62
+ * draw (a person at a dev server), rather than failing the module (a build, a test run).
63
+ * @param catalogue - the catalogue, whose previews' tags every story takes; none has none.
64
+ * @param scriptProblems - the project's scripts that do not parse, named among the catalogue's problems with the files
65
+ * that cannot be indexed (`scriptProblems.ts`), where those are (a dev server); none by default.
66
+ * @throws when a story file cannot be indexed, unless it is forgiven.
60
67
  */
61
- export declare const patternModule: (id: string, watch: (file: string) => void, loaders: GroupLoaders, cache: DiskCache<KeptIndex> | undefined, warm: ((storyFile: string) => void) | undefined, startTexts?: (files: readonly IndexedStoryFile[]) => void, isKept?: IsFileKept) => {
68
+ export declare const patternModule: (id: string, watch: (file: string) => void, loaders: GroupLoaders, cache: DiskCache<KeptIndex> | undefined, warm: ((storyFiles: readonly string[]) => void) | undefined, startTexts?: (files: readonly IndexedStoryFile[]) => void, isKept?: IsFileKept, isForgiving?: boolean, catalogue?: {
69
+ readonly previews: readonly string[];
70
+ }, scriptProblems?: readonly string[]) => {
62
71
  code: string;
63
72
  moduleType: "js";
64
73
  files: readonly IndexedStoryFile[];
74
+ refused: readonly RefusedStoryFile[];
65
75
  };
66
76
  /**
67
- * Whether a story file added or removed changes what a group of story files lists: listed now and not when its module
68
- * was served, or the other way round. A file no pattern lists, or one a `!` pattern leaves out, changes nothing, so
69
- * the pages need no reload for it.
77
+ * The versions of a group's module served since the pages last reloaded: a page holds one of them, or loads the module
78
+ * after the next change.
79
+ */
80
+ export type ServedListings = {
81
+ /** The files any of those versions listed. */
82
+ readonly some: ReadonlySet<string>;
83
+ /** The files every one of them listed; none when no version was served since. */
84
+ readonly every: ReadonlySet<string> | undefined;
85
+ };
86
+ /**
87
+ * Whether a story file added or removed changes what a page may hold of a group of story files: listed now and missing
88
+ * from a version served since the pages last reloaded, or gone and listed by one. A file no pattern lists, or one a
89
+ * `!` pattern leaves out, changes nothing, so the pages need no reload for it.
90
+ *
91
+ * @remarks
92
+ * The module's last version is no measure: another reader (a second tab, a frame, the agents' API) may load it again
93
+ * between the change on the disk and the file's event, and a page that loaded it before would then never reload. A
94
+ * branch switch makes that window wide, as its events arrive after the files are written. Every version since the last
95
+ * reload counts, and no earlier one: that reload renewed the pages that held those.
70
96
  *
71
97
  * @param id - the group's module's id (`FILES_PREFIX`, then the group).
72
- * @param listed - the files its module listed when served, absolute in Vite's form; none when it could not be made.
98
+ * @param served - the versions served since the pages last reloaded; none when the module could not be made.
73
99
  * @param file - the file added or removed.
74
100
  * @param isKept - whether a listed file may be read; every one by default.
75
101
  */
76
- export declare const isListingChanged: (id: string, listed: ReadonlySet<string> | undefined, file: string, isKept?: IsFileKept) => boolean;
102
+ export declare const isListingChanged: (id: string, served: ServedListings | undefined, file: string, isKept?: IsFileKept) => boolean;
103
+ /**
104
+ * A docs pages' module, when the id is a pattern's, a page's or the written home's. The Markdown reader loads with the
105
+ * first: a catalogue may have no docs pages, and a story's page reads none.
106
+ *
107
+ * @param id - the module's id.
108
+ * @param watch - adds a file whose edit renews the module.
109
+ * @param isServing - whether a dev server runs.
110
+ * @param plugins - the catalogue's plugins, whose fences a page may draw.
111
+ * @param isKept - whether a page its group lists may be read.
112
+ */
113
+ export declare const docsModuleOf: (id: string, watch: (file: string) => void, isServing: boolean, plugins: ResolvedConfig["plugins"], isKept: IsFileKept) => Promise<{
114
+ code: string;
115
+ moduleType: "js";
116
+ } | undefined>;
117
+ /**
118
+ * Makes a group's module and adds the version to those served since the pages last reloaded (`isListingChanged`).
119
+ * While it is made, and when making it fails, the list is unknown.
120
+ *
121
+ * @param listings - the groups' modules, with the versions served.
122
+ * @param id - the group's module's id.
123
+ * @param make - makes the module.
124
+ * @returns the module made.
125
+ */
126
+ export declare const keptListing: <TModule extends {
127
+ readonly files: readonly {
128
+ readonly file: string;
129
+ }[];
130
+ readonly refused: readonly {
131
+ readonly file: string;
132
+ }[];
133
+ }>(listings: Map<string, ServedListings | undefined>, id: string, make: () => TModule) => TModule;
134
+ /**
135
+ * Forgets the versions served before a reload the pages were sent: each page loads the module again.
136
+ *
137
+ * @param listings - the groups' modules, with the versions served.
138
+ */
139
+ export declare const pagesReloaded: (listings: Map<string, ServedListings | undefined>) => void;
77
140
  /**
78
141
  * The modules a story file added or removed renews: the groups whose list it changes (`isListingChanged`) and, with
79
142
  * them, the modules that read their files; none when it changes no list.
80
143
  *
81
- * @param served - the groups' modules, with the files each listed when served.
144
+ * @param served - the groups' modules, with the versions served since the pages last reloaded.
82
145
  * @param file - the file added or removed.
83
146
  * @param readers - the modules that read the groups' files: their "Used in" and search indexes.
84
147
  * @param isKept - whether a listed file may be read; every one by default.
85
148
  */
86
- export declare const listingRenewals: (served: ReadonlyMap<string, ReadonlySet<string> | undefined>, file: string, readers: readonly string[], isKept?: IsFileKept) => readonly string[] | undefined;
149
+ export declare const listingRenewals: (served: ReadonlyMap<string, ServedListings | undefined>, file: string, readers: readonly string[], isKept?: IsFileKept) => readonly string[] | undefined;
87
150
  /**
88
151
  * A group's "Used in" module: for each component, the components that use it, packed once per title and list of
89
152
  * stories (`packedUsage`), which a page reads.
@@ -167,3 +230,10 @@ export declare const searchIndexes: (read: {
167
230
  readonly track: (id: string, isPages: boolean) => void;
168
231
  readonly isKept: IsFileKept;
169
232
  }) => SearchIndexes;
233
+ /**
234
+ * Renews modules in every environment that loaded them: the agents' routes load them on the server too.
235
+ *
236
+ * @param server - the dev server.
237
+ * @param ids - the modules' ids.
238
+ */
239
+ export declare const invalidateEverywhere: (server: ViteDevServer, ids: Iterable<string>) => void;
@@ -10,8 +10,11 @@
10
10
  */
11
11
  import { codeLiteral } from "../codeLiteral.js";
12
12
  import { packedUsage } from "../usedIn.js";
13
- import { EVERY_FILE, FILES_SPECIFIER_PREFIX, indexedStoryFiles, PAGES_SEARCH_PREFIX, REACH_PREFIX, SEARCH_PREFIX, storyFileKeys, storyFilesCode, storyFilesGroupOf, TEXTS_PREFIX, USAGE_PREFIX } from "./storyFilesModule.js";
13
+ import { DOCS_PAGES_PREFIX } from "./pluginIds.js";
14
+ import { previewTagsOf, withPreviewTags } from "./previewTags.js";
15
+ import { EVERY_FILE, FILES_SPECIFIER_PREFIX, PAGES_SEARCH_PREFIX, REACH_PREFIX, readStoryFiles, refusalError, SEARCH_PREFIX, storyFileKeys, storyFilesCode, storyFilesGroupOf, TEXTS_PREFIX, USAGE_PREFIX } from "./storyFilesModule.js";
14
16
  import { storyReach } from "./storyReach.js";
17
+ import { DOCS_PAGE_QUERY, HOME_QUERY } from "./textQueries.js";
15
18
  import { joinedUsage } from "./usageModule.js";
16
19
  import { VITE_PATHS } from "./vitePaths.js";
17
20
  /**
@@ -62,44 +65,112 @@ export const docsModule = (component, watch) => ({
62
65
  * @param watch - adds a file whose edit renews the module (each story file).
63
66
  * @param loaders - the group's loaders besides its story files'.
64
67
  * @param cache - the pattern's index kept between starts; none reads every file.
65
- * @param warm - starts reading the docs of a story file ahead of its request; none in a test run.
68
+ * @param warm - starts reading the docs of the group's story files ahead of their requests; none in a test run.
66
69
  * @param startTexts - a build's: starts reading the files' docs, code and pages, which the module imports from the
67
70
  * group's texts module (`builtTexts.ts`); none imports each from its query.
68
71
  * @param isKept - whether a listed file may be read; every one by default.
69
- * @throws when a story file cannot be indexed.
72
+ * @param isForgiving - whether a file that cannot be indexed is named among the catalogue's problems while the others
73
+ * draw (a person at a dev server), rather than failing the module (a build, a test run).
74
+ * @param catalogue - the catalogue, whose previews' tags every story takes; none has none.
75
+ * @param scriptProblems - the project's scripts that do not parse, named among the catalogue's problems with the files
76
+ * that cannot be indexed (`scriptProblems.ts`), where those are (a dev server); none by default.
77
+ * @throws when a story file cannot be indexed, unless it is forgiven.
70
78
  */
71
- export const patternModule = (id, watch, loaders, cache, warm, startTexts, isKept = EVERY_FILE) => {
79
+ export const patternModule = (id, watch, loaders, cache, warm, startTexts, isKept = EVERY_FILE, isForgiving = false, catalogue, scriptProblems = []) => {
72
80
  const { root, patterns } = storyFilesGroupOf(id.slice(FILES_PREFIX.length));
73
- const files = indexedStoryFiles(root, patterns, watch, cache, isKept);
74
- const [first] = files;
75
- if (first !== undefined)
76
- warm?.(first.file);
81
+ const { files, refused } = readStoryFiles(root, patterns, watch, cache, isKept);
82
+ if (refused.length > 0 && !isForgiving)
83
+ throw refusalError(refused);
84
+ warm?.(files.map(({ file }) => file));
77
85
  startTexts?.(files);
78
- const code = storyFilesCode(root, patterns, files, loaders, startTexts !== undefined);
79
- return { code, moduleType: "js", files };
86
+ const code = storyFilesCode(root, patterns, withPreviewTags(files, previewTagsOf(catalogue, watch)), loaders, startTexts !== undefined, refused, isForgiving ? scriptProblems : []);
87
+ return { code, moduleType: "js", files, refused };
80
88
  };
81
89
  /**
82
- * Whether a story file added or removed changes what a group of story files lists: listed now and not when its module
83
- * was served, or the other way round. A file no pattern lists, or one a `!` pattern leaves out, changes nothing, so
84
- * the pages need no reload for it.
90
+ * Whether a story file added or removed changes what a page may hold of a group of story files: listed now and missing
91
+ * from a version served since the pages last reloaded, or gone and listed by one. A file no pattern lists, or one a
92
+ * `!` pattern leaves out, changes nothing, so the pages need no reload for it.
93
+ *
94
+ * @remarks
95
+ * The module's last version is no measure: another reader (a second tab, a frame, the agents' API) may load it again
96
+ * between the change on the disk and the file's event, and a page that loaded it before would then never reload. A
97
+ * branch switch makes that window wide, as its events arrive after the files are written. Every version since the last
98
+ * reload counts, and no earlier one: that reload renewed the pages that held those.
85
99
  *
86
100
  * @param id - the group's module's id (`FILES_PREFIX`, then the group).
87
- * @param listed - the files its module listed when served, absolute in Vite's form; none when it could not be made.
101
+ * @param served - the versions served since the pages last reloaded; none when the module could not be made.
88
102
  * @param file - the file added or removed.
89
103
  * @param isKept - whether a listed file may be read; every one by default.
90
104
  */
91
- export const isListingChanged = (id, listed, file, isKept = EVERY_FILE) => {
92
- if (listed === undefined)
105
+ export const isListingChanged = (id, served, file, isKept = EVERY_FILE) => {
106
+ if (served === undefined)
93
107
  return true;
94
108
  const { root, patterns } = storyFilesGroupOf(id.slice(FILES_PREFIX.length));
95
109
  const isListed = storyFileKeys(root, patterns, isKept).includes(VITE_PATHS.relativeKey(root, file));
96
- return isListed !== listed.has(VITE_PATHS.normalize(file));
110
+ const key = VITE_PATHS.normalize(file);
111
+ return isListed ? served.every !== undefined && !served.every.has(key) : served.some.has(key);
112
+ };
113
+ /**
114
+ * A docs pages' module, when the id is a pattern's, a page's or the written home's. The Markdown reader loads with the
115
+ * first: a catalogue may have no docs pages, and a story's page reads none.
116
+ *
117
+ * @param id - the module's id.
118
+ * @param watch - adds a file whose edit renews the module.
119
+ * @param isServing - whether a dev server runs.
120
+ * @param plugins - the catalogue's plugins, whose fences a page may draw.
121
+ * @param isKept - whether a page its group lists may be read.
122
+ */
123
+ export const docsModuleOf = async (id, watch, isServing, plugins, isKept) => {
124
+ const isHome = id.endsWith(HOME_QUERY);
125
+ const isPage = id.endsWith(DOCS_PAGE_QUERY);
126
+ if (!isHome && !isPage && !id.startsWith(DOCS_PAGES_PREFIX))
127
+ return undefined;
128
+ const { docPageModule, docPagesModule, homeModule } = await import("./docPagesModule.js");
129
+ if (isHome)
130
+ return { code: homeModule(id.slice(0, -HOME_QUERY.length), watch, isServing, plugins), moduleType: "js" };
131
+ if (isPage) {
132
+ const file = id.slice(0, -DOCS_PAGE_QUERY.length);
133
+ return { code: docPageModule(file, watch, isServing, plugins), moduleType: "js" };
134
+ }
135
+ const { root, patterns } = storyFilesGroupOf(id.slice(DOCS_PAGES_PREFIX.length));
136
+ return { code: docPagesModule(root, patterns, watch, isServing, plugins, isKept), moduleType: "js" };
137
+ };
138
+ /**
139
+ * Makes a group's module and adds the version to those served since the pages last reloaded (`isListingChanged`).
140
+ * While it is made, and when making it fails, the list is unknown.
141
+ *
142
+ * @param listings - the groups' modules, with the versions served.
143
+ * @param id - the group's module's id.
144
+ * @param make - makes the module.
145
+ * @returns the module made.
146
+ */
147
+ export const keptListing = (listings, id, make) => {
148
+ const before = listings.get(id);
149
+ listings.set(id, undefined);
150
+ const made = make();
151
+ const listed = new Set([...made.files, ...made.refused].map(({ file }) => file));
152
+ const every = before?.every;
153
+ listings.set(id, {
154
+ some: new Set([...(before?.some ?? []), ...listed]),
155
+ every: every === undefined ? listed : new Set([...every].filter((file) => listed.has(file)))
156
+ });
157
+ return made;
158
+ };
159
+ /**
160
+ * Forgets the versions served before a reload the pages were sent: each page loads the module again.
161
+ *
162
+ * @param listings - the groups' modules, with the versions served.
163
+ */
164
+ export const pagesReloaded = (listings) => {
165
+ for (const [id, served] of listings)
166
+ if (served !== undefined)
167
+ listings.set(id, { some: new Set(), every: undefined });
97
168
  };
98
169
  /**
99
170
  * The modules a story file added or removed renews: the groups whose list it changes (`isListingChanged`) and, with
100
171
  * them, the modules that read their files; none when it changes no list.
101
172
  *
102
- * @param served - the groups' modules, with the files each listed when served.
173
+ * @param served - the groups' modules, with the versions served since the pages last reloaded.
103
174
  * @param file - the file added or removed.
104
175
  * @param readers - the modules that read the groups' files: their "Used in" and search indexes.
105
176
  * @param isKept - whether a listed file may be read; every one by default.
@@ -111,7 +182,8 @@ export const listingRenewals = (served, file, readers, isKept = EVERY_FILE) => {
111
182
  return changed.length === 0 ? undefined : [...changed, ...readers];
112
183
  };
113
184
  /**
114
- * A group's facts: its story files indexed, what their stories render read in the docs worker.
185
+ * A group's facts: its story files indexed, what their stories render read in the docs worker. A file that cannot be
186
+ * indexed adds nothing here: the group's own module names it.
115
187
  *
116
188
  * @param group - the group (`storyFilesGroupText`).
117
189
  * @param watch - adds a file whose edit renews the module (each story file).
@@ -121,7 +193,7 @@ export const listingRenewals = (served, file, readers, isKept = EVERY_FILE) => {
121
193
  */
122
194
  const groupUsage = async (group, watch, usage, cache, isKept) => {
123
195
  const { root, patterns } = storyFilesGroupOf(group);
124
- const files = indexedStoryFiles(root, patterns, watch, cache, isKept);
196
+ const { files } = readStoryFiles(root, patterns, watch, cache, isKept);
125
197
  const graph = await usage(files.map((file) => ({
126
198
  storyFile: file.file,
127
199
  exports: file.index.stories.map((story) => story.exportName)
@@ -163,8 +235,9 @@ export const usageModule = async (id, watch, usage, cache, pack, isKept = EVERY_
163
235
  */
164
236
  export const reachModule = async (id, watch, usage, cache, isKept = EVERY_FILE) => {
165
237
  const { files, graph } = await groupUsage(id.slice(REACH_ID_PREFIX.length), watch, usage, cache, isKept);
238
+ // the reason, not an empty list: no story reached and no story found are different answers
166
239
  const reach = typeof graph === "string"
167
- ? []
240
+ ? graph
168
241
  : storyReach(graph, files.map((file) => ({ storyFile: file.file, title: file.index.title })));
169
242
  return { code: `export default ${codeLiteral(reach)};`, moduleType: "js" };
170
243
  };
@@ -219,3 +292,18 @@ export const searchIndexes = (read) => {
219
292
  }
220
293
  };
221
294
  };
295
+ /**
296
+ * Renews modules in every environment that loaded them: the agents' routes load them on the server too.
297
+ *
298
+ * @param server - the dev server.
299
+ * @param ids - the modules' ids.
300
+ */
301
+ export const invalidateEverywhere = (server, ids) => {
302
+ for (const environment of Object.values(server.environments)) {
303
+ for (const id of ids) {
304
+ const module = environment.moduleGraph.getModuleById(id);
305
+ if (module !== undefined)
306
+ environment.moduleGraph.invalidateModule(module);
307
+ }
308
+ }
309
+ };