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
|
@@ -10,14 +10,20 @@
|
|
|
10
10
|
* have set it: a prop the panel lets the person set (the component's props with the story's `argTypes` laid over them,
|
|
11
11
|
* or an arg only the `argTypes` or the story's own args name), with a value of that prop's type. Everything else is
|
|
12
12
|
* left out and reported. A value that is code never comes from an address: a named value is looked up among the
|
|
13
|
-
* source's own entries only, never through an object's prototype (`constructor`).
|
|
13
|
+
* source's own entries only, never through an object's prototype (`constructor`). An object's names are checked the
|
|
14
|
+
* same way, against its type (`valueShape.ts`). The panel's "no value" (`UnsetArg`) passes for any prop the panel sets:
|
|
15
|
+
* the story receives `undefined`, which any prop may. Pure.
|
|
16
|
+
*
|
|
17
|
+
* A frame takes values from one kind of message only, whichever frame it is (the stage's, an embed's, a plugin's aside),
|
|
18
|
+
* so `checkedArgsMessage` builds it, from nothing but what this check sealed (`AcceptedArgs`): a page that skipped the
|
|
19
|
+
* check has no value of that type to give it. A test holds every other module to not writing the message itself.
|
|
14
20
|
*
|
|
15
21
|
* @module
|
|
16
22
|
*/
|
|
17
23
|
import type { StoryControlsSetting } from "@forgebook/story-format/source";
|
|
18
24
|
import { type PanelArgTypes, type PanelProp } from "./argTypes.ts";
|
|
19
25
|
import type { PropDocs } from "./componentDocs.ts";
|
|
20
|
-
import { type ArgValue, type PanelArgs } from "./messages.ts";
|
|
26
|
+
import { type ArgValue, type PanelArgs, type ShellMessage } from "./messages.ts";
|
|
21
27
|
import { type NamedValues } from "./namedValues.ts";
|
|
22
28
|
/** What a story declares about the args the panel sets, as the shell knows it once the story's frame is ready. */
|
|
23
29
|
export type ArgDeclaration = {
|
|
@@ -32,8 +38,11 @@ export type ArgDeclaration = {
|
|
|
32
38
|
/** The values the source names for types the panel cannot write. */
|
|
33
39
|
readonly namedValues: NamedValues;
|
|
34
40
|
};
|
|
35
|
-
/**
|
|
36
|
-
|
|
41
|
+
/**
|
|
42
|
+
* Why a value of the address was left out: its name is not one the panel sets, its value is not of the prop's type, its
|
|
43
|
+
* text could not be read as a value at all, or its custom control refuses it or cannot load.
|
|
44
|
+
*/
|
|
45
|
+
export type DroppedArgReason = "undeclared" | "type" | "unreadable" | "control" | "markup";
|
|
37
46
|
/** A value of the address left out. */
|
|
38
47
|
export type DroppedArg = {
|
|
39
48
|
/** The arg's name, as the address wrote it. */
|
|
@@ -47,7 +56,22 @@ export type CheckedArgs = {
|
|
|
47
56
|
readonly accepted: PanelArgs;
|
|
48
57
|
/** The values left out, in the address's order. */
|
|
49
58
|
readonly dropped: readonly DroppedArg[];
|
|
59
|
+
/** Whether a value waits for what checks it: it is neither taken nor left out yet. */
|
|
60
|
+
readonly isWaiting: boolean;
|
|
61
|
+
/** The values the story receives, as a frame can be told them. */
|
|
62
|
+
readonly sealed: AcceptedArgs;
|
|
50
63
|
};
|
|
64
|
+
/** What only this module can write on values: the type system's proof that they went through the check. */
|
|
65
|
+
declare const ACCEPTED: unique symbol;
|
|
66
|
+
/** Values the check accepted, the only ones a frame can be told. */
|
|
67
|
+
export type AcceptedArgs = {
|
|
68
|
+
/** The values. */
|
|
69
|
+
readonly values: PanelArgs;
|
|
70
|
+
/** Marks them as the check's. */
|
|
71
|
+
readonly [ACCEPTED]: true;
|
|
72
|
+
};
|
|
73
|
+
/** No values: what a frame the address has no say in receives (a story on a docs page). */
|
|
74
|
+
export declare const NO_ACCEPTED_ARGS: AcceptedArgs;
|
|
51
75
|
/**
|
|
52
76
|
* The props the panel sets for a story, whatever the address says: the component's props with the `argTypes` over
|
|
53
77
|
* them and the args only the `argTypes` name, then the story's own args the two leave out, each kept only when the
|
|
@@ -56,6 +80,19 @@ export type CheckedArgs = {
|
|
|
56
80
|
* @param declaration - what the story declares.
|
|
57
81
|
*/
|
|
58
82
|
export declare const declaredArgProps: (declaration: ArgDeclaration) => readonly PanelProp[];
|
|
83
|
+
/** What checks a custom control's value, by control: gives what is wrong with it. A control missing here refuses all. */
|
|
84
|
+
export type CustomChecks = Readonly<Record<string, (value: ArgValue) => string | undefined>>;
|
|
85
|
+
/** What checks a structured value: `shapeValues.ts` and each control's schema, loaded with the first prop that needs them. */
|
|
86
|
+
export type ArgChecks = Pick<typeof import("./shapeValues.ts"), "isValueOfShape" | "isFileList"> & {
|
|
87
|
+
/** What checks a custom control's value; none refuses them all. */
|
|
88
|
+
readonly custom?: CustomChecks;
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Whether a prop's values are checked by `shapeValues.ts`.
|
|
92
|
+
*
|
|
93
|
+
* @param prop - a prop the panel sets.
|
|
94
|
+
*/
|
|
95
|
+
export declare const needsShapeChecks: (prop: PanelProp) => boolean;
|
|
59
96
|
/**
|
|
60
97
|
* Whether a value is one the panel could set for a prop: of the control the `argTypes` name, otherwise of the prop's
|
|
61
98
|
* kind.
|
|
@@ -63,12 +100,23 @@ export declare const declaredArgProps: (declaration: ArgDeclaration) => readonly
|
|
|
63
100
|
* @param prop - a prop the panel sets.
|
|
64
101
|
* @param value - the address's value.
|
|
65
102
|
* @param namedValues - the source's named values.
|
|
103
|
+
* @param shapes - what checks a value against a shape; none refuses a prop that needs it.
|
|
66
104
|
*/
|
|
67
|
-
export declare const isValueOfProp: (prop: PanelProp, value: ArgValue, namedValues: NamedValues) => boolean;
|
|
105
|
+
export declare const isValueOfProp: (prop: PanelProp, value: ArgValue, namedValues: NamedValues, shapes?: ArgChecks) => boolean;
|
|
68
106
|
/**
|
|
69
107
|
* The address's values the story receives, and those left out with the reason.
|
|
70
108
|
*
|
|
71
109
|
* @param args - the values the address names.
|
|
72
110
|
* @param declaration - what the story declares.
|
|
111
|
+
* @param typeValue - types a value for its prop, for a link whose form does not say (`storybookArgs.ts`); none takes each
|
|
112
|
+
* as written.
|
|
113
|
+
* @param checks - what checks a structured value, a custom control's among them; none leaves such a value waiting.
|
|
114
|
+
*/
|
|
115
|
+
export declare const checkedAddressArgs: (args: PanelArgs, declaration: ArgDeclaration, typeValue?: (prop: PanelProp, value: ArgValue) => ArgValue, checks?: ArgChecks) => CheckedArgs;
|
|
116
|
+
/**
|
|
117
|
+
* The message that gives a frame its values.
|
|
118
|
+
*
|
|
119
|
+
* @param accepted - the values `checkedAddressArgs` accepted.
|
|
73
120
|
*/
|
|
74
|
-
export declare const
|
|
121
|
+
export declare const checkedArgsMessage: (accepted: AcceptedArgs) => ShellMessage;
|
|
122
|
+
export {};
|
package/dist/src/addressArgs.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { panelProps, settableProps } from "./argTypes.js";
|
|
2
|
-
import { isChoiceList, isNamedArg } from "./messages.js";
|
|
2
|
+
import { isChoiceList, isNamedArg, isUnsetArg } from "./messages.js";
|
|
3
3
|
import { namedValueOf } from "./namedValues.js";
|
|
4
|
+
/** What only this module can write on values: the type system's proof that they went through the check. */
|
|
5
|
+
const ACCEPTED = Symbol("accepted");
|
|
6
|
+
/** No values: what a frame the address has no say in receives (a story on a docs page). */
|
|
7
|
+
export const NO_ACCEPTED_ARGS = { values: {}, [ACCEPTED]: true };
|
|
4
8
|
/** A prop made from one of the story's own args, for an arg neither the types nor the `argTypes` name. */
|
|
5
9
|
const propOfStoryArg = (name, value) => {
|
|
6
10
|
const prop = { name, type: "", description: "", isRequired: false };
|
|
@@ -13,8 +17,10 @@ const propOfStoryArg = (name, value) => {
|
|
|
13
17
|
// a named value keeps the type it is offered for, so only another value named for it is taken
|
|
14
18
|
if (isNamedArg(value))
|
|
15
19
|
return { ...prop, kind: "other", type: value.of };
|
|
16
|
-
// a
|
|
17
|
-
|
|
20
|
+
// a `null`'s type is not known: nothing the address names is taken for it
|
|
21
|
+
if (value === null)
|
|
22
|
+
return undefined;
|
|
23
|
+
return { ...prop, kind: "other", shape: { kind: "like", value } };
|
|
18
24
|
};
|
|
19
25
|
/**
|
|
20
26
|
* The props the panel sets for a story, whatever the address says: the component's props with the `argTypes` over
|
|
@@ -32,12 +38,21 @@ export const declaredArgProps = (declaration) => {
|
|
|
32
38
|
const prop = propOfStoryArg(name, value);
|
|
33
39
|
return prop === undefined ? [] : [prop];
|
|
34
40
|
});
|
|
35
|
-
return settableProps([...panelProps(props, argTypes), ...ownProps], controls, namedValues);
|
|
41
|
+
return settableProps([...panelProps(props, argTypes, storyArgs), ...ownProps], controls, namedValues);
|
|
36
42
|
};
|
|
37
43
|
/** Whether a value is a finite number: what a number field sets (an address's JSON has no `NaN` anyway). */
|
|
38
44
|
const isFiniteNumber = (value) => typeof value === "number" && Number.isFinite(value);
|
|
39
45
|
/** Whether a value is one of a choice's options. */
|
|
40
46
|
const isOption = (prop, value) => (typeof value === "string" || typeof value === "number") && (prop.choices ?? []).includes(value);
|
|
47
|
+
/**
|
|
48
|
+
* Whether a prop's values are checked by `shapeValues.ts`.
|
|
49
|
+
*
|
|
50
|
+
* @param prop - a prop the panel sets.
|
|
51
|
+
*/
|
|
52
|
+
export const needsShapeChecks = (prop) => prop.customControl !== undefined ||
|
|
53
|
+
prop.control === "file" ||
|
|
54
|
+
prop.control === "object" ||
|
|
55
|
+
(prop.control === undefined && prop.kind === "other" && prop.shape !== undefined);
|
|
41
56
|
/**
|
|
42
57
|
* Whether a value is one the panel could set for a prop: of the control the `argTypes` name, otherwise of the prop's
|
|
43
58
|
* kind.
|
|
@@ -45,8 +60,9 @@ const isOption = (prop, value) => (typeof value === "string" || typeof value ===
|
|
|
45
60
|
* @param prop - a prop the panel sets.
|
|
46
61
|
* @param value - the address's value.
|
|
47
62
|
* @param namedValues - the source's named values.
|
|
63
|
+
* @param shapes - what checks a value against a shape; none refuses a prop that needs it.
|
|
48
64
|
*/
|
|
49
|
-
export const isValueOfProp = (prop, value, namedValues) => {
|
|
65
|
+
export const isValueOfProp = (prop, value, namedValues, shapes) => {
|
|
50
66
|
switch (prop.control) {
|
|
51
67
|
case "select":
|
|
52
68
|
case "radio":
|
|
@@ -63,6 +79,13 @@ export const isValueOfProp = (prop, value, namedValues) => {
|
|
|
63
79
|
case "range":
|
|
64
80
|
case "date":
|
|
65
81
|
return isFiniteNumber(value);
|
|
82
|
+
case "textarea":
|
|
83
|
+
case "token":
|
|
84
|
+
return typeof value === "string";
|
|
85
|
+
case "object":
|
|
86
|
+
return prop.shape !== undefined && shapes?.isValueOfShape(prop.shape, value, namedValues) === true;
|
|
87
|
+
case "file":
|
|
88
|
+
return shapes?.isFileList(value) === true;
|
|
66
89
|
case "none":
|
|
67
90
|
return false;
|
|
68
91
|
case undefined:
|
|
@@ -78,32 +101,65 @@ export const isValueOfProp = (prop, value, namedValues) => {
|
|
|
78
101
|
case "toggle":
|
|
79
102
|
return typeof value === "boolean";
|
|
80
103
|
case "other":
|
|
81
|
-
if (isNamedArg(value)
|
|
82
|
-
|
|
83
|
-
|
|
104
|
+
if (isNamedArg(value) &&
|
|
105
|
+
value.of === prop.type &&
|
|
106
|
+
namedValueOf(namedValues, value.of, value.named) !== undefined)
|
|
107
|
+
return true;
|
|
108
|
+
if (prop.shape !== undefined && shapes?.isValueOfShape(prop.shape, value, namedValues) === true)
|
|
109
|
+
return true;
|
|
84
110
|
return prop.canTakeText === true && typeof value === "string";
|
|
85
111
|
case "event":
|
|
86
112
|
return false;
|
|
87
113
|
}
|
|
88
114
|
};
|
|
115
|
+
/** Whether a custom control takes a value: it loaded, and its check finds nothing wrong. */
|
|
116
|
+
const fitsControl = (custom, control, value) => Object.hasOwn(custom, control) && custom[control]?.(value) === undefined;
|
|
117
|
+
/** What becomes of a value for a prop the panel sets: the story takes it, it waits for its check, or why it is left out. */
|
|
118
|
+
const verdictOf = (prop, value, { namedValues, checks }) => {
|
|
119
|
+
if (isUnsetArg(value))
|
|
120
|
+
return "taken";
|
|
121
|
+
if (checks === undefined && needsShapeChecks(prop))
|
|
122
|
+
return "waiting";
|
|
123
|
+
if (prop.customControl !== undefined)
|
|
124
|
+
return fitsControl(checks?.custom ?? {}, prop.customControl, value) ? "taken" : "control";
|
|
125
|
+
return isValueOfProp(prop, value, namedValues, checks) ? "taken" : "type";
|
|
126
|
+
};
|
|
89
127
|
/**
|
|
90
128
|
* The address's values the story receives, and those left out with the reason.
|
|
91
129
|
*
|
|
92
130
|
* @param args - the values the address names.
|
|
93
131
|
* @param declaration - what the story declares.
|
|
132
|
+
* @param typeValue - types a value for its prop, for a link whose form does not say (`storybookArgs.ts`); none takes each
|
|
133
|
+
* as written.
|
|
134
|
+
* @param checks - what checks a structured value, a custom control's among them; none leaves such a value waiting.
|
|
94
135
|
*/
|
|
95
|
-
export const checkedAddressArgs = (args, declaration) => {
|
|
136
|
+
export const checkedAddressArgs = (args, declaration, typeValue, checks) => {
|
|
96
137
|
const declared = declaredArgProps(declaration);
|
|
97
138
|
const accepted = [];
|
|
98
139
|
const dropped = [];
|
|
99
|
-
|
|
140
|
+
let isWaiting = false;
|
|
141
|
+
for (const [name, written] of Object.entries(args)) {
|
|
100
142
|
const prop = declared.find((each) => each.name === name);
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
143
|
+
const value = prop !== undefined && typeValue !== undefined ? typeValue(prop, written) : written;
|
|
144
|
+
const verdict = prop === undefined
|
|
145
|
+
? "undeclared"
|
|
146
|
+
: verdictOf(prop, value, { namedValues: declaration.namedValues, checks });
|
|
147
|
+
if (verdict === "taken")
|
|
106
148
|
accepted.push([name, value]);
|
|
149
|
+
else if (verdict === "waiting")
|
|
150
|
+
isWaiting = true;
|
|
151
|
+
else
|
|
152
|
+
dropped.push({ name, reason: verdict });
|
|
107
153
|
}
|
|
108
|
-
|
|
154
|
+
const values = Object.fromEntries(accepted);
|
|
155
|
+
return { accepted: values, dropped, isWaiting, sealed: { values, [ACCEPTED]: true } };
|
|
109
156
|
};
|
|
157
|
+
/**
|
|
158
|
+
* The message that gives a frame its values.
|
|
159
|
+
*
|
|
160
|
+
* @param accepted - the values `checkedAddressArgs` accepted.
|
|
161
|
+
*/
|
|
162
|
+
export const checkedArgsMessage = (accepted) => ({
|
|
163
|
+
type: "forgebook:args",
|
|
164
|
+
args: accepted.values
|
|
165
|
+
});
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `args` parameter of an address, in either form it comes in: Forgebook's own JSON (`{"label":"Hi","count":5}`), or
|
|
3
|
+
* Storybook's (`label:Hi;count:5`), which a link from before a move to Forgebook carries. Pure.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* The two are told apart by their first character: JSON's is `{`, and in Storybook's form a parameter starts with an
|
|
7
|
+
* arg's name, which cannot hold one. Only JSON is read here: such a link is rare, so its reader (`storybookArgs.ts`) loads
|
|
8
|
+
* when one is opened, and until then the address's values are none.
|
|
9
|
+
*
|
|
10
|
+
* A value that cannot be held is named in `unread`, never lost silently. Nor is one bad entry a reason to lose the others:
|
|
11
|
+
* each is read on its own.
|
|
12
|
+
*
|
|
13
|
+
* @module
|
|
14
|
+
*/
|
|
15
|
+
import type { PanelProp } from "./argTypes.ts";
|
|
16
|
+
import { type ArgValue, type PanelArgs } from "./messages.ts";
|
|
17
|
+
/**
|
|
18
|
+
* What an address's `args` still has to say once read, when it is not plain JSON of readable values. Kept until the
|
|
19
|
+
* person changes a value, since the address must go on saying the same: Storybook's unmarked values have no JSON form
|
|
20
|
+
* until they are typed.
|
|
21
|
+
*/
|
|
22
|
+
export type AddressLink = {
|
|
23
|
+
/** The parameter as the address writes it. */
|
|
24
|
+
readonly param: string;
|
|
25
|
+
/** Whether it is Storybook's form and its reader has not loaded yet: its values are still to come. */
|
|
26
|
+
readonly isWaiting: boolean;
|
|
27
|
+
/** Types one of its values for the prop that receives it, for a form that does not say; none for JSON, which does. */
|
|
28
|
+
readonly typeValue?: (prop: PanelProp, value: ArgValue) => ArgValue;
|
|
29
|
+
/** The names of the values that could not be read; `args` for a parameter that could not be read at all. */
|
|
30
|
+
readonly unread: readonly string[];
|
|
31
|
+
/** The names of the values the framework's stories cannot take from an address (`addressTexts.ts`); none by default. */
|
|
32
|
+
readonly refused?: readonly string[];
|
|
33
|
+
};
|
|
34
|
+
/** An address's `args` once read. */
|
|
35
|
+
export type ArgsParamRead = {
|
|
36
|
+
/** The values read: as they will be checked, none of them yet known to be the story's. */
|
|
37
|
+
readonly args: PanelArgs;
|
|
38
|
+
/** What else the address says; none for plain JSON, or no parameter. */
|
|
39
|
+
readonly link: AddressLink | undefined;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* What an address's `args` names, as far as the first screen reads it.
|
|
43
|
+
*
|
|
44
|
+
* @param param - the `args` parameter, decoded as `URLSearchParams` gives it.
|
|
45
|
+
*/
|
|
46
|
+
export declare const readArgsParam: (param: string | null) => ArgsParamRead;
|
|
47
|
+
/**
|
|
48
|
+
* What a link waiting for Storybook's reader names, once it has loaded.
|
|
49
|
+
*
|
|
50
|
+
* @param param - the parameter.
|
|
51
|
+
* @param read - turns it into values: the reader's own, or one that types them for a page with no declaration.
|
|
52
|
+
* @returns what it names; the whole parameter unread when the reader cannot load.
|
|
53
|
+
*/
|
|
54
|
+
export declare const readStorybookLink: (param: string, read: (module: typeof import("./storybookArgs.ts"), param: string) => ArgsParamRead) => Promise<ArgsParamRead>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { isArgValue } from "./messages.js";
|
|
2
|
+
/** The name of a parameter that could not be read at all. */
|
|
3
|
+
const WHOLE_PARAMETER = "args";
|
|
4
|
+
/**
|
|
5
|
+
* Forgebook's own form, read entry by entry.
|
|
6
|
+
*
|
|
7
|
+
* @param param - the parameter.
|
|
8
|
+
*/
|
|
9
|
+
const readJsonArgs = (param) => {
|
|
10
|
+
let value;
|
|
11
|
+
try {
|
|
12
|
+
value = JSON.parse(param);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return { args: {}, link: { param, isWaiting: false, unread: [WHOLE_PARAMETER] } };
|
|
16
|
+
}
|
|
17
|
+
const entries = typeof value === "object" && value !== null ? Object.entries(value) : [];
|
|
18
|
+
const unread = entries.filter(([, each]) => !isArgValue(each)).map(([name]) => name);
|
|
19
|
+
const read = entries.flatMap(([name, each]) => isArgValue(each) ? [[name, each]] : []);
|
|
20
|
+
return {
|
|
21
|
+
args: Object.fromEntries(read),
|
|
22
|
+
link: unread.length === 0 ? undefined : { param, isWaiting: false, unread }
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* What an address's `args` names, as far as the first screen reads it.
|
|
27
|
+
*
|
|
28
|
+
* @param param - the `args` parameter, decoded as `URLSearchParams` gives it.
|
|
29
|
+
*/
|
|
30
|
+
export const readArgsParam = (param) => {
|
|
31
|
+
if (param === null || param === "")
|
|
32
|
+
return { args: {}, link: undefined };
|
|
33
|
+
return param.trimStart().startsWith("{")
|
|
34
|
+
? readJsonArgs(param)
|
|
35
|
+
: { args: {}, link: { param, isWaiting: true, unread: [] } };
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* What a link waiting for Storybook's reader names, once it has loaded.
|
|
39
|
+
*
|
|
40
|
+
* @param param - the parameter.
|
|
41
|
+
* @param read - turns it into values: the reader's own, or one that types them for a page with no declaration.
|
|
42
|
+
* @returns what it names; the whole parameter unread when the reader cannot load.
|
|
43
|
+
*/
|
|
44
|
+
export const readStorybookLink = async (param, read) => {
|
|
45
|
+
try {
|
|
46
|
+
return read(await import("./storybookArgs.js"), param);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return { args: {}, link: { param, isWaiting: false, unread: [WHOLE_PARAMETER] } };
|
|
50
|
+
}
|
|
51
|
+
};
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
*
|
|
14
14
|
* @module
|
|
15
15
|
*/
|
|
16
|
+
import type { AddressLink, ArgsParamRead } from "./addressArgsParam.ts";
|
|
16
17
|
import { type PanelArgs } from "./messages.ts";
|
|
17
18
|
/**
|
|
18
19
|
* How a framework's stories take the texts an address carries: `any` where a text stays text (React, Vue), `plain`
|
|
@@ -33,3 +34,16 @@ export declare const isPlainText: (text: string) => boolean;
|
|
|
33
34
|
* @param addressTexts - the framework's rule.
|
|
34
35
|
*/
|
|
35
36
|
export declare const addressArgsFor: (args: PanelArgs, addressTexts: AddressTexts) => PanelArgs;
|
|
37
|
+
/**
|
|
38
|
+
* What an address's `args` gives a story under a framework's rule, and what it says of the values the rule took out, so
|
|
39
|
+
* the note above the story names them as it names what the story's check refuses.
|
|
40
|
+
*
|
|
41
|
+
* @param read - the parameter, once read.
|
|
42
|
+
* @param param - the parameter as the address writes it.
|
|
43
|
+
* @param addressTexts - the framework's rule.
|
|
44
|
+
* @returns the values, and the link they came from.
|
|
45
|
+
*/
|
|
46
|
+
export declare const addressArgsRead: (read: ArgsParamRead, param: string | null, addressTexts: AddressTexts) => {
|
|
47
|
+
readonly panelArgs: PanelArgs;
|
|
48
|
+
readonly link: AddressLink | undefined;
|
|
49
|
+
};
|
package/dist/src/addressTexts.js
CHANGED
|
@@ -1,19 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* The texts a catalogue's address may hand a story whose framework writes texts into markup: plain words only.
|
|
3
|
-
*
|
|
4
|
-
* @remarks
|
|
5
|
-
* A link shares the props panel's values in its address (`?args=`), so whoever writes the link chooses them, and the
|
|
6
|
-
* frame runs on the catalogue's own origin. React and Vue put a text into the page as text; a plain HTML story
|
|
7
|
-
* writes it into an HTML string (`<button class="${tone}">${label}</button>` in a template literal), where `<`, a
|
|
8
|
-
* quote or a `javascript:` address becomes markup or code. So for a framework that says its texts may become markup
|
|
9
|
-
* (`FrameworkAdapter.addressTexts`), a value the address carries reaches the story only when its name and its texts
|
|
10
|
-
* are plain: letters and digits of any script, spaces and a few marks that close no tag, attribute or address. The
|
|
11
|
-
* panel's own edits are the person's and are not checked; a link, or a reload of an edit with markup, falls back to
|
|
12
|
-
* the story's own value, as Storybook's address does. Pure.
|
|
13
|
-
*
|
|
14
|
-
* @module
|
|
15
|
-
*/
|
|
16
|
-
import { isNamedArg } from "./messages.js";
|
|
1
|
+
import { isArgList, isArgObject, isNamedArg } from "./messages.js";
|
|
17
2
|
/** A plain text: letters, marks and digits of any script, spaces, and `_ . , ! ? # % + -`. */
|
|
18
3
|
const PLAIN_TEXT = /^[\p{L}\p{M}\p{N} _.,!?#%+-]*$/u;
|
|
19
4
|
/** A plain name: what a script and an attribute both write bare (`label`, `item-count`, `$size`). */
|
|
@@ -26,17 +11,20 @@ const PLAIN_NAME = /^[A-Za-z_$][\w$-]*$/;
|
|
|
26
11
|
*/
|
|
27
12
|
export const isPlainText = (text) => PLAIN_TEXT.test(text);
|
|
28
13
|
/**
|
|
29
|
-
* Whether an address's value can reach a story whose texts may become markup: every text in it plain. A named
|
|
30
|
-
* looked up among the source's own values, so its name is never written into the page.
|
|
14
|
+
* Whether an address's value can reach a story whose texts may become markup: every text and name in it plain. A named
|
|
15
|
+
* value is looked up among the source's own values, so its name is never written into the page.
|
|
31
16
|
*
|
|
32
17
|
* @param value - the value.
|
|
33
18
|
*/
|
|
34
19
|
const isPlainValue = (value) => {
|
|
35
20
|
if (typeof value === "string")
|
|
36
21
|
return isPlainText(value);
|
|
37
|
-
if (
|
|
38
|
-
return value.every(
|
|
39
|
-
|
|
22
|
+
if (isArgList(value))
|
|
23
|
+
return value.every(isPlainValue);
|
|
24
|
+
if (isNamedArg(value) || !isArgObject(value))
|
|
25
|
+
return true;
|
|
26
|
+
// a name is written too, by a story that spreads the object into attributes
|
|
27
|
+
return Object.entries(value).every(([name, each]) => PLAIN_NAME.test(name) && isPlainValue(each));
|
|
40
28
|
};
|
|
41
29
|
/**
|
|
42
30
|
* The address's values a story receives under a framework's rule: all of them, or only those whose texts are plain.
|
|
@@ -49,3 +37,22 @@ export const addressArgsFor = (args, addressTexts) => addressTexts === "any"
|
|
|
49
37
|
: Object.fromEntries(
|
|
50
38
|
// a name is checked too: a story that spreads its args into attributes writes it into the markup
|
|
51
39
|
Object.entries(args).filter(([name, value]) => PLAIN_NAME.test(name) && isPlainValue(value)));
|
|
40
|
+
/**
|
|
41
|
+
* What an address's `args` gives a story under a framework's rule, and what it says of the values the rule took out, so
|
|
42
|
+
* the note above the story names them as it names what the story's check refuses.
|
|
43
|
+
*
|
|
44
|
+
* @param read - the parameter, once read.
|
|
45
|
+
* @param param - the parameter as the address writes it.
|
|
46
|
+
* @param addressTexts - the framework's rule.
|
|
47
|
+
* @returns the values, and the link they came from.
|
|
48
|
+
*/
|
|
49
|
+
export const addressArgsRead = (read, param, addressTexts) => {
|
|
50
|
+
const panelArgs = addressArgsFor(read.args, addressTexts);
|
|
51
|
+
const refused = Object.keys(read.args).filter((name) => !Object.hasOwn(panelArgs, name));
|
|
52
|
+
if (refused.length === 0)
|
|
53
|
+
return { panelArgs, link: read.link };
|
|
54
|
+
return {
|
|
55
|
+
panelArgs,
|
|
56
|
+
link: { param: param ?? "", isWaiting: false, unread: [], ...read.link, refused }
|
|
57
|
+
};
|
|
58
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The name of the index `forgebook build --agent-index` writes beside a built catalogue's pages.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* Apart from the index's shape (`vite/agentIndex.ts`), so the shell, which reads a composed catalogue's index, takes
|
|
6
|
+
* the name without the code that answers from it.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
/** The file's name in the built catalogue. */
|
|
11
|
+
export declare const AGENT_INDEX_FILE = "forgebook-agent.json";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The name of the index `forgebook build --agent-index` writes beside a built catalogue's pages.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* Apart from the index's shape (`vite/agentIndex.ts`), so the shell, which reads a composed catalogue's index, takes
|
|
6
|
+
* the name without the code that answers from it.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
/** The file's name in the built catalogue. */
|
|
11
|
+
export const AGENT_INDEX_FILE = "forgebook-agent.json";
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An arg's condition, `argTypes.<name>.if` (Storybook's): whether the panel shows the arg, from another arg's or a
|
|
3
|
+
* global's value of the moment. Read in the frame, tested in the shell. Pure.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* `{ arg: "kind", eq: "link" }` shows the arg while `kind` is `link`, and `{ global: "theme", neq: "dark" }` reads the
|
|
7
|
+
* view's switch instead. `truthy`, `exists`, `eq` and `neq` test the value, one at a time; none tests that it is truthy. A
|
|
8
|
+
* condition hides an arg's control and nothing else: a value the address or the story sets still reaches the story, as in
|
|
9
|
+
* Storybook. Only what crosses between the documents is kept: a condition comparing with an object or a function, or
|
|
10
|
+
* that names neither an arg nor a global, is not one, and shows the arg.
|
|
11
|
+
*
|
|
12
|
+
* @module
|
|
13
|
+
*/
|
|
14
|
+
/** What a condition can compare a value with. */
|
|
15
|
+
export type ConditionValue = string | number | boolean | null | readonly (string | number)[];
|
|
16
|
+
/** An arg's condition: what it reads, and how it tests it. */
|
|
17
|
+
export type ArgCondition = {
|
|
18
|
+
/** The arg it reads; none when it reads a global. */
|
|
19
|
+
readonly arg?: string;
|
|
20
|
+
/** The global it reads: a switch's id; none when it reads an arg. */
|
|
21
|
+
readonly global?: string;
|
|
22
|
+
/** Whether the value should be truthy (`true`, the default test) or falsy. */
|
|
23
|
+
readonly truthy?: boolean;
|
|
24
|
+
/** Whether the value should be set, or not set. */
|
|
25
|
+
readonly exists?: boolean;
|
|
26
|
+
/** What the value should be. */
|
|
27
|
+
readonly eq?: ConditionValue;
|
|
28
|
+
/** What the value should not be. */
|
|
29
|
+
readonly neq?: ConditionValue;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* An `if` as it crosses between the documents: only the fields it reads, since anything else may be a function, which
|
|
33
|
+
* cannot be sent and would stop the frame from reporting at all.
|
|
34
|
+
*
|
|
35
|
+
* @param value - the entry's `if`.
|
|
36
|
+
* @returns the condition; none when it is not one.
|
|
37
|
+
*/
|
|
38
|
+
export declare const argConditionOf: (value: unknown) => ArgCondition | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* Whether a value received from a frame is an arg's condition.
|
|
41
|
+
*
|
|
42
|
+
* @param value - any value.
|
|
43
|
+
*/
|
|
44
|
+
export declare const isArgCondition: (value: unknown) => value is ArgCondition;
|
|
45
|
+
/**
|
|
46
|
+
* Whether the panel shows an arg with a condition.
|
|
47
|
+
*
|
|
48
|
+
* @param condition - its condition; none shows it.
|
|
49
|
+
* @param args - the values of the moment, by arg.
|
|
50
|
+
* @param globals - the values of the switches, by id.
|
|
51
|
+
*/
|
|
52
|
+
export declare const isArgShown: (condition: ArgCondition | undefined, args: Readonly<Record<string, unknown>>, globals: Readonly<Record<string, unknown>>) => boolean;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An arg's condition, `argTypes.<name>.if` (Storybook's): whether the panel shows the arg, from another arg's or a
|
|
3
|
+
* global's value of the moment. Read in the frame, tested in the shell. Pure.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* `{ arg: "kind", eq: "link" }` shows the arg while `kind` is `link`, and `{ global: "theme", neq: "dark" }` reads the
|
|
7
|
+
* view's switch instead. `truthy`, `exists`, `eq` and `neq` test the value, one at a time; none tests that it is truthy. A
|
|
8
|
+
* condition hides an arg's control and nothing else: a value the address or the story sets still reaches the story, as in
|
|
9
|
+
* Storybook. Only what crosses between the documents is kept: a condition comparing with an object or a function, or
|
|
10
|
+
* that names neither an arg nor a global, is not one, and shows the arg.
|
|
11
|
+
*
|
|
12
|
+
* @module
|
|
13
|
+
*/
|
|
14
|
+
/** Whether a value can be compared with: it crosses between the documents, and compares as its JSON. */
|
|
15
|
+
const isConditionValue = (value) => value === null ||
|
|
16
|
+
["string", "number", "boolean"].includes(typeof value) ||
|
|
17
|
+
(Array.isArray(value) && value.every((item) => typeof item === "string" || typeof item === "number"));
|
|
18
|
+
/**
|
|
19
|
+
* An `if` as it crosses between the documents: only the fields it reads, since anything else may be a function, which
|
|
20
|
+
* cannot be sent and would stop the frame from reporting at all.
|
|
21
|
+
*
|
|
22
|
+
* @param value - the entry's `if`.
|
|
23
|
+
* @returns the condition; none when it is not one.
|
|
24
|
+
*/
|
|
25
|
+
export const argConditionOf = (value) => {
|
|
26
|
+
if (typeof value !== "object" || value === null)
|
|
27
|
+
return undefined;
|
|
28
|
+
const arg = Reflect.get(value, "arg");
|
|
29
|
+
const global = Reflect.get(value, "global");
|
|
30
|
+
const truthy = Reflect.get(value, "truthy");
|
|
31
|
+
const exists = Reflect.get(value, "exists");
|
|
32
|
+
const eq = Reflect.get(value, "eq");
|
|
33
|
+
const neq = Reflect.get(value, "neq");
|
|
34
|
+
if ((typeof arg === "string") === (typeof global === "string"))
|
|
35
|
+
return undefined;
|
|
36
|
+
if (eq !== undefined && !isConditionValue(eq))
|
|
37
|
+
return undefined;
|
|
38
|
+
if (neq !== undefined && !isConditionValue(neq))
|
|
39
|
+
return undefined;
|
|
40
|
+
return {
|
|
41
|
+
...(typeof arg === "string" ? { arg } : {}),
|
|
42
|
+
...(typeof global === "string" ? { global } : {}),
|
|
43
|
+
...(typeof truthy === "boolean" ? { truthy } : {}),
|
|
44
|
+
...(typeof exists === "boolean" ? { exists } : {}),
|
|
45
|
+
...(eq === undefined ? {} : { eq }),
|
|
46
|
+
...(neq === undefined ? {} : { neq })
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Whether a value received from a frame is an arg's condition.
|
|
51
|
+
*
|
|
52
|
+
* @param value - any value.
|
|
53
|
+
*/
|
|
54
|
+
export const isArgCondition = (value) => argConditionOf(value) !== undefined;
|
|
55
|
+
/**
|
|
56
|
+
* Whether two values are the same, a list by its items.
|
|
57
|
+
*
|
|
58
|
+
* @param first - one value.
|
|
59
|
+
* @param second - the other.
|
|
60
|
+
*/
|
|
61
|
+
const isSameValue = (first, second) => JSON.stringify(first) === JSON.stringify(second);
|
|
62
|
+
/**
|
|
63
|
+
* Whether the panel shows an arg with a condition.
|
|
64
|
+
*
|
|
65
|
+
* @param condition - its condition; none shows it.
|
|
66
|
+
* @param args - the values of the moment, by arg.
|
|
67
|
+
* @param globals - the values of the switches, by id.
|
|
68
|
+
*/
|
|
69
|
+
export const isArgShown = (condition, args, globals) => {
|
|
70
|
+
if (condition === undefined)
|
|
71
|
+
return true;
|
|
72
|
+
const value = condition.arg === undefined ? globals[condition.global ?? ""] : args[condition.arg];
|
|
73
|
+
if (condition.eq !== undefined)
|
|
74
|
+
return isSameValue(value, condition.eq);
|
|
75
|
+
if (condition.neq !== undefined)
|
|
76
|
+
return !isSameValue(value, condition.neq);
|
|
77
|
+
if (condition.exists !== undefined)
|
|
78
|
+
return condition.exists === (value !== undefined);
|
|
79
|
+
return (condition.truthy ?? true) === Boolean(value);
|
|
80
|
+
};
|