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,127 @@
1
+ /**
2
+ * A story's values as they cross to the panel, and back: its own value found by name among the source's named values, and
3
+ * a name the panel sent turned back into the value for the story. Read in the frame.
4
+ *
5
+ * @remarks
6
+ * A component or a function cannot cross between the shell and a frame; its name can, and each side holds the same source.
7
+ * Pure.
8
+ *
9
+ * @module
10
+ */
11
+ import { isArgList, isArgObject, isArgValue, isDateArg, isNamedArg, isUnsetArg } from "../messages.js";
12
+ import { namedValueOf } from "../namedValues.js";
13
+ /**
14
+ * The name of a value among the named ones, when it is one of them.
15
+ *
16
+ * @param value - a story's own arg.
17
+ * @param namedValues - the source's named values.
18
+ */
19
+ export const nameOf = (value, namedValues) => {
20
+ for (const [of, values] of Object.entries(namedValues)) {
21
+ for (const [named, known] of Object.entries(values)) {
22
+ if (known === value)
23
+ return { of, named };
24
+ }
25
+ }
26
+ return undefined;
27
+ };
28
+ /** The most parts of one arg the panel is told of: a table's data is the story's, and costs every message it crosses. */
29
+ const MOST_PARTS = 2000;
30
+ /** The deepest an arg the panel is told of nests: a cycle ends here too. */
31
+ const MOST_DEPTH = 12;
32
+ /** A list as the panel can show it, or none when any item is not plain data. */
33
+ const panelListOf = (list, walk, depth) => {
34
+ const items = list.map((item) => panelValueOf(item, walk, depth + 1));
35
+ return items.every((item) => item !== undefined) ? items.filter((item) => item !== undefined) : undefined;
36
+ };
37
+ /** A plain object as the panel can show it, or none when any field is not plain data. */
38
+ const panelObjectOf = (value, walk, depth) => {
39
+ const fields = [];
40
+ for (const [name, each] of Object.entries(value)) {
41
+ if (each === undefined)
42
+ continue;
43
+ const shown = panelValueOf(each, walk, depth + 1);
44
+ if (shown === undefined)
45
+ return undefined;
46
+ fields.push([name, shown]);
47
+ }
48
+ return Object.fromEntries(fields);
49
+ };
50
+ /** Whether a value crosses as it is. */
51
+ const isPlainLeaf = (value) => value === null || typeof value === "string" || typeof value === "boolean";
52
+ /** A `Date` as the panel can show it: its moment, when it has one. */
53
+ const dateValueOf = (date) => Number.isNaN(date.getTime()) ? undefined : { forgebookDate: date.toISOString() };
54
+ /**
55
+ * A story's value as the panel can show it, or none when any part of it is not plain data.
56
+ *
57
+ * @param value - the value.
58
+ * @param walk - what the walk carries.
59
+ * @param depth - how deep it is.
60
+ */
61
+ const panelValueOf = (value, walk, depth) => {
62
+ walk.parts -= 1;
63
+ if (walk.parts < 0 || depth > MOST_DEPTH)
64
+ return undefined;
65
+ if (isPlainLeaf(value))
66
+ return value;
67
+ if (typeof value === "number")
68
+ return depth === 0 || Number.isFinite(value) ? value : undefined;
69
+ const named = nameOf(value, walk.namedValues);
70
+ if (named !== undefined)
71
+ return named;
72
+ if (value instanceof Date)
73
+ return dateValueOf(value);
74
+ if (Array.isArray(value))
75
+ return panelListOf(value, walk, depth);
76
+ if (typeof value !== "object")
77
+ return undefined;
78
+ const prototype = Object.getPrototypeOf(value);
79
+ // a date, a map or a class's instance is not what a link can hold, nor what JSON gives back
80
+ return prototype === Object.prototype || prototype === null ? panelObjectOf(value, walk, depth) : undefined;
81
+ };
82
+ /**
83
+ * A story's own args as the panel can show them: plain data as it is, a named value by its name at any depth; an arg
84
+ * with anything else in it (an element, a function, a date) is left out whole.
85
+ *
86
+ * @param args - the story's args.
87
+ * @param namedValues - the source's named values; none by default.
88
+ */
89
+ export const panelArgsOf = (args, namedValues = {}) => Object.fromEntries(Object.entries(args).flatMap(([name, value]) => {
90
+ const shown = panelValueOf(value, { namedValues, parts: MOST_PARTS }, 0);
91
+ // a name no value may hold (`constructor`) would have the shell refuse the frame's whole message
92
+ return shown === undefined || !isArgValue(shown) ? [] : [[name, shown]];
93
+ }));
94
+ /**
95
+ * A panel's value as the story takes it: each name turned back into its value, at any depth; a name the source no longer
96
+ * offers is none.
97
+ *
98
+ * @param value - the value.
99
+ * @param namedValues - the source's named values.
100
+ */
101
+ const storyValueOf = (value, namedValues) => {
102
+ if (isNamedArg(value))
103
+ return namedValueOf(namedValues, value.of, value.named);
104
+ if (isDateArg(value))
105
+ return new Date(value.forgebookDate);
106
+ if (isArgList(value))
107
+ return value.map((item) => storyValueOf(item, namedValues)).filter((item) => item !== undefined);
108
+ if (!isArgObject(value))
109
+ return value;
110
+ return Object.fromEntries(Object.entries(value).flatMap(([name, each]) => {
111
+ const known = storyValueOf(each, namedValues);
112
+ return known === undefined ? [] : [[name, known]];
113
+ }));
114
+ };
115
+ /**
116
+ * The panel's values as the story takes them: a name turned back into its value, a name the source no longer offers
117
+ * left out so the story keeps its own, and the panel's "no value" as `undefined` over the story's own.
118
+ *
119
+ * @param args - the panel's values.
120
+ * @param namedValues - the source's named values; none by default.
121
+ */
122
+ export const storyArgsOf = (args, namedValues = {}) => Object.fromEntries(Object.entries(args).flatMap(([name, value]) => {
123
+ if (isUnsetArg(value))
124
+ return [[name, undefined]];
125
+ const known = storyValueOf(value, namedValues);
126
+ return known === undefined ? [] : [[name, known]];
127
+ }));
@@ -0,0 +1,39 @@
1
+ /**
2
+ * A play's actions, one by one: what the play did through the `canvas` and the `userEvent` its context hands it, for
3
+ * the Interactions tab's log and its step debugger.
4
+ *
5
+ * @remarks
6
+ * The tools are wrapped, not the library: the story is what is shown, and what a play imports itself
7
+ * (`@testing-library/user-event`, `storybook/test`) is another object, so it runs unrecorded. A sync query must stay sync,
8
+ * so only what already returns a promise (a `findBy…`, a user's action, a `step`) can wait for "next"; a `getBy…` is only
9
+ * logged. A wrapped action behaves as the tool does, its result and its throw included.
10
+ *
11
+ * @module
12
+ */
13
+ import type { PlayAction } from "../playTrace.ts";
14
+ /** What the wrapped tools report to. */
15
+ export type ActionRecorder = {
16
+ /** Waits until the play may go on past an action, by its text; at once unless the play is being stepped through. */
17
+ readonly gate: (label: string) => Promise<void>;
18
+ /** Adds an action to the log; its index. */
19
+ readonly begin: (label: string) => number;
20
+ /** Ends an action in the log. */
21
+ readonly end: (index: number, action: PlayAction) => void;
22
+ };
23
+ /**
24
+ * A tool whose functions log themselves.
25
+ *
26
+ * @param tool - the tool (`canvas`, `userEvent`); anything else stays as it is.
27
+ * @param name - its name in the log.
28
+ * @param recorder - what it reports to.
29
+ * @param isSync - whether a function of it returns at once: logged, never held.
30
+ */
31
+ export declare const recordedTool: (tool: unknown, name: string, recorder: ActionRecorder, isSync: (member: string) => boolean) => unknown;
32
+ /**
33
+ * Whether a query of Testing Library returns at once: all but `findBy…` and `findAllBy…`.
34
+ *
35
+ * @param member - the query's name.
36
+ */
37
+ export declare const isSyncQuery: (member: string) => boolean;
38
+ /** Whether a member of `userEvent` returns at once: none of them does, but for its `setup`. */
39
+ export declare const isSyncEvent: () => boolean;
@@ -0,0 +1,98 @@
1
+ import { previewValue } from "./callValues.js";
2
+ /** Milliseconds since an instant, rounded. */
3
+ const since = (start) => Math.round(performance.now() - start);
4
+ /** The most characters of a call the log keeps. */
5
+ const LABEL_LENGTH = 200;
6
+ /** The most characters of an error the log keeps: a failed query's message holds the whole document. */
7
+ const ERROR_LENGTH = 300;
8
+ /** An error's message, cut to what a line of the log holds. */
9
+ const messageOf = (error) => (error instanceof Error ? error.message : String(error)).slice(0, ERROR_LENGTH);
10
+ /**
11
+ * An argument as the log shows it: an element by its tag and its name, the rest as the Events tab shows them.
12
+ *
13
+ * @param value - the argument.
14
+ */
15
+ const argText = (value) => {
16
+ if (typeof Element !== "undefined" && value instanceof Element) {
17
+ const name = (value.getAttribute("aria-label") ?? value.textContent?.trim() ?? "").slice(0, 30);
18
+ return name === "" ? `<${value.localName}>` : `<${value.localName}> "${name}"`;
19
+ }
20
+ return value instanceof RegExp ? String(value) : previewValue(value);
21
+ };
22
+ /** The text of a call. */
23
+ const callText = (name, args) => `${name}(${args.map(argText).join(", ")})`.slice(0, LABEL_LENGTH);
24
+ /**
25
+ * A tool's async function, logged and held at the gate.
26
+ *
27
+ * @param label - the function's name in the log.
28
+ * @param run - calls the function.
29
+ * @param recorder - what it reports to.
30
+ */
31
+ const heldCall = async (label, run, recorder) => {
32
+ await recorder.gate(label);
33
+ const index = recorder.begin(label);
34
+ const start = performance.now();
35
+ try {
36
+ const result = await run();
37
+ recorder.end(index, { label, status: "passed", ms: since(start) });
38
+ return result;
39
+ }
40
+ catch (error) {
41
+ recorder.end(index, { label, status: "failed", ms: since(start), error: messageOf(error) });
42
+ throw error;
43
+ }
44
+ };
45
+ /**
46
+ * A tool's sync function, logged.
47
+ *
48
+ * @param label - the function's name in the log.
49
+ * @param run - calls the function.
50
+ * @param recorder - what it reports to.
51
+ */
52
+ const loggedCall = (label, run, recorder) => {
53
+ const index = recorder.begin(label);
54
+ try {
55
+ const result = run();
56
+ recorder.end(index, { label, status: "passed", ms: 0 });
57
+ return result;
58
+ }
59
+ catch (error) {
60
+ recorder.end(index, { label, status: "failed", ms: 0, error: messageOf(error) });
61
+ throw error;
62
+ }
63
+ };
64
+ /**
65
+ * A tool whose functions log themselves.
66
+ *
67
+ * @param tool - the tool (`canvas`, `userEvent`); anything else stays as it is.
68
+ * @param name - its name in the log.
69
+ * @param recorder - what it reports to.
70
+ * @param isSync - whether a function of it returns at once: logged, never held.
71
+ */
72
+ export const recordedTool = (tool, name, recorder, isSync) => {
73
+ if (typeof tool !== "object" || tool === null)
74
+ return tool;
75
+ return new Proxy(tool, {
76
+ get: (target, key) => {
77
+ const member = Reflect.get(target, key);
78
+ if (typeof member !== "function" || typeof key !== "string")
79
+ return member;
80
+ return (...args) => {
81
+ const label = callText(`${name}.${key}`, args);
82
+ const run = () => Reflect.apply(member, target, args);
83
+ // `userEvent.setup()` hands back the instance the rest of the play uses
84
+ if (key === "setup")
85
+ return recordedTool(run(), name, recorder, isSync);
86
+ return isSync(key) ? loggedCall(label, run, recorder) : heldCall(label, run, recorder);
87
+ };
88
+ }
89
+ });
90
+ };
91
+ /**
92
+ * Whether a query of Testing Library returns at once: all but `findBy…` and `findAllBy…`.
93
+ *
94
+ * @param member - the query's name.
95
+ */
96
+ export const isSyncQuery = (member) => !member.startsWith("find");
97
+ /** Whether a member of `userEvent` returns at once: none of them does, but for its `setup`. */
98
+ export const isSyncEvent = () => false;
@@ -0,0 +1,28 @@
1
+ /**
2
+ * How a frame starts a play and holds it: the step debugger's hold waits before each action for "next", until
3
+ * "continue" lets the rest run.
4
+ *
5
+ * @remarks
6
+ * Most stories have no play, and every frame loads this module with `storyRun.ts`: the play's runner (`playStory.ts`)
7
+ * and the actions it records load with the first story that has a play, not with every frame.
8
+ *
9
+ * @module
10
+ */
11
+ import type { PlayStepper, playStory } from "./playStory.ts";
12
+ /** A hold the shell's commands release. */
13
+ export type HeldStepper = PlayStepper & {
14
+ /** Lets the play do its next action. */
15
+ readonly next: () => void;
16
+ /** Lets the play run to its end. */
17
+ readonly release: () => void;
18
+ };
19
+ /** A new hold: the play stops before its first action. */
20
+ export declare const heldStepper: () => HeldStepper;
21
+ /**
22
+ * Plays a story, then calls `onPlayed`: at once when it has no play, without loading the runner.
23
+ *
24
+ * @param args - what `playStory` takes, in its order: the play, its context, `onPlayed`, `onTrace`, the tools and the
25
+ * stepper.
26
+ * @returns the play's promise, rejected when the play failed.
27
+ */
28
+ export declare const runPlay: (...args: Parameters<typeof playStory>) => Promise<void>;
@@ -0,0 +1,38 @@
1
+ /** A new hold: the play stops before its first action. */
2
+ export const heldStepper = () => {
3
+ let isHolding = true;
4
+ // a play may wait on several actions at once (`Promise.all`): "next" lets them all go
5
+ let waiting = [];
6
+ const next = () => {
7
+ for (const resume of waiting)
8
+ resume();
9
+ waiting = [];
10
+ };
11
+ return {
12
+ isHolding: () => isHolding,
13
+ wait: () => new Promise((resolve) => {
14
+ waiting = [...waiting, resolve];
15
+ }),
16
+ next,
17
+ release: () => {
18
+ isHolding = false;
19
+ next();
20
+ }
21
+ };
22
+ };
23
+ /**
24
+ * Plays a story, then calls `onPlayed`: at once when it has no play, without loading the runner.
25
+ *
26
+ * @param args - what `playStory` takes, in its order: the play, its context, `onPlayed`, `onTrace`, the tools and the
27
+ * stepper.
28
+ * @returns the play's promise, rejected when the play failed.
29
+ */
30
+ export const runPlay = async (...args) => {
31
+ const [play, , onPlayed] = args;
32
+ if (play === undefined) {
33
+ onPlayed();
34
+ return;
35
+ }
36
+ const runner = await import("./playStory.js");
37
+ return runner.playStory(...args);
38
+ };
@@ -26,6 +26,13 @@ export type PlayTools = {
26
26
  * generated frame passes one when the project installs Testing Library.
27
27
  */
28
28
  export type PlayToolsLoader = () => Promise<PlayTools>;
29
+ /** What holds a play before each action while it is stepped through. */
30
+ export type PlayStepper = {
31
+ /** Whether the play still stops before an action; "continue" ends that. */
32
+ readonly isHolding: () => boolean;
33
+ /** Resolves when "next" or "continue" comes. */
34
+ readonly wait: () => Promise<void>;
35
+ };
29
36
  /**
30
37
  * Plays a story, then calls `onPlayed`.
31
38
  *
@@ -34,6 +41,7 @@ export type PlayToolsLoader = () => Promise<PlayTools>;
34
41
  * @param onPlayed - called once the play is over, at once when there is none, whether it passed or failed.
35
42
  * @param onTrace - called with the trace after every change; never without a play.
36
43
  * @param tools - the play tools to hand the play (`canvas` bound to its canvas, `userEvent`); none without them.
44
+ * @param stepper - holds the play before each action, while it is stepped through; none lets it run.
37
45
  * @returns the play's promise, rejected when the play failed.
38
46
  */
39
- export declare const playStory: (play: LoadedStory["play"], context: Omit<StoryContext<LoadedArgs>, "step">, onPlayed: () => void, onTrace?: (trace: PlayTrace) => void, tools?: PlayTools | undefined) => Promise<void>;
47
+ export declare const playStory: (play: LoadedStory["play"], context: Omit<StoryContext<LoadedArgs>, "step">, onPlayed: () => void, onTrace?: (trace: PlayTrace) => void, tools?: PlayTools | undefined, stepper?: PlayStepper | undefined) => Promise<void>;
@@ -1,7 +1,10 @@
1
+ import { isSyncEvent, isSyncQuery, recordedTool } from "./playActions.js";
1
2
  /** A thrown value's message. */
2
3
  const messageOf = (error) => (error instanceof Error ? error.message : String(error));
3
4
  /** Milliseconds since an instant, rounded. */
4
5
  const since = (start) => Math.round(performance.now() - start);
6
+ /** The most actions a trace holds: each message carries the whole list. */
7
+ const MAX_ACTIONS = 200;
5
8
  /**
6
9
  * Plays a story, then calls `onPlayed`.
7
10
  *
@@ -10,23 +13,58 @@ const since = (start) => Math.round(performance.now() - start);
10
13
  * @param onPlayed - called once the play is over, at once when there is none, whether it passed or failed.
11
14
  * @param onTrace - called with the trace after every change; never without a play.
12
15
  * @param tools - the play tools to hand the play (`canvas` bound to its canvas, `userEvent`); none without them.
16
+ * @param stepper - holds the play before each action, while it is stepped through; none lets it run.
13
17
  * @returns the play's promise, rejected when the play failed.
14
18
  */
15
- export const playStory = async (play, context, onPlayed, onTrace = () => undefined, tools = undefined) => {
19
+ export const playStory = async (play, context, onPlayed, onTrace = () => undefined, tools = undefined, stepper = undefined) => {
16
20
  if (play === undefined) {
17
21
  onPlayed();
18
22
  return;
19
23
  }
20
24
  let steps = [];
21
- const report = (trace) => onTrace({ ...trace, steps });
25
+ let actions = [];
26
+ let openStep;
27
+ const report = (trace) => onTrace({ ...trace, steps, ...(actions.length === 0 ? {} : { actions }) });
28
+ const gate = async (label) => {
29
+ if (stepper?.isHolding() !== true)
30
+ return;
31
+ report({ status: "running", pausedAt: label });
32
+ await stepper.wait();
33
+ report({ status: "running" });
34
+ };
35
+ const recorder = {
36
+ gate,
37
+ begin: (label) => {
38
+ // a `waitFor` runs its query again until it passes: its failures are one line, not one each
39
+ const last = actions.at(-1);
40
+ if (last?.label === label && last.status === "failed")
41
+ return actions.length - 1;
42
+ // a play in a loop must not grow every message past what a person reads
43
+ if (actions.length >= MAX_ACTIONS)
44
+ return actions.length;
45
+ actions = [
46
+ ...actions,
47
+ { label, status: "running", ...(openStep === undefined ? {} : { step: openStep }) }
48
+ ];
49
+ report({ status: "running" });
50
+ return actions.length - 1;
51
+ },
52
+ end: (index, action) => {
53
+ actions = actions.map((current, at) => (at === index ? { ...current, ...action } : current));
54
+ report({ status: "running" });
55
+ }
56
+ };
22
57
  const setStep = (index, step) => {
23
58
  steps = steps.map((current, at) => (at === index ? step : current));
24
59
  report({ status: "running" });
25
60
  };
26
61
  const step = async (label, run) => {
62
+ await gate(label);
27
63
  const index = steps.length;
64
+ const outer = openStep;
28
65
  const start = performance.now();
29
66
  steps = [...steps, { label, status: "running" }];
67
+ openStep = index;
30
68
  report({ status: "running" });
31
69
  try {
32
70
  await run();
@@ -36,11 +74,19 @@ export const playStory = async (play, context, onPlayed, onTrace = () => undefin
36
74
  setStep(index, { label, status: "failed", ms: since(start), error: messageOf(error) });
37
75
  throw error;
38
76
  }
77
+ finally {
78
+ openStep = outer;
79
+ }
39
80
  };
40
81
  const start = performance.now();
41
82
  report({ status: "running" });
42
83
  try {
43
- const toolsContext = tools === undefined ? {} : { canvas: tools.within(context.canvasElement), userEvent: tools.userEvent };
84
+ const toolsContext = tools === undefined
85
+ ? {}
86
+ : {
87
+ canvas: recordedTool(tools.within(context.canvasElement), "canvas", recorder, isSyncQuery),
88
+ userEvent: recordedTool(tools.userEvent, "userEvent", recorder, isSyncEvent)
89
+ };
44
90
  await play({ ...context, step, ...toolsContext });
45
91
  report({ status: "passed", ms: since(start) });
46
92
  }
@@ -60,6 +60,17 @@ export type StoryDrawing = {
60
60
  */
61
61
  readonly changeArgs?: (change: ArgsChange) => void;
62
62
  };
63
+ /**
64
+ * What a framework can say of what a drawn story still waits for: everything came, something is still loading (a
65
+ * `Suspense` boundary showing its fallback), or it cannot tell, which is never read as everything came.
66
+ */
67
+ export type ContentState = {
68
+ readonly state: "settled";
69
+ } | {
70
+ readonly state: "waiting" | "unknown";
71
+ /** What it waits for, or why it cannot tell, in a sentence a person reads. */
72
+ readonly reason: string;
73
+ };
63
74
  /** What the frame keeps of a story drawn in a canvas. */
64
75
  export type MountedStory = {
65
76
  /**
@@ -67,6 +78,17 @@ export type MountedStory = {
67
78
  * story throws while it is first drawn (the error goes to `onError` instead).
68
79
  */
69
80
  readonly drawn: Promise<void>;
81
+ /**
82
+ * Waits until the story no longer shows a loading state of its framework (`Suspense`), for so long, in milliseconds.
83
+ * The frame calls it after `drawn` and after the play function, unless the story says it stays there
84
+ * (`parameters.suspense.expected`). A framework with no such state, or none it can read, leaves it out: its stories
85
+ * are ready once drawn.
86
+ *
87
+ * @param timeout - the most to wait, in milliseconds.
88
+ * @returns `settled`, `waiting` when the time ran out, or `unknown` when the framework cannot tell; a rejection reads as
89
+ * `unknown`.
90
+ */
91
+ readonly settled?: (timeout: number) => Promise<ContentState>;
70
92
  /**
71
93
  * Draws the story again, keeping its state: other args, other switch values, another language; a story that threw
72
94
  * is tried again.
@@ -108,8 +130,19 @@ export type StoryRenderer = FrameRenderer & {
108
130
  *
109
131
  * @param component - the component's name, as its documentation names it.
110
132
  * @param args - the values of the moment, a named value by its name.
133
+ * @param written - the args the story file writes as code (a function, an element, a constant), each as written and
134
+ * written over its value; none or empty writes the values alone. A writer that cannot use them may ignore them.
135
+ */
136
+ export type StoryCodeWriter = (component: string, args: PanelArgs, written?: Readonly<Record<string, string>>) => string;
137
+ /**
138
+ * Waits for what a story waits for by looking at it: the first look is at once, so a story that waits for nothing pays
139
+ * for one look; the next ones start close together, since most waits are a state set in an effect, and spread out.
140
+ *
141
+ * @param read - looks at the story: what `MountedStory.settled` answers at this moment.
142
+ * @param timeout - the most to wait, in milliseconds.
143
+ * @returns the state once it is not `waiting`, or `waiting` once the time ran out.
111
144
  */
112
- export type StoryCodeWriter = (component: string, args: PanelArgs) => string;
145
+ export declare const contentSettled: (read: () => ContentState, timeout: number) => Promise<ContentState>;
113
146
  /** The `step` a render and a decorator receive: outside a play there is no trace, so a step only runs its part. */
114
147
  export declare const untracedStep: StepFunction;
115
148
  /**
@@ -12,6 +12,30 @@
12
12
  * @module
13
13
  */
14
14
  import { storyTextOf } from "@forgebook/story-format/texts";
15
+ /** The longest pause between two looks at what a story waits for, in milliseconds. */
16
+ const LONGEST_LOOK = 50;
17
+ /**
18
+ * Waits for what a story waits for by looking at it: the first look is at once, so a story that waits for nothing pays
19
+ * for one look; the next ones start close together, since most waits are a state set in an effect, and spread out.
20
+ *
21
+ * @param read - looks at the story: what `MountedStory.settled` answers at this moment.
22
+ * @param timeout - the most to wait, in milliseconds.
23
+ * @returns the state once it is not `waiting`, or `waiting` once the time ran out.
24
+ */
25
+ export const contentSettled = (read, timeout) => new Promise((resolve) => {
26
+ const start = performance.now();
27
+ let pause = 1;
28
+ const look = () => {
29
+ const content = read();
30
+ if (content.state !== "waiting" || performance.now() - start >= timeout) {
31
+ resolve(content);
32
+ return;
33
+ }
34
+ setTimeout(look, pause);
35
+ pause = Math.min(pause * 2, LONGEST_LOOK);
36
+ };
37
+ look();
38
+ });
15
39
  /** The `step` a render and a decorator receive: outside a play there is no trace, so a step only runs its part. */
16
40
  export const untracedStep = async (_label, run) => {
17
41
  await run();
@@ -10,7 +10,7 @@
10
10
  * @module
11
11
  */
12
12
  import { type FramesPlacement, type PageLocation } from "../frameOrigins.ts";
13
- import { type FrameMessage, type ShellMessage } from "../messages.ts";
13
+ import type { FrameMessage, ShellMessage } from "../messages.ts";
14
14
  /** A message's event, as the frame reads it. */
15
15
  export type ShellEvent = {
16
16
  /** The sender's origin. */
@@ -10,7 +10,7 @@
10
10
  * @module
11
11
  */
12
12
  import { pageOrigins } from "../frameOrigins.js";
13
- import { isShellMessage } from "../messages.js";
13
+ import { isShellMessage } from "./shellMessageCheck.js";
14
14
  /**
15
15
  * The frame's channel with its shell.
16
16
  *
@@ -0,0 +1,17 @@
1
+ /**
2
+ * A frame's answer to the shell's Check: the story's accessibility, or why it cannot be checked.
3
+ *
4
+ * @module
5
+ */
6
+ import type { A11ySettings } from "../catalogue.ts";
7
+ import type { ShellChannel } from "./shellChannel.ts";
8
+ /**
9
+ * Checks the story's accessibility and tells the shell the result.
10
+ *
11
+ * @param storyId - the story's id, for the answers.
12
+ * @param pendingReason - why the story was not seen in its final state, if so: answered instead of a check.
13
+ * @param rules - the catalogue's accessibility rules; none when it checks no accessibility.
14
+ * @param axeUrl - the address of axe's script.
15
+ * @param tellShell - tells the shell the check's result.
16
+ */
17
+ export declare const checkForShell: (storyId: string, pendingReason: string | undefined, rules: A11ySettings | undefined, axeUrl: string | undefined, tellShell: ShellChannel["tell"]) => void;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Checks the story's accessibility and tells the shell the result.
3
+ *
4
+ * @param storyId - the story's id, for the answers.
5
+ * @param pendingReason - why the story was not seen in its final state, if so: answered instead of a check.
6
+ * @param rules - the catalogue's accessibility rules; none when it checks no accessibility.
7
+ * @param axeUrl - the address of axe's script.
8
+ * @param tellShell - tells the shell the check's result.
9
+ */
10
+ export const checkForShell = (storyId, pendingReason, rules, axeUrl, tellShell) => {
11
+ // loaded on the first check: a frame that is never checked, or one of a catalogue that checks nothing, never
12
+ // fetches the code that loads axe
13
+ const refusal = pendingReason ??
14
+ (rules === undefined ? "The catalogue checks no accessibility (a11y: false)" : undefined);
15
+ const checked = refusal !== undefined || rules === undefined
16
+ ? Promise.reject(new Error(refusal))
17
+ : import("./checkStory.js").then((module) => module.checkStory(document, rules, axeUrl));
18
+ checked
19
+ .then((violations) => tellShell({ type: "forgebook:checked", storyId, violations }))
20
+ .catch((error) => tellShell({
21
+ type: "forgebook:check-error",
22
+ storyId,
23
+ message: error instanceof Error ? error.message : String(error)
24
+ }));
25
+ };
@@ -0,0 +1,7 @@
1
+ import { type ShellMessage } from "../messages.ts";
2
+ /**
3
+ * Whether a received message is one the shell sends.
4
+ *
5
+ * @param value - the message's data.
6
+ */
7
+ export declare const isShellMessage: (value: unknown) => value is ShellMessage;
@@ -0,0 +1,53 @@
1
+ /**
2
+ * The check a frame makes of what arrives from the shell: a page may receive messages from anything it embeds or is
3
+ * embedded in. Kept with the frame, so that the shell's page does not load what only the frame reads.
4
+ *
5
+ * @module
6
+ */
7
+ import { isMatrix } from "../matrix.js";
8
+ import { isPanelArgs } from "../messages.js";
9
+ import { isClockRate } from "../storyClock.js";
10
+ import { MEASURE_TOOLS } from "../viewState.js";
11
+ /** Whether a value is a plain object. */
12
+ const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
13
+ /** Whether a value is a list of strings. */
14
+ const isStringList = (value) => Array.isArray(value) && value.every((item) => typeof item === "string");
15
+ /** Whether a value is the view's live part. */
16
+ const isLiveView = (value) => isRecord(value) &&
17
+ isRecord(value["switches"]) &&
18
+ Object.values(value["switches"]).every((switchValue) => typeof switchValue === "string") &&
19
+ typeof value["backdrop"] === "string" &&
20
+ typeof value["text"] === "number";
21
+ /** Whether a value is a story clock's state. */
22
+ const isClockState = (value) => isRecord(value) && typeof value["isRunning"] === "boolean" && isClockRate(value["rate"]);
23
+ /**
24
+ * Whether a received message is one the shell sends.
25
+ *
26
+ * @param value - the message's data.
27
+ */
28
+ export const isShellMessage = (value) => {
29
+ if (!isRecord(value))
30
+ return false;
31
+ if (value["type"] === "forgebook:replay" ||
32
+ value["type"] === "forgebook:check" ||
33
+ value["type"] === "forgebook:clock-restart") {
34
+ return true;
35
+ }
36
+ if (value["type"] === "forgebook:play-step")
37
+ return ["again", "start", "next", "continue"].includes(String(value["command"]));
38
+ if (value["type"] === "forgebook:args")
39
+ return isPanelArgs(value["args"]);
40
+ if (value["type"] === "forgebook:view")
41
+ return isLiveView(value["view"]);
42
+ if (value["type"] === "forgebook:clock")
43
+ return isClockState(value["state"]);
44
+ if (value["type"] === "forgebook:spills")
45
+ return typeof value["isOn"] === "boolean";
46
+ if (value["type"] === "forgebook:tools") {
47
+ const tools = value["tools"];
48
+ return Array.isArray(tools) && tools.every((tool) => MEASURE_TOOLS.some((known) => known === tool));
49
+ }
50
+ if (value["type"] === "forgebook:matrix")
51
+ return value["matrix"] === null || isMatrix(value["matrix"]);
52
+ return value["type"] === "forgebook:events" && isStringList(value["names"]);
53
+ };