forgebook 0.3.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +917 -74
- package/dist/bin/forgebook/agentClient.d.ts +2 -1
- package/dist/bin/forgebook/agentClient.js +13 -6
- package/dist/bin/forgebook/agentGuide.d.ts +59 -0
- package/dist/bin/forgebook/agentGuide.js +203 -0
- package/dist/bin/forgebook/agentLoopCommands.mjs +22 -42
- package/dist/bin/forgebook/agentSetup/agentFiles.d.ts +55 -0
- package/dist/bin/forgebook/agentSetup/agentFiles.js +319 -0
- package/dist/bin/forgebook/agentSetup/assistantHooks.d.ts +71 -0
- package/dist/bin/forgebook/agentSetup/assistantHooks.js +125 -0
- package/dist/bin/forgebook/agentSetup/ciWorkflow.d.ts +23 -0
- package/dist/bin/forgebook/agentSetup/ciWorkflow.js +55 -0
- package/dist/bin/forgebook/agentSetup/drawCandidates.d.ts +25 -0
- package/dist/bin/forgebook/agentSetup/drawCandidates.js +116 -0
- package/dist/bin/forgebook/agentSetup/drawDiagnosis.d.ts +28 -0
- package/dist/bin/forgebook/agentSetup/drawDiagnosis.js +134 -0
- package/dist/bin/forgebook/agentSetup/drawRun.d.ts +91 -0
- package/dist/bin/forgebook/agentSetup/drawRun.js +353 -0
- package/dist/bin/forgebook/agentSetup/hookNames.d.ts +7 -0
- package/dist/bin/forgebook/agentSetup/hookNames.js +7 -0
- package/dist/bin/forgebook/agentSetup/initAgentSteps.d.ts +48 -0
- package/dist/bin/forgebook/agentSetup/initAgentSteps.js +104 -0
- package/dist/bin/forgebook/agentSetup/liftedProviders.d.ts +17 -0
- package/dist/bin/forgebook/agentSetup/liftedProviders.js +186 -0
- package/dist/bin/forgebook/agentSetup/projectRunner.d.ts +46 -0
- package/dist/bin/forgebook/agentSetup/projectRunner.js +85 -0
- package/dist/bin/forgebook/agentSetup/stopHook.d.ts +65 -0
- package/dist/bin/forgebook/agentSetup/stopHook.js +202 -0
- package/dist/bin/forgebook/agentSetup/uniformPicture.d.ts +7 -0
- package/dist/bin/forgebook/agentSetup/uniformPicture.js +98 -0
- package/dist/bin/forgebook/agentSetupCommands.d.mts +14 -0
- package/dist/bin/forgebook/agentSetupCommands.mjs +98 -0
- package/dist/bin/forgebook/agentText.d.ts +23 -3
- package/dist/bin/forgebook/agentText.js +175 -28
- package/dist/bin/forgebook/agents.md +20 -191
- package/dist/bin/forgebook/agentsText.js +2 -1
- package/dist/bin/forgebook/appBuild/appBuild.d.ts +59 -0
- package/dist/bin/forgebook/appBuild/appBuild.js +213 -0
- package/dist/bin/forgebook/appBuild/appViteConfig.d.ts +96 -0
- package/dist/bin/forgebook/appBuild/appViteConfig.js +320 -0
- package/dist/bin/forgebook/appBuild/tsconfigPaths.d.ts +14 -0
- package/dist/bin/forgebook/appBuild/tsconfigPaths.js +80 -0
- package/dist/bin/forgebook/auditCommand.d.mts +8 -0
- package/dist/bin/forgebook/auditCommand.mjs +75 -0
- package/dist/bin/forgebook/auditRun.d.ts +95 -0
- package/dist/bin/forgebook/auditRun.js +270 -0
- package/dist/bin/forgebook/browserRun.d.ts +21 -0
- package/dist/bin/forgebook/browserRun.js +57 -0
- package/dist/bin/forgebook/buildFailure.d.ts +7 -0
- package/dist/bin/forgebook/buildFailure.js +47 -0
- package/dist/bin/forgebook/buildWatch.d.ts +52 -0
- package/dist/bin/forgebook/buildWatch.js +137 -0
- package/dist/bin/forgebook/builtCatalogue.js +9 -5
- package/dist/bin/forgebook/catalogueCommands.d.ts +9 -0
- package/dist/bin/forgebook/catalogueCommands.js +23 -0
- package/dist/bin/forgebook/catalogueVite.d.ts +5 -1
- package/dist/bin/forgebook/catalogueVite.js +14 -6
- package/dist/bin/forgebook/commandCacheClaim.d.ts +18 -0
- package/dist/bin/forgebook/commandCacheClaim.js +170 -0
- package/dist/bin/forgebook/commandServer.d.ts +8 -0
- package/dist/bin/forgebook/commandServer.js +61 -13
- package/dist/bin/forgebook/forgebookCommands.mjs +105 -28
- package/dist/bin/forgebook/graphCommand.d.mts +8 -0
- package/dist/bin/forgebook/graphCommand.mjs +84 -0
- package/dist/bin/forgebook/guide/commands.md +57 -0
- package/dist/bin/forgebook/guide/devices.md +17 -0
- package/dist/bin/forgebook/guide/docs-pages.md +13 -0
- package/dist/bin/forgebook/guide/frameworks/angular.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/html.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/nextjs.md +23 -0
- package/dist/bin/forgebook/guide/frameworks/nuxt.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/preact.md +16 -0
- package/dist/bin/forgebook/guide/frameworks/react-native-web.md +21 -0
- package/dist/bin/forgebook/guide/frameworks/react.md +16 -0
- package/dist/bin/forgebook/guide/frameworks/solid.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/svelte.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/sveltekit.md +23 -0
- package/dist/bin/forgebook/guide/frameworks/vue.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/web-components.md +21 -0
- package/dist/bin/forgebook/guide/links.md +29 -0
- package/dist/bin/forgebook/guide/setup.md +23 -0
- package/dist/bin/forgebook/guide/stories.md +90 -0
- package/dist/bin/forgebook/guide/switches.md +43 -0
- package/dist/bin/forgebook/guideCommand.d.mts +13 -0
- package/dist/bin/forgebook/guideCommand.mjs +37 -0
- package/dist/bin/forgebook/importers/storybook.d.ts +21 -0
- package/dist/bin/forgebook/importers/storybook.js +11 -5
- package/dist/bin/forgebook/importers/storybookFrameworks.js +1 -1
- package/dist/bin/forgebook/initCommands.d.mts +11 -0
- package/dist/bin/forgebook/initCommands.mjs +51 -78
- package/dist/bin/forgebook/initConfig.d.ts +5 -3
- package/dist/bin/forgebook/initConfig.js +6 -3
- package/dist/bin/forgebook/initInstall.d.ts +15 -0
- package/dist/bin/forgebook/initInstall.js +77 -0
- package/dist/bin/forgebook/initPrint.d.ts +9 -0
- package/dist/bin/forgebook/initPrint.js +60 -0
- package/dist/bin/forgebook/initRefusals.d.ts +45 -0
- package/dist/bin/forgebook/initRefusals.js +91 -0
- package/dist/bin/forgebook/initRun.d.ts +28 -0
- package/dist/bin/forgebook/initRun.js +311 -0
- package/dist/bin/forgebook/mcpCommand.mjs +38 -4
- package/dist/bin/forgebook/mcpGraph.d.ts +13 -0
- package/dist/bin/forgebook/mcpGraph.js +24 -0
- package/dist/bin/forgebook/mcpTokens.d.ts +14 -0
- package/dist/bin/forgebook/mcpTokens.js +58 -0
- package/dist/bin/forgebook/mcpToolParts.d.ts +7 -0
- package/dist/bin/forgebook/mcpToolParts.js +10 -0
- package/dist/bin/forgebook/mcpTools.d.ts +13 -6
- package/dist/bin/forgebook/mcpTools.js +57 -90
- package/dist/bin/forgebook/mcpVerify.d.ts +16 -0
- package/dist/bin/forgebook/mcpVerify.js +36 -0
- package/dist/bin/forgebook/migrate/codemods.d.ts +11 -0
- package/dist/bin/forgebook/migrate/codemods.js +61 -0
- package/dist/bin/forgebook/migrate/migrate.types.d.ts +117 -0
- package/dist/bin/forgebook/migrate/migrate.types.js +5 -0
- package/dist/bin/forgebook/migrate/migrateCommand.d.mts +8 -0
- package/dist/bin/forgebook/migrate/migrateCommand.mjs +76 -0
- package/dist/bin/forgebook/migrate/migrateRun.d.ts +61 -0
- package/dist/bin/forgebook/migrate/migrateRun.js +210 -0
- package/dist/bin/forgebook/migrate/migrateText.d.ts +12 -0
- package/dist/bin/forgebook/migrate/migrateText.js +30 -0
- package/dist/bin/forgebook/migrate/migrateWrite.d.ts +27 -0
- package/dist/bin/forgebook/migrate/migrateWrite.js +66 -0
- package/dist/bin/forgebook/migrate/objectEdits.d.ts +70 -0
- package/dist/bin/forgebook/migrate/objectEdits.js +241 -0
- package/dist/bin/forgebook/migrate/playOnInBuilds.d.ts +3 -0
- package/dist/bin/forgebook/migrate/playOnInBuilds.js +86 -0
- package/dist/bin/forgebook/migrate/propGroupStrings.d.ts +5 -0
- package/dist/bin/forgebook/migrate/propGroupStrings.js +81 -0
- package/dist/bin/forgebook/newProject/newProject.d.ts +39 -0
- package/dist/bin/forgebook/newProject/newProject.js +180 -0
- package/dist/bin/forgebook/newProject/newProject.types.d.ts +97 -0
- package/dist/bin/forgebook/newProject/newProject.types.js +6 -0
- package/dist/bin/forgebook/newProject/packageManagers.d.ts +51 -0
- package/dist/bin/forgebook/newProject/packageManagers.js +121 -0
- package/dist/bin/forgebook/newProject/projectEntries.d.ts +62 -0
- package/dist/bin/forgebook/newProject/projectEntries.js +191 -0
- package/dist/bin/forgebook/newProject/projectFrameworks.d.ts +57 -0
- package/dist/bin/forgebook/newProject/projectFrameworks.js +148 -0
- package/dist/bin/forgebook/newProject/projectLook.d.ts +23 -0
- package/dist/bin/forgebook/newProject/projectLook.js +293 -0
- package/dist/bin/forgebook/newProject/projectPackages.d.ts +66 -0
- package/dist/bin/forgebook/newProject/projectPackages.js +178 -0
- package/dist/bin/forgebook/newRepair.d.ts +45 -0
- package/dist/bin/forgebook/newRepair.js +157 -0
- package/dist/bin/forgebook/newRepairRun.d.ts +69 -0
- package/dist/bin/forgebook/newRepairRun.js +148 -0
- package/dist/bin/forgebook/newStories.d.ts +23 -1
- package/dist/bin/forgebook/newStories.js +101 -11
- package/dist/bin/forgebook/newStoriesFile.d.ts +20 -1
- package/dist/bin/forgebook/newStoriesFile.js +43 -4
- package/dist/bin/forgebook/prebundleRun.d.ts +3 -1
- package/dist/bin/forgebook/prebundleRun.js +28 -8
- package/dist/bin/forgebook/proofCommand.d.mts +15 -0
- package/dist/bin/forgebook/proofCommand.mjs +212 -0
- package/dist/bin/forgebook/proofRun.d.ts +63 -0
- package/dist/bin/forgebook/proofRun.js +412 -0
- package/dist/bin/forgebook/proofText.d.ts +36 -0
- package/dist/bin/forgebook/proofText.js +131 -0
- package/dist/bin/forgebook/proofWorkflow.d.ts +29 -0
- package/dist/bin/forgebook/proofWorkflow.js +205 -0
- package/dist/bin/forgebook/setArgsTool.d.ts +8 -0
- package/dist/bin/forgebook/setArgsTool.js +70 -0
- package/dist/bin/forgebook/storyCheckCommands.mjs +42 -3
- package/dist/bin/forgebook/storyCheckRun.d.ts +50 -0
- package/dist/bin/forgebook/storyCheckRun.js +83 -9
- package/dist/bin/forgebook/storyFileIds.d.ts +15 -0
- package/dist/bin/forgebook/storyFileIds.js +14 -0
- package/dist/bin/forgebook/stressCases.d.ts +31 -0
- package/dist/bin/forgebook/stressCases.js +79 -0
- package/dist/bin/forgebook/stressRun.d.ts +12 -0
- package/dist/bin/forgebook/stressRun.js +61 -0
- package/dist/bin/forgebook/stressText.d.ts +27 -0
- package/dist/bin/forgebook/stressText.js +46 -0
- package/dist/bin/forgebook/verifyBase.d.ts +45 -0
- package/dist/bin/forgebook/verifyBase.js +196 -0
- package/dist/bin/forgebook/verifyCommand.d.mts +13 -0
- package/dist/bin/forgebook/verifyCommand.mjs +125 -0
- package/dist/bin/forgebook/verifyRun.d.ts +63 -0
- package/dist/bin/forgebook/verifyRun.js +108 -0
- package/dist/bin/forgebook/verifyVerdict.d.ts +40 -0
- package/dist/bin/forgebook/verifyVerdict.js +297 -0
- package/dist/bin/forgebook/workflowActions.d.ts +23 -0
- package/dist/bin/forgebook/workflowActions.js +23 -0
- package/dist/bin/forgebook-docs/catalogueMarkdown.js +12 -1
- package/dist/src/addressArgs.d.ts +54 -6
- package/dist/src/addressArgs.js +72 -16
- package/dist/src/addressArgsParam.d.ts +54 -0
- package/dist/src/addressArgsParam.js +51 -0
- package/dist/src/addressTexts.d.ts +14 -0
- package/dist/src/addressTexts.js +28 -21
- package/dist/src/agentIndexFile.d.ts +11 -0
- package/dist/src/agentIndexFile.js +11 -0
- package/dist/src/argConditions.d.ts +52 -0
- package/dist/src/argConditions.js +80 -0
- package/dist/src/argControl.d.ts +100 -0
- package/dist/src/argControl.js +0 -0
- package/dist/src/argExpression.d.ts +21 -0
- package/dist/src/argExpression.js +30 -0
- package/dist/src/argTypes.d.ts +40 -51
- package/dist/src/argTypes.js +66 -184
- package/dist/src/argsProps.d.ts +3 -3
- package/dist/src/argsProps.js +11 -5
- package/dist/src/bundlerErrors.d.ts +29 -0
- package/dist/src/bundlerErrors.js +49 -0
- package/dist/src/catalogue.d.ts +31 -0
- package/dist/src/catalogue.js +13 -2
- package/dist/src/catalogueRefs.d.ts +75 -0
- package/dist/src/catalogueRefs.js +122 -0
- package/dist/src/componentDocs.d.ts +71 -0
- package/dist/src/componentDocs.js +15 -2
- package/dist/src/frame/callValues.d.ts +19 -0
- package/dist/src/frame/callValues.js +58 -0
- package/dist/src/frame/canvasScheme.d.ts +33 -0
- package/dist/src/frame/canvasScheme.js +67 -0
- package/dist/src/frame/frame.css +36 -3
- package/dist/src/frame/frameStatus.d.ts +16 -1
- package/dist/src/frame/frameStatus.js +16 -1
- package/dist/src/frame/frameView.js +4 -3
- package/dist/src/frame/mountFrame.d.ts +7 -1
- package/dist/src/frame/mountFrame.js +153 -46
- package/dist/src/frame/panelValues.d.ts +35 -0
- package/dist/src/frame/panelValues.js +127 -0
- package/dist/src/frame/playActions.d.ts +39 -0
- package/dist/src/frame/playActions.js +98 -0
- package/dist/src/frame/playStepper.d.ts +28 -0
- package/dist/src/frame/playStepper.js +38 -0
- package/dist/src/frame/playStory.d.ts +9 -1
- package/dist/src/frame/playStory.js +49 -3
- package/dist/src/frame/renderer.d.ts +34 -1
- package/dist/src/frame/renderer.js +24 -0
- package/dist/src/frame/shellChannel.d.ts +1 -1
- package/dist/src/frame/shellChannel.js +1 -1
- package/dist/src/frame/shellCheck.d.ts +17 -0
- package/dist/src/frame/shellCheck.js +25 -0
- package/dist/src/frame/shellMessageCheck.d.ts +7 -0
- package/dist/src/frame/shellMessageCheck.js +53 -0
- package/dist/src/frame/storyContent.d.ts +50 -0
- package/dist/src/frame/storyContent.js +73 -0
- package/dist/src/frame/storyModule.d.ts +9 -0
- package/dist/src/frame/storyModule.js +20 -2
- package/dist/src/frame/storyRun.d.ts +15 -7
- package/dist/src/frame/storyRun.js +64 -15
- package/dist/src/frame/valueSheets.d.ts +35 -0
- package/dist/src/frame/valueSheets.js +99 -0
- package/dist/src/hotModules.d.ts +20 -0
- package/dist/src/hotModules.js +23 -0
- package/dist/src/jsxCode.d.ts +1 -14
- package/dist/src/jsxCode.js +46 -10
- package/dist/src/liveErrors.d.ts +30 -4
- package/dist/src/liveErrors.js +18 -3
- package/dist/src/messages.d.ts +77 -27
- package/dist/src/messages.js +58 -100
- package/dist/src/namedValues.d.ts +2 -26
- package/dist/src/namedValues.js +0 -47
- package/dist/src/pageConfig.d.ts +2 -0
- package/dist/src/playTrace.d.ts +19 -2
- package/dist/src/playTrace.js +10 -5
- package/dist/src/plugin.d.ts +10 -3
- package/dist/src/previewRelay.js +9 -1
- package/dist/src/printable.d.ts +12 -0
- package/dist/src/printable.js +22 -0
- package/dist/src/propsSignature.d.ts +37 -0
- package/dist/src/propsSignature.js +40 -0
- package/dist/src/search.d.ts +41 -5
- package/dist/src/search.js +93 -23
- package/dist/src/searchMatch.d.ts +4 -1
- package/dist/src/searchMatch.js +26 -5
- package/dist/src/searchTypos.d.ts +88 -0
- package/dist/src/searchTypos.js +178 -0
- package/dist/src/shapeValues.d.ts +86 -0
- package/dist/src/shapeValues.js +295 -0
- package/dist/src/shell/ApiReference.js +6 -3
- package/dist/src/shell/ApiTableBox.d.ts +15 -0
- package/dist/src/shell/ApiTableBox.js +11 -0
- package/dist/src/shell/AppearanceMenu.d.ts +4 -1
- package/dist/src/shell/AppearanceMenu.js +9 -6
- package/dist/src/shell/CodeTab.d.ts +3 -2
- package/dist/src/shell/CodeTab.js +3 -2
- package/dist/src/shell/CodeText.d.ts +1 -1
- package/dist/src/shell/CodeText.js +2 -3
- package/dist/src/shell/CompareGrid.js +1 -1
- package/dist/src/shell/ComponentPage.d.ts +1 -1
- package/dist/src/shell/ComponentPage.js +5 -1
- package/dist/src/shell/CustomControl.d.ts +34 -0
- package/dist/src/shell/CustomControl.js +132 -0
- package/dist/src/shell/DocContainers.js +1 -1
- package/dist/src/shell/DocPage.js +2 -2
- package/dist/src/shell/DroppedArgsList.d.ts +2 -2
- package/dist/src/shell/DroppedArgsList.js +1 -1
- package/dist/src/shell/EmbedPage.js +58 -14
- package/dist/src/shell/Example.d.ts +5 -1
- package/dist/src/shell/Example.js +16 -8
- package/dist/src/shell/FrameView.d.ts +6 -3
- package/dist/src/shell/FrameView.js +2 -2
- package/dist/src/shell/HomePage.d.ts +3 -1
- package/dist/src/shell/HomePage.js +16 -6
- package/dist/src/shell/InfoTip.js +2 -2
- package/dist/src/shell/InteractionsTab.d.ts +11 -4
- package/dist/src/shell/InteractionsTab.js +18 -2
- package/dist/src/shell/LazyPage.js +1 -1
- package/dist/src/shell/PackageHtml.js +3 -1
- package/dist/src/shell/PinnedControl.js +14 -62
- package/dist/src/shell/PinnedControlMenu.d.ts +44 -0
- package/dist/src/shell/PinnedControlMenu.js +72 -0
- package/dist/src/shell/PluginBlockHost.js +2 -1
- package/dist/src/shell/PluginTabHost.js +19 -2
- package/dist/src/shell/PropFields.d.ts +3 -1
- package/dist/src/shell/PropFields.js +9 -6
- package/dist/src/shell/PropRows.d.ts +23 -2
- package/dist/src/shell/PropRows.js +58 -19
- package/dist/src/shell/PropsTab.d.ts +12 -5
- package/dist/src/shell/PropsTab.js +9 -21
- package/dist/src/shell/RefStoryPage.d.ts +33 -0
- package/dist/src/shell/RefStoryPage.js +123 -0
- package/dist/src/shell/SearchPanel.js +51 -24
- package/dist/src/shell/Shell.d.ts +18 -0
- package/dist/src/shell/Shell.js +137 -22
- package/dist/src/shell/ShortcutHelp.d.ts +22 -0
- package/dist/src/shell/ShortcutHelp.js +66 -0
- package/dist/src/shell/Sidebar.d.ts +17 -4
- package/dist/src/shell/Sidebar.js +92 -41
- package/dist/src/shell/SidebarDocs.js +2 -2
- package/dist/src/shell/SidebarEntries.js +5 -3
- package/dist/src/shell/SidebarHandle.d.ts +3 -5
- package/dist/src/shell/SidebarHandle.js +4 -4
- package/dist/src/shell/SidebarRefs.d.ts +39 -0
- package/dist/src/shell/SidebarRefs.js +99 -0
- package/dist/src/shell/SidebarSearch.js +37 -9
- package/dist/src/shell/SignatureReference.js +3 -1
- package/dist/src/shell/Stage.d.ts +10 -2
- package/dist/src/shell/Stage.js +35 -60
- package/dist/src/shell/StatusBadges.d.ts +54 -0
- package/dist/src/shell/StatusBadges.js +77 -0
- package/dist/src/shell/StoryCodeBlock.d.ts +8 -19
- package/dist/src/shell/StoryCodeBlock.js +7 -6
- package/dist/src/shell/SwitchGallery.d.ts +36 -0
- package/dist/src/shell/SwitchGallery.js +17 -0
- package/dist/src/shell/SwitchGalleryPanel.d.ts +37 -0
- package/dist/src/shell/SwitchGalleryPanel.js +99 -0
- package/dist/src/shell/TagFilter.d.ts +24 -0
- package/dist/src/shell/TagFilter.js +45 -0
- package/dist/src/shell/TagViews.d.ts +39 -0
- package/dist/src/shell/TagViews.js +20 -0
- package/dist/src/shell/Toolbar.d.ts +4 -1
- package/dist/src/shell/Toolbar.js +17 -7
- package/dist/src/shell/ToolbarControl.d.ts +3 -0
- package/dist/src/shell/ToolbarControl.js +23 -6
- package/dist/src/shell/ViewMenuPanel.js +6 -1
- package/dist/src/shell/argChecks.d.ts +22 -0
- package/dist/src/shell/argChecks.js +20 -0
- package/dist/src/shell/asideStory.d.ts +17 -4
- package/dist/src/shell/asideStory.js +21 -4
- package/dist/src/shell/audienceSections.css +9 -9
- package/dist/src/shell/catalogueContext.d.ts +1 -1
- package/dist/src/shell/catalogueContext.js +6 -1
- package/dist/src/shell/codeSpans.d.ts +27 -0
- package/dist/src/shell/codeSpans.js +76 -0
- package/dist/src/shell/compareVariants.d.ts +4 -2
- package/dist/src/shell/compareVariants.js +16 -8
- package/dist/src/shell/composition.d.ts +23 -0
- package/dist/src/shell/composition.js +26 -0
- package/dist/src/shell/controlCycle.d.ts +1 -1
- package/dist/src/shell/controlCycle.js +3 -2
- package/dist/src/shell/customControls.d.ts +55 -0
- package/dist/src/shell/customControls.js +70 -0
- package/dist/src/shell/docPage.css +22 -22
- package/dist/src/shell/dockTabs.d.ts +19 -3
- package/dist/src/shell/dockTabs.js +28 -20
- package/dist/src/shell/embed.css +7 -7
- package/dist/src/shell/framesOrigin.d.ts +7 -0
- package/dist/src/shell/framesOrigin.js +1 -1
- package/dist/src/shell/galleryPlace.d.ts +20 -0
- package/dist/src/shell/galleryPlace.js +26 -0
- package/dist/src/shell/icons.d.ts +1 -0
- package/dist/src/shell/icons.js +1 -0
- package/dist/src/shell/keyboard.d.ts +14 -12
- package/dist/src/shell/keyboard.js +21 -6
- package/dist/src/shell/laterStrings.d.ts +29 -0
- package/dist/src/shell/laterStrings.js +42 -3
- package/dist/src/shell/mountShell.js +3 -0
- package/dist/src/shell/pageStrings.d.ts +4 -0
- package/dist/src/shell/pageStrings.js +4 -0
- package/dist/src/shell/pageTagView.d.ts +18 -0
- package/dist/src/shell/pageTagView.js +10 -0
- package/dist/src/shell/playMemory.d.ts +14 -0
- package/dist/src/shell/playMemory.js +8 -0
- package/dist/src/shell/propNotes.d.ts +23 -0
- package/dist/src/shell/propNotes.js +37 -0
- package/dist/src/shell/refIndexLoad.d.ts +17 -0
- package/dist/src/shell/refIndexLoad.js +38 -0
- package/dist/src/shell/refParts.d.ts +34 -0
- package/dist/src/shell/refParts.js +9 -0
- package/dist/src/shell/refStory.css +21 -0
- package/dist/src/shell/refStrings.d.ts +13 -0
- package/dist/src/shell/refStrings.js +21 -0
- package/dist/src/shell/search.css +11 -11
- package/dist/src/shell/shell.css +348 -168
- package/dist/src/shell/shellScheme.js +2 -2
- package/dist/src/shell/shortcutHelp.css +64 -0
- package/dist/src/shell/stageArgs.d.ts +53 -0
- package/dist/src/shell/stageArgs.js +64 -0
- package/dist/src/shell/statusBadges.css +51 -0
- package/dist/src/shell/strings.d.ts +7 -16
- package/dist/src/shell/strings.js +12 -17
- package/dist/src/shell/switchGallery.css +104 -0
- package/dist/src/shell/tagFilter.css +46 -0
- package/dist/src/shell/tagView.d.ts +20 -0
- package/dist/src/shell/tagView.js +10 -0
- package/dist/src/shell/useAddressArgs.d.ts +27 -2
- package/dist/src/shell/useAddressArgs.js +71 -14
- package/dist/src/shell/useControlKeys.js +2 -2
- package/dist/src/shell/useEditedProblems.d.ts +6 -0
- package/dist/src/shell/useEditedProblems.js +40 -0
- package/dist/src/shell/useFrameMessages.js +3 -0
- package/dist/src/shell/useListedTree.d.ts +13 -0
- package/dist/src/shell/useListedTree.js +32 -0
- package/dist/src/shell/usePageFrames.js +2 -2
- package/dist/src/shell/usePopover.d.ts +5 -0
- package/dist/src/shell/usePopover.js +7 -1
- package/dist/src/shell/useRefIndex.d.ts +22 -0
- package/dist/src/shell/useRefIndex.js +36 -0
- package/dist/src/shell/useScrollStops.d.ts +20 -0
- package/dist/src/shell/useScrollStops.js +41 -0
- package/dist/src/shell/useShortcutHelp.d.ts +18 -0
- package/dist/src/shell/useShortcutHelp.js +32 -0
- package/dist/src/shell/useSidebarOverlay.d.ts +2 -1
- package/dist/src/shell/useSidebarOverlay.js +12 -4
- package/dist/src/shell/useStoryCode.d.ts +2 -1
- package/dist/src/shell/useStoryCode.js +12 -7
- package/dist/src/shell/useToolbarLayout.d.ts +5 -1
- package/dist/src/shell/useToolbarLayout.js +2 -2
- package/dist/src/shell/useWorstCase.d.ts +8 -2
- package/dist/src/shell/useWorstCase.js +2 -2
- package/dist/src/shell/valueEditors/FileEditor.d.ts +28 -0
- package/dist/src/shell/valueEditors/FileEditor.js +66 -0
- package/dist/src/shell/valueEditors/JsonEditor.d.ts +14 -0
- package/dist/src/shell/valueEditors/JsonEditor.js +53 -0
- package/dist/src/shell/valueEditors/ListEditor.d.ts +24 -0
- package/dist/src/shell/valueEditors/ListEditor.js +82 -0
- package/dist/src/shell/valueEditors/ObjectEditor.d.ts +32 -0
- package/dist/src/shell/valueEditors/ObjectEditor.js +70 -0
- package/dist/src/shell/valueEditors/PropEditor.d.ts +37 -0
- package/dist/src/shell/valueEditors/PropEditor.js +53 -0
- package/dist/src/shell/valueEditors/RecordEditor.d.ts +20 -0
- package/dist/src/shell/valueEditors/RecordEditor.js +84 -0
- package/dist/src/shell/valueEditors/SearchSelect.d.ts +42 -0
- package/dist/src/shell/valueEditors/SearchSelect.js +80 -0
- package/dist/src/shell/valueEditors/TokenEditor.d.ts +49 -0
- package/dist/src/shell/valueEditors/TokenEditor.js +74 -0
- package/dist/src/shell/valueEditors/UnionEditor.d.ts +20 -0
- package/dist/src/shell/valueEditors/UnionEditor.js +64 -0
- package/dist/src/shell/valueEditors/ValueField.d.ts +15 -0
- package/dist/src/shell/valueEditors/ValueField.js +147 -0
- package/dist/src/shell/valueEditors/editorStrings.d.ts +56 -0
- package/dist/src/shell/valueEditors/editorStrings.js +66 -0
- package/dist/src/shell/valueEditors/fieldTypes.d.ts +31 -0
- package/dist/src/shell/valueEditors/fieldTypes.js +0 -0
- package/dist/src/shell/valueEditors/valueEditors.css +153 -0
- package/dist/src/shell/worstArgs.d.ts +8 -5
- package/dist/src/shell/worstArgs.js +14 -7
- package/dist/src/shellTheme.d.ts +1 -1
- package/dist/src/shellTheme.js +15 -1
- package/dist/src/shellTheme.types.d.ts +4 -0
- package/dist/src/shellWord.d.ts +12 -0
- package/dist/src/shellWord.js +15 -0
- package/dist/src/sourceFiles.js +2 -1
- package/dist/src/storyArgTypes.d.ts +57 -0
- package/dist/src/storyArgTypes.js +195 -0
- package/dist/src/storyBackground.js +14 -3
- package/dist/src/storyCheck.d.ts +85 -3
- package/dist/src/storyCheck.js +23 -1
- package/dist/src/storyCodeText.d.ts +46 -0
- package/dist/src/storyCodeText.js +27 -0
- package/dist/src/storyControls.d.ts +100 -0
- package/dist/src/storyControls.js +100 -0
- package/dist/src/storyStatuses.d.ts +55 -0
- package/dist/src/storyStatuses.js +104 -0
- package/dist/src/storyTagNames.d.ts +25 -0
- package/dist/src/storyTagNames.js +25 -0
- package/dist/src/storyTags.d.ts +29 -0
- package/dist/src/storyTags.js +85 -0
- package/dist/src/storyTree.d.ts +13 -0
- package/dist/src/storyTree.js +24 -4
- package/dist/src/storybookArgs.d.ts +24 -0
- package/dist/src/storybookArgs.js +185 -0
- package/dist/src/switches.d.ts +66 -3
- package/dist/src/switches.js +42 -1
- package/dist/src/valueSchema.d.ts +28 -0
- package/dist/src/valueSchema.js +196 -0
- package/dist/src/valueShape.d.ts +94 -0
- package/dist/src/valueShape.js +25 -0
- package/dist/src/viewState.d.ts +8 -3
- package/dist/src/viewState.js +27 -10
- package/dist/src/vite/adapter.d.ts +40 -2
- package/dist/src/vite/adapter.js +1 -0
- package/dist/src/vite/agent.types.d.ts +347 -7
- package/dist/src/vite/agentApi.d.ts +23 -0
- package/dist/src/vite/agentApi.js +90 -17
- package/dist/src/vite/agentIndex.d.ts +0 -2
- package/dist/src/vite/agentIndex.js +5 -6
- package/dist/src/vite/agentRoutes.d.ts +20 -1
- package/dist/src/vite/agentRoutes.js +106 -65
- package/dist/src/vite/agentStatuses.d.ts +42 -0
- package/dist/src/vite/agentStatuses.js +67 -0
- package/dist/src/vite/agentStoryCode.d.ts +48 -0
- package/dist/src/vite/agentStoryCode.js +38 -0
- package/dist/src/vite/agentVisibility.d.ts +47 -0
- package/dist/src/vite/agentVisibility.js +174 -0
- package/dist/src/vite/appAudit.d.ts +134 -0
- package/dist/src/vite/appAudit.js +333 -0
- package/dist/src/vite/appBuildOption.d.ts +53 -0
- package/dist/src/vite/appBuildOption.js +55 -0
- package/dist/src/vite/appTokenFiles.d.ts +92 -0
- package/dist/src/vite/appTokenFiles.js +433 -0
- package/dist/src/vite/appTokens.d.ts +23 -0
- package/dist/src/vite/appTokens.js +275 -0
- package/dist/src/vite/builtTexts.d.ts +10 -0
- package/dist/src/vite/builtTexts.js +59 -22
- package/dist/src/vite/catalogueConfig.d.ts +3 -1
- package/dist/src/vite/catalogueConfig.js +15 -3
- package/dist/src/vite/changeCoverage.d.ts +74 -0
- package/dist/src/vite/changeCoverage.js +120 -0
- package/dist/src/vite/changedRoute.d.ts +30 -0
- package/dist/src/vite/changedRoute.js +197 -0
- package/dist/src/vite/checkCode.d.ts +105 -3
- package/dist/src/vite/checkCode.js +323 -36
- package/dist/src/vite/checkoutWatch.d.ts +97 -0
- package/dist/src/vite/checkoutWatch.js +287 -0
- package/dist/src/vite/closeWatch.d.ts +8 -0
- package/dist/src/vite/closeWatch.js +1 -1
- package/dist/src/vite/componentCache.d.ts +8 -0
- package/dist/src/vite/componentCache.js +66 -0
- package/dist/src/vite/componentGraph.d.ts +71 -0
- package/dist/src/vite/componentGraph.js +133 -0
- package/dist/src/vite/componentRules.d.ts +33 -0
- package/dist/src/vite/componentRules.js +105 -0
- package/dist/src/vite/componentScan.d.ts +69 -0
- package/dist/src/vite/componentScan.js +418 -0
- package/dist/src/vite/compositionCheck.d.ts +15 -0
- package/dist/src/vite/compositionCheck.js +243 -0
- package/dist/src/vite/config.d.ts +32 -1
- package/dist/src/vite/configFile.d.ts +14 -2
- package/dist/src/vite/configFile.js +124 -40
- package/dist/src/vite/configKeys.d.ts +15 -0
- package/dist/src/vite/configKeys.js +171 -0
- package/dist/src/vite/configLoadError.d.ts +23 -0
- package/dist/src/vite/configLoadError.js +71 -0
- package/dist/src/vite/cssDeclarations.d.ts +71 -0
- package/dist/src/vite/cssDeclarations.js +290 -0
- package/dist/src/vite/cssImports.d.ts +14 -0
- package/dist/src/vite/cssImports.js +48 -0
- package/dist/src/vite/cssReferences.d.ts +54 -0
- package/dist/src/vite/cssReferences.js +157 -0
- package/dist/src/vite/cssTokenValues.d.ts +50 -0
- package/dist/src/vite/cssTokenValues.js +233 -0
- package/dist/src/vite/designTokens.d.ts +24 -0
- package/dist/src/vite/designTokens.js +5 -1
- package/dist/src/vite/docsExtractor.d.ts +9 -3
- package/dist/src/vite/docsExtractor.js +11 -3
- package/dist/src/vite/docsProgram.d.ts +17 -4
- package/dist/src/vite/docsProgram.js +52 -11
- package/dist/src/vite/docsWorker.js +7 -2
- package/dist/src/vite/emptyStoryGlobs.d.ts +41 -0
- package/dist/src/vite/emptyStoryGlobs.js +52 -0
- package/dist/src/vite/fileImports.d.ts +17 -0
- package/dist/src/vite/fileImports.js +57 -0
- package/dist/src/vite/findComponent.d.ts +10 -2
- package/dist/src/vite/findComponent.js +27 -22
- package/dist/src/vite/findRoute.js +3 -2
- package/dist/src/vite/forcedStates.d.ts +9 -2
- package/dist/src/vite/forcedStates.js +12 -3
- package/dist/src/vite/forgebookPlugin.d.ts +2 -0
- package/dist/src/vite/forgebookPlugin.js +52 -72
- package/dist/src/vite/frameErrors.d.ts +19 -0
- package/dist/src/vite/frameErrors.js +70 -0
- package/dist/src/vite/framesServer.d.ts +12 -0
- package/dist/src/vite/framesServer.js +21 -4
- package/dist/src/vite/functionComponentDocs.js +81 -12
- package/dist/src/vite/generatedModules.js +4 -2
- package/dist/src/vite/gitChange.d.ts +38 -5
- package/dist/src/vite/gitChange.js +71 -11
- package/dist/src/vite/hiddenStoryFiles.d.ts +23 -0
- package/dist/src/vite/hiddenStoryFiles.js +107 -0
- package/dist/src/vite/hotSnippets.d.ts +38 -14
- package/dist/src/vite/hotSnippets.js +137 -39
- package/dist/src/vite/importedNames.d.ts +37 -0
- package/dist/src/vite/importedNames.js +138 -0
- package/dist/src/vite/indexFields.d.ts +6 -0
- package/dist/src/vite/indexFields.js +21 -0
- package/dist/src/vite/indexStoryFile.d.ts +8 -1
- package/dist/src/vite/indexStoryFile.js +22 -157
- package/dist/src/vite/jsxCallSites.d.ts +33 -0
- package/dist/src/vite/jsxCallSites.js +200 -0
- package/dist/src/vite/jsxInScripts.d.ts +67 -0
- package/dist/src/vite/jsxInScripts.js +138 -0
- package/dist/src/vite/jsxTree.d.ts +20 -0
- package/dist/src/vite/jsxTree.js +163 -0
- package/dist/src/vite/lineAndColumn.d.ts +13 -0
- package/dist/src/vite/lineAndColumn.js +18 -0
- package/dist/src/vite/lookAlikes.d.ts +65 -0
- package/dist/src/vite/lookAlikes.js +228 -0
- package/dist/src/vite/nearestToken.d.ts +17 -0
- package/dist/src/vite/nearestToken.js +9 -2
- package/dist/src/vite/packageEntries.d.ts +42 -0
- package/dist/src/vite/packageEntries.js +127 -0
- package/dist/src/vite/pages.d.ts +9 -1
- package/dist/src/vite/pages.js +108 -4
- package/dist/src/vite/pluginConfig.js +4 -0
- package/dist/src/vite/pluginIds.d.ts +2 -0
- package/dist/src/vite/pluginIds.js +5 -1
- package/dist/src/vite/pluginModules.d.ts +81 -11
- package/dist/src/vite/pluginModules.js +109 -21
- package/dist/src/vite/prebundled.d.ts +57 -15
- package/dist/src/vite/prebundled.js +80 -0
- package/dist/src/vite/previewTags.d.ts +25 -0
- package/dist/src/vite/previewTags.js +56 -0
- package/dist/src/vite/projectFiles.d.ts +54 -0
- package/dist/src/vite/projectFiles.js +116 -0
- package/dist/src/vite/projectPostcss.d.ts +70 -0
- package/dist/src/vite/projectPostcss.js +250 -0
- package/dist/src/vite/propDocs.d.ts +12 -0
- package/dist/src/vite/propDocs.js +130 -58
- package/dist/src/vite/propKind.d.ts +40 -0
- package/dist/src/vite/propKind.js +71 -0
- package/dist/src/vite/propTypeNotes.d.ts +22 -0
- package/dist/src/vite/propTypeNotes.js +51 -0
- package/dist/src/vite/publishedExports.d.ts +27 -0
- package/dist/src/vite/publishedExports.js +298 -0
- package/dist/src/vite/realFolder.d.ts +6 -0
- package/dist/src/vite/realFolder.js +25 -0
- package/dist/src/vite/refsConfig.d.ts +39 -0
- package/dist/src/vite/refsConfig.js +54 -0
- package/dist/src/vite/reuseCheck.d.ts +45 -0
- package/dist/src/vite/reuseCheck.js +260 -0
- package/dist/src/vite/runningVersions.d.ts +33 -0
- package/dist/src/vite/runningVersions.js +25 -0
- package/dist/src/vite/scriptProblems.d.ts +60 -0
- package/dist/src/vite/scriptProblems.js +155 -0
- package/dist/src/vite/searchModule.js +3 -2
- package/dist/src/vite/searchRoute.js +4 -2
- package/dist/src/vite/shapeDocs.d.ts +36 -0
- package/dist/src/vite/shapeDocs.js +177 -0
- package/dist/src/vite/singleFileComponent.d.ts +17 -0
- package/dist/src/vite/singleFileComponent.js +83 -0
- package/dist/src/vite/sourceText.d.ts +34 -0
- package/dist/src/vite/sourceText.js +72 -0
- package/dist/src/vite/sourceTokens.d.ts +7 -0
- package/dist/src/vite/sourceTokens.js +7 -2
- package/dist/src/vite/stackLines.d.ts +49 -0
- package/dist/src/vite/stackLines.js +96 -0
- package/dist/src/vite/storyCode.d.ts +22 -7
- package/dist/src/vite/storyCode.js +263 -37
- package/dist/src/vite/storyCoverage.d.ts +48 -0
- package/dist/src/vite/storyCoverage.js +179 -0
- package/dist/src/vite/storyFilesModule.d.ts +48 -3
- package/dist/src/vite/storyFilesModule.js +105 -15
- package/dist/src/vite/storyPatterns.d.ts +31 -0
- package/dist/src/vite/storyPatterns.js +140 -5
- package/dist/src/vite/storyReach.d.ts +10 -2
- package/dist/src/vite/storyReach.js +15 -11
- package/dist/src/vite/storyTopLevel.d.ts +51 -0
- package/dist/src/vite/storyTopLevel.js +146 -0
- package/dist/src/vite/storylessRoutes.d.ts +4 -3
- package/dist/src/vite/storylessRoutes.js +210 -19
- package/dist/src/vite/switchValuesCheck.d.ts +19 -0
- package/dist/src/vite/switchValuesCheck.js +164 -0
- package/dist/src/vite/switchesDocument.d.ts +15 -0
- package/dist/src/vite/switchesDocument.js +47 -0
- package/dist/src/vite/tailwindConfigTokens.d.ts +41 -0
- package/dist/src/vite/tailwindConfigTokens.js +306 -0
- package/dist/src/vite/textImports.d.ts +15 -0
- package/dist/src/vite/textImports.js +58 -0
- package/dist/src/vite/textModules.d.ts +6 -5
- package/dist/src/vite/textModules.js +13 -8
- package/dist/src/vite/tokenAnswers.d.ts +6 -2
- package/dist/src/vite/tokenAnswers.js +11 -7
- package/dist/src/vite/typeParameters.d.ts +83 -0
- package/dist/src/vite/typeParameters.js +270 -0
- package/dist/src/vite/unionProps.d.ts +37 -0
- package/dist/src/vite/unionProps.js +121 -0
- package/dist/src/vite/unresolvedTokens.d.ts +20 -0
- package/dist/src/vite/unresolvedTokens.js +193 -0
- package/dist/src/vite/usageGraph.js +10 -52
- package/dist/src/vite/usageGuidance.d.ts +9 -2
- package/dist/src/vite/usageGuidance.js +36 -8
- package/dist/src/vite/usageImports.d.ts +35 -0
- package/dist/src/vite/usageImports.js +280 -0
- package/dist/src/vite/visibilityRoute.d.ts +16 -0
- package/dist/src/vite/visibilityRoute.js +320 -0
- package/dist/src/worstCase.d.ts +2 -0
- package/dist/src/worstCase.js +2 -0
- package/package.json +28 -8
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What `forgebook verify` and its MCP tool run: asks the catalogue what the change is and adds, runs the stories that
|
|
3
|
+
* reach it on one browser, and concludes (`verifyVerdict.ts`).
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* A check that cannot run does not stop the answer: the coverage and the code check still say what they found, and the
|
|
7
|
+
* stories that did not run cover nothing, so a project with no browser is told it is not verified rather than given only
|
|
8
|
+
* an error. Tokens files it cannot read leave the code unchecked, which the verdict says. Only a commit that names nothing
|
|
9
|
+
* ends it, since then there is no change to speak of.
|
|
10
|
+
*
|
|
11
|
+
* @module
|
|
12
|
+
*/
|
|
13
|
+
import type { StoryCheckReport } from "../../src/storyCheck.ts";
|
|
14
|
+
import type { VerifyDocument } from "../../src/vite/agent.types.ts";
|
|
15
|
+
import type { Ask } from "./mcpToolParts.ts";
|
|
16
|
+
import type { StoriesCheckInput } from "./storyCheckRun.ts";
|
|
17
|
+
import type { BaseRun } from "./verifyBase.ts";
|
|
18
|
+
/** What a verification reaches the catalogue through. */
|
|
19
|
+
export type VerifyReach = {
|
|
20
|
+
/** The catalogue's folder, in the repository. */
|
|
21
|
+
readonly dir: string;
|
|
22
|
+
/** Asks the catalogue. */
|
|
23
|
+
readonly ask: Ask;
|
|
24
|
+
/** Runs the checks on stories: the report, or why it could not run. */
|
|
25
|
+
readonly check: (input: StoriesCheckInput) => Promise<StoryCheckReport | string>;
|
|
26
|
+
/** Runs stories on the base commit, for the problems that were there before; none to count every problem. */
|
|
27
|
+
readonly checkBase?: (base: string, input: StoriesCheckInput) => Promise<BaseRun>;
|
|
28
|
+
};
|
|
29
|
+
/** What a verification is asked. */
|
|
30
|
+
export type VerifyInput = {
|
|
31
|
+
/** The commit to compare with; the default branch when none. */
|
|
32
|
+
readonly since: string | undefined;
|
|
33
|
+
/** Only the default view of each story. */
|
|
34
|
+
readonly isQuick: boolean;
|
|
35
|
+
/** Count every problem the stories have, not only those the change brought (`--all-problems`). */
|
|
36
|
+
readonly isAllProblems?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* What is wrong with the catalogue's configuration that leaves the answer not verified, said with it: a story pattern
|
|
39
|
+
* that matches nothing. None by default.
|
|
40
|
+
*/
|
|
41
|
+
readonly configProblems?: readonly string[];
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* The message of an answer that is an error.
|
|
45
|
+
*
|
|
46
|
+
* @param body - the answer's body.
|
|
47
|
+
* @param status - its status.
|
|
48
|
+
*/
|
|
49
|
+
export declare const errorOf: (body: unknown, status: number) => string;
|
|
50
|
+
/**
|
|
51
|
+
* Whether an answer means the change is not done: what `verify` exits non-zero on.
|
|
52
|
+
*
|
|
53
|
+
* @param document - the answer.
|
|
54
|
+
*/
|
|
55
|
+
export declare const isVerifyFailure: (document: VerifyDocument) => boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Answers whether a change is verified.
|
|
58
|
+
*
|
|
59
|
+
* @param reach - what it reaches the catalogue through.
|
|
60
|
+
* @param input - what to compare with, and how much to run.
|
|
61
|
+
* @returns the answer, or why there can be none.
|
|
62
|
+
*/
|
|
63
|
+
export declare const runVerify: (reach: VerifyReach, { since, isQuick, isAllProblems, configProblems }: VerifyInput) => Promise<VerifyDocument | string>;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { isChangedStoriesDocument, isCheckedCodeDocument } from "../../src/vite/agentApi.js";
|
|
2
|
+
import { isVisibilityDocument } from "../../src/vite/agentVisibility.js";
|
|
3
|
+
import { branchStart, changeBase, noBaseReason } from "../../src/vite/gitChange.js";
|
|
4
|
+
import { verifyDocument } from "./verifyVerdict.js";
|
|
5
|
+
/** What a catalogue answers when it runs an older version than this command. */
|
|
6
|
+
const UNEXPECTED_SHAPE = "The catalogue's answer has an unexpected shape: restart forgebook dev if it runs another version";
|
|
7
|
+
/**
|
|
8
|
+
* The message of an answer that is an error.
|
|
9
|
+
*
|
|
10
|
+
* @param body - the answer's body.
|
|
11
|
+
* @param status - its status.
|
|
12
|
+
*/
|
|
13
|
+
export const errorOf = (body, status) => typeof body === "object" && body !== null && "error" in body && typeof body.error === "string"
|
|
14
|
+
? body.error
|
|
15
|
+
: `The catalogue answered ${status}`;
|
|
16
|
+
/**
|
|
17
|
+
* Whether an answer means the change is not done: what `verify` exits non-zero on.
|
|
18
|
+
*
|
|
19
|
+
* @param document - the answer.
|
|
20
|
+
*/
|
|
21
|
+
export const isVerifyFailure = (document) => document.verdict === "failed" || document.verdict === "not-verified";
|
|
22
|
+
/** The stories with a problem in a report, each once. */
|
|
23
|
+
const failingIds = (report) => [
|
|
24
|
+
...new Set(report.results.filter((result) => result.problems.length > 0).map((result) => result.storyId))
|
|
25
|
+
];
|
|
26
|
+
/** Runs the stories' check, a thrown failure (a browser that will not start) being a reason as any other. */
|
|
27
|
+
const checked = async (reach, input) => {
|
|
28
|
+
try {
|
|
29
|
+
return await reach.check(input);
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
return error instanceof Error ? error.message : String(error);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* The stories that found something run again on the base: a change with none needs no base.
|
|
37
|
+
*
|
|
38
|
+
* @param reach - what it reaches the catalogue through.
|
|
39
|
+
* @param base - the base commit.
|
|
40
|
+
* @param run - the stories' check on the change.
|
|
41
|
+
* @param isAllVariants - whether every variant runs, as on the change.
|
|
42
|
+
*/
|
|
43
|
+
const baseRunOf = async (reach, base, run, isAllVariants) => {
|
|
44
|
+
const failing = typeof run === "object" ? failingIds(run) : [];
|
|
45
|
+
return failing.length === 0 || reach.checkBase === undefined
|
|
46
|
+
? undefined
|
|
47
|
+
: reach.checkBase(base, { ids: failing, isAllVariants });
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Answers whether a change is verified.
|
|
51
|
+
*
|
|
52
|
+
* @param reach - what it reaches the catalogue through.
|
|
53
|
+
* @param input - what to compare with, and how much to run.
|
|
54
|
+
* @returns the answer, or why there can be none.
|
|
55
|
+
*/
|
|
56
|
+
export const runVerify = async (reach, { since, isQuick, isAllProblems = false, configProblems = [] }) => {
|
|
57
|
+
const named = since ?? (await branchStart(reach.dir));
|
|
58
|
+
const base = await changeBase(reach.dir, named);
|
|
59
|
+
if (base === undefined)
|
|
60
|
+
return noBaseReason(reach.dir, named);
|
|
61
|
+
const params = new URLSearchParams({ since: named });
|
|
62
|
+
const code = await reach.ask("check-code", params);
|
|
63
|
+
if (code.status === 200 && !isCheckedCodeDocument(code.body))
|
|
64
|
+
return UNEXPECTED_SHAPE;
|
|
65
|
+
const changed = await reach.ask("changed", params);
|
|
66
|
+
if (changed.status !== 200)
|
|
67
|
+
return errorOf(changed.body, changed.status);
|
|
68
|
+
if (!isChangedStoriesDocument(changed.body))
|
|
69
|
+
return UNEXPECTED_SHAPE;
|
|
70
|
+
const seen = await reach.ask("visibility", params);
|
|
71
|
+
if (seen.status === 200 && !isVisibilityDocument(seen.body))
|
|
72
|
+
return UNEXPECTED_SHAPE;
|
|
73
|
+
const ids = changed.body.stories.map((story) => story.id);
|
|
74
|
+
const run = ids.length === 0 ? undefined : await checked(reach, { ids, isAllVariants: !isQuick });
|
|
75
|
+
const baseRun = isAllProblems ? undefined : await baseRunOf(reach, base, run, !isQuick);
|
|
76
|
+
// tokens that cannot be read leave the code unchecked, which the verdict says, and do not stop the rest
|
|
77
|
+
const codeBody = isCheckedCodeDocument(code.body)
|
|
78
|
+
? code.body
|
|
79
|
+
: {
|
|
80
|
+
schema: 1,
|
|
81
|
+
since: named,
|
|
82
|
+
checked: [],
|
|
83
|
+
skipped: [`colours, sizes and turned-off checks not checked: ${errorOf(code.body, code.status)}`],
|
|
84
|
+
problems: []
|
|
85
|
+
};
|
|
86
|
+
return verifyDocument({
|
|
87
|
+
since: named,
|
|
88
|
+
base,
|
|
89
|
+
changed: changed.body,
|
|
90
|
+
code: codeBody,
|
|
91
|
+
// what cannot be told of agents does not stop the rest, and the verdict says it
|
|
92
|
+
visibility: isVisibilityDocument(seen.body)
|
|
93
|
+
? seen.body
|
|
94
|
+
: {
|
|
95
|
+
schema: 1,
|
|
96
|
+
packages: [],
|
|
97
|
+
checked: 0,
|
|
98
|
+
unseen: [],
|
|
99
|
+
skipped: [`what agents see not checked: ${errorOf(seen.body, seen.status)}`]
|
|
100
|
+
},
|
|
101
|
+
report: typeof run === "object" ? run : undefined,
|
|
102
|
+
notRun: typeof run === "string" ? run : undefined,
|
|
103
|
+
isQuick,
|
|
104
|
+
isSinceNamed: since !== undefined,
|
|
105
|
+
configProblems,
|
|
106
|
+
...(baseRun === undefined ? {} : { baseRun: { base, run: baseRun } })
|
|
107
|
+
});
|
|
108
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { StoryCheckReport } from "../../src/storyCheck.ts";
|
|
2
|
+
import type { ChangedStoriesDocument, CheckedCodeDocument, VerifyDocument, VisibilityDocument } from "../../src/vite/agent.types.ts";
|
|
3
|
+
import { type BaseRun } from "./verifyBase.ts";
|
|
4
|
+
/** What `verifyDocument` reads. */
|
|
5
|
+
export type VerifyFindings = {
|
|
6
|
+
/** What the change is measured from, as named. */
|
|
7
|
+
readonly since: string;
|
|
8
|
+
/** The commit that is. */
|
|
9
|
+
readonly base: string;
|
|
10
|
+
/** The catalogue's answer on the change. */
|
|
11
|
+
readonly changed: ChangedStoriesDocument;
|
|
12
|
+
/** The catalogue's answer on what the change adds. */
|
|
13
|
+
readonly code: CheckedCodeDocument;
|
|
14
|
+
/** The catalogue's answer on the published components the change touches. */
|
|
15
|
+
readonly visibility: VisibilityDocument;
|
|
16
|
+
/** The stories' report; none when none ran. */
|
|
17
|
+
readonly report: StoryCheckReport | undefined;
|
|
18
|
+
/** Why they did not run, when they were to. */
|
|
19
|
+
readonly notRun: string | undefined;
|
|
20
|
+
/** Only the default view was asked for. */
|
|
21
|
+
readonly isQuick: boolean;
|
|
22
|
+
/** Whether a commit was named: with none, an empty change may only mean the work is where this cannot look. */
|
|
23
|
+
readonly isSinceNamed: boolean;
|
|
24
|
+
/** The failing stories run again on the base, when they were: what the base had too is not the change's. */
|
|
25
|
+
readonly baseRun?: {
|
|
26
|
+
readonly base: string;
|
|
27
|
+
readonly run: BaseRun;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* What is wrong with the catalogue's configuration: the answer is not verified when the change has a UI file, whatever
|
|
31
|
+
* else it found, and only says it when the change has none.
|
|
32
|
+
*/
|
|
33
|
+
readonly configProblems?: readonly string[];
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* The answer to whether a change is verified.
|
|
37
|
+
*
|
|
38
|
+
* @param input - what was found.
|
|
39
|
+
*/
|
|
40
|
+
export declare const verifyDocument: (input: VerifyFindings) => VerifyDocument;
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What `verify` concludes from the change, its code check and its stories' run: the document, and the one line that says
|
|
3
|
+
* it.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Pure, so the rule the whole command exists for can be read and tested apart: a change is verified only if every changed
|
|
7
|
+
* UI file reached a story that actually ran, and what was not checked is never counted as passed. A story that was
|
|
8
|
+
* listed and did not run covers nothing, so the coverage is read from the results and not from the graph, and a story
|
|
9
|
+
* whose frame gave up on what it loads did not run: no check saw it in its final state. A changed file
|
|
10
|
+
* that no one sees does not fail, whatever it reaches; what `check-code` finds in it (a turned-off check, a deleted test)
|
|
11
|
+
* is said as a note. A published component the change touches that an agent cannot find or read (`unseen`,
|
|
12
|
+
* `agentVisibility.ts`) leaves it not verified: what is checked but cannot be found gets rebuilt. An empty change passes only against a commit someone named: with none, the work may simply be
|
|
13
|
+
* committed where this cannot look (a shallow clone, a default branch it does not know).
|
|
14
|
+
*
|
|
15
|
+
* @module
|
|
16
|
+
*/
|
|
17
|
+
import { shellWord } from "../../src/shellWord.js";
|
|
18
|
+
import { splitByBase } from "./verifyBase.js";
|
|
19
|
+
/** A sheet, whose fix is not a story of its own. */
|
|
20
|
+
const SHEET_FILE = /\.(?:css|scss|sass|less)$/;
|
|
21
|
+
/** A story file, whose stories have to load. */
|
|
22
|
+
const STORY_FILE = /\.stories\.[^/]+$/;
|
|
23
|
+
/** A template, which has no props to write a story from. */
|
|
24
|
+
const TEMPLATE_FILE = /\.html$/;
|
|
25
|
+
/** How many stories an answer lists. */
|
|
26
|
+
const STORIES_LISTED = 20;
|
|
27
|
+
/** What to do about a file no story reaches. */
|
|
28
|
+
const fixOf = (file) => {
|
|
29
|
+
if (STORY_FILE.test(file.file))
|
|
30
|
+
return `npx forgebook stories --json says why it does not load; add it to the catalogue's stories if it is not listed`;
|
|
31
|
+
if (SHEET_FILE.test(file.file) || TEMPLATE_FILE.test(file.file))
|
|
32
|
+
return "use it from a component that has stories, or import the sheet in forgebook.preview.ts";
|
|
33
|
+
return `npx forgebook new ${shellWord(file.path)}`;
|
|
34
|
+
};
|
|
35
|
+
/** A UI file, by the stories that ran. */
|
|
36
|
+
const verifiedFile = (file, ran, notRun) => {
|
|
37
|
+
const stories = file.stories.filter((id) => ran.has(id)).length;
|
|
38
|
+
if (stories > 0)
|
|
39
|
+
return { file: file.file, coverage: file.coverage, stories };
|
|
40
|
+
return {
|
|
41
|
+
file: file.file,
|
|
42
|
+
coverage: "none",
|
|
43
|
+
stories: 0,
|
|
44
|
+
...(file.stories.length > 0
|
|
45
|
+
? {
|
|
46
|
+
reason: `its stories did not run: ${notRun ?? "the check left them out, or never saw them in their final state"}`
|
|
47
|
+
}
|
|
48
|
+
: { reason: "no story reaches it.", fix: fixOf(file) })
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
/** A count with its noun. */
|
|
52
|
+
const counted = (count, noun) => `${count} ${noun}${count === 1 ? "" : "s"}`;
|
|
53
|
+
/** What a line's first part says of the UI files. */
|
|
54
|
+
const coverageWords = (files) => {
|
|
55
|
+
const covered = files.filter((each) => each.coverage !== "none").length;
|
|
56
|
+
const through = files.filter((each) => each.coverage === "through").length;
|
|
57
|
+
const parts = through === 0 ? "" : ` (${through} through another component's)`;
|
|
58
|
+
return `${counted(files.length, "changed UI file")}, ${covered} with stories${parts}`;
|
|
59
|
+
};
|
|
60
|
+
/** The verdict, the worst that holds. */
|
|
61
|
+
const verdictOf = (files, problems, skipped, catalogueProblems, isBlind, notVerified) => {
|
|
62
|
+
if (problems > 0)
|
|
63
|
+
return "failed";
|
|
64
|
+
if (notVerified > 0 || files.some((each) => each.coverage === "none"))
|
|
65
|
+
return "not-verified";
|
|
66
|
+
if (isBlind || catalogueProblems.length > 0)
|
|
67
|
+
return "not-verified";
|
|
68
|
+
if (files.length === 0)
|
|
69
|
+
return "nothing-to-verify";
|
|
70
|
+
return skipped.length > 0 ? "partly-verified" : "verified";
|
|
71
|
+
};
|
|
72
|
+
/** A changed file the stories do reach, whose values were compared with nothing: outside the catalogue's folder. */
|
|
73
|
+
const notComparedLine = ({ changed, code }) => {
|
|
74
|
+
const compared = new Set(code.notCompared);
|
|
75
|
+
return changed.uiFiles.some((file) => compared.has(file.file))
|
|
76
|
+
? ["colours and sizes of a file outside this catalogue's folder not checked"]
|
|
77
|
+
: [];
|
|
78
|
+
};
|
|
79
|
+
/** What was not checked, in the words a person reads. */
|
|
80
|
+
const skippedOf = (input, notRun) => {
|
|
81
|
+
const { changed, code, report, isQuick, isSinceNamed, since } = input;
|
|
82
|
+
const hasUi = changed.uiFiles.length > 0;
|
|
83
|
+
const hasStories = changed.stories.length > 0;
|
|
84
|
+
const notAwaited = new Set((report?.results ?? []).filter((each) => each.isNotAwaited === true).map((each) => each.storyId));
|
|
85
|
+
return [
|
|
86
|
+
// a story may mean it, and a preview that sets it for all of them turns the wait off: either way, said
|
|
87
|
+
...(notAwaited.size === 0
|
|
88
|
+
? []
|
|
89
|
+
: [
|
|
90
|
+
`${notAwaited.size === 1 ? "1 story" : `${notAwaited.size} stories`} checked without waiting for what it loads: parameters.suspense.expected`
|
|
91
|
+
]),
|
|
92
|
+
// nothing a token names was touched when no UI file changed, so its absence said nothing about the change
|
|
93
|
+
...(hasUi ? code.skipped : []),
|
|
94
|
+
...notComparedLine(input),
|
|
95
|
+
...(report?.a11y === "off" && hasStories
|
|
96
|
+
? ["accessibility not checked: the catalogue sets a11y: false"]
|
|
97
|
+
: []),
|
|
98
|
+
...(isQuick && hasStories ? ["only the default view checked: --quick"] : []),
|
|
99
|
+
...(!hasUi && hasStories && notRun !== undefined ? [`stories not run: ${notRun}`] : []),
|
|
100
|
+
...(!hasUi ? changed.problems.filter((problem) => !changed.unread?.includes(problem)) : []),
|
|
101
|
+
// committed work on a branch would not show: compared with the commit itself, only what is not committed does
|
|
102
|
+
...(!isSinceNamed && since === "HEAD" && changed.files.length > 0
|
|
103
|
+
? ["committed work not compared: no default branch found here, give --since"]
|
|
104
|
+
: []),
|
|
105
|
+
...(changed.outside.length > 0
|
|
106
|
+
? [
|
|
107
|
+
`${counted(changed.outside.length, "UI file")} of another catalogue not checked: ${changed.outside.join(", ")}`
|
|
108
|
+
]
|
|
109
|
+
: [])
|
|
110
|
+
];
|
|
111
|
+
};
|
|
112
|
+
/** A base run that found no story of the change's: every problem is the change's, as with a base that has none. */
|
|
113
|
+
const NO_STORY = /^No story or component /;
|
|
114
|
+
/**
|
|
115
|
+
* The report on the change with the problems the base had too taken out, and those problems; the report as it is when
|
|
116
|
+
* no base ran or it could not, with why.
|
|
117
|
+
*/
|
|
118
|
+
const comparedWithBase = (report, baseRun) => {
|
|
119
|
+
if (report === undefined || baseRun === undefined)
|
|
120
|
+
return { report, existing: [], isCompared: false, unseen: 0 };
|
|
121
|
+
const { run } = baseRun;
|
|
122
|
+
if (typeof run === "string" && !NO_STORY.test(run))
|
|
123
|
+
return {
|
|
124
|
+
report,
|
|
125
|
+
existing: [],
|
|
126
|
+
isCompared: false,
|
|
127
|
+
unseen: 0,
|
|
128
|
+
notCompared: `not compared with ${baseRun.base.slice(0, 12)}: ${run}`
|
|
129
|
+
};
|
|
130
|
+
if (typeof run === "string")
|
|
131
|
+
return { report, existing: [], isCompared: true, unseen: 0 };
|
|
132
|
+
return { ...splitByBase(report, run.report, [run.root, run.folder]), isCompared: true };
|
|
133
|
+
};
|
|
134
|
+
/** What a line says of a change with no UI file. */
|
|
135
|
+
const noUiWords = ({ files, ran, problems, notVerified, unseen }) => {
|
|
136
|
+
const stories = ran === 0 ? "" : `, ${ran} checks of the stories they reach`;
|
|
137
|
+
const found = [
|
|
138
|
+
...(problems === 0 ? [] : [counted(problems, "problem")]),
|
|
139
|
+
...(notVerified.length === 0 ? [] : [`${notVerified.length} not verified`]),
|
|
140
|
+
...(unseen.length === 0 ? [] : [`${counted(unseen.length, "published component")} agents cannot see`])
|
|
141
|
+
].join(", ");
|
|
142
|
+
return `No changed UI file (${counted(files.length, "other file")}${stories})${found === "" ? "" : `: ${found}`}`;
|
|
143
|
+
};
|
|
144
|
+
/** What a line says after the coverage. */
|
|
145
|
+
const outcomeWords = ({ verdict, uiFiles, problems, variants, ran, notVerified: unseen, outdated, unseen: cannotBeSeen }, catalogueProblems) => {
|
|
146
|
+
const notVerified = unseen.length > 0 ||
|
|
147
|
+
cannotBeSeen.length > 0 ||
|
|
148
|
+
uiFiles.some((each) => each.coverage === "none") ||
|
|
149
|
+
catalogueProblems.length > 0;
|
|
150
|
+
const where = variants === "all" ? "in every variant" : "in the default view";
|
|
151
|
+
return [
|
|
152
|
+
...(notVerified ? ["not verified"] : []),
|
|
153
|
+
...(unseen.length > 0 ? [`${unseen.length} not seen in its final state: the frame gave up`] : []),
|
|
154
|
+
...(cannotBeSeen.length > 0
|
|
155
|
+
? [`${counted(cannotBeSeen.length, "published component")} agents cannot see`]
|
|
156
|
+
: []),
|
|
157
|
+
...(problems > 0 ? [counted(problems, "problem")] : []),
|
|
158
|
+
...(outdated === undefined ? [] : [`${counted(outdated.length, "story file")} written for other props`]),
|
|
159
|
+
...(verdict === "verified" || verdict === "partly-verified"
|
|
160
|
+
? [`verified ${where} (${counted(ran, "check")})`]
|
|
161
|
+
: [])
|
|
162
|
+
].join(", ");
|
|
163
|
+
};
|
|
164
|
+
/**
|
|
165
|
+
* The verdict's line.
|
|
166
|
+
*
|
|
167
|
+
* @param document - the document so far.
|
|
168
|
+
* @param catalogueProblems - what the catalogue could not read.
|
|
169
|
+
*/
|
|
170
|
+
const summaryOf = (document, catalogueProblems) => {
|
|
171
|
+
const { verdict, uiFiles, files, since, code, skipped } = document;
|
|
172
|
+
const isBlind = files.length === 0 && catalogueProblems.length === 0;
|
|
173
|
+
const notes = code.notes.length === 0 ? [] : [`${counted(code.notes.length, "note")} from check-code`];
|
|
174
|
+
const said = [...skipped, ...notes];
|
|
175
|
+
const tail = said.length === 0 ? "" : `; ${said.join("; ")}`;
|
|
176
|
+
if (files.length === 0) {
|
|
177
|
+
const notVerified = isBlind
|
|
178
|
+
? "not verified. If your work is committed, give --since <ref>"
|
|
179
|
+
: "not verified";
|
|
180
|
+
const ending = verdict === "not-verified" ? notVerified : "nothing to verify";
|
|
181
|
+
return `Nothing changed since ${since}: ${ending}${tail}`;
|
|
182
|
+
}
|
|
183
|
+
if (uiFiles.length === 0) {
|
|
184
|
+
const ending = catalogueProblems.length === 0 ? "" : ": not verified";
|
|
185
|
+
return `${noUiWords(document)}${ending}${tail}`;
|
|
186
|
+
}
|
|
187
|
+
return `${coverageWords(uiFiles)}: ${outcomeWords(document, catalogueProblems)}${tail}`;
|
|
188
|
+
};
|
|
189
|
+
/**
|
|
190
|
+
* The pairs that found a problem, each with the links that open its story.
|
|
191
|
+
*
|
|
192
|
+
* @param results - the pairs that ran.
|
|
193
|
+
* @param links - the links of the change's stories, by id.
|
|
194
|
+
*/
|
|
195
|
+
const failuresOf = (results, links) => results
|
|
196
|
+
.filter((result) => result.problems.length > 0)
|
|
197
|
+
.map(({ storyId, view, problems: found }) => {
|
|
198
|
+
const storyLinks = links.get(storyId);
|
|
199
|
+
return { storyId, view, problems: found, ...(storyLinks === undefined ? {} : { links: storyLinks }) };
|
|
200
|
+
});
|
|
201
|
+
/** What the comparison with the base leaves unchecked: a base that could not run, stories it never saw. */
|
|
202
|
+
const baseSkips = (compared) => [
|
|
203
|
+
...(compared.notCompared === undefined
|
|
204
|
+
? []
|
|
205
|
+
: [`${compared.notCompared}; every problem the stories have is counted`]),
|
|
206
|
+
...(compared.unseen === 0
|
|
207
|
+
? []
|
|
208
|
+
: [
|
|
209
|
+
`${counted(compared.unseen, "story")} not seen on the base in its final state: every problem of it counted`
|
|
210
|
+
])
|
|
211
|
+
];
|
|
212
|
+
/**
|
|
213
|
+
* The answer to whether a change is verified.
|
|
214
|
+
*
|
|
215
|
+
* @param input - what was found.
|
|
216
|
+
*/
|
|
217
|
+
export const verifyDocument = (input) => {
|
|
218
|
+
const { since, base, changed, code, visibility, notRun, isQuick, isSinceNamed } = input;
|
|
219
|
+
const compared = comparedWithBase(input.report, input.baseRun);
|
|
220
|
+
const { report } = compared;
|
|
221
|
+
const results = report?.results ?? [];
|
|
222
|
+
// a story not seen in a view is left out of what ran there; seen in another it still covers its file, and the verdict
|
|
223
|
+
// says not verified from `notVerified` either way
|
|
224
|
+
const seenResults = results.filter((result) => result.notVerified === undefined);
|
|
225
|
+
const ran = new Set(seenResults.map((result) => result.storyId));
|
|
226
|
+
const uiFiles = changed.uiFiles.map((file) => verifiedFile(file, ran, notRun));
|
|
227
|
+
const links = new Map(changed.stories.map((story) => [story.id, story.links]));
|
|
228
|
+
const failures = failuresOf(results, links);
|
|
229
|
+
const notVerified = results.flatMap(({ storyId, view, notVerified: reason }) => {
|
|
230
|
+
if (reason === undefined)
|
|
231
|
+
return [];
|
|
232
|
+
const storyLinks = links.get(storyId);
|
|
233
|
+
return [
|
|
234
|
+
{ storyId, view, notVerified: reason, ...(storyLinks === undefined ? {} : { links: storyLinks }) }
|
|
235
|
+
];
|
|
236
|
+
});
|
|
237
|
+
// a change no one sees does not fail; what the code check found in it is still said
|
|
238
|
+
const seen = new Set(changed.uiFiles.map((file) => file.file));
|
|
239
|
+
const codeProblems = code.problems.filter((problem) => seen.has(problem.file));
|
|
240
|
+
const outside = new Set(changed.outside);
|
|
241
|
+
const notes = code.problems.filter((problem) => !seen.has(problem.file) && !outside.has(problem.file));
|
|
242
|
+
// stories written for props the component no longer has pass a check they no longer mean: each is a problem
|
|
243
|
+
const outdated = changed.outdated ?? [];
|
|
244
|
+
const problems = failures.reduce((sum, each) => sum + each.problems.length, codeProblems.length + outdated.length);
|
|
245
|
+
const existingProblems = compared.existing.reduce((sum, each) => sum + each.problems.length, 0);
|
|
246
|
+
const hasUiFiles = changed.uiFiles.length > 0;
|
|
247
|
+
// a change with no UI file is not the gate's business: a configuration problem, a story pattern that matches nothing
|
|
248
|
+
// in a catalogue with no story yet, is said and does not stop it; a story file the pattern misses is a UI file itself
|
|
249
|
+
const configProblems = input.configProblems ?? [];
|
|
250
|
+
const skipped = [
|
|
251
|
+
...skippedOf(input, notRun),
|
|
252
|
+
...baseSkips(compared),
|
|
253
|
+
...(hasUiFiles ? [] : configProblems)
|
|
254
|
+
];
|
|
255
|
+
// a story file that cannot be read may be the change, whatever else changed
|
|
256
|
+
const catalogueProblems = hasUiFiles
|
|
257
|
+
? [...configProblems, ...changed.problems]
|
|
258
|
+
: [...(changed.unread ?? [])];
|
|
259
|
+
const isBlind = changed.files.length === 0 && !isSinceNamed;
|
|
260
|
+
const { unseen } = visibility;
|
|
261
|
+
const verdict = verdictOf(uiFiles, problems, [...skipped, ...visibility.skipped], catalogueProblems, isBlind, notVerified.length + unseen.length);
|
|
262
|
+
const allSkipped = [...skipped, ...catalogueProblems, ...visibility.skipped];
|
|
263
|
+
const variants = isQuick ? "default" : "all";
|
|
264
|
+
const body = {
|
|
265
|
+
since,
|
|
266
|
+
base,
|
|
267
|
+
variants,
|
|
268
|
+
files: changed.files,
|
|
269
|
+
uiFiles,
|
|
270
|
+
storyCount: changed.stories.length,
|
|
271
|
+
stories: changed.stories.slice(0, STORIES_LISTED),
|
|
272
|
+
ran: seenResults.length,
|
|
273
|
+
failures,
|
|
274
|
+
notVerified,
|
|
275
|
+
code: {
|
|
276
|
+
checked: code.checked,
|
|
277
|
+
problems: codeProblems,
|
|
278
|
+
notes,
|
|
279
|
+
...(code.tokenSources === undefined ? {} : { tokenSources: code.tokenSources }),
|
|
280
|
+
...(code.tokenNotes === undefined ? {} : { tokenNotes: code.tokenNotes }),
|
|
281
|
+
...(code.excused === undefined ? {} : { excused: code.excused }),
|
|
282
|
+
...(code.advice === undefined ? {} : { advice: code.advice })
|
|
283
|
+
},
|
|
284
|
+
...(outdated.length === 0 ? {} : { outdated }),
|
|
285
|
+
problems,
|
|
286
|
+
...(compared.isCompared
|
|
287
|
+
? { existing: { problems: existingProblems, failures: failuresOf(compared.existing, links) } }
|
|
288
|
+
: {}),
|
|
289
|
+
unseen
|
|
290
|
+
};
|
|
291
|
+
// problems the base had too are not a check left undone: said in the line, never in skipped
|
|
292
|
+
const old = existingProblems === 0
|
|
293
|
+
? ""
|
|
294
|
+
: `; ${counted(existingProblems, "problem")} the stories had before the change not counted (existing; --all-problems counts them)`;
|
|
295
|
+
const summary = `${summaryOf({ ...body, verdict, skipped: allSkipped }, catalogueProblems)}${old}`;
|
|
296
|
+
return { schema: 2, verdict, summary, skipped: allSkipped, ...body };
|
|
297
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The GitHub Actions the workflows Forgebook writes in a project use: `init --agents`' verify workflow and
|
|
3
|
+
* `proof --write-workflow`'s.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Each is pinned to the commit of its newest release, with the release in a comment, as Dependabot reads and moves it: a
|
|
7
|
+
* tag can be moved under a workflow, and an old major runs on a Node that GitHub's runners no longer support. One place, so
|
|
8
|
+
* both workflows move together.
|
|
9
|
+
*
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
/** Checks the repository out. */
|
|
13
|
+
export declare const CHECKOUT = "actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1";
|
|
14
|
+
/** Installs Node. */
|
|
15
|
+
export declare const SETUP_NODE = "actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0";
|
|
16
|
+
/** Keeps a run's files as an artefact. */
|
|
17
|
+
export declare const UPLOAD = "actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2";
|
|
18
|
+
/** Fetches an artefact in another job. */
|
|
19
|
+
export declare const DOWNLOAD = "actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2";
|
|
20
|
+
/** Installs pnpm. */
|
|
21
|
+
export declare const SETUP_PNPM = "pnpm/action-setup@73e46992e05b19abd31f2f3c20e0e7370d762115 # v6.1.1";
|
|
22
|
+
/** Installs Bun. */
|
|
23
|
+
export declare const SETUP_BUN = "oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0";
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The GitHub Actions the workflows Forgebook writes in a project use: `init --agents`' verify workflow and
|
|
3
|
+
* `proof --write-workflow`'s.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Each is pinned to the commit of its newest release, with the release in a comment, as Dependabot reads and moves it: a
|
|
7
|
+
* tag can be moved under a workflow, and an old major runs on a Node that GitHub's runners no longer support. One place, so
|
|
8
|
+
* both workflows move together.
|
|
9
|
+
*
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
/** Checks the repository out. */
|
|
13
|
+
export const CHECKOUT = "actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1";
|
|
14
|
+
/** Installs Node. */
|
|
15
|
+
export const SETUP_NODE = "actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0";
|
|
16
|
+
/** Keeps a run's files as an artefact. */
|
|
17
|
+
export const UPLOAD = "actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2";
|
|
18
|
+
/** Fetches an artefact in another job. */
|
|
19
|
+
export const DOWNLOAD = "actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2";
|
|
20
|
+
/** Installs pnpm. */
|
|
21
|
+
export const SETUP_PNPM = "pnpm/action-setup@73e46992e05b19abd31f2f3c20e0e7370d762115 # v6.1.1";
|
|
22
|
+
/** Installs Bun. */
|
|
23
|
+
export const SETUP_BUN = "oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0";
|
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
import { pageSlug } from "../../src/pageAddress.js";
|
|
2
2
|
/** The props whose keys are the parts. */
|
|
3
3
|
const PART_MAPS = ["classNames", "styles", "refs"];
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* A prop in short, ending with when it can be passed for a variant's prop (`href:string[kind=link]`), a `?` after the
|
|
6
|
+
* discriminant when the prop also applies with it left out (`onPick[mode?=single]`).
|
|
7
|
+
*/
|
|
5
8
|
const shortProp = (prop) => {
|
|
9
|
+
const { onlyWhen } = prop;
|
|
10
|
+
const condition = onlyWhen === undefined
|
|
11
|
+
? ""
|
|
12
|
+
: `[${onlyWhen.prop}${onlyWhen.orOmitted === true ? "?" : ""}=${onlyWhen.values.map(String).join("|")}]`;
|
|
13
|
+
return `${propText(prop)}${condition}`;
|
|
14
|
+
};
|
|
15
|
+
/** A prop in short, without its condition. */
|
|
16
|
+
const propText = (prop) => {
|
|
6
17
|
const required = prop.isRequired ? "!" : "";
|
|
7
18
|
switch (prop.kind) {
|
|
8
19
|
case "choice":
|