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
package/dist/src/argsProps.js
CHANGED
|
@@ -4,14 +4,15 @@
|
|
|
4
4
|
*
|
|
5
5
|
* @remarks
|
|
6
6
|
* An arg's kind is read from its value: a text, a number, a toggle, an event for an arg the frame records as an
|
|
7
|
-
* action
|
|
8
|
-
* names values for. Nothing is said of a prop the story gives no arg: without the types there is no way to know it.
|
|
7
|
+
* action, fields for an object or a list. A value the source names (`namedValues`) is listed for
|
|
8
|
+
* reading, unless its type is one the source names values for. Nothing is said of a prop the story gives no arg: without the types there is no way to know it.
|
|
9
9
|
* The story's `argTypes` are laid over these as over the types' props (`argTypes.ts`). A shared link's values are
|
|
10
10
|
* checked against these kinds (`addressArgs.ts`): without the types, a text arg takes any text, so a prop of a few
|
|
11
11
|
* values keeps a link to them only through its `argTypes` options. Pure.
|
|
12
12
|
*
|
|
13
13
|
* @module
|
|
14
14
|
*/
|
|
15
|
+
import { isArgList, isNamedArg } from "./messages.js";
|
|
15
16
|
/**
|
|
16
17
|
* The prop an arg stands for, its kind and type read from its value.
|
|
17
18
|
*
|
|
@@ -31,10 +32,15 @@ const propOfArg = (name, value, isAction) => {
|
|
|
31
32
|
return { ...prop, kind: "toggle", type: "boolean" };
|
|
32
33
|
if (value === null)
|
|
33
34
|
return { ...prop, kind: "other", type: "null" };
|
|
34
|
-
if (Array.isArray(value))
|
|
35
|
-
return { ...prop, kind: "other", type: "array" };
|
|
36
35
|
// a value the source names: its type, so the panel offers the source's values for it
|
|
37
|
-
|
|
36
|
+
if (isNamedArg(value))
|
|
37
|
+
return { ...prop, kind: "other", type: value.of };
|
|
38
|
+
return {
|
|
39
|
+
...prop,
|
|
40
|
+
kind: "other",
|
|
41
|
+
type: isArgList(value) ? "array" : "object",
|
|
42
|
+
shape: { kind: "like", value }
|
|
43
|
+
};
|
|
38
44
|
};
|
|
39
45
|
/**
|
|
40
46
|
* The props a story's args stand for, in the args' order, then its actions the args do not hold.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a bundler's error says, as Forgebook reports it: its file, line and column when they are known, and its reason,
|
|
3
|
+
* without the plugin that raised it, the stack and the code frame a terminal or an overlay has room for.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Shared by `forgebook build`, on what the build throws, and by a frame, on what the dev server says of a module it
|
|
7
|
+
* could not serve. Both hold the same text: Vite's transform and the build run the same parser.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
/** Where in a file a bundler places an error, when it does; its column counts from 0. */
|
|
12
|
+
export type BundlerErrorPlace = {
|
|
13
|
+
/** The file, absolute. */
|
|
14
|
+
readonly id?: string | undefined;
|
|
15
|
+
/** Its line and column. */
|
|
16
|
+
readonly loc?: {
|
|
17
|
+
readonly file?: string | undefined;
|
|
18
|
+
readonly line: number;
|
|
19
|
+
readonly column: number;
|
|
20
|
+
} | undefined;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* A bundler's error as lines: its place and reason first.
|
|
24
|
+
*
|
|
25
|
+
* @param message - its message, without colours.
|
|
26
|
+
* @param place - what the error says of its place.
|
|
27
|
+
* @returns the lines; none when the message says nothing.
|
|
28
|
+
*/
|
|
29
|
+
export declare const bundlerErrorLines: (message: string, place?: BundlerErrorPlace) => readonly string[];
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a bundler's error says, as Forgebook reports it: its file, line and column when they are known, and its reason,
|
|
3
|
+
* without the plugin that raised it, the stack and the code frame a terminal or an overlay has room for.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Shared by `forgebook build`, on what the build throws, and by a frame, on what the dev server says of a module it
|
|
7
|
+
* could not serve. Both hold the same text: Vite's transform and the build run the same parser.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
/** The place at the head of a code frame (`╭─[ src/Broken.tsx:1:48 ]`), which a parse error alone names its file in. */
|
|
12
|
+
const FRAME_PLACE = /╭─\[\s*(.+?)\s*\]/;
|
|
13
|
+
/** A line that says nothing of the reason: a count of errors, a stack's, a code frame's. */
|
|
14
|
+
const NOISE = /^(?:(?:Transform|Build) failed with \d+ errors?:?$|at .*:\d+:\d+\)?$|[╭│╰─┬]|\d+\s*[│|])/;
|
|
15
|
+
/** The plugin or tool that raised an error, before its reason (`[PARSE_ERROR]`, `[plugin forgebook]`). */
|
|
16
|
+
const RAISED_BY = /^\[[^\]]+\]\s*/;
|
|
17
|
+
/**
|
|
18
|
+
* An error's place, as an editor counts: `file:line:column`, or the file alone.
|
|
19
|
+
*
|
|
20
|
+
* @param place - what the error says of it.
|
|
21
|
+
* @param message - its message, without colours.
|
|
22
|
+
*/
|
|
23
|
+
const placeOf = ({ id, loc }, message) => {
|
|
24
|
+
const framed = FRAME_PLACE.exec(message)?.[1];
|
|
25
|
+
if (framed !== undefined)
|
|
26
|
+
return framed;
|
|
27
|
+
const file = loc?.file ?? id;
|
|
28
|
+
if (file === undefined || loc === undefined)
|
|
29
|
+
return file;
|
|
30
|
+
return `${file}:${loc.line}:${loc.column + 1}`;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* A bundler's error as lines: its place and reason first.
|
|
34
|
+
*
|
|
35
|
+
* @param message - its message, without colours.
|
|
36
|
+
* @param place - what the error says of its place.
|
|
37
|
+
* @returns the lines; none when the message says nothing.
|
|
38
|
+
*/
|
|
39
|
+
export const bundlerErrorLines = (message, place = {}) => {
|
|
40
|
+
const lines = message
|
|
41
|
+
.split("\n")
|
|
42
|
+
.map((line) => line.replace(RAISED_BY, "").trim())
|
|
43
|
+
.filter((line) => line !== "" && !NOISE.test(line));
|
|
44
|
+
const where = placeOf(place, message);
|
|
45
|
+
const [first, ...rest] = lines;
|
|
46
|
+
if (first === undefined || where === undefined || first.startsWith(where))
|
|
47
|
+
return lines;
|
|
48
|
+
return [`${where}: ${first}`, ...rest];
|
|
49
|
+
};
|
package/dist/src/catalogue.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ import { type Backdrop, type CustomBackdrop } from "./backdrops.ts";
|
|
|
17
17
|
import { type ControlKeys } from "./controlKeys.ts";
|
|
18
18
|
import { type DeviceDefault } from "./deviceView.ts";
|
|
19
19
|
import type { CatalogueView } from "./namedViews.ts";
|
|
20
|
+
import type { StatusSettings } from "./storyStatuses.ts";
|
|
20
21
|
import { type TouchChoice, type ViewSwitch } from "./switches.ts";
|
|
21
22
|
/** A preset width of the toolbar. */
|
|
22
23
|
export type StageWidthPreset = {
|
|
@@ -58,8 +59,22 @@ export type A11ySettings = {
|
|
|
58
59
|
/** Rules turned off by id (`color-contrast`). */
|
|
59
60
|
readonly disabledRules: readonly string[];
|
|
60
61
|
};
|
|
62
|
+
/** Whether a story's play function runs when its frame opens. */
|
|
63
|
+
export type PlaySwitch = "on" | "off";
|
|
64
|
+
/**
|
|
65
|
+
* Why a configuration's `play` cannot be used, or none: it is written by JavaScript too, which no type stops.
|
|
66
|
+
*
|
|
67
|
+
* @param play - the value written.
|
|
68
|
+
*/
|
|
69
|
+
export declare const playProblem: (play: unknown) => string | undefined;
|
|
61
70
|
/** The lists a configuration may set, every one optional. */
|
|
62
71
|
export type CatalogueLists = {
|
|
72
|
+
/**
|
|
73
|
+
* Whether a story's play function runs when a reader opens it. `on` on a dev server and `off` in a build by default: an
|
|
74
|
+
* author is checking the play, a reader of published docs did not ask for it. A reader's own choice comes first, and
|
|
75
|
+
* tests and `check` run every play whatever this says.
|
|
76
|
+
*/
|
|
77
|
+
readonly play?: PlaySwitch;
|
|
63
78
|
/** The catalogue's id, the prefix of what the browser stores for it; from its title by default. */
|
|
64
79
|
readonly id?: string;
|
|
65
80
|
/** The toolbar's preset widths. */
|
|
@@ -160,6 +175,13 @@ export type CatalogueLists = {
|
|
|
160
175
|
* switch turns the ordering on or off over both.
|
|
161
176
|
*/
|
|
162
177
|
readonly requiredFirst?: RequiredFirst;
|
|
178
|
+
/**
|
|
179
|
+
* The tags that are statuses, shown as a badge on the component's or the story's page and in the sidebar, by tag:
|
|
180
|
+
* `{ review: { label: "In review", tone: "caution" } }`. `review`, `experimental` and `deprecated` are declared by
|
|
181
|
+
* default; a catalogue's entry restyles or renames one, `false` turns one off. A meta's tags give the component's
|
|
182
|
+
* status, a story's the story's; the tag filter filters by them.
|
|
183
|
+
*/
|
|
184
|
+
readonly statuses?: StatusSettings;
|
|
163
185
|
};
|
|
164
186
|
/** The shell's own appearance: light, dark, the system's, or the colour scheme of the story shown. */
|
|
165
187
|
export type Appearance = "light" | "dark" | "system" | "story";
|
|
@@ -201,6 +223,10 @@ export type CatalogueSettings = {
|
|
|
201
223
|
readonly gridStep: number;
|
|
202
224
|
/** The shell's texts replaced, by name. */
|
|
203
225
|
readonly strings: Readonly<Record<string, string>>;
|
|
226
|
+
/** Whether a story's play function runs when a reader opens it, as the catalogue says: an address names what differs. */
|
|
227
|
+
readonly play: PlaySwitch;
|
|
228
|
+
/** What a page shows unless its address names one: the reader's choice, else the catalogue's. */
|
|
229
|
+
readonly readerPlay: PlaySwitch;
|
|
204
230
|
/** Forgebook's own controls shown, in their order. */
|
|
205
231
|
readonly ownControls: readonly OwnControlId[];
|
|
206
232
|
/** The controls that start on the toolbar, in their order, by id. */
|
|
@@ -226,6 +252,11 @@ export type CatalogueSettings = {
|
|
|
226
252
|
readonly propGroups: readonly string[];
|
|
227
253
|
/** Where the required props are listed when a component or a story does not say; `"in-groups"` by default. */
|
|
228
254
|
readonly requiredFirst: RequiredFirst;
|
|
255
|
+
/**
|
|
256
|
+
* The statuses as the configuration declares them; the defaults are filled in where the badges are drawn
|
|
257
|
+
* (`storyStatuses.ts`), which load only for a catalogue whose stories have tags. None when it declares none.
|
|
258
|
+
*/
|
|
259
|
+
readonly statuses: StatusSettings | undefined;
|
|
229
260
|
};
|
|
230
261
|
/** WCAG 2.2 at levels A and AA: the rules every story passes by default. */
|
|
231
262
|
export declare const DEFAULT_A11Y_TAGS: readonly string[];
|
package/dist/src/catalogue.js
CHANGED
|
@@ -27,6 +27,14 @@ export const PANEL_TAB_IDS = ["props", "events", "play", "parts", "code", "a11y"
|
|
|
27
27
|
* keeps its id.
|
|
28
28
|
*/
|
|
29
29
|
export const OWN_CONTROL_IDS = [DEVICE_PARAMETER, "backdrop", "sheets", "text", "width", "audience"];
|
|
30
|
+
/**
|
|
31
|
+
* Why a configuration's `play` cannot be used, or none: it is written by JavaScript too, which no type stops.
|
|
32
|
+
*
|
|
33
|
+
* @param play - the value written.
|
|
34
|
+
*/
|
|
35
|
+
export const playProblem = (play) => play === undefined || play === "on" || play === "off"
|
|
36
|
+
? undefined
|
|
37
|
+
: `play is ${JSON.stringify(play)}: write "on" or "off"`;
|
|
30
38
|
/** The appearances, in the order the reader is offered them. */
|
|
31
39
|
export const APPEARANCES = ["light", "dark", "system", "story"];
|
|
32
40
|
/** WCAG 2.2 at levels A and AA: the rules every story passes by default. */
|
|
@@ -79,7 +87,7 @@ const toolbarProblem = (toolbar, switches) => {
|
|
|
79
87
|
const known = new Set([...switches.map((each) => each.id), ...OWN_CONTROL_IDS]);
|
|
80
88
|
const unknown = toolbar.find((id) => !known.has(id));
|
|
81
89
|
if (unknown !== undefined)
|
|
82
|
-
return `The toolbar names "${unknown}", which is no control of the catalogue`;
|
|
90
|
+
return `The toolbar names "${unknown}", which is no control of the catalogue: it has ${[...known].join(", ")}`;
|
|
83
91
|
const twice = toolbar.find((id, index) => toolbar.indexOf(id) !== index);
|
|
84
92
|
if (twice !== undefined)
|
|
85
93
|
return `The toolbar names "${twice}" twice`;
|
|
@@ -186,6 +194,8 @@ export const catalogueSettings = (title, switches, lists = {}, pluginTabs = [])
|
|
|
186
194
|
const toolbar = named.filter((id) => !OWN_CONTROL_IDS.some((own) => own === id && !ownControls.includes(own)));
|
|
187
195
|
return {
|
|
188
196
|
id: lists.id ?? idOf(title),
|
|
197
|
+
play: lists.play ?? "on",
|
|
198
|
+
readerPlay: lists.play ?? "on",
|
|
189
199
|
switches,
|
|
190
200
|
touch: touchChoiceOf(switches),
|
|
191
201
|
widths: lists.widths ?? DEFAULT_WIDTHS,
|
|
@@ -209,7 +219,8 @@ export const catalogueSettings = (title, switches, lists = {}, pluginTabs = [])
|
|
|
209
219
|
views: catalogueViews(switches, lists.views),
|
|
210
220
|
// checked when the configuration loads (`configFile.ts`): a model that is none is left out here
|
|
211
221
|
device: deviceDefaultOf(NO_DEVICE, lists.device),
|
|
212
|
-
requiredFirst: lists.requiredFirst ?? "in-groups"
|
|
222
|
+
requiredFirst: lists.requiredFirst ?? "in-groups",
|
|
223
|
+
statuses: lists.statuses
|
|
213
224
|
};
|
|
214
225
|
};
|
|
215
226
|
/**
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/** A composed catalogue, as the configuration gives it and the shell reads it. */
|
|
2
|
+
export type CatalogueRef = {
|
|
3
|
+
/** Its id, the configuration's key: in the address (`?ref=<id>&story=<id>`). */
|
|
4
|
+
readonly id: string;
|
|
5
|
+
/** Its name, as its section's heading. */
|
|
6
|
+
readonly title: string;
|
|
7
|
+
/** Its address, always ending in `/`, so its files resolve under it (`https://ds.example.com/catalogue/`). */
|
|
8
|
+
readonly url: string;
|
|
9
|
+
};
|
|
10
|
+
/** A story of a composed catalogue, as its index lists it. */
|
|
11
|
+
export type RefStory = {
|
|
12
|
+
/** Its id in that catalogue. */
|
|
13
|
+
readonly id: string;
|
|
14
|
+
/** The name it shows. */
|
|
15
|
+
readonly name: string;
|
|
16
|
+
};
|
|
17
|
+
/** A component of a composed catalogue, with its listed stories. */
|
|
18
|
+
export type RefComponent = {
|
|
19
|
+
/** Its id in that catalogue. */
|
|
20
|
+
readonly id: string;
|
|
21
|
+
/** Its whole title (`Inputs/Select`). */
|
|
22
|
+
readonly title: string;
|
|
23
|
+
/** Its stories listed in the sidebar (unlisted ones left out), in that catalogue's order. */
|
|
24
|
+
readonly stories: readonly RefStory[];
|
|
25
|
+
};
|
|
26
|
+
/** What the sidebar shows of a composed catalogue. */
|
|
27
|
+
export type RefIndex = {
|
|
28
|
+
/** Its components, in its order; only those with a listed story. */
|
|
29
|
+
readonly components: readonly RefComponent[];
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* What the sidebar shows of a composed catalogue's index, read from the parsed file.
|
|
33
|
+
*
|
|
34
|
+
* @param value - the parsed `forgebook-agent.json`.
|
|
35
|
+
* @returns the index; none when the value is no index of a version this one reads.
|
|
36
|
+
*/
|
|
37
|
+
export declare const refIndexOf: (value: unknown) => RefIndex | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* The address of a composed catalogue's index.
|
|
40
|
+
*
|
|
41
|
+
* @param ref - the composed catalogue.
|
|
42
|
+
*/
|
|
43
|
+
export declare const refIndexAddress: (ref: CatalogueRef) => string;
|
|
44
|
+
/**
|
|
45
|
+
* The address of a story in a composed catalogue's own page, to open it there.
|
|
46
|
+
*
|
|
47
|
+
* @param ref - the composed catalogue.
|
|
48
|
+
* @param storyId - the story's id in it.
|
|
49
|
+
*/
|
|
50
|
+
export declare const refStoryAddress: (ref: CatalogueRef, storyId: string) => string;
|
|
51
|
+
/**
|
|
52
|
+
* The address of a story alone in a composed catalogue's embed page, with this catalogue's switches.
|
|
53
|
+
*
|
|
54
|
+
* @remarks
|
|
55
|
+
* Every switch is written, defaults included: the composed catalogue's default may be another value, and the story
|
|
56
|
+
* shows what this catalogue's toolbar says. It keeps those it declares, with values it knows, and drops the others.
|
|
57
|
+
*
|
|
58
|
+
* @param ref - the composed catalogue.
|
|
59
|
+
* @param storyId - the story's id in it.
|
|
60
|
+
* @param switches - this catalogue's switches, by id, with the values the view gives them.
|
|
61
|
+
*/
|
|
62
|
+
export declare const refEmbedAddress: (ref: CatalogueRef, storyId: string, switches: Readonly<Record<string, string>>) => string;
|
|
63
|
+
/**
|
|
64
|
+
* What is wrong with one composed catalogue of the configuration; nothing when it can be shown.
|
|
65
|
+
*
|
|
66
|
+
* @param id - its key.
|
|
67
|
+
* @param value - what the configuration gives it.
|
|
68
|
+
*/
|
|
69
|
+
export declare const refProblem: (id: string, value: unknown) => string | undefined;
|
|
70
|
+
/**
|
|
71
|
+
* A composed catalogue's address as the shell uses it: its folder, ending in `/`.
|
|
72
|
+
*
|
|
73
|
+
* @param url - the address the configuration gives, checked by `refProblem`.
|
|
74
|
+
*/
|
|
75
|
+
export declare const refFolder: (url: string) => string;
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Another catalogue, already built and deployed, shown in this one's sidebar (`refs` in the configuration): where its
|
|
3
|
+
* index and its stories are, and how its index reads.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* A composed catalogue stays on its own origin. Its stories are shown through its own embed page (`?embed`), which
|
|
7
|
+
* frames them on its own frames' origin and tells the page around it nothing but a height, so this catalogue never runs
|
|
8
|
+
* its code and gives it nothing it could act on: the view's switches cross in the embed's address, read there as any
|
|
9
|
+
* address is, and the panel's values never do. Its list comes from the index `forgebook build --agent-index` writes,
|
|
10
|
+
* fetched only when its section is first opened. Pure, so the shell's lazy parts and the plugin share it.
|
|
11
|
+
*
|
|
12
|
+
* @module
|
|
13
|
+
*/
|
|
14
|
+
import { AGENT_INDEX_FILE } from "./agentIndexFile.js";
|
|
15
|
+
import { EMBED_PARAMETER } from "./embed.js";
|
|
16
|
+
/** A composed catalogue's id: lower-case words and digits, joined by dashes. */
|
|
17
|
+
const REF_ID = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
18
|
+
/** Whether a value is a plain object. */
|
|
19
|
+
const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
20
|
+
/** A field of an object that is a list, or an empty one. */
|
|
21
|
+
const listAt = (value, name) => {
|
|
22
|
+
const list = value[name];
|
|
23
|
+
return Array.isArray(list) ? list : [];
|
|
24
|
+
};
|
|
25
|
+
/** A story of the index, when it is one the sidebar lists. */
|
|
26
|
+
const listedStory = (value) => {
|
|
27
|
+
if (!isRecord(value) || value["isUnlisted"] === true)
|
|
28
|
+
return [];
|
|
29
|
+
const { id, name } = value;
|
|
30
|
+
return typeof id === "string" && typeof name === "string" ? [{ id, name }] : [];
|
|
31
|
+
};
|
|
32
|
+
/** A component of the index, with its listed stories; nothing when it has none. */
|
|
33
|
+
const listedComponent = (value) => {
|
|
34
|
+
if (!isRecord(value))
|
|
35
|
+
return [];
|
|
36
|
+
const { id, title } = value;
|
|
37
|
+
const stories = listAt(value, "stories").flatMap(listedStory);
|
|
38
|
+
return typeof id === "string" && typeof title === "string" && stories.length > 0
|
|
39
|
+
? [{ id, title, stories }]
|
|
40
|
+
: [];
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* What the sidebar shows of a composed catalogue's index, read from the parsed file.
|
|
44
|
+
*
|
|
45
|
+
* @param value - the parsed `forgebook-agent.json`.
|
|
46
|
+
* @returns the index; none when the value is no index of a version this one reads.
|
|
47
|
+
*/
|
|
48
|
+
export const refIndexOf = (value) => {
|
|
49
|
+
if (!isRecord(value) || value["schema"] !== 1 || !isRecord(value["stories"]))
|
|
50
|
+
return undefined;
|
|
51
|
+
return { components: listAt(value["stories"], "components").flatMap(listedComponent) };
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* The address of a composed catalogue's index.
|
|
55
|
+
*
|
|
56
|
+
* @param ref - the composed catalogue.
|
|
57
|
+
*/
|
|
58
|
+
export const refIndexAddress = (ref) => new URL(AGENT_INDEX_FILE, ref.url).href;
|
|
59
|
+
/**
|
|
60
|
+
* The address of a story in a composed catalogue's own page, to open it there.
|
|
61
|
+
*
|
|
62
|
+
* @param ref - the composed catalogue.
|
|
63
|
+
* @param storyId - the story's id in it.
|
|
64
|
+
*/
|
|
65
|
+
export const refStoryAddress = (ref, storyId) => {
|
|
66
|
+
const address = new URL(ref.url);
|
|
67
|
+
address.searchParams.set("story", storyId);
|
|
68
|
+
return address.href;
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* The address of a story alone in a composed catalogue's embed page, with this catalogue's switches.
|
|
72
|
+
*
|
|
73
|
+
* @remarks
|
|
74
|
+
* Every switch is written, defaults included: the composed catalogue's default may be another value, and the story
|
|
75
|
+
* shows what this catalogue's toolbar says. It keeps those it declares, with values it knows, and drops the others.
|
|
76
|
+
*
|
|
77
|
+
* @param ref - the composed catalogue.
|
|
78
|
+
* @param storyId - the story's id in it.
|
|
79
|
+
* @param switches - this catalogue's switches, by id, with the values the view gives them.
|
|
80
|
+
*/
|
|
81
|
+
export const refEmbedAddress = (ref, storyId, switches) => {
|
|
82
|
+
const address = new URL(ref.url);
|
|
83
|
+
address.searchParams.set(EMBED_PARAMETER, "");
|
|
84
|
+
address.searchParams.set("story", storyId);
|
|
85
|
+
for (const [id, value] of Object.entries(switches)) {
|
|
86
|
+
// the story's own parameters stay the story's: a switch cannot take their place
|
|
87
|
+
if (id !== EMBED_PARAMETER && id !== "story")
|
|
88
|
+
address.searchParams.set(id, value);
|
|
89
|
+
}
|
|
90
|
+
return address.href;
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* What is wrong with one composed catalogue of the configuration; nothing when it can be shown.
|
|
94
|
+
*
|
|
95
|
+
* @param id - its key.
|
|
96
|
+
* @param value - what the configuration gives it.
|
|
97
|
+
*/
|
|
98
|
+
export const refProblem = (id, value) => {
|
|
99
|
+
if (!REF_ID.test(id))
|
|
100
|
+
return `refs: "${id}" is not an id: write lower-case words and digits joined by dashes (design-system)`;
|
|
101
|
+
if (!isRecord(value))
|
|
102
|
+
return `refs.${id} must be an object with a title and a url`;
|
|
103
|
+
const { title, url } = value;
|
|
104
|
+
if (typeof title !== "string" || title.trim() === "")
|
|
105
|
+
return `refs.${id}.title is missing`;
|
|
106
|
+
if (typeof url !== "string" || !URL.canParse(url))
|
|
107
|
+
return `refs.${id}.url must be an absolute address (https://design.example.com/)`;
|
|
108
|
+
const address = new URL(url);
|
|
109
|
+
if (address.protocol !== "https:" && address.protocol !== "http:")
|
|
110
|
+
return `refs.${id}.url must be an http or https address`;
|
|
111
|
+
if (address.username !== "" || address.password !== "")
|
|
112
|
+
return `refs.${id}.url must not hold credentials: the address is written into the page`;
|
|
113
|
+
if (address.search !== "" || address.hash !== "")
|
|
114
|
+
return `refs.${id}.url must be the catalogue's folder, with no query or fragment`;
|
|
115
|
+
return undefined;
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* A composed catalogue's address as the shell uses it: its folder, ending in `/`.
|
|
119
|
+
*
|
|
120
|
+
* @param url - the address the configuration gives, checked by `refProblem`.
|
|
121
|
+
*/
|
|
122
|
+
export const refFolder = (url) => (url.endsWith("/") ? url : `${url}/`);
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
*
|
|
11
11
|
* @module
|
|
12
12
|
*/
|
|
13
|
+
import type { ValueShape } from "./valueShape.ts";
|
|
13
14
|
/** How a prop is set from the panel, and the group it is listed in. */
|
|
14
15
|
export type PropKind = "choice" | "text" | "number" | "toggle" | "event" | "other";
|
|
15
16
|
/** One parameter of an event's signature. */
|
|
@@ -66,6 +67,56 @@ export type MemberDocs = {
|
|
|
66
67
|
/** Whether the member must be given. */
|
|
67
68
|
readonly isRequired: boolean;
|
|
68
69
|
};
|
|
70
|
+
/**
|
|
71
|
+
* Why a prop's type is not the one its source writes, or says nothing: a generic's type parameter and what it is shown
|
|
72
|
+
* as, a name the checker cannot find, an `any`.
|
|
73
|
+
*/
|
|
74
|
+
export type PropTypeNote = {
|
|
75
|
+
/** A type parameter of the props type, replaced in the prop's type. */
|
|
76
|
+
readonly reason: "generic";
|
|
77
|
+
/** Its name (`TItem`). */
|
|
78
|
+
readonly parameter: string;
|
|
79
|
+
/** What it is shown as: its constraint, its default when it has no constraint, `unknown` when it has neither. */
|
|
80
|
+
readonly shownAs: "constraint" | "default" | "unknown";
|
|
81
|
+
/** That type, as the source writes it. */
|
|
82
|
+
readonly type: string;
|
|
83
|
+
} | {
|
|
84
|
+
/** A name in the prop's type that the checker cannot find (a missing import), so the type means `any`. */
|
|
85
|
+
readonly reason: "unresolved";
|
|
86
|
+
/** The name, as written. */
|
|
87
|
+
readonly name: string;
|
|
88
|
+
} | {
|
|
89
|
+
/** The prop's type is `any`: nothing can be said of its values. */
|
|
90
|
+
readonly reason: "any";
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* When a prop can be passed: the values of the discriminant that select the variants of the props that declare it
|
|
94
|
+
* (`href` only when `kind` is `"link"`).
|
|
95
|
+
*/
|
|
96
|
+
export type PropCondition = {
|
|
97
|
+
/** The discriminant: a prop every variant declares with a literal type. */
|
|
98
|
+
readonly prop: string;
|
|
99
|
+
/** Its values in the variants that declare the prop, in the order the variants come. */
|
|
100
|
+
readonly values: readonly (string | number | boolean)[];
|
|
101
|
+
/**
|
|
102
|
+
* Whether the prop also applies with the discriminant left out, since a variant that declares it takes it so
|
|
103
|
+
* (`mode?: "single"`). Left out when `false`.
|
|
104
|
+
*/
|
|
105
|
+
readonly orOmitted?: boolean;
|
|
106
|
+
};
|
|
107
|
+
/** Why a component lists no props although it takes some. */
|
|
108
|
+
export type PropsNote = {
|
|
109
|
+
/** Its props are typed `any` (or not typed): there is nothing to read. */
|
|
110
|
+
readonly reason: "untyped";
|
|
111
|
+
} | {
|
|
112
|
+
/** Its type cannot be called or constructed with props, so it gives none to read. */
|
|
113
|
+
readonly reason: "no-signature";
|
|
114
|
+
} | {
|
|
115
|
+
/** Every prop it takes is declared outside its package (an element's attributes), which the docs leave out. */
|
|
116
|
+
readonly reason: "outside-package";
|
|
117
|
+
/** How many props were left out. */
|
|
118
|
+
readonly count: number;
|
|
119
|
+
};
|
|
69
120
|
/** One prop of a component. */
|
|
70
121
|
export type PropDocs = {
|
|
71
122
|
/** The prop's name. */
|
|
@@ -103,6 +154,24 @@ export type PropDocs = {
|
|
|
103
154
|
* in the order the source declares them: the API reference lists them under the prop, folded. Left out otherwise.
|
|
104
155
|
*/
|
|
105
156
|
readonly members?: readonly MemberDocs[];
|
|
157
|
+
/**
|
|
158
|
+
* For a prop of kind `other`, what its value looks like when plain JSON can hold it (`readonly string[]`, `{ a; b? }`,
|
|
159
|
+
* `"sm" | number`): the panel draws fields from it and a link's value is checked against it. Left out otherwise.
|
|
160
|
+
*/
|
|
161
|
+
readonly shape?: ValueShape;
|
|
162
|
+
/**
|
|
163
|
+
* The design tokens its TSDoc asks for (`@token color`): a token's type or a part of its name. Left out when it asks
|
|
164
|
+
* for none.
|
|
165
|
+
*/
|
|
166
|
+
readonly token?: string;
|
|
167
|
+
/**
|
|
168
|
+
* For a prop only some variants of a union of props declare, when it can be passed: the discriminant's values that
|
|
169
|
+
* select them. Such a prop is never required. Left out for a prop every variant declares, and when the union has no
|
|
170
|
+
* discriminant.
|
|
171
|
+
*/
|
|
172
|
+
readonly onlyWhen?: PropCondition;
|
|
173
|
+
/** Why its type is not the one its source writes, or says nothing, in source order. Left out when there is none. */
|
|
174
|
+
readonly notes?: readonly PropTypeNote[];
|
|
106
175
|
};
|
|
107
176
|
/** A part the component is used with, named in the meta's `subcomponents`: listed under it on its page. */
|
|
108
177
|
export type SubcomponentDocs = {
|
|
@@ -162,6 +231,8 @@ export type ComponentDocs = {
|
|
|
162
231
|
* markup from it. Left out when the component is written by its name.
|
|
163
232
|
*/
|
|
164
233
|
readonly selector?: string;
|
|
234
|
+
/** Why it lists no props although it takes some; left out when its props are read, or it takes none. */
|
|
235
|
+
readonly propsNote?: PropsNote;
|
|
165
236
|
};
|
|
166
237
|
/**
|
|
167
238
|
* The name a story's code writes the component with: its selector when its framework matches components by one, its
|
|
@@ -30,6 +30,8 @@ const isMemberDocs = (value) => isRecord(value) &&
|
|
|
30
30
|
typeof value["description"] === "string" &&
|
|
31
31
|
typeof value["isRequired"] === "boolean" &&
|
|
32
32
|
(value["defaultValue"] === undefined || typeof value["defaultValue"] === "string");
|
|
33
|
+
/** Whether a value is a note with a reason: what the reference reads first. */
|
|
34
|
+
const isNote = (value) => isRecord(value) && typeof value["reason"] === "string";
|
|
33
35
|
/** Whether a value is one prop's docs. */
|
|
34
36
|
const isPropDocs = (value) => isRecord(value) &&
|
|
35
37
|
typeof value["name"] === "string" &&
|
|
@@ -39,8 +41,18 @@ const isPropDocs = (value) => isRecord(value) &&
|
|
|
39
41
|
typeof value["isRequired"] === "boolean" &&
|
|
40
42
|
(value["canTakeText"] === undefined || typeof value["canTakeText"] === "boolean") &&
|
|
41
43
|
(value["group"] === undefined || typeof value["group"] === "string") &&
|
|
44
|
+
(value["token"] === undefined || typeof value["token"] === "string") &&
|
|
45
|
+
// the plugin's own answer: looked at closer by what reads it, which loads with the first prop that has one
|
|
46
|
+
(value["shape"] === undefined ||
|
|
47
|
+
(isRecord(value["shape"]) && typeof value["shape"]["kind"] === "string")) &&
|
|
42
48
|
(value["members"] === undefined ||
|
|
43
|
-
(Array.isArray(value["members"]) && value["members"].every(isMemberDocs)))
|
|
49
|
+
(Array.isArray(value["members"]) && value["members"].every(isMemberDocs))) &&
|
|
50
|
+
// the plugin's own answers, read by the reference, which loads later and draws only the reasons it knows
|
|
51
|
+
(value["onlyWhen"] === undefined ||
|
|
52
|
+
(isRecord(value["onlyWhen"]) &&
|
|
53
|
+
typeof value["onlyWhen"]["prop"] === "string" &&
|
|
54
|
+
Array.isArray(value["onlyWhen"]["values"]))) &&
|
|
55
|
+
(value["notes"] === undefined || (Array.isArray(value["notes"]) && value["notes"].every(isNote)));
|
|
44
56
|
/** Whether a value is a subcomponent's docs. */
|
|
45
57
|
const isSubcomponentDocs = (value) => isRecord(value) &&
|
|
46
58
|
typeof value["name"] === "string" &&
|
|
@@ -74,4 +86,5 @@ export const isComponentDocs = (value) => isRecord(value) &&
|
|
|
74
86
|
Array.isArray(value["subcomponents"]) &&
|
|
75
87
|
value["subcomponents"].every(isSubcomponentDocs) &&
|
|
76
88
|
(value["signature"] === undefined || isFunctionSignatureDocs(value["signature"])) &&
|
|
77
|
-
(value["selector"] === undefined || typeof value["selector"] === "string")
|
|
89
|
+
(value["selector"] === undefined || typeof value["selector"] === "string") &&
|
|
90
|
+
(value["propsNote"] === undefined || isNote(value["propsNote"]));
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A call's arguments as the Events tab shows them: each written short for the log, and an object's or a list's content to
|
|
3
|
+
* open in it. Read in the frame, where the values are; only the text crosses. Pure.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* An event's argument written short for the call log.
|
|
9
|
+
*
|
|
10
|
+
* @param value - anything a callback received.
|
|
11
|
+
*/
|
|
12
|
+
export declare const previewValue: (value: unknown) => string;
|
|
13
|
+
/**
|
|
14
|
+
* An argument's content for the log, when it is an object or a list: JSON, two spaces deep, a function as `ƒ`, an
|
|
15
|
+
* object met again as `[circular]`, cut past `DETAIL_LENGTH`; `null` for anything else (a text, a number, an event).
|
|
16
|
+
*
|
|
17
|
+
* @param value - anything a callback received.
|
|
18
|
+
*/
|
|
19
|
+
export declare const detailOf: (value: unknown) => string | null;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A call's arguments as the Events tab shows them: each written short for the log, and an object's or a list's content to
|
|
3
|
+
* open in it. Read in the frame, where the values are; only the text crosses. Pure.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
/** Whether a value is a plain object. */
|
|
8
|
+
const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
9
|
+
/**
|
|
10
|
+
* An event's argument written short for the call log.
|
|
11
|
+
*
|
|
12
|
+
* @param value - anything a callback received.
|
|
13
|
+
*/
|
|
14
|
+
export const previewValue = (value) => {
|
|
15
|
+
if (typeof value === "string")
|
|
16
|
+
return JSON.stringify(value.length > 60 ? `${value.slice(0, 60)}…` : value);
|
|
17
|
+
if (typeof value === "number" || typeof value === "boolean" || typeof value === "bigint")
|
|
18
|
+
return String(value);
|
|
19
|
+
if (value === null || value === undefined)
|
|
20
|
+
return String(value);
|
|
21
|
+
if (typeof value === "function")
|
|
22
|
+
return "ƒ";
|
|
23
|
+
if (typeof Event !== "undefined" && value instanceof Event)
|
|
24
|
+
return value.constructor.name;
|
|
25
|
+
if (isRecord(value) && "nativeEvent" in value)
|
|
26
|
+
return "SyntheticEvent";
|
|
27
|
+
return Array.isArray(value) ? `[…${value.length}]` : "{…}";
|
|
28
|
+
};
|
|
29
|
+
/** The most characters an argument's content keeps in the log. */
|
|
30
|
+
const DETAIL_LENGTH = 2000;
|
|
31
|
+
/**
|
|
32
|
+
* An argument's content for the log, when it is an object or a list: JSON, two spaces deep, a function as `ƒ`, an
|
|
33
|
+
* object met again as `[circular]`, cut past `DETAIL_LENGTH`; `null` for anything else (a text, a number, an event).
|
|
34
|
+
*
|
|
35
|
+
* @param value - anything a callback received.
|
|
36
|
+
*/
|
|
37
|
+
export const detailOf = (value) => {
|
|
38
|
+
if (typeof value !== "object" || value === null)
|
|
39
|
+
return null;
|
|
40
|
+
if (typeof Event !== "undefined" && value instanceof Event)
|
|
41
|
+
return null;
|
|
42
|
+
if ("nativeEvent" in value)
|
|
43
|
+
return null;
|
|
44
|
+
const seen = new WeakSet();
|
|
45
|
+
const text = JSON.stringify(value, (_key, inner) => {
|
|
46
|
+
if (typeof inner === "function")
|
|
47
|
+
return "ƒ";
|
|
48
|
+
if (typeof inner === "bigint")
|
|
49
|
+
return `${inner}n`;
|
|
50
|
+
if (typeof inner === "object" && inner !== null) {
|
|
51
|
+
if (seen.has(inner))
|
|
52
|
+
return "[circular]";
|
|
53
|
+
seen.add(inner);
|
|
54
|
+
}
|
|
55
|
+
return inner;
|
|
56
|
+
}, 2);
|
|
57
|
+
return text.length > DETAIL_LENGTH ? `${text.slice(0, DETAIL_LENGTH)}…` : text;
|
|
58
|
+
};
|