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.
- package/README.md +994 -72
- 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 +182 -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 +62 -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 +95 -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 +204 -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 +323 -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 +29 -5
- package/dist/src/addressArgs.js +58 -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 +148 -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 +69 -185
- 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 +83 -0
- package/dist/src/componentDocs.js +20 -3
- package/dist/src/controlCode.d.ts +27 -0
- package/dist/src/controlCode.js +41 -0
- 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/controlValues.d.ts +39 -0
- package/dist/src/frame/controlValues.js +143 -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 +10 -1
- package/dist/src/frame/mountFrame.js +160 -55
- package/dist/src/frame/panelControls.d.ts +67 -0
- package/dist/src/frame/panelControls.js +110 -0
- 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/AuthoredHome.js +3 -1
- package/dist/src/shell/CodeTab.d.ts +12 -6
- package/dist/src/shell/CodeTab.js +47 -3
- 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 +6 -6
- package/dist/src/shell/ComponentPage.js +8 -2
- package/dist/src/shell/CustomControl.d.ts +34 -0
- package/dist/src/shell/CustomControl.js +125 -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 +30 -12
- 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 +18 -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/PageWidth.d.ts +29 -0
- package/dist/src/shell/PageWidth.js +18 -0
- 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/PropFields.d.ts +3 -1
- package/dist/src/shell/PropFields.js +9 -6
- package/dist/src/shell/PropRows.d.ts +22 -11
- package/dist/src/shell/PropRows.js +62 -24
- package/dist/src/shell/PropsTab.d.ts +12 -5
- package/dist/src/shell/PropsTab.js +9 -22
- 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 +141 -23
- 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 +29 -49
- 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/StoryPicker.d.ts +4 -2
- package/dist/src/shell/StoryPicker.js +3 -3
- package/dist/src/shell/Switch.d.ts +29 -0
- package/dist/src/shell/Switch.js +11 -0
- 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.js +7 -2
- 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 +62 -0
- package/dist/src/shell/customControls.js +81 -0
- package/dist/src/shell/docPage.css +22 -22
- package/dist/src/shell/dockTabs.d.ts +19 -3
- package/dist/src/shell/dockTabs.js +29 -20
- package/dist/src/shell/embed.css +7 -7
- package/dist/src/shell/frameOrder.d.ts +35 -0
- package/dist/src/shell/frameOrder.js +45 -0
- 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 +30 -0
- package/dist/src/shell/laterStrings.js +43 -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 +376 -169
- 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 +9 -0
- package/dist/src/shell/useAddressArgs.js +56 -11
- 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/useFrameQueue.d.ts +8 -3
- package/dist/src/shell/useFrameQueue.js +42 -12
- 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/useScrollSettled.d.ts +18 -0
- package/dist/src/shell/useScrollSettled.js +56 -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 +148 -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 +99 -3
- package/dist/src/storyCheck.js +39 -1
- package/dist/src/storyCodeText.d.ts +52 -0
- package/dist/src/storyCodeText.js +30 -0
- package/dist/src/storyControls.d.ts +103 -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 +354 -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 +135 -66
- package/dist/src/vite/agentStatuses.d.ts +42 -0
- package/dist/src/vite/agentStatuses.js +67 -0
- package/dist/src/vite/agentStoryCode.d.ts +51 -0
- package/dist/src/vite/agentStoryCode.js +44 -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/argControlsConfig.d.ts +30 -0
- package/dist/src/vite/argControlsConfig.js +176 -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 +21 -4
- 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 +67 -1
- package/dist/src/vite/configFile.d.ts +15 -2
- package/dist/src/vite/configFile.js +109 -40
- package/dist/src/vite/configKeys.d.ts +15 -0
- package/dist/src/vite/configKeys.js +172 -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 +55 -73
- 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 +119 -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 +187 -60
- 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/typedControls.d.ts +31 -0
- package/dist/src/vite/typedControls.js +66 -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,100 @@
|
|
|
1
|
+
import { checkedAddressArgs, declaredArgProps } from "./addressArgs.js";
|
|
2
|
+
import { readArgsParam } from "./addressArgsParam.js";
|
|
3
|
+
import { addressArgsFor } from "./addressTexts.js";
|
|
4
|
+
import { isColorProp, isNamedProp } from "./argTypes.js";
|
|
5
|
+
import { panelArgsParam } from "./messages.js";
|
|
6
|
+
import { holdsUnsafePart, isFileList, isValueOfShape, resolvedShape } from "./shapeValues.js";
|
|
7
|
+
import { schemaProblem } from "./valueSchema.js";
|
|
8
|
+
import { canSetShape } from "./valueShape.js";
|
|
9
|
+
/** A prop's control when no `argTypes` names one: from its kind. */
|
|
10
|
+
const controlOfKind = (prop, namedValues) => {
|
|
11
|
+
if (isNamedProp(prop, namedValues))
|
|
12
|
+
return "named";
|
|
13
|
+
if (prop.shape !== undefined)
|
|
14
|
+
return "object";
|
|
15
|
+
if (prop.kind === "choice")
|
|
16
|
+
return "select";
|
|
17
|
+
if (prop.kind === "number")
|
|
18
|
+
return "number";
|
|
19
|
+
if (prop.kind === "toggle")
|
|
20
|
+
return "boolean";
|
|
21
|
+
return isColorProp(prop) ? "color" : "text";
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* One settable prop as an agent reads it.
|
|
25
|
+
*
|
|
26
|
+
* @param prop - the prop.
|
|
27
|
+
* @param namedValues - the source's named values.
|
|
28
|
+
* @param customSchemas - the custom controls' schemas.
|
|
29
|
+
*/
|
|
30
|
+
const storyControl = (prop, namedValues, customSchemas) => {
|
|
31
|
+
const custom = prop.customControl;
|
|
32
|
+
const schema = custom !== undefined && Object.hasOwn(customSchemas, custom) ? customSchemas[custom] : undefined;
|
|
33
|
+
const own = prop.control === undefined || prop.control === "none" ? controlOfKind(prop, namedValues) : prop.control;
|
|
34
|
+
const control = custom === undefined ? own : "custom";
|
|
35
|
+
return {
|
|
36
|
+
name: prop.name,
|
|
37
|
+
control,
|
|
38
|
+
type: prop.type,
|
|
39
|
+
isRequired: prop.isRequired,
|
|
40
|
+
...(prop.shape === undefined ? {} : { shape: resolvedShape(prop.shape) }),
|
|
41
|
+
...(prop.choices === undefined ? {} : { choices: prop.choices }),
|
|
42
|
+
...(prop.min === undefined ? {} : { min: prop.min }),
|
|
43
|
+
...(prop.max === undefined ? {} : { max: prop.max }),
|
|
44
|
+
...(control === "named" ? { named: Object.keys(namedValues[prop.type] ?? {}) } : {}),
|
|
45
|
+
...(prop.tokens === undefined ? {} : { tokens: prop.tokens }),
|
|
46
|
+
...(custom === undefined ? {} : { custom }),
|
|
47
|
+
...(prop.settings === undefined ? {} : { settings: prop.settings }),
|
|
48
|
+
...(schema === undefined ? {} : { schema })
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* The props a story's values can set.
|
|
53
|
+
*
|
|
54
|
+
* @param declaration - what the story declares.
|
|
55
|
+
*/
|
|
56
|
+
export const storyControlsOf = (declaration) => {
|
|
57
|
+
const argDeclaration = declaration;
|
|
58
|
+
const canSet = (prop) => prop.shape === undefined || canSetShape(prop.shape, declaration.namedValues);
|
|
59
|
+
return declaredArgProps(argDeclaration)
|
|
60
|
+
.filter(canSet)
|
|
61
|
+
.map((prop) => storyControl(prop, declaration.namedValues, declaration.customSchemas ?? {}));
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* The values an agent asks to set, checked as a link's are.
|
|
65
|
+
*
|
|
66
|
+
* @param text - the values, as JSON.
|
|
67
|
+
* @param declaration - what the story declares.
|
|
68
|
+
* @param addressTexts - how the framework's stories take a link's texts; `any` by default.
|
|
69
|
+
*/
|
|
70
|
+
export const checkedSetArgs = (text, declaration, addressTexts = "any") => {
|
|
71
|
+
const { args, link } = readArgsParam(text.trimStart().startsWith("{") ? text : "{");
|
|
72
|
+
const unread = (link?.unread ?? []).map((name) => ({ name, reason: "unreadable" }));
|
|
73
|
+
const plain = addressArgsFor(args, addressTexts);
|
|
74
|
+
const notPlain = Object.keys(args)
|
|
75
|
+
.filter((name) => !Object.hasOwn(plain, name))
|
|
76
|
+
.map((name) => ({ name, reason: "markup" }));
|
|
77
|
+
const { accepted, dropped } = checkedAddressArgs(plain, declaration, undefined, {
|
|
78
|
+
isFileList,
|
|
79
|
+
isValueOfShape,
|
|
80
|
+
custom: Object.fromEntries(Object.entries(declaration.customSchemas ?? {}).map(([name, schema]) => [
|
|
81
|
+
name,
|
|
82
|
+
(value) => holdsUnsafePart(value, true) ? "not what a link may give" : schemaProblem(schema, value)
|
|
83
|
+
]))
|
|
84
|
+
});
|
|
85
|
+
return { accepted, dropped: [...unread, ...notPlain, ...dropped], param: panelArgsParam(accepted) };
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* What is wrong with the custom controls a story names: one no configuration registers, or whose module did not load.
|
|
89
|
+
*
|
|
90
|
+
* @param controls - the story's controls.
|
|
91
|
+
* @param read - the custom controls as the server read them.
|
|
92
|
+
*/
|
|
93
|
+
export const customControlProblems = (controls, read) => controls.flatMap(({ custom, schema }) => {
|
|
94
|
+
if (custom === undefined || schema !== undefined)
|
|
95
|
+
return [];
|
|
96
|
+
const problem = read !== undefined && Object.hasOwn(read.problems, custom) ? read.problems[custom] : undefined;
|
|
97
|
+
return [
|
|
98
|
+
`The control "${custom}": ${problem ?? "no control is registered under this name in argControls"}`
|
|
99
|
+
];
|
|
100
|
+
});
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/** How a status reads at a glance: the colour of its badge, each with its text contrast in both appearances. */
|
|
2
|
+
export declare const STATUS_TONES: readonly ["neutral", "info", "positive", "caution", "critical"];
|
|
3
|
+
/** One of the tones. */
|
|
4
|
+
export type StatusTone = (typeof STATUS_TONES)[number];
|
|
5
|
+
/** A status as a catalogue declares it (`statuses: { review: { label: "In review", tone: "caution" } }`). */
|
|
6
|
+
export type StatusSetting = {
|
|
7
|
+
/** Its badge's text; the shell's own word for a default status (`strings` replaces it), else its tag. */
|
|
8
|
+
readonly label?: string;
|
|
9
|
+
/** Its badge's colour; `neutral` for a status of the catalogue's own. */
|
|
10
|
+
readonly tone?: StatusTone;
|
|
11
|
+
};
|
|
12
|
+
/** The statuses a configuration declares, by tag: `false` turns a default one off. */
|
|
13
|
+
export type StatusSettings = Readonly<Record<string, StatusSetting | false>>;
|
|
14
|
+
/** A status the catalogue has, its defaults filled in. */
|
|
15
|
+
export type CatalogueStatus = {
|
|
16
|
+
/** Its tag (`review`). */
|
|
17
|
+
readonly id: string;
|
|
18
|
+
/** Its badge's text, when the catalogue writes one. */
|
|
19
|
+
readonly label?: string;
|
|
20
|
+
/** Its badge's colour. */
|
|
21
|
+
readonly tone: StatusTone;
|
|
22
|
+
};
|
|
23
|
+
/** The status whose tag says a component is not to be used any more, as TSDoc's `@deprecated` says it. */
|
|
24
|
+
export declare const DEPRECATED_STATUS = "deprecated";
|
|
25
|
+
/** The statuses every catalogue has unless it turns them off, in the order their badges come. */
|
|
26
|
+
export declare const DEFAULT_STATUSES: Readonly<Record<string, StatusSetting>>;
|
|
27
|
+
/**
|
|
28
|
+
* A catalogue's statuses: the defaults, each with what the configuration writes of it, then the configuration's own,
|
|
29
|
+
* less those it turns off.
|
|
30
|
+
*
|
|
31
|
+
* @param settings - what the configuration declares; none for the defaults.
|
|
32
|
+
*/
|
|
33
|
+
export declare const catalogueStatuses: (settings?: StatusSettings) => readonly CatalogueStatus[];
|
|
34
|
+
/**
|
|
35
|
+
* Statuses declared in several places (the presets', then the catalogue's) as one declaration: status by status and
|
|
36
|
+
* field by field, so a catalogue renames a preset's status and keeps its tone; none when none declares any.
|
|
37
|
+
*
|
|
38
|
+
* @param all - the declarations, in order.
|
|
39
|
+
*/
|
|
40
|
+
export declare const mergedStatuses: (all: readonly (StatusSettings | undefined)[]) => {
|
|
41
|
+
readonly statuses?: StatusSettings;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* The statuses a list of tags holds, in the catalogue's order.
|
|
45
|
+
*
|
|
46
|
+
* @param tags - a meta's or a story's tags.
|
|
47
|
+
* @param statuses - the catalogue's statuses.
|
|
48
|
+
*/
|
|
49
|
+
export declare const statusesOf: (tags: readonly string[], statuses: readonly CatalogueStatus[]) => readonly CatalogueStatus[];
|
|
50
|
+
/**
|
|
51
|
+
* Why a configuration's statuses cannot be used, or none: they are written by JavaScript too, which no type stops.
|
|
52
|
+
*
|
|
53
|
+
* @param settings - the value written.
|
|
54
|
+
*/
|
|
55
|
+
export declare const statusesProblem: (settings: unknown) => string | undefined;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A component's or a story's status (waiting for review, experimental, deprecated): a tag the catalogue declares as a
|
|
3
|
+
* status, read by the agents' answers on Node and by the shell's badges, which load only for a catalogue whose stories
|
|
4
|
+
* have tags.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* A status is a tag, so it is written where CSF writes one (the preview, a meta, a story; `!name` takes it away) and
|
|
8
|
+
* filtered by the tag filter; the declaration only says which tags are statuses and how they look. A meta's tags give
|
|
9
|
+
* the component's status, a story's the story's. Three are declared by default, each a catalogue may restyle, rename
|
|
10
|
+
* or turn off with `false`. Pure.
|
|
11
|
+
*
|
|
12
|
+
* @module
|
|
13
|
+
*/
|
|
14
|
+
import { TOOL_TAGS } from "./storyTagNames.js";
|
|
15
|
+
/** How a status reads at a glance: the colour of its badge, each with its text contrast in both appearances. */
|
|
16
|
+
export const STATUS_TONES = ["neutral", "info", "positive", "caution", "critical"];
|
|
17
|
+
/** The status whose tag says a component is not to be used any more, as TSDoc's `@deprecated` says it. */
|
|
18
|
+
export const DEPRECATED_STATUS = "deprecated";
|
|
19
|
+
/** The statuses every catalogue has unless it turns them off, in the order their badges come. */
|
|
20
|
+
export const DEFAULT_STATUSES = {
|
|
21
|
+
review: { tone: "caution" },
|
|
22
|
+
experimental: { tone: "info" },
|
|
23
|
+
[DEPRECATED_STATUS]: { tone: "critical" }
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* A catalogue's statuses: the defaults, each with what the configuration writes of it, then the configuration's own,
|
|
27
|
+
* less those it turns off.
|
|
28
|
+
*
|
|
29
|
+
* @param settings - what the configuration declares; none for the defaults.
|
|
30
|
+
*/
|
|
31
|
+
export const catalogueStatuses = (settings = {}) => Object.entries({ ...DEFAULT_STATUSES, ...settings }).flatMap(([id, setting]) => {
|
|
32
|
+
if (setting === false)
|
|
33
|
+
return [];
|
|
34
|
+
const { label, tone } = { ...DEFAULT_STATUSES[id], ...setting };
|
|
35
|
+
return [{ id, tone: tone ?? "neutral", ...(label === undefined ? {} : { label }) }];
|
|
36
|
+
});
|
|
37
|
+
/**
|
|
38
|
+
* Statuses declared in several places (the presets', then the catalogue's) as one declaration: status by status and
|
|
39
|
+
* field by field, so a catalogue renames a preset's status and keeps its tone; none when none declares any.
|
|
40
|
+
*
|
|
41
|
+
* @param all - the declarations, in order.
|
|
42
|
+
*/
|
|
43
|
+
export const mergedStatuses = (all) => {
|
|
44
|
+
const statuses = {};
|
|
45
|
+
for (const [id, status] of all.flatMap((each) => Object.entries(each ?? {}))) {
|
|
46
|
+
const before = statuses[id];
|
|
47
|
+
statuses[id] = status === false ? false : { ...(before === false ? {} : before), ...status };
|
|
48
|
+
}
|
|
49
|
+
return Object.keys(statuses).length === 0 ? {} : { statuses };
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* The statuses a list of tags holds, in the catalogue's order.
|
|
53
|
+
*
|
|
54
|
+
* @param tags - a meta's or a story's tags.
|
|
55
|
+
* @param statuses - the catalogue's statuses.
|
|
56
|
+
*/
|
|
57
|
+
export const statusesOf = (tags, statuses) => statuses.filter((status) => tags.includes(status.id));
|
|
58
|
+
/**
|
|
59
|
+
* Why a status's fields cannot be used, or none: only `label` and `tone`, so a misspelt one is named, not ignored.
|
|
60
|
+
*
|
|
61
|
+
* @param id - its tag.
|
|
62
|
+
* @param setting - what is written for it.
|
|
63
|
+
*/
|
|
64
|
+
const fieldsProblem = (id, setting) => {
|
|
65
|
+
const unknown = Object.keys(setting).find((key) => key !== "label" && key !== "tone");
|
|
66
|
+
if (unknown !== undefined)
|
|
67
|
+
return `the status "${id}" has no field "${unknown}": it takes label and tone`;
|
|
68
|
+
const label = "label" in setting ? setting.label : undefined;
|
|
69
|
+
const tone = "tone" in setting ? setting.tone : undefined;
|
|
70
|
+
if (label !== undefined && (typeof label !== "string" || label === ""))
|
|
71
|
+
return `the status "${id}" has a label that is no text`;
|
|
72
|
+
if (tone !== undefined && !STATUS_TONES.some((each) => each === tone))
|
|
73
|
+
return `the status "${id}" has the tone ${JSON.stringify(tone)}: write one of ${STATUS_TONES.join(", ")}`;
|
|
74
|
+
return undefined;
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Why one status a configuration declares cannot be used, or none.
|
|
78
|
+
*
|
|
79
|
+
* @param id - its tag.
|
|
80
|
+
* @param setting - what is written for it.
|
|
81
|
+
*/
|
|
82
|
+
const statusProblem = (id, setting) => {
|
|
83
|
+
if (id === "" || id.startsWith("!") || TOOL_TAGS.has(id))
|
|
84
|
+
return `"${id}" cannot be a status: a status is a tag of your own, not empty, no !name and none of ${[...TOOL_TAGS].join(", ")}`;
|
|
85
|
+
if (setting === false)
|
|
86
|
+
return undefined;
|
|
87
|
+
if (typeof setting !== "object" || setting === null || Array.isArray(setting))
|
|
88
|
+
return `the status "${id}" must be { label, tone } or false`;
|
|
89
|
+
return fieldsProblem(id, setting);
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Why a configuration's statuses cannot be used, or none: they are written by JavaScript too, which no type stops.
|
|
93
|
+
*
|
|
94
|
+
* @param settings - the value written.
|
|
95
|
+
*/
|
|
96
|
+
export const statusesProblem = (settings) => {
|
|
97
|
+
if (settings === undefined)
|
|
98
|
+
return undefined;
|
|
99
|
+
if (typeof settings !== "object" || settings === null || Array.isArray(settings))
|
|
100
|
+
return "statuses must be an object of statuses by tag: { review: { label, tone } }";
|
|
101
|
+
return Object.entries(settings)
|
|
102
|
+
.map(([id, setting]) => statusProblem(id, setting))
|
|
103
|
+
.find((problem) => problem !== undefined);
|
|
104
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which of a story's tags a person filters by, apart from the filter itself (`storyTags.ts`).
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* Apart because the sidebar asks it on every catalogue's first load, to know whether to offer a filter at all, and a
|
|
6
|
+
* catalogue with no tags must not pay for the rest; a component's page asks it too, to know whether to draw statuses.
|
|
7
|
+
* Pure.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
import { type StoryTree } from "./storyTree.ts";
|
|
12
|
+
/** The tags CSF gives a meaning of its own: they say what a tool does with a story, not what the story is. */
|
|
13
|
+
export declare const TOOL_TAGS: ReadonlySet<string>;
|
|
14
|
+
/**
|
|
15
|
+
* Whether a person can filter by a tag: any but a tool's tag, and a `!name`, which only takes a tag away.
|
|
16
|
+
*
|
|
17
|
+
* @param tag - the tag, as a story holds it.
|
|
18
|
+
*/
|
|
19
|
+
export declare const isFilterTag: (tag: string) => boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Whether any listed story holds a tag a person can filter by: what offers the filter and draws the statuses' badges.
|
|
22
|
+
*
|
|
23
|
+
* @param tree - the tree.
|
|
24
|
+
*/
|
|
25
|
+
export declare const hasFilterTags: (tree: StoryTree) => boolean;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which of a story's tags a person filters by, apart from the filter itself (`storyTags.ts`).
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* Apart because the sidebar asks it on every catalogue's first load, to know whether to offer a filter at all, and a
|
|
6
|
+
* catalogue with no tags must not pay for the rest; a component's page asks it too, to know whether to draw statuses.
|
|
7
|
+
* Pure.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
import { storyLocations } from "./storyTree.js";
|
|
12
|
+
/** The tags CSF gives a meaning of its own: they say what a tool does with a story, not what the story is. */
|
|
13
|
+
export const TOOL_TAGS = new Set(["dev", "test", "autodocs", "play-fn", "test-fn"]);
|
|
14
|
+
/**
|
|
15
|
+
* Whether a person can filter by a tag: any but a tool's tag, and a `!name`, which only takes a tag away.
|
|
16
|
+
*
|
|
17
|
+
* @param tag - the tag, as a story holds it.
|
|
18
|
+
*/
|
|
19
|
+
export const isFilterTag = (tag) => !tag.startsWith("!") && !TOOL_TAGS.has(tag);
|
|
20
|
+
/**
|
|
21
|
+
* Whether any listed story holds a tag a person can filter by: what offers the filter and draws the statuses' badges.
|
|
22
|
+
*
|
|
23
|
+
* @param tree - the tree.
|
|
24
|
+
*/
|
|
25
|
+
export const hasFilterTags = (tree) => storyLocations(tree).some(({ story }) => story.tags.some(isFilterTag));
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { StoryTree } from "./storyTree.ts";
|
|
2
|
+
/** One tag the catalogue's stories hold. */
|
|
3
|
+
export type CatalogueTag = {
|
|
4
|
+
/** The tag. */
|
|
5
|
+
readonly tag: string;
|
|
6
|
+
/** How many listed stories hold it. */
|
|
7
|
+
readonly stories: number;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Whether a story's tags pass a filter.
|
|
11
|
+
*
|
|
12
|
+
* @param tags - the story's tags.
|
|
13
|
+
* @param filter - the filter's tags, each `name` or `!name`; none keeps every story.
|
|
14
|
+
*/
|
|
15
|
+
export declare const passesTags: (tags: readonly string[], filter: readonly string[]) => boolean;
|
|
16
|
+
/**
|
|
17
|
+
* The tags a person can filter a catalogue by, by name, with the listed stories each one holds.
|
|
18
|
+
*
|
|
19
|
+
* @param tree - the tree.
|
|
20
|
+
*/
|
|
21
|
+
export declare const catalogueTags: (tree: StoryTree) => readonly CatalogueTag[];
|
|
22
|
+
/**
|
|
23
|
+
* The tree the sidebar lists under a filter: only the stories that pass, and what holds them. Pages keep opening from
|
|
24
|
+
* the whole tree: an address still shows a story the filter leaves out.
|
|
25
|
+
*
|
|
26
|
+
* @param tree - the whole tree.
|
|
27
|
+
* @param filter - the filter's tags, each `name` or `!name`; none gives the tree as it is.
|
|
28
|
+
*/
|
|
29
|
+
export declare const taggedTree: (tree: StoryTree, filter: readonly string[]) => StoryTree;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The tag filter: which stories a list of tags keeps, for the sidebar's tree and the agents' documents alike.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* Written as CSF writes a tag: `beta` asks for it, `!beta` asks to leave it out. A story stays when it holds any tag
|
|
6
|
+
* asked for and none left out, as Storybook's filter reads its choices, so ticking one more tag widens the list. A docs
|
|
7
|
+
* page holds no tags, so it reads as a story with none. Pure.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
import { isFilterTag } from "./storyTagNames.js";
|
|
12
|
+
/**
|
|
13
|
+
* Whether a story's tags pass a filter.
|
|
14
|
+
*
|
|
15
|
+
* @param tags - the story's tags.
|
|
16
|
+
* @param filter - the filter's tags, each `name` or `!name`; none keeps every story.
|
|
17
|
+
*/
|
|
18
|
+
export const passesTags = (tags, filter) => {
|
|
19
|
+
const asked = filter.filter((tag) => !tag.startsWith("!"));
|
|
20
|
+
return (filter.every((tag) => !tag.startsWith("!") || !tags.includes(tag.slice(1))) &&
|
|
21
|
+
(asked.length === 0 || asked.some((tag) => tags.includes(tag))));
|
|
22
|
+
};
|
|
23
|
+
/** Every component of a source, whatever group it sits in. */
|
|
24
|
+
const componentsOf = (source) => source.families.flatMap((family) => family.groups.flatMap((group) => group.components));
|
|
25
|
+
/**
|
|
26
|
+
* The tags a person can filter a catalogue by, by name, with the listed stories each one holds.
|
|
27
|
+
*
|
|
28
|
+
* @param tree - the tree.
|
|
29
|
+
*/
|
|
30
|
+
export const catalogueTags = (tree) => {
|
|
31
|
+
const counts = new Map();
|
|
32
|
+
const stories = tree.sources.flatMap((source) => componentsOf(source).flatMap((component) => component.stories));
|
|
33
|
+
for (const tag of stories.flatMap((story) => story.tags.filter(isFilterTag))) {
|
|
34
|
+
counts.set(tag, (counts.get(tag) ?? 0) + 1);
|
|
35
|
+
}
|
|
36
|
+
return [...counts]
|
|
37
|
+
.map(([tag, count]) => ({ tag, stories: count }))
|
|
38
|
+
.sort((one, other) => one.tag.localeCompare(other.tag));
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* A group with what the filter keeps: its components with only the stories that pass, and the aliases of the components
|
|
42
|
+
* that stay; an alias is opened to its component's page, so it follows that component.
|
|
43
|
+
*
|
|
44
|
+
* @param group - the group.
|
|
45
|
+
* @param filter - the filter's tags.
|
|
46
|
+
* @param keptTitles - the titles of the source's components that stay.
|
|
47
|
+
*/
|
|
48
|
+
const groupOf = (group, filter, keptTitles) => ({
|
|
49
|
+
...group,
|
|
50
|
+
components: group.components.flatMap((component) => {
|
|
51
|
+
const stories = component.stories.filter((story) => passesTags(story.tags, filter));
|
|
52
|
+
return stories.length === 0 ? [] : [{ ...component, stories }];
|
|
53
|
+
}),
|
|
54
|
+
aliases: group.aliases.filter((alias) => keptTitles.has(alias.title))
|
|
55
|
+
});
|
|
56
|
+
/**
|
|
57
|
+
* The tree the sidebar lists under a filter: only the stories that pass, and what holds them. Pages keep opening from
|
|
58
|
+
* the whole tree: an address still shows a story the filter leaves out.
|
|
59
|
+
*
|
|
60
|
+
* @param tree - the whole tree.
|
|
61
|
+
* @param filter - the filter's tags, each `name` or `!name`; none gives the tree as it is.
|
|
62
|
+
*/
|
|
63
|
+
export const taggedTree = (tree, filter) => {
|
|
64
|
+
if (filter.length === 0)
|
|
65
|
+
return tree;
|
|
66
|
+
const hasAsked = filter.some((tag) => !tag.startsWith("!"));
|
|
67
|
+
return {
|
|
68
|
+
...tree,
|
|
69
|
+
sources: tree.sources.map((source) => {
|
|
70
|
+
const keptTitles = new Set(componentsOf(source)
|
|
71
|
+
.filter((component) => component.stories.some((story) => passesTags(story.tags, filter)))
|
|
72
|
+
.map((component) => component.title));
|
|
73
|
+
return {
|
|
74
|
+
...source,
|
|
75
|
+
pages: hasAsked ? [] : source.pages,
|
|
76
|
+
families: source.families.flatMap((family) => {
|
|
77
|
+
const groups = family.groups
|
|
78
|
+
.map((group) => groupOf(group, filter, keptTitles))
|
|
79
|
+
.filter((group) => group.components.length > 0 || group.aliases.length > 0);
|
|
80
|
+
return groups.length === 0 ? [] : [{ ...family, groups }];
|
|
81
|
+
})
|
|
82
|
+
};
|
|
83
|
+
})
|
|
84
|
+
};
|
|
85
|
+
};
|
package/dist/src/storyTree.d.ts
CHANGED
|
@@ -97,6 +97,11 @@ export type TreeComponent = {
|
|
|
97
97
|
* none, for the catalogue's.
|
|
98
98
|
*/
|
|
99
99
|
readonly requiredFirst: RequiredFirst | undefined;
|
|
100
|
+
/**
|
|
101
|
+
* Its first file's meta's tags, the previews' under them: what is said of the component as a whole, its status
|
|
102
|
+
* among them (`storyStatuses.ts`), whatever a story adds or takes away. Empty when none.
|
|
103
|
+
*/
|
|
104
|
+
readonly tags: readonly string[];
|
|
100
105
|
};
|
|
101
106
|
/** A group's entry for a component that lives elsewhere and is listed here too (the meta's `alsoIn`). */
|
|
102
107
|
export type TreeAlias = {
|
|
@@ -239,6 +244,14 @@ export declare const testedStoryLocations: (tree: StoryTree) => StoryLocation[];
|
|
|
239
244
|
* @returns its place, or `undefined` when no story has this id.
|
|
240
245
|
*/
|
|
241
246
|
export declare const findStory: (tree: StoryTree, id: string) => StoryLocation | undefined;
|
|
247
|
+
/**
|
|
248
|
+
* The story an address names: its `story`, or the one of a link written for Storybook. Either is only a name: it opens
|
|
249
|
+
* a page by `findStory`, or says that no such story is there.
|
|
250
|
+
*
|
|
251
|
+
* @param params - the address's query.
|
|
252
|
+
* @returns the story's id; none when the address names none.
|
|
253
|
+
*/
|
|
254
|
+
export declare const storyOfAddress: (params: URLSearchParams) => string | null;
|
|
242
255
|
/** Where a component sits: its source, family and group. */
|
|
243
256
|
export type ComponentLocation = Omit<StoryLocation, "story">;
|
|
244
257
|
/**
|
package/dist/src/storyTree.js
CHANGED
|
@@ -126,7 +126,8 @@ const startedComponent = (source, file, entry, titlesById) => {
|
|
|
126
126
|
const placedComponents = (source, problems) => {
|
|
127
127
|
const byTitle = new Map();
|
|
128
128
|
const titlesById = new Map();
|
|
129
|
-
const index = sourceFiles(source)
|
|
129
|
+
const { index, problems: unread = [] } = sourceFiles(source);
|
|
130
|
+
problems.push(...unread);
|
|
130
131
|
// sorted, so a component's files, and so its stories, its docs and a clash's winner, never depend on the groups' order
|
|
131
132
|
for (const file of Object.keys(index).sort()) {
|
|
132
133
|
const entry = index[file];
|
|
@@ -249,7 +250,8 @@ const sourceFamilies = (source, problems) => {
|
|
|
249
250
|
design: componentDesign(component),
|
|
250
251
|
// its first file's, as its docs are
|
|
251
252
|
propGroups: component.files[0]?.entry.propGroups ?? [],
|
|
252
|
-
requiredFirst: component.files[0]?.entry.requiredFirst
|
|
253
|
+
requiredFirst: component.files[0]?.entry.requiredFirst,
|
|
254
|
+
tags: component.files[0]?.entry.tags ?? []
|
|
253
255
|
});
|
|
254
256
|
}
|
|
255
257
|
placeAliases(source, placed, families, problems);
|
|
@@ -299,7 +301,13 @@ export const storyTree = (sources) => {
|
|
|
299
301
|
const shown = tree.filter((source) => source.families.length > 0 || source.pages.length > 0);
|
|
300
302
|
return {
|
|
301
303
|
sources: shown,
|
|
302
|
-
|
|
304
|
+
// a script that does not parse is named by every group a dev server serves: once is enough
|
|
305
|
+
problems: [
|
|
306
|
+
...new Set([
|
|
307
|
+
...problems,
|
|
308
|
+
...pageProblems(shown, new Set(storyIds(shown)), new Set(componentIds(shown)))
|
|
309
|
+
])
|
|
310
|
+
]
|
|
303
311
|
};
|
|
304
312
|
};
|
|
305
313
|
/**
|
|
@@ -341,8 +349,20 @@ export const testedStoryLocations = (tree) => storyLocations(tree).filter((locat
|
|
|
341
349
|
export const findStory = (tree, id) => {
|
|
342
350
|
const locations = storyLocations(tree);
|
|
343
351
|
return (locations.find((location) => location.story.id === id) ??
|
|
344
|
-
locations.find(({ source, component, story }) => formerStoryId(source.id, component.title, story.exportName) === id)
|
|
352
|
+
locations.find(({ source, component, story }) => formerStoryId(source.id, component.title, story.exportName) === id) ??
|
|
353
|
+
// a Storybook link names no source: the first in the catalogue's order that has a story of that id
|
|
354
|
+
locations.find(({ source, story }) => story.id === `${source.id}:${id}`));
|
|
345
355
|
};
|
|
356
|
+
/** Storybook's address of a story: `?path=/story/<id>`. */
|
|
357
|
+
const STORYBOOK_STORY_PATH = /^\/story\/([^/]+)$/;
|
|
358
|
+
/**
|
|
359
|
+
* The story an address names: its `story`, or the one of a link written for Storybook. Either is only a name: it opens
|
|
360
|
+
* a page by `findStory`, or says that no such story is there.
|
|
361
|
+
*
|
|
362
|
+
* @param params - the address's query.
|
|
363
|
+
* @returns the story's id; none when the address names none.
|
|
364
|
+
*/
|
|
365
|
+
export const storyOfAddress = (params) => params.get("story") ?? STORYBOOK_STORY_PATH.exec(params.get("path") ?? "")?.[1] ?? null;
|
|
346
366
|
/**
|
|
347
367
|
* Every component of the tree with its place.
|
|
348
368
|
*
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storybook's form of an address's `args`, read as Storybook's `parseArgsParam` reads it, and its values typed for the
|
|
3
|
+
* props that receive them. Loaded only for a link in that form (`addressArgsParam.ts`). Pure.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* `name:value` pairs split by `;`, a list as `tags[0]:a;tags[1]:b`, `tags[]:a;tags[]:b` or `tags:a;tags:b`, and the marked
|
|
7
|
+
* values `!true`, `!false`, `!null`, `!hex(ff0000)`, `!rgba(1,2,3,0.5)`, `!hsl(…)`, `!date(…)`. Its unmarked values are
|
|
8
|
+
* only text, whatever they look like: whether `5` is a number and `007` a text depends on the prop, which the story
|
|
9
|
+
* declares later, so they stay text here and the check types them, keeping what Storybook's own reading loses (its `007`
|
|
10
|
+
* becomes `7`). Storybook leaves out any text outside a few characters as unsafe; here every value meets the same check as
|
|
11
|
+
* a JSON one (`addressArgs.ts`), so non-ASCII text is read.
|
|
12
|
+
*
|
|
13
|
+
* What cannot be held is named as unread: an object (`style.color:red`), a list with a hole (`tags[1]:b`, which patches a
|
|
14
|
+
* list the story owns), `!undefined`, a date that is none.
|
|
15
|
+
*
|
|
16
|
+
* @module
|
|
17
|
+
*/
|
|
18
|
+
import type { ArgsParamRead } from "./addressArgsParam.ts";
|
|
19
|
+
/**
|
|
20
|
+
* Storybook's form, read.
|
|
21
|
+
*
|
|
22
|
+
* @param param - the parameter.
|
|
23
|
+
*/
|
|
24
|
+
export declare const readStorybookArgs: (param: string) => ArgsParamRead;
|