forgebook 0.3.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +917 -74
- package/dist/bin/forgebook/agentClient.d.ts +2 -1
- package/dist/bin/forgebook/agentClient.js +13 -6
- package/dist/bin/forgebook/agentGuide.d.ts +59 -0
- package/dist/bin/forgebook/agentGuide.js +203 -0
- package/dist/bin/forgebook/agentLoopCommands.mjs +22 -42
- package/dist/bin/forgebook/agentSetup/agentFiles.d.ts +55 -0
- package/dist/bin/forgebook/agentSetup/agentFiles.js +319 -0
- package/dist/bin/forgebook/agentSetup/assistantHooks.d.ts +71 -0
- package/dist/bin/forgebook/agentSetup/assistantHooks.js +125 -0
- package/dist/bin/forgebook/agentSetup/ciWorkflow.d.ts +23 -0
- package/dist/bin/forgebook/agentSetup/ciWorkflow.js +55 -0
- package/dist/bin/forgebook/agentSetup/drawCandidates.d.ts +25 -0
- package/dist/bin/forgebook/agentSetup/drawCandidates.js +116 -0
- package/dist/bin/forgebook/agentSetup/drawDiagnosis.d.ts +28 -0
- package/dist/bin/forgebook/agentSetup/drawDiagnosis.js +134 -0
- package/dist/bin/forgebook/agentSetup/drawRun.d.ts +91 -0
- package/dist/bin/forgebook/agentSetup/drawRun.js +353 -0
- package/dist/bin/forgebook/agentSetup/hookNames.d.ts +7 -0
- package/dist/bin/forgebook/agentSetup/hookNames.js +7 -0
- package/dist/bin/forgebook/agentSetup/initAgentSteps.d.ts +48 -0
- package/dist/bin/forgebook/agentSetup/initAgentSteps.js +104 -0
- package/dist/bin/forgebook/agentSetup/liftedProviders.d.ts +17 -0
- package/dist/bin/forgebook/agentSetup/liftedProviders.js +186 -0
- package/dist/bin/forgebook/agentSetup/projectRunner.d.ts +46 -0
- package/dist/bin/forgebook/agentSetup/projectRunner.js +85 -0
- package/dist/bin/forgebook/agentSetup/stopHook.d.ts +65 -0
- package/dist/bin/forgebook/agentSetup/stopHook.js +202 -0
- package/dist/bin/forgebook/agentSetup/uniformPicture.d.ts +7 -0
- package/dist/bin/forgebook/agentSetup/uniformPicture.js +98 -0
- package/dist/bin/forgebook/agentSetupCommands.d.mts +14 -0
- package/dist/bin/forgebook/agentSetupCommands.mjs +98 -0
- package/dist/bin/forgebook/agentText.d.ts +23 -3
- package/dist/bin/forgebook/agentText.js +175 -28
- package/dist/bin/forgebook/agents.md +20 -191
- package/dist/bin/forgebook/agentsText.js +2 -1
- package/dist/bin/forgebook/appBuild/appBuild.d.ts +59 -0
- package/dist/bin/forgebook/appBuild/appBuild.js +213 -0
- package/dist/bin/forgebook/appBuild/appViteConfig.d.ts +96 -0
- package/dist/bin/forgebook/appBuild/appViteConfig.js +320 -0
- package/dist/bin/forgebook/appBuild/tsconfigPaths.d.ts +14 -0
- package/dist/bin/forgebook/appBuild/tsconfigPaths.js +80 -0
- package/dist/bin/forgebook/auditCommand.d.mts +8 -0
- package/dist/bin/forgebook/auditCommand.mjs +75 -0
- package/dist/bin/forgebook/auditRun.d.ts +95 -0
- package/dist/bin/forgebook/auditRun.js +270 -0
- package/dist/bin/forgebook/browserRun.d.ts +21 -0
- package/dist/bin/forgebook/browserRun.js +57 -0
- package/dist/bin/forgebook/buildFailure.d.ts +7 -0
- package/dist/bin/forgebook/buildFailure.js +47 -0
- package/dist/bin/forgebook/buildWatch.d.ts +52 -0
- package/dist/bin/forgebook/buildWatch.js +137 -0
- package/dist/bin/forgebook/builtCatalogue.js +9 -5
- package/dist/bin/forgebook/catalogueCommands.d.ts +9 -0
- package/dist/bin/forgebook/catalogueCommands.js +23 -0
- package/dist/bin/forgebook/catalogueVite.d.ts +5 -1
- package/dist/bin/forgebook/catalogueVite.js +14 -6
- package/dist/bin/forgebook/commandCacheClaim.d.ts +18 -0
- package/dist/bin/forgebook/commandCacheClaim.js +170 -0
- package/dist/bin/forgebook/commandServer.d.ts +8 -0
- package/dist/bin/forgebook/commandServer.js +61 -13
- package/dist/bin/forgebook/forgebookCommands.mjs +105 -28
- package/dist/bin/forgebook/graphCommand.d.mts +8 -0
- package/dist/bin/forgebook/graphCommand.mjs +84 -0
- package/dist/bin/forgebook/guide/commands.md +57 -0
- package/dist/bin/forgebook/guide/devices.md +17 -0
- package/dist/bin/forgebook/guide/docs-pages.md +13 -0
- package/dist/bin/forgebook/guide/frameworks/angular.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/html.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/nextjs.md +23 -0
- package/dist/bin/forgebook/guide/frameworks/nuxt.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/preact.md +16 -0
- package/dist/bin/forgebook/guide/frameworks/react-native-web.md +21 -0
- package/dist/bin/forgebook/guide/frameworks/react.md +16 -0
- package/dist/bin/forgebook/guide/frameworks/solid.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/svelte.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/sveltekit.md +23 -0
- package/dist/bin/forgebook/guide/frameworks/vue.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/web-components.md +21 -0
- package/dist/bin/forgebook/guide/links.md +29 -0
- package/dist/bin/forgebook/guide/setup.md +23 -0
- package/dist/bin/forgebook/guide/stories.md +90 -0
- package/dist/bin/forgebook/guide/switches.md +43 -0
- package/dist/bin/forgebook/guideCommand.d.mts +13 -0
- package/dist/bin/forgebook/guideCommand.mjs +37 -0
- package/dist/bin/forgebook/importers/storybook.d.ts +21 -0
- package/dist/bin/forgebook/importers/storybook.js +11 -5
- package/dist/bin/forgebook/importers/storybookFrameworks.js +1 -1
- package/dist/bin/forgebook/initCommands.d.mts +11 -0
- package/dist/bin/forgebook/initCommands.mjs +51 -78
- package/dist/bin/forgebook/initConfig.d.ts +5 -3
- package/dist/bin/forgebook/initConfig.js +6 -3
- package/dist/bin/forgebook/initInstall.d.ts +15 -0
- package/dist/bin/forgebook/initInstall.js +77 -0
- package/dist/bin/forgebook/initPrint.d.ts +9 -0
- package/dist/bin/forgebook/initPrint.js +60 -0
- package/dist/bin/forgebook/initRefusals.d.ts +45 -0
- package/dist/bin/forgebook/initRefusals.js +91 -0
- package/dist/bin/forgebook/initRun.d.ts +28 -0
- package/dist/bin/forgebook/initRun.js +311 -0
- package/dist/bin/forgebook/mcpCommand.mjs +38 -4
- package/dist/bin/forgebook/mcpGraph.d.ts +13 -0
- package/dist/bin/forgebook/mcpGraph.js +24 -0
- package/dist/bin/forgebook/mcpTokens.d.ts +14 -0
- package/dist/bin/forgebook/mcpTokens.js +58 -0
- package/dist/bin/forgebook/mcpToolParts.d.ts +7 -0
- package/dist/bin/forgebook/mcpToolParts.js +10 -0
- package/dist/bin/forgebook/mcpTools.d.ts +13 -6
- package/dist/bin/forgebook/mcpTools.js +57 -90
- package/dist/bin/forgebook/mcpVerify.d.ts +16 -0
- package/dist/bin/forgebook/mcpVerify.js +36 -0
- package/dist/bin/forgebook/migrate/codemods.d.ts +11 -0
- package/dist/bin/forgebook/migrate/codemods.js +61 -0
- package/dist/bin/forgebook/migrate/migrate.types.d.ts +117 -0
- package/dist/bin/forgebook/migrate/migrate.types.js +5 -0
- package/dist/bin/forgebook/migrate/migrateCommand.d.mts +8 -0
- package/dist/bin/forgebook/migrate/migrateCommand.mjs +76 -0
- package/dist/bin/forgebook/migrate/migrateRun.d.ts +61 -0
- package/dist/bin/forgebook/migrate/migrateRun.js +210 -0
- package/dist/bin/forgebook/migrate/migrateText.d.ts +12 -0
- package/dist/bin/forgebook/migrate/migrateText.js +30 -0
- package/dist/bin/forgebook/migrate/migrateWrite.d.ts +27 -0
- package/dist/bin/forgebook/migrate/migrateWrite.js +66 -0
- package/dist/bin/forgebook/migrate/objectEdits.d.ts +70 -0
- package/dist/bin/forgebook/migrate/objectEdits.js +241 -0
- package/dist/bin/forgebook/migrate/playOnInBuilds.d.ts +3 -0
- package/dist/bin/forgebook/migrate/playOnInBuilds.js +86 -0
- package/dist/bin/forgebook/migrate/propGroupStrings.d.ts +5 -0
- package/dist/bin/forgebook/migrate/propGroupStrings.js +81 -0
- package/dist/bin/forgebook/newProject/newProject.d.ts +39 -0
- package/dist/bin/forgebook/newProject/newProject.js +180 -0
- package/dist/bin/forgebook/newProject/newProject.types.d.ts +97 -0
- package/dist/bin/forgebook/newProject/newProject.types.js +6 -0
- package/dist/bin/forgebook/newProject/packageManagers.d.ts +51 -0
- package/dist/bin/forgebook/newProject/packageManagers.js +121 -0
- package/dist/bin/forgebook/newProject/projectEntries.d.ts +62 -0
- package/dist/bin/forgebook/newProject/projectEntries.js +191 -0
- package/dist/bin/forgebook/newProject/projectFrameworks.d.ts +57 -0
- package/dist/bin/forgebook/newProject/projectFrameworks.js +148 -0
- package/dist/bin/forgebook/newProject/projectLook.d.ts +23 -0
- package/dist/bin/forgebook/newProject/projectLook.js +293 -0
- package/dist/bin/forgebook/newProject/projectPackages.d.ts +66 -0
- package/dist/bin/forgebook/newProject/projectPackages.js +178 -0
- package/dist/bin/forgebook/newRepair.d.ts +45 -0
- package/dist/bin/forgebook/newRepair.js +157 -0
- package/dist/bin/forgebook/newRepairRun.d.ts +69 -0
- package/dist/bin/forgebook/newRepairRun.js +148 -0
- package/dist/bin/forgebook/newStories.d.ts +23 -1
- package/dist/bin/forgebook/newStories.js +101 -11
- package/dist/bin/forgebook/newStoriesFile.d.ts +20 -1
- package/dist/bin/forgebook/newStoriesFile.js +43 -4
- package/dist/bin/forgebook/prebundleRun.d.ts +3 -1
- package/dist/bin/forgebook/prebundleRun.js +28 -8
- package/dist/bin/forgebook/proofCommand.d.mts +15 -0
- package/dist/bin/forgebook/proofCommand.mjs +212 -0
- package/dist/bin/forgebook/proofRun.d.ts +63 -0
- package/dist/bin/forgebook/proofRun.js +412 -0
- package/dist/bin/forgebook/proofText.d.ts +36 -0
- package/dist/bin/forgebook/proofText.js +131 -0
- package/dist/bin/forgebook/proofWorkflow.d.ts +29 -0
- package/dist/bin/forgebook/proofWorkflow.js +205 -0
- package/dist/bin/forgebook/setArgsTool.d.ts +8 -0
- package/dist/bin/forgebook/setArgsTool.js +70 -0
- package/dist/bin/forgebook/storyCheckCommands.mjs +42 -3
- package/dist/bin/forgebook/storyCheckRun.d.ts +50 -0
- package/dist/bin/forgebook/storyCheckRun.js +83 -9
- package/dist/bin/forgebook/storyFileIds.d.ts +15 -0
- package/dist/bin/forgebook/storyFileIds.js +14 -0
- package/dist/bin/forgebook/stressCases.d.ts +31 -0
- package/dist/bin/forgebook/stressCases.js +79 -0
- package/dist/bin/forgebook/stressRun.d.ts +12 -0
- package/dist/bin/forgebook/stressRun.js +61 -0
- package/dist/bin/forgebook/stressText.d.ts +27 -0
- package/dist/bin/forgebook/stressText.js +46 -0
- package/dist/bin/forgebook/verifyBase.d.ts +45 -0
- package/dist/bin/forgebook/verifyBase.js +196 -0
- package/dist/bin/forgebook/verifyCommand.d.mts +13 -0
- package/dist/bin/forgebook/verifyCommand.mjs +125 -0
- package/dist/bin/forgebook/verifyRun.d.ts +63 -0
- package/dist/bin/forgebook/verifyRun.js +108 -0
- package/dist/bin/forgebook/verifyVerdict.d.ts +40 -0
- package/dist/bin/forgebook/verifyVerdict.js +297 -0
- package/dist/bin/forgebook/workflowActions.d.ts +23 -0
- package/dist/bin/forgebook/workflowActions.js +23 -0
- package/dist/bin/forgebook-docs/catalogueMarkdown.js +12 -1
- package/dist/src/addressArgs.d.ts +54 -6
- package/dist/src/addressArgs.js +72 -16
- package/dist/src/addressArgsParam.d.ts +54 -0
- package/dist/src/addressArgsParam.js +51 -0
- package/dist/src/addressTexts.d.ts +14 -0
- package/dist/src/addressTexts.js +28 -21
- package/dist/src/agentIndexFile.d.ts +11 -0
- package/dist/src/agentIndexFile.js +11 -0
- package/dist/src/argConditions.d.ts +52 -0
- package/dist/src/argConditions.js +80 -0
- package/dist/src/argControl.d.ts +100 -0
- package/dist/src/argControl.js +0 -0
- package/dist/src/argExpression.d.ts +21 -0
- package/dist/src/argExpression.js +30 -0
- package/dist/src/argTypes.d.ts +40 -51
- package/dist/src/argTypes.js +66 -184
- package/dist/src/argsProps.d.ts +3 -3
- package/dist/src/argsProps.js +11 -5
- package/dist/src/bundlerErrors.d.ts +29 -0
- package/dist/src/bundlerErrors.js +49 -0
- package/dist/src/catalogue.d.ts +31 -0
- package/dist/src/catalogue.js +13 -2
- package/dist/src/catalogueRefs.d.ts +75 -0
- package/dist/src/catalogueRefs.js +122 -0
- package/dist/src/componentDocs.d.ts +71 -0
- package/dist/src/componentDocs.js +15 -2
- package/dist/src/frame/callValues.d.ts +19 -0
- package/dist/src/frame/callValues.js +58 -0
- package/dist/src/frame/canvasScheme.d.ts +33 -0
- package/dist/src/frame/canvasScheme.js +67 -0
- package/dist/src/frame/frame.css +36 -3
- package/dist/src/frame/frameStatus.d.ts +16 -1
- package/dist/src/frame/frameStatus.js +16 -1
- package/dist/src/frame/frameView.js +4 -3
- package/dist/src/frame/mountFrame.d.ts +7 -1
- package/dist/src/frame/mountFrame.js +153 -46
- package/dist/src/frame/panelValues.d.ts +35 -0
- package/dist/src/frame/panelValues.js +127 -0
- package/dist/src/frame/playActions.d.ts +39 -0
- package/dist/src/frame/playActions.js +98 -0
- package/dist/src/frame/playStepper.d.ts +28 -0
- package/dist/src/frame/playStepper.js +38 -0
- package/dist/src/frame/playStory.d.ts +9 -1
- package/dist/src/frame/playStory.js +49 -3
- package/dist/src/frame/renderer.d.ts +34 -1
- package/dist/src/frame/renderer.js +24 -0
- package/dist/src/frame/shellChannel.d.ts +1 -1
- package/dist/src/frame/shellChannel.js +1 -1
- package/dist/src/frame/shellCheck.d.ts +17 -0
- package/dist/src/frame/shellCheck.js +25 -0
- package/dist/src/frame/shellMessageCheck.d.ts +7 -0
- package/dist/src/frame/shellMessageCheck.js +53 -0
- package/dist/src/frame/storyContent.d.ts +50 -0
- package/dist/src/frame/storyContent.js +73 -0
- package/dist/src/frame/storyModule.d.ts +9 -0
- package/dist/src/frame/storyModule.js +20 -2
- package/dist/src/frame/storyRun.d.ts +15 -7
- package/dist/src/frame/storyRun.js +64 -15
- package/dist/src/frame/valueSheets.d.ts +35 -0
- package/dist/src/frame/valueSheets.js +99 -0
- package/dist/src/hotModules.d.ts +20 -0
- package/dist/src/hotModules.js +23 -0
- package/dist/src/jsxCode.d.ts +1 -14
- package/dist/src/jsxCode.js +46 -10
- package/dist/src/liveErrors.d.ts +30 -4
- package/dist/src/liveErrors.js +18 -3
- package/dist/src/messages.d.ts +77 -27
- package/dist/src/messages.js +58 -100
- package/dist/src/namedValues.d.ts +2 -26
- package/dist/src/namedValues.js +0 -47
- package/dist/src/pageConfig.d.ts +2 -0
- package/dist/src/playTrace.d.ts +19 -2
- package/dist/src/playTrace.js +10 -5
- package/dist/src/plugin.d.ts +10 -3
- package/dist/src/previewRelay.js +9 -1
- package/dist/src/printable.d.ts +12 -0
- package/dist/src/printable.js +22 -0
- package/dist/src/propsSignature.d.ts +37 -0
- package/dist/src/propsSignature.js +40 -0
- package/dist/src/search.d.ts +41 -5
- package/dist/src/search.js +93 -23
- package/dist/src/searchMatch.d.ts +4 -1
- package/dist/src/searchMatch.js +26 -5
- package/dist/src/searchTypos.d.ts +88 -0
- package/dist/src/searchTypos.js +178 -0
- package/dist/src/shapeValues.d.ts +86 -0
- package/dist/src/shapeValues.js +295 -0
- package/dist/src/shell/ApiReference.js +6 -3
- package/dist/src/shell/ApiTableBox.d.ts +15 -0
- package/dist/src/shell/ApiTableBox.js +11 -0
- package/dist/src/shell/AppearanceMenu.d.ts +4 -1
- package/dist/src/shell/AppearanceMenu.js +9 -6
- package/dist/src/shell/CodeTab.d.ts +3 -2
- package/dist/src/shell/CodeTab.js +3 -2
- package/dist/src/shell/CodeText.d.ts +1 -1
- package/dist/src/shell/CodeText.js +2 -3
- package/dist/src/shell/CompareGrid.js +1 -1
- package/dist/src/shell/ComponentPage.d.ts +1 -1
- package/dist/src/shell/ComponentPage.js +5 -1
- package/dist/src/shell/CustomControl.d.ts +34 -0
- package/dist/src/shell/CustomControl.js +132 -0
- package/dist/src/shell/DocContainers.js +1 -1
- package/dist/src/shell/DocPage.js +2 -2
- package/dist/src/shell/DroppedArgsList.d.ts +2 -2
- package/dist/src/shell/DroppedArgsList.js +1 -1
- package/dist/src/shell/EmbedPage.js +58 -14
- package/dist/src/shell/Example.d.ts +5 -1
- package/dist/src/shell/Example.js +16 -8
- package/dist/src/shell/FrameView.d.ts +6 -3
- package/dist/src/shell/FrameView.js +2 -2
- package/dist/src/shell/HomePage.d.ts +3 -1
- package/dist/src/shell/HomePage.js +16 -6
- package/dist/src/shell/InfoTip.js +2 -2
- package/dist/src/shell/InteractionsTab.d.ts +11 -4
- package/dist/src/shell/InteractionsTab.js +18 -2
- package/dist/src/shell/LazyPage.js +1 -1
- package/dist/src/shell/PackageHtml.js +3 -1
- package/dist/src/shell/PinnedControl.js +14 -62
- package/dist/src/shell/PinnedControlMenu.d.ts +44 -0
- package/dist/src/shell/PinnedControlMenu.js +72 -0
- package/dist/src/shell/PluginBlockHost.js +2 -1
- package/dist/src/shell/PluginTabHost.js +19 -2
- package/dist/src/shell/PropFields.d.ts +3 -1
- package/dist/src/shell/PropFields.js +9 -6
- package/dist/src/shell/PropRows.d.ts +23 -2
- package/dist/src/shell/PropRows.js +58 -19
- package/dist/src/shell/PropsTab.d.ts +12 -5
- package/dist/src/shell/PropsTab.js +9 -21
- package/dist/src/shell/RefStoryPage.d.ts +33 -0
- package/dist/src/shell/RefStoryPage.js +123 -0
- package/dist/src/shell/SearchPanel.js +51 -24
- package/dist/src/shell/Shell.d.ts +18 -0
- package/dist/src/shell/Shell.js +137 -22
- package/dist/src/shell/ShortcutHelp.d.ts +22 -0
- package/dist/src/shell/ShortcutHelp.js +66 -0
- package/dist/src/shell/Sidebar.d.ts +17 -4
- package/dist/src/shell/Sidebar.js +92 -41
- package/dist/src/shell/SidebarDocs.js +2 -2
- package/dist/src/shell/SidebarEntries.js +5 -3
- package/dist/src/shell/SidebarHandle.d.ts +3 -5
- package/dist/src/shell/SidebarHandle.js +4 -4
- package/dist/src/shell/SidebarRefs.d.ts +39 -0
- package/dist/src/shell/SidebarRefs.js +99 -0
- package/dist/src/shell/SidebarSearch.js +37 -9
- package/dist/src/shell/SignatureReference.js +3 -1
- package/dist/src/shell/Stage.d.ts +10 -2
- package/dist/src/shell/Stage.js +35 -60
- package/dist/src/shell/StatusBadges.d.ts +54 -0
- package/dist/src/shell/StatusBadges.js +77 -0
- package/dist/src/shell/StoryCodeBlock.d.ts +8 -19
- package/dist/src/shell/StoryCodeBlock.js +7 -6
- package/dist/src/shell/SwitchGallery.d.ts +36 -0
- package/dist/src/shell/SwitchGallery.js +17 -0
- package/dist/src/shell/SwitchGalleryPanel.d.ts +37 -0
- package/dist/src/shell/SwitchGalleryPanel.js +99 -0
- package/dist/src/shell/TagFilter.d.ts +24 -0
- package/dist/src/shell/TagFilter.js +45 -0
- package/dist/src/shell/TagViews.d.ts +39 -0
- package/dist/src/shell/TagViews.js +20 -0
- package/dist/src/shell/Toolbar.d.ts +4 -1
- package/dist/src/shell/Toolbar.js +17 -7
- package/dist/src/shell/ToolbarControl.d.ts +3 -0
- package/dist/src/shell/ToolbarControl.js +23 -6
- package/dist/src/shell/ViewMenuPanel.js +6 -1
- package/dist/src/shell/argChecks.d.ts +22 -0
- package/dist/src/shell/argChecks.js +20 -0
- package/dist/src/shell/asideStory.d.ts +17 -4
- package/dist/src/shell/asideStory.js +21 -4
- package/dist/src/shell/audienceSections.css +9 -9
- package/dist/src/shell/catalogueContext.d.ts +1 -1
- package/dist/src/shell/catalogueContext.js +6 -1
- package/dist/src/shell/codeSpans.d.ts +27 -0
- package/dist/src/shell/codeSpans.js +76 -0
- package/dist/src/shell/compareVariants.d.ts +4 -2
- package/dist/src/shell/compareVariants.js +16 -8
- package/dist/src/shell/composition.d.ts +23 -0
- package/dist/src/shell/composition.js +26 -0
- package/dist/src/shell/controlCycle.d.ts +1 -1
- package/dist/src/shell/controlCycle.js +3 -2
- package/dist/src/shell/customControls.d.ts +55 -0
- package/dist/src/shell/customControls.js +70 -0
- package/dist/src/shell/docPage.css +22 -22
- package/dist/src/shell/dockTabs.d.ts +19 -3
- package/dist/src/shell/dockTabs.js +28 -20
- package/dist/src/shell/embed.css +7 -7
- package/dist/src/shell/framesOrigin.d.ts +7 -0
- package/dist/src/shell/framesOrigin.js +1 -1
- package/dist/src/shell/galleryPlace.d.ts +20 -0
- package/dist/src/shell/galleryPlace.js +26 -0
- package/dist/src/shell/icons.d.ts +1 -0
- package/dist/src/shell/icons.js +1 -0
- package/dist/src/shell/keyboard.d.ts +14 -12
- package/dist/src/shell/keyboard.js +21 -6
- package/dist/src/shell/laterStrings.d.ts +29 -0
- package/dist/src/shell/laterStrings.js +42 -3
- package/dist/src/shell/mountShell.js +3 -0
- package/dist/src/shell/pageStrings.d.ts +4 -0
- package/dist/src/shell/pageStrings.js +4 -0
- package/dist/src/shell/pageTagView.d.ts +18 -0
- package/dist/src/shell/pageTagView.js +10 -0
- package/dist/src/shell/playMemory.d.ts +14 -0
- package/dist/src/shell/playMemory.js +8 -0
- package/dist/src/shell/propNotes.d.ts +23 -0
- package/dist/src/shell/propNotes.js +37 -0
- package/dist/src/shell/refIndexLoad.d.ts +17 -0
- package/dist/src/shell/refIndexLoad.js +38 -0
- package/dist/src/shell/refParts.d.ts +34 -0
- package/dist/src/shell/refParts.js +9 -0
- package/dist/src/shell/refStory.css +21 -0
- package/dist/src/shell/refStrings.d.ts +13 -0
- package/dist/src/shell/refStrings.js +21 -0
- package/dist/src/shell/search.css +11 -11
- package/dist/src/shell/shell.css +348 -168
- package/dist/src/shell/shellScheme.js +2 -2
- package/dist/src/shell/shortcutHelp.css +64 -0
- package/dist/src/shell/stageArgs.d.ts +53 -0
- package/dist/src/shell/stageArgs.js +64 -0
- package/dist/src/shell/statusBadges.css +51 -0
- package/dist/src/shell/strings.d.ts +7 -16
- package/dist/src/shell/strings.js +12 -17
- package/dist/src/shell/switchGallery.css +104 -0
- package/dist/src/shell/tagFilter.css +46 -0
- package/dist/src/shell/tagView.d.ts +20 -0
- package/dist/src/shell/tagView.js +10 -0
- package/dist/src/shell/useAddressArgs.d.ts +27 -2
- package/dist/src/shell/useAddressArgs.js +71 -14
- package/dist/src/shell/useControlKeys.js +2 -2
- package/dist/src/shell/useEditedProblems.d.ts +6 -0
- package/dist/src/shell/useEditedProblems.js +40 -0
- package/dist/src/shell/useFrameMessages.js +3 -0
- package/dist/src/shell/useListedTree.d.ts +13 -0
- package/dist/src/shell/useListedTree.js +32 -0
- package/dist/src/shell/usePageFrames.js +2 -2
- package/dist/src/shell/usePopover.d.ts +5 -0
- package/dist/src/shell/usePopover.js +7 -1
- package/dist/src/shell/useRefIndex.d.ts +22 -0
- package/dist/src/shell/useRefIndex.js +36 -0
- package/dist/src/shell/useScrollStops.d.ts +20 -0
- package/dist/src/shell/useScrollStops.js +41 -0
- package/dist/src/shell/useShortcutHelp.d.ts +18 -0
- package/dist/src/shell/useShortcutHelp.js +32 -0
- package/dist/src/shell/useSidebarOverlay.d.ts +2 -1
- package/dist/src/shell/useSidebarOverlay.js +12 -4
- package/dist/src/shell/useStoryCode.d.ts +2 -1
- package/dist/src/shell/useStoryCode.js +12 -7
- package/dist/src/shell/useToolbarLayout.d.ts +5 -1
- package/dist/src/shell/useToolbarLayout.js +2 -2
- package/dist/src/shell/useWorstCase.d.ts +8 -2
- package/dist/src/shell/useWorstCase.js +2 -2
- package/dist/src/shell/valueEditors/FileEditor.d.ts +28 -0
- package/dist/src/shell/valueEditors/FileEditor.js +66 -0
- package/dist/src/shell/valueEditors/JsonEditor.d.ts +14 -0
- package/dist/src/shell/valueEditors/JsonEditor.js +53 -0
- package/dist/src/shell/valueEditors/ListEditor.d.ts +24 -0
- package/dist/src/shell/valueEditors/ListEditor.js +82 -0
- package/dist/src/shell/valueEditors/ObjectEditor.d.ts +32 -0
- package/dist/src/shell/valueEditors/ObjectEditor.js +70 -0
- package/dist/src/shell/valueEditors/PropEditor.d.ts +37 -0
- package/dist/src/shell/valueEditors/PropEditor.js +53 -0
- package/dist/src/shell/valueEditors/RecordEditor.d.ts +20 -0
- package/dist/src/shell/valueEditors/RecordEditor.js +84 -0
- package/dist/src/shell/valueEditors/SearchSelect.d.ts +42 -0
- package/dist/src/shell/valueEditors/SearchSelect.js +80 -0
- package/dist/src/shell/valueEditors/TokenEditor.d.ts +49 -0
- package/dist/src/shell/valueEditors/TokenEditor.js +74 -0
- package/dist/src/shell/valueEditors/UnionEditor.d.ts +20 -0
- package/dist/src/shell/valueEditors/UnionEditor.js +64 -0
- package/dist/src/shell/valueEditors/ValueField.d.ts +15 -0
- package/dist/src/shell/valueEditors/ValueField.js +147 -0
- package/dist/src/shell/valueEditors/editorStrings.d.ts +56 -0
- package/dist/src/shell/valueEditors/editorStrings.js +66 -0
- package/dist/src/shell/valueEditors/fieldTypes.d.ts +31 -0
- package/dist/src/shell/valueEditors/fieldTypes.js +0 -0
- package/dist/src/shell/valueEditors/valueEditors.css +153 -0
- package/dist/src/shell/worstArgs.d.ts +8 -5
- package/dist/src/shell/worstArgs.js +14 -7
- package/dist/src/shellTheme.d.ts +1 -1
- package/dist/src/shellTheme.js +15 -1
- package/dist/src/shellTheme.types.d.ts +4 -0
- package/dist/src/shellWord.d.ts +12 -0
- package/dist/src/shellWord.js +15 -0
- package/dist/src/sourceFiles.js +2 -1
- package/dist/src/storyArgTypes.d.ts +57 -0
- package/dist/src/storyArgTypes.js +195 -0
- package/dist/src/storyBackground.js +14 -3
- package/dist/src/storyCheck.d.ts +85 -3
- package/dist/src/storyCheck.js +23 -1
- package/dist/src/storyCodeText.d.ts +46 -0
- package/dist/src/storyCodeText.js +27 -0
- package/dist/src/storyControls.d.ts +100 -0
- package/dist/src/storyControls.js +100 -0
- package/dist/src/storyStatuses.d.ts +55 -0
- package/dist/src/storyStatuses.js +104 -0
- package/dist/src/storyTagNames.d.ts +25 -0
- package/dist/src/storyTagNames.js +25 -0
- package/dist/src/storyTags.d.ts +29 -0
- package/dist/src/storyTags.js +85 -0
- package/dist/src/storyTree.d.ts +13 -0
- package/dist/src/storyTree.js +24 -4
- package/dist/src/storybookArgs.d.ts +24 -0
- package/dist/src/storybookArgs.js +185 -0
- package/dist/src/switches.d.ts +66 -3
- package/dist/src/switches.js +42 -1
- package/dist/src/valueSchema.d.ts +28 -0
- package/dist/src/valueSchema.js +196 -0
- package/dist/src/valueShape.d.ts +94 -0
- package/dist/src/valueShape.js +25 -0
- package/dist/src/viewState.d.ts +8 -3
- package/dist/src/viewState.js +27 -10
- package/dist/src/vite/adapter.d.ts +40 -2
- package/dist/src/vite/adapter.js +1 -0
- package/dist/src/vite/agent.types.d.ts +347 -7
- package/dist/src/vite/agentApi.d.ts +23 -0
- package/dist/src/vite/agentApi.js +90 -17
- package/dist/src/vite/agentIndex.d.ts +0 -2
- package/dist/src/vite/agentIndex.js +5 -6
- package/dist/src/vite/agentRoutes.d.ts +20 -1
- package/dist/src/vite/agentRoutes.js +106 -65
- package/dist/src/vite/agentStatuses.d.ts +42 -0
- package/dist/src/vite/agentStatuses.js +67 -0
- package/dist/src/vite/agentStoryCode.d.ts +48 -0
- package/dist/src/vite/agentStoryCode.js +38 -0
- package/dist/src/vite/agentVisibility.d.ts +47 -0
- package/dist/src/vite/agentVisibility.js +174 -0
- package/dist/src/vite/appAudit.d.ts +134 -0
- package/dist/src/vite/appAudit.js +333 -0
- package/dist/src/vite/appBuildOption.d.ts +53 -0
- package/dist/src/vite/appBuildOption.js +55 -0
- package/dist/src/vite/appTokenFiles.d.ts +92 -0
- package/dist/src/vite/appTokenFiles.js +433 -0
- package/dist/src/vite/appTokens.d.ts +23 -0
- package/dist/src/vite/appTokens.js +275 -0
- package/dist/src/vite/builtTexts.d.ts +10 -0
- package/dist/src/vite/builtTexts.js +59 -22
- package/dist/src/vite/catalogueConfig.d.ts +3 -1
- package/dist/src/vite/catalogueConfig.js +15 -3
- package/dist/src/vite/changeCoverage.d.ts +74 -0
- package/dist/src/vite/changeCoverage.js +120 -0
- package/dist/src/vite/changedRoute.d.ts +30 -0
- package/dist/src/vite/changedRoute.js +197 -0
- package/dist/src/vite/checkCode.d.ts +105 -3
- package/dist/src/vite/checkCode.js +323 -36
- package/dist/src/vite/checkoutWatch.d.ts +97 -0
- package/dist/src/vite/checkoutWatch.js +287 -0
- package/dist/src/vite/closeWatch.d.ts +8 -0
- package/dist/src/vite/closeWatch.js +1 -1
- package/dist/src/vite/componentCache.d.ts +8 -0
- package/dist/src/vite/componentCache.js +66 -0
- package/dist/src/vite/componentGraph.d.ts +71 -0
- package/dist/src/vite/componentGraph.js +133 -0
- package/dist/src/vite/componentRules.d.ts +33 -0
- package/dist/src/vite/componentRules.js +105 -0
- package/dist/src/vite/componentScan.d.ts +69 -0
- package/dist/src/vite/componentScan.js +418 -0
- package/dist/src/vite/compositionCheck.d.ts +15 -0
- package/dist/src/vite/compositionCheck.js +243 -0
- package/dist/src/vite/config.d.ts +32 -1
- package/dist/src/vite/configFile.d.ts +14 -2
- package/dist/src/vite/configFile.js +124 -40
- package/dist/src/vite/configKeys.d.ts +15 -0
- package/dist/src/vite/configKeys.js +171 -0
- package/dist/src/vite/configLoadError.d.ts +23 -0
- package/dist/src/vite/configLoadError.js +71 -0
- package/dist/src/vite/cssDeclarations.d.ts +71 -0
- package/dist/src/vite/cssDeclarations.js +290 -0
- package/dist/src/vite/cssImports.d.ts +14 -0
- package/dist/src/vite/cssImports.js +48 -0
- package/dist/src/vite/cssReferences.d.ts +54 -0
- package/dist/src/vite/cssReferences.js +157 -0
- package/dist/src/vite/cssTokenValues.d.ts +50 -0
- package/dist/src/vite/cssTokenValues.js +233 -0
- package/dist/src/vite/designTokens.d.ts +24 -0
- package/dist/src/vite/designTokens.js +5 -1
- package/dist/src/vite/docsExtractor.d.ts +9 -3
- package/dist/src/vite/docsExtractor.js +11 -3
- package/dist/src/vite/docsProgram.d.ts +17 -4
- package/dist/src/vite/docsProgram.js +52 -11
- package/dist/src/vite/docsWorker.js +7 -2
- package/dist/src/vite/emptyStoryGlobs.d.ts +41 -0
- package/dist/src/vite/emptyStoryGlobs.js +52 -0
- package/dist/src/vite/fileImports.d.ts +17 -0
- package/dist/src/vite/fileImports.js +57 -0
- package/dist/src/vite/findComponent.d.ts +10 -2
- package/dist/src/vite/findComponent.js +27 -22
- package/dist/src/vite/findRoute.js +3 -2
- package/dist/src/vite/forcedStates.d.ts +9 -2
- package/dist/src/vite/forcedStates.js +12 -3
- package/dist/src/vite/forgebookPlugin.d.ts +2 -0
- package/dist/src/vite/forgebookPlugin.js +52 -72
- package/dist/src/vite/frameErrors.d.ts +19 -0
- package/dist/src/vite/frameErrors.js +70 -0
- package/dist/src/vite/framesServer.d.ts +12 -0
- package/dist/src/vite/framesServer.js +21 -4
- package/dist/src/vite/functionComponentDocs.js +81 -12
- package/dist/src/vite/generatedModules.js +4 -2
- package/dist/src/vite/gitChange.d.ts +38 -5
- package/dist/src/vite/gitChange.js +71 -11
- package/dist/src/vite/hiddenStoryFiles.d.ts +23 -0
- package/dist/src/vite/hiddenStoryFiles.js +107 -0
- package/dist/src/vite/hotSnippets.d.ts +38 -14
- package/dist/src/vite/hotSnippets.js +137 -39
- package/dist/src/vite/importedNames.d.ts +37 -0
- package/dist/src/vite/importedNames.js +138 -0
- package/dist/src/vite/indexFields.d.ts +6 -0
- package/dist/src/vite/indexFields.js +21 -0
- package/dist/src/vite/indexStoryFile.d.ts +8 -1
- package/dist/src/vite/indexStoryFile.js +22 -157
- package/dist/src/vite/jsxCallSites.d.ts +33 -0
- package/dist/src/vite/jsxCallSites.js +200 -0
- package/dist/src/vite/jsxInScripts.d.ts +67 -0
- package/dist/src/vite/jsxInScripts.js +138 -0
- package/dist/src/vite/jsxTree.d.ts +20 -0
- package/dist/src/vite/jsxTree.js +163 -0
- package/dist/src/vite/lineAndColumn.d.ts +13 -0
- package/dist/src/vite/lineAndColumn.js +18 -0
- package/dist/src/vite/lookAlikes.d.ts +65 -0
- package/dist/src/vite/lookAlikes.js +228 -0
- package/dist/src/vite/nearestToken.d.ts +17 -0
- package/dist/src/vite/nearestToken.js +9 -2
- package/dist/src/vite/packageEntries.d.ts +42 -0
- package/dist/src/vite/packageEntries.js +127 -0
- package/dist/src/vite/pages.d.ts +9 -1
- package/dist/src/vite/pages.js +108 -4
- package/dist/src/vite/pluginConfig.js +4 -0
- package/dist/src/vite/pluginIds.d.ts +2 -0
- package/dist/src/vite/pluginIds.js +5 -1
- package/dist/src/vite/pluginModules.d.ts +81 -11
- package/dist/src/vite/pluginModules.js +109 -21
- package/dist/src/vite/prebundled.d.ts +57 -15
- package/dist/src/vite/prebundled.js +80 -0
- package/dist/src/vite/previewTags.d.ts +25 -0
- package/dist/src/vite/previewTags.js +56 -0
- package/dist/src/vite/projectFiles.d.ts +54 -0
- package/dist/src/vite/projectFiles.js +116 -0
- package/dist/src/vite/projectPostcss.d.ts +70 -0
- package/dist/src/vite/projectPostcss.js +250 -0
- package/dist/src/vite/propDocs.d.ts +12 -0
- package/dist/src/vite/propDocs.js +130 -58
- package/dist/src/vite/propKind.d.ts +40 -0
- package/dist/src/vite/propKind.js +71 -0
- package/dist/src/vite/propTypeNotes.d.ts +22 -0
- package/dist/src/vite/propTypeNotes.js +51 -0
- package/dist/src/vite/publishedExports.d.ts +27 -0
- package/dist/src/vite/publishedExports.js +298 -0
- package/dist/src/vite/realFolder.d.ts +6 -0
- package/dist/src/vite/realFolder.js +25 -0
- package/dist/src/vite/refsConfig.d.ts +39 -0
- package/dist/src/vite/refsConfig.js +54 -0
- package/dist/src/vite/reuseCheck.d.ts +45 -0
- package/dist/src/vite/reuseCheck.js +260 -0
- package/dist/src/vite/runningVersions.d.ts +33 -0
- package/dist/src/vite/runningVersions.js +25 -0
- package/dist/src/vite/scriptProblems.d.ts +60 -0
- package/dist/src/vite/scriptProblems.js +155 -0
- package/dist/src/vite/searchModule.js +3 -2
- package/dist/src/vite/searchRoute.js +4 -2
- package/dist/src/vite/shapeDocs.d.ts +36 -0
- package/dist/src/vite/shapeDocs.js +177 -0
- package/dist/src/vite/singleFileComponent.d.ts +17 -0
- package/dist/src/vite/singleFileComponent.js +83 -0
- package/dist/src/vite/sourceText.d.ts +34 -0
- package/dist/src/vite/sourceText.js +72 -0
- package/dist/src/vite/sourceTokens.d.ts +7 -0
- package/dist/src/vite/sourceTokens.js +7 -2
- package/dist/src/vite/stackLines.d.ts +49 -0
- package/dist/src/vite/stackLines.js +96 -0
- package/dist/src/vite/storyCode.d.ts +22 -7
- package/dist/src/vite/storyCode.js +263 -37
- package/dist/src/vite/storyCoverage.d.ts +48 -0
- package/dist/src/vite/storyCoverage.js +179 -0
- package/dist/src/vite/storyFilesModule.d.ts +48 -3
- package/dist/src/vite/storyFilesModule.js +105 -15
- package/dist/src/vite/storyPatterns.d.ts +31 -0
- package/dist/src/vite/storyPatterns.js +140 -5
- package/dist/src/vite/storyReach.d.ts +10 -2
- package/dist/src/vite/storyReach.js +15 -11
- package/dist/src/vite/storyTopLevel.d.ts +51 -0
- package/dist/src/vite/storyTopLevel.js +146 -0
- package/dist/src/vite/storylessRoutes.d.ts +4 -3
- package/dist/src/vite/storylessRoutes.js +210 -19
- package/dist/src/vite/switchValuesCheck.d.ts +19 -0
- package/dist/src/vite/switchValuesCheck.js +164 -0
- package/dist/src/vite/switchesDocument.d.ts +15 -0
- package/dist/src/vite/switchesDocument.js +47 -0
- package/dist/src/vite/tailwindConfigTokens.d.ts +41 -0
- package/dist/src/vite/tailwindConfigTokens.js +306 -0
- package/dist/src/vite/textImports.d.ts +15 -0
- package/dist/src/vite/textImports.js +58 -0
- package/dist/src/vite/textModules.d.ts +6 -5
- package/dist/src/vite/textModules.js +13 -8
- package/dist/src/vite/tokenAnswers.d.ts +6 -2
- package/dist/src/vite/tokenAnswers.js +11 -7
- package/dist/src/vite/typeParameters.d.ts +83 -0
- package/dist/src/vite/typeParameters.js +270 -0
- package/dist/src/vite/unionProps.d.ts +37 -0
- package/dist/src/vite/unionProps.js +121 -0
- package/dist/src/vite/unresolvedTokens.d.ts +20 -0
- package/dist/src/vite/unresolvedTokens.js +193 -0
- package/dist/src/vite/usageGraph.js +10 -52
- package/dist/src/vite/usageGuidance.d.ts +9 -2
- package/dist/src/vite/usageGuidance.js +36 -8
- package/dist/src/vite/usageImports.d.ts +35 -0
- package/dist/src/vite/usageImports.js +280 -0
- package/dist/src/vite/visibilityRoute.d.ts +16 -0
- package/dist/src/vite/visibilityRoute.js +320 -0
- package/dist/src/worstCase.d.ts +2 -0
- package/dist/src/worstCase.js +2 -0
- package/package.json +28 -8
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a file's text imports and what it exports under another name, read with patterns and no parser: the audit's story
|
|
3
|
+
* coverage (`storyCoverage.ts`) reads every file of a project, single-file components among them, in a moment.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Every pattern is bounded and never matches the same characters two ways, since a project's files can be crafted: a run of
|
|
7
|
+
* spaces taken both by a `\s+` and by the clause after it would make one file take seconds.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
/** One name an import takes: its name in the module (`default`, `*` for all of it) and in the file. */
|
|
12
|
+
export type ImportedName = {
|
|
13
|
+
/** Its name in the module: `default`, `*` for the whole module, or an export's name. */
|
|
14
|
+
readonly imported: string;
|
|
15
|
+
/** Its name in the importing file; empty when it has none (`import("./x")`). */
|
|
16
|
+
readonly local: string;
|
|
17
|
+
};
|
|
18
|
+
/** What a file imports from one module. */
|
|
19
|
+
export type FileImport = {
|
|
20
|
+
/** The module, as written. */
|
|
21
|
+
readonly specifier: string;
|
|
22
|
+
/** The names taken from it. */
|
|
23
|
+
readonly names: readonly ImportedName[];
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* What a file's text imports: static and dynamic imports and `require`, with the members a namespace is used for.
|
|
27
|
+
*
|
|
28
|
+
* @param text - the file's text.
|
|
29
|
+
*/
|
|
30
|
+
export declare const importsOf: (text: string) => FileImport[];
|
|
31
|
+
/**
|
|
32
|
+
* The names a file exports its own declarations under, when they differ: `export { Root as Dialog }` maps `Dialog` to
|
|
33
|
+
* `Root`.
|
|
34
|
+
*
|
|
35
|
+
* @param text - the file's text.
|
|
36
|
+
*/
|
|
37
|
+
export declare const exportAliasesOf: (text: string) => ReadonlyMap<string, string>;
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a file's text imports and what it exports under another name, read with patterns and no parser: the audit's story
|
|
3
|
+
* coverage (`storyCoverage.ts`) reads every file of a project, single-file components among them, in a moment.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Every pattern is bounded and never matches the same characters two ways, since a project's files can be crafted: a run of
|
|
7
|
+
* spaces taken both by a `\s+` and by the clause after it would make one file take seconds.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* An import of values: `import A, { B as C } from "x"`; types only are left out. `import` and its first space are taken
|
|
13
|
+
* once, and the clause takes everything up to one space before `from`, comments in braces too, but never another
|
|
14
|
+
* `import`: an `import` with no `from` would otherwise be read again from every later one.
|
|
15
|
+
*/
|
|
16
|
+
const STATIC_IMPORT = /\bimport\s(?!\s*type\s)((?:(?!\bimport\b)[^"';]){1,2000}?)\sfrom\s*["']([^"'\n]{1,500})["']/g;
|
|
17
|
+
/** A dynamic import, which takes the whole module. */
|
|
18
|
+
const DYNAMIC_IMPORT = /\bimport\(\s*["']([^"'\n]{1,500})["']\s*\)/g;
|
|
19
|
+
/** A `require`; what it is given to is read backwards from it, so no pattern is tried at every character before one. */
|
|
20
|
+
const REQUIRE = /\brequire\(\s*["']([^"'\n]{1,500})["']\s*\)/g;
|
|
21
|
+
/** How far back from a `require` its binding is looked for. */
|
|
22
|
+
const MOST_BACK = 2000;
|
|
23
|
+
/** An export of local names, without `from`: `export { Root as Dialog }`. */
|
|
24
|
+
const LOCAL_EXPORT = /\bexport\s{0,20}\{([^{}]{0,2000})\}(?!\s{0,20}from\b)/g;
|
|
25
|
+
/** Comments, which an import's braces may hold. */
|
|
26
|
+
const COMMENT = /\/\*[\s\S]{0,2000}?\*\/|\/\/[^\n]{0,2000}/g;
|
|
27
|
+
/** The names a list in braces takes: `A, B as C, type D`, with `separator` between a name and its new one. */
|
|
28
|
+
const bracedNames = (list, separator) => list
|
|
29
|
+
.replace(COMMENT, "")
|
|
30
|
+
.split(",")
|
|
31
|
+
.flatMap((part) => {
|
|
32
|
+
const [imported, local] = part.trim().split(separator);
|
|
33
|
+
if (imported === undefined || imported === "" || imported.startsWith("type "))
|
|
34
|
+
return [];
|
|
35
|
+
return [{ imported: imported.trim(), local: (local ?? imported).trim() }];
|
|
36
|
+
});
|
|
37
|
+
/** The names an import's clause takes. */
|
|
38
|
+
const clauseNames = (clause) => {
|
|
39
|
+
const braces = /\{([^}]*)\}/.exec(clause);
|
|
40
|
+
const names = bracedNames(braces?.[1] ?? "", /\s+as\s+/);
|
|
41
|
+
const rest = clause.replace(COMMENT, "").replace(/\{[^}]*\}/, "");
|
|
42
|
+
const namespace = /\*\s*as\s+([\w$]+)/.exec(rest);
|
|
43
|
+
if (namespace?.[1] !== undefined)
|
|
44
|
+
names.push({ imported: "*", local: namespace[1] });
|
|
45
|
+
const first = /^\s*([\w$]+)\s*(?:,|$)/.exec(rest);
|
|
46
|
+
if (first?.[1] !== undefined)
|
|
47
|
+
names.push({ imported: "default", local: first[1] });
|
|
48
|
+
return names;
|
|
49
|
+
};
|
|
50
|
+
/** A member written after a name, `UI.Button`, starting only where a name starts so each is tried once. */
|
|
51
|
+
const MEMBER = /(?<![\w$.])([A-Za-z_$][\w$]{0,200})\.([A-Za-z_$][\w$]{0,200})/g;
|
|
52
|
+
/**
|
|
53
|
+
* The members a file writes after each name: `UI.Button` and `<UI.Button>` list `Button` under `UI`. Read in one pass,
|
|
54
|
+
* since a file can import many namespaces.
|
|
55
|
+
*
|
|
56
|
+
* @param text - the file's text.
|
|
57
|
+
*/
|
|
58
|
+
const membersByName = (text) => {
|
|
59
|
+
const members = new Map();
|
|
60
|
+
for (const match of text.matchAll(MEMBER)) {
|
|
61
|
+
const [, owner = "", member = ""] = match;
|
|
62
|
+
members.set(owner, (members.get(owner) ?? new Set()).add(member));
|
|
63
|
+
}
|
|
64
|
+
return members;
|
|
65
|
+
};
|
|
66
|
+
/** An import with the members its namespaces are used for added: a barrel's namespace names what it takes. */
|
|
67
|
+
const withMembers = (found, members) => ({
|
|
68
|
+
...found,
|
|
69
|
+
names: found.names.flatMap((name) => name.imported === "*" && name.local !== ""
|
|
70
|
+
? [
|
|
71
|
+
name,
|
|
72
|
+
...[...(members().get(name.local) ?? [])].map((member) => ({ imported: member, local: member }))
|
|
73
|
+
]
|
|
74
|
+
: [name])
|
|
75
|
+
});
|
|
76
|
+
/** A character a name is written with. */
|
|
77
|
+
const NAME_CHARACTER = /[\w$]/;
|
|
78
|
+
/** The name a text ends with, read backwards so a long text costs only its name; empty when it ends otherwise. */
|
|
79
|
+
const trailingName = (text) => {
|
|
80
|
+
let start = text.length;
|
|
81
|
+
while (start > 0 && text.length - start < 200 && NAME_CHARACTER.test(text.charAt(start - 1)))
|
|
82
|
+
start -= 1;
|
|
83
|
+
return text.slice(start);
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* What a `require` takes, from the text before it: `const { A, B: C } =` takes names, `const x =` the whole module as
|
|
87
|
+
* `x`, and nothing the whole module unnamed.
|
|
88
|
+
*
|
|
89
|
+
* @param before - the text just before `require`.
|
|
90
|
+
*/
|
|
91
|
+
const requiredNames = (before) => {
|
|
92
|
+
const head = before.trimEnd();
|
|
93
|
+
if (!head.endsWith("="))
|
|
94
|
+
return [{ imported: "*", local: "" }];
|
|
95
|
+
const target = head.slice(0, -1).trimEnd();
|
|
96
|
+
if (target.endsWith("}")) {
|
|
97
|
+
const open = target.lastIndexOf("{");
|
|
98
|
+
if (open !== -1)
|
|
99
|
+
return bracedNames(target.slice(open + 1, -1), /\s*:\s*/);
|
|
100
|
+
}
|
|
101
|
+
return [{ imported: "*", local: trailingName(target) }];
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* What a file's text imports: static and dynamic imports and `require`, with the members a namespace is used for.
|
|
105
|
+
*
|
|
106
|
+
* @param text - the file's text.
|
|
107
|
+
*/
|
|
108
|
+
export const importsOf = (text) => {
|
|
109
|
+
let read;
|
|
110
|
+
const members = () => {
|
|
111
|
+
read ??= membersByName(text);
|
|
112
|
+
return read;
|
|
113
|
+
};
|
|
114
|
+
return [
|
|
115
|
+
...[...text.matchAll(STATIC_IMPORT)].map((match) => ({
|
|
116
|
+
specifier: match[2] ?? "",
|
|
117
|
+
names: clauseNames(match[1] ?? "")
|
|
118
|
+
})),
|
|
119
|
+
...[...text.matchAll(DYNAMIC_IMPORT)].map((match) => ({
|
|
120
|
+
specifier: match[1] ?? "",
|
|
121
|
+
names: [{ imported: "*", local: "" }]
|
|
122
|
+
})),
|
|
123
|
+
...[...text.matchAll(REQUIRE)].map((match) => ({
|
|
124
|
+
specifier: match[1] ?? "",
|
|
125
|
+
names: requiredNames(text.slice(Math.max(0, match.index - MOST_BACK), match.index))
|
|
126
|
+
}))
|
|
127
|
+
].map((found) => withMembers(found, members));
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* The names a file exports its own declarations under, when they differ: `export { Root as Dialog }` maps `Dialog` to
|
|
131
|
+
* `Root`.
|
|
132
|
+
*
|
|
133
|
+
* @param text - the file's text.
|
|
134
|
+
*/
|
|
135
|
+
export const exportAliasesOf = (text) => new Map([...text.matchAll(LOCAL_EXPORT)]
|
|
136
|
+
.flatMap((match) => bracedNames(match[1] ?? "", /\s+as\s+/))
|
|
137
|
+
.filter(({ imported, local }) => imported !== local)
|
|
138
|
+
.map(({ imported, local }) => [local, imported]));
|
|
@@ -59,3 +59,9 @@ export declare const heightOf: (fields: Fields) => number | undefined | Error;
|
|
|
59
59
|
export declare const designOf: (fields: Fields) => FigmaLink | undefined | string | Error;
|
|
60
60
|
/** `parameters.docs.description.<kind>`, when written as a plain string. */
|
|
61
61
|
export declare const docsDescription: (fields: Fields, kind: "story" | "component") => string | undefined;
|
|
62
|
+
/**
|
|
63
|
+
* `parameters.status`, as the status addons of Storybook write it (`"beta"`, `{ type: "beta" }`, `{ type: ["beta"] }`),
|
|
64
|
+
* read as tags so a catalogue moved from Storybook keeps its statuses: `undefined` when none. Never a problem: the
|
|
65
|
+
* parameter is another tool's, so a value written otherwise or by code is left alone.
|
|
66
|
+
*/
|
|
67
|
+
export declare const statusTagsOf: (fields: Fields) => readonly string[] | undefined;
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @module
|
|
7
7
|
*/
|
|
8
|
+
import { TOOL_TAGS } from "../storyTagNames.js";
|
|
8
9
|
import { figmaLink } from "./figmaLink.js";
|
|
9
10
|
/**
|
|
10
11
|
* An expression without the TypeScript wrappers a meta is often written with (`satisfies Meta<…>`, `as Meta`).
|
|
@@ -147,3 +148,23 @@ export const docsDescription = (fields, kind) => {
|
|
|
147
148
|
const text = propertyValue(description, kind);
|
|
148
149
|
return text?.type === "Literal" && typeof text.value === "string" ? text.value : undefined;
|
|
149
150
|
};
|
|
151
|
+
/** The strings an expression writes plainly: a string, or a list of strings; none for anything else. */
|
|
152
|
+
const plainStrings = (expression) => {
|
|
153
|
+
if (expression?.type === "Literal")
|
|
154
|
+
return typeof expression.value === "string" ? [expression.value] : undefined;
|
|
155
|
+
if (expression?.type !== "ArrayExpression")
|
|
156
|
+
return undefined;
|
|
157
|
+
const strings = expression.elements.flatMap((element) => element?.type === "Literal" && typeof element.value === "string" ? [element.value] : []);
|
|
158
|
+
return strings.length === expression.elements.length ? strings : undefined;
|
|
159
|
+
};
|
|
160
|
+
/**
|
|
161
|
+
* `parameters.status`, as the status addons of Storybook write it (`"beta"`, `{ type: "beta" }`, `{ type: ["beta"] }`),
|
|
162
|
+
* read as tags so a catalogue moved from Storybook keeps its statuses: `undefined` when none. Never a problem: the
|
|
163
|
+
* parameter is another tool's, so a value written otherwise or by code is left alone.
|
|
164
|
+
*/
|
|
165
|
+
export const statusTagsOf = (fields) => {
|
|
166
|
+
const status = parameter(fields, "status");
|
|
167
|
+
const written = status?.type === "ObjectExpression" ? propertyValue(status, "type") : status;
|
|
168
|
+
// a status names what a component is: never a tool's tag, which would list or test a story its meta left out
|
|
169
|
+
return plainStrings(written)?.filter((tag) => tag !== "" && !tag.startsWith("!") && !TOOL_TAGS.has(tag));
|
|
170
|
+
};
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
* The sidebar lists every story before any is loaded, so the index comes from the code itself, parsed with Vite's
|
|
7
7
|
* parser (the same files Vite compiles). It reads a meta written inline or as a constant (`export default meta`,
|
|
8
8
|
* `export { meta as default }`), `includeStories`, `excludeStories`, `__namedExportsOrder`, the meta's and the
|
|
9
|
-
* stories' `tags`, the TSDoc above a story, and
|
|
9
|
+
* stories' `tags` (with `parameters.status`, the status addons' way of writing one), the TSDoc above a story, and
|
|
10
|
+
* `parameters.docs.description`.
|
|
10
11
|
*
|
|
11
12
|
* Every named export the meta lets in is a story, as Storybook's indexer has it, whatever writes its value: an object
|
|
12
13
|
* (CSF 3), a function with its properties assigned after it (CSF 2: `A.storyName`, `A.parameters`), a template bound
|
|
@@ -33,6 +34,12 @@ export type IndexOptions = {
|
|
|
33
34
|
/** The title from the file's path (`Inputs/Select`); none when the file's place gives none. */
|
|
34
35
|
readonly autoTitle?: string;
|
|
35
36
|
};
|
|
37
|
+
/**
|
|
38
|
+
* Tags as Storybook combines them: the meta's, then the story's, a `!name` taking `name` away.
|
|
39
|
+
*
|
|
40
|
+
* @param lists - the tag lists, outermost first.
|
|
41
|
+
*/
|
|
42
|
+
export declare const combinedTags: (lists: readonly (readonly string[] | undefined)[]) => readonly string[];
|
|
36
43
|
/**
|
|
37
44
|
* A story file's meta object, as the index reads it: inline or a constant of the file, exported by default or by name.
|
|
38
45
|
*
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
* The sidebar lists every story before any is loaded, so the index comes from the code itself, parsed with Vite's
|
|
7
7
|
* parser (the same files Vite compiles). It reads a meta written inline or as a constant (`export default meta`,
|
|
8
8
|
* `export { meta as default }`), `includeStories`, `excludeStories`, `__namedExportsOrder`, the meta's and the
|
|
9
|
-
* stories' `tags`, the TSDoc above a story, and
|
|
9
|
+
* stories' `tags` (with `parameters.status`, the status addons' way of writing one), the TSDoc above a story, and
|
|
10
|
+
* `parameters.docs.description`.
|
|
10
11
|
*
|
|
11
12
|
* Every named export the meta lets in is a story, as Storybook's indexer has it, whatever writes its value: an object
|
|
12
13
|
* (CSF 3), a function with its properties assigned after it (CSF 2: `A.storyName`, `A.parameters`), a template bound
|
|
@@ -27,10 +28,11 @@
|
|
|
27
28
|
* @module
|
|
28
29
|
*/
|
|
29
30
|
import { indexedParameters } from "./indexedParameters.js";
|
|
30
|
-
import { controlsOf, designOf, docsDescription, groupOf, heightOf, objectFields, parameter, propertyValue, propGroupsOf, stringField, stringListOf
|
|
31
|
-
import {
|
|
31
|
+
import { controlsOf, designOf, docsDescription, groupOf, heightOf, objectFields, parameter, propertyValue, propGroupsOf, statusTagsOf, stringField, stringListOf } from "./indexFields.js";
|
|
32
|
+
import { lineAndColumn } from "./lineAndColumn.js";
|
|
32
33
|
import { parseStoryFile } from "./storyParse.js";
|
|
33
34
|
import { playField } from "./storyPlay.js";
|
|
35
|
+
import { metaObject, objectOf, storyExports, topLevelOf } from "./storyTopLevel.js";
|
|
34
36
|
/**
|
|
35
37
|
* The first sentence of the TSDoc right above a statement, without its tags; `undefined` when there is none.
|
|
36
38
|
*
|
|
@@ -60,7 +62,7 @@ const leadingSentence = (text, comments, start) => {
|
|
|
60
62
|
*
|
|
61
63
|
* @param lists - the tag lists, outermost first.
|
|
62
64
|
*/
|
|
63
|
-
const combinedTags = (lists) => {
|
|
65
|
+
export const combinedTags = (lists) => {
|
|
64
66
|
const tags = new Set();
|
|
65
67
|
for (const tag of lists.flatMap((list) => list ?? [])) {
|
|
66
68
|
if (tag.startsWith("!")) {
|
|
@@ -101,13 +103,14 @@ const identityOf = (own) => {
|
|
|
101
103
|
};
|
|
102
104
|
/**
|
|
103
105
|
* What the index reads of one story: its own id (`parameters.__id`), its name (`name`, or CSF 2's `storyName`),
|
|
104
|
-
* controls, group, height, design, whether it is the demo, and its tags under the meta's.
|
|
106
|
+
* controls, group, height, design, whether it is the demo, and its tags under the meta's. A story's
|
|
107
|
+
* `parameters.status` replaces the meta's, as a story's parameter does.
|
|
105
108
|
*
|
|
106
109
|
* @param fields - the story's fields: its own, for its name and id, and all it has, for the rest.
|
|
107
|
-
* @param
|
|
110
|
+
* @param meta - the meta's tags and its `parameters.status`, as written.
|
|
108
111
|
* @param notes - the file's notes, which a design left out adds to.
|
|
109
112
|
*/
|
|
110
|
-
const storyFields = ({ own, fields },
|
|
113
|
+
const storyFields = ({ own, fields }, meta, notes) => {
|
|
111
114
|
const controls = controlsOf(fields);
|
|
112
115
|
if (controls instanceof Error)
|
|
113
116
|
return controls;
|
|
@@ -125,7 +128,7 @@ const storyFields = ({ own, fields }, metaTags, notes) => {
|
|
|
125
128
|
const ownTags = stringListOf(fields, "tags");
|
|
126
129
|
if (ownTags instanceof Error)
|
|
127
130
|
return ownTags;
|
|
128
|
-
const tags = combinedTags([
|
|
131
|
+
const tags = combinedTags([meta.tags, statusTagsOf(fields) ?? meta.status, ownTags]);
|
|
129
132
|
const main = parameter(fields, "main");
|
|
130
133
|
const flags = indexedParameters(fields);
|
|
131
134
|
if (flags instanceof Error)
|
|
@@ -141,68 +144,6 @@ const storyFields = ({ own, fields }, metaTags, notes) => {
|
|
|
141
144
|
...(tags.length > 0 ? { tags } : {})
|
|
142
145
|
};
|
|
143
146
|
};
|
|
144
|
-
/**
|
|
145
|
-
* The property a top-level statement assigns to a name, when it assigns one.
|
|
146
|
-
*
|
|
147
|
-
* @param statement - the statement.
|
|
148
|
-
*/
|
|
149
|
-
const assignedProperty = (statement) => {
|
|
150
|
-
if (statement.type !== "ExpressionStatement")
|
|
151
|
-
return undefined;
|
|
152
|
-
const { expression } = statement;
|
|
153
|
-
if (expression.type !== "AssignmentExpression" || expression.left.type !== "MemberExpression")
|
|
154
|
-
return undefined;
|
|
155
|
-
const { object, property } = expression.left;
|
|
156
|
-
if (object.type !== "Identifier" || property.type !== "Identifier")
|
|
157
|
-
return undefined;
|
|
158
|
-
return { name: object.name, property: property.name, value: unwrapped(expression.right) };
|
|
159
|
-
};
|
|
160
|
-
/**
|
|
161
|
-
* The constants a top-level statement declares with a value, exported or not.
|
|
162
|
-
*
|
|
163
|
-
* @param statement - the statement.
|
|
164
|
-
*/
|
|
165
|
-
const declaredBy = (statement) => {
|
|
166
|
-
const declaration = statement.type === "ExportNamedDeclaration" ? statement.declaration : statement;
|
|
167
|
-
if (declaration?.type !== "VariableDeclaration")
|
|
168
|
-
return [];
|
|
169
|
-
return declaration.declarations.flatMap(({ id, init }) => id.type === "Identifier" && init !== null ? [{ name: id.name, value: unwrapped(init) }] : []);
|
|
170
|
-
};
|
|
171
|
-
/**
|
|
172
|
-
* The file's top level: its constants, exported or not, and the properties assigned to names.
|
|
173
|
-
*
|
|
174
|
-
* @param program - the parsed file.
|
|
175
|
-
*/
|
|
176
|
-
const topLevelOf = (program) => {
|
|
177
|
-
const values = new Map();
|
|
178
|
-
const assigned = new Map();
|
|
179
|
-
for (const statement of program.body) {
|
|
180
|
-
for (const declared of declaredBy(statement))
|
|
181
|
-
values.set(declared.name, declared.value);
|
|
182
|
-
const property = assignedProperty(statement);
|
|
183
|
-
if (property === undefined)
|
|
184
|
-
continue;
|
|
185
|
-
const properties = assigned.get(property.name) ?? new Map();
|
|
186
|
-
properties.set(property.property, property.value);
|
|
187
|
-
assigned.set(property.name, properties);
|
|
188
|
-
}
|
|
189
|
-
return { values, assigned };
|
|
190
|
-
};
|
|
191
|
-
/**
|
|
192
|
-
* The object a value is, or the one the constants it names lead to (`export const B = A`); `undefined` for any other
|
|
193
|
-
* value, or for names that lead back to themselves.
|
|
194
|
-
*
|
|
195
|
-
* @param top - the file's top level.
|
|
196
|
-
* @param value - the value.
|
|
197
|
-
* @param seen - the names followed so far.
|
|
198
|
-
*/
|
|
199
|
-
const objectOf = (top, value, seen = new Set()) => {
|
|
200
|
-
if (value?.type === "ObjectExpression")
|
|
201
|
-
return value;
|
|
202
|
-
if (value?.type !== "Identifier" || seen.has(value.name))
|
|
203
|
-
return undefined;
|
|
204
|
-
return objectOf(top, top.values.get(value.name), new Set([...seen, value.name]));
|
|
205
|
-
};
|
|
206
147
|
/**
|
|
207
148
|
* A story's fields, by the export that names it: what is assigned to it after its declaration (`A.storyName = "…"`),
|
|
208
149
|
* else the object its value is or names. A story from another file has none.
|
|
@@ -221,73 +162,6 @@ const storyFieldsOf = (top, named) => {
|
|
|
221
162
|
const read = (from) => (name) => assigned?.get(name) ?? (from === undefined ? undefined : propertyValue(from, name));
|
|
222
163
|
return { own: read(declared), fields: read(object) };
|
|
223
164
|
};
|
|
224
|
-
/**
|
|
225
|
-
* Whether an export is a story, as the meta's `includeStories` and `excludeStories` say (a list of names or a regular
|
|
226
|
-
* expression, written plainly).
|
|
227
|
-
*
|
|
228
|
-
* @param meta - the meta's fields.
|
|
229
|
-
* @param exportName - the export.
|
|
230
|
-
*/
|
|
231
|
-
const isIncluded = (meta, exportName) => {
|
|
232
|
-
const matches = (name) => {
|
|
233
|
-
const filter = meta(name);
|
|
234
|
-
if (filter?.type === "ArrayExpression")
|
|
235
|
-
return filter.elements.some((element) => element?.type === "Literal" && element.value === exportName);
|
|
236
|
-
if (filter?.type === "Literal" && "regex" in filter && filter.regex !== undefined)
|
|
237
|
-
return new RegExp(filter.regex.pattern, filter.regex.flags).test(exportName);
|
|
238
|
-
return undefined;
|
|
239
|
-
};
|
|
240
|
-
return matches("includeStories") !== false && matches("excludeStories") !== true;
|
|
241
|
-
};
|
|
242
|
-
/**
|
|
243
|
-
* The order `__namedExportsOrder` writes, when the file writes one plainly.
|
|
244
|
-
*
|
|
245
|
-
* @param top - the file's top level.
|
|
246
|
-
*/
|
|
247
|
-
const exportsOrder = (top) => {
|
|
248
|
-
const order = top.values.get("__namedExportsOrder");
|
|
249
|
-
if (order?.type !== "ArrayExpression")
|
|
250
|
-
return undefined;
|
|
251
|
-
return order.elements.flatMap((element) => element?.type === "Literal" && typeof element.value === "string" ? [element.value] : []);
|
|
252
|
-
};
|
|
253
|
-
/**
|
|
254
|
-
* The meta exported by name (`export { meta as default }`), when it is a constant of the file written as an object.
|
|
255
|
-
*
|
|
256
|
-
* @param program - the parsed file.
|
|
257
|
-
* @param top - the file's top level.
|
|
258
|
-
*/
|
|
259
|
-
const namedMeta = (program, top) => {
|
|
260
|
-
for (const statement of program.body) {
|
|
261
|
-
if (statement.type !== "ExportNamedDeclaration" || statement.source !== null)
|
|
262
|
-
continue;
|
|
263
|
-
const specifier = statement.specifiers.find((each) => moduleName(each.exported) === "default");
|
|
264
|
-
if (specifier === undefined)
|
|
265
|
-
continue;
|
|
266
|
-
const value = top.values.get(moduleName(specifier.local));
|
|
267
|
-
return value?.type === "ObjectExpression" ? value : undefined;
|
|
268
|
-
}
|
|
269
|
-
return undefined;
|
|
270
|
-
};
|
|
271
|
-
/**
|
|
272
|
-
* The meta's object: the default export, inline or a constant of the file (`export default meta`,
|
|
273
|
-
* `export { meta as default }`).
|
|
274
|
-
*
|
|
275
|
-
* @param program - the parsed file.
|
|
276
|
-
* @param top - the file's top level.
|
|
277
|
-
*/
|
|
278
|
-
const metaObject = (program, top) => {
|
|
279
|
-
const meta = program.body.find((statement) => statement.type === "ExportDefaultDeclaration");
|
|
280
|
-
if (meta === undefined)
|
|
281
|
-
return namedMeta(program, top);
|
|
282
|
-
const { declaration } = meta;
|
|
283
|
-
if (declaration.type === "FunctionDeclaration" ||
|
|
284
|
-
declaration.type === "ClassDeclaration" ||
|
|
285
|
-
declaration.type === "TSInterfaceDeclaration")
|
|
286
|
-
return undefined;
|
|
287
|
-
const expression = unwrapped(declaration);
|
|
288
|
-
const value = expression.type === "Identifier" ? top.values.get(expression.name) : expression;
|
|
289
|
-
return value?.type === "ObjectExpression" ? value : undefined;
|
|
290
|
-
};
|
|
291
165
|
/**
|
|
292
166
|
* A story file's meta object, as the index reads it: inline or a constant of the file, exported by default or by name.
|
|
293
167
|
*
|
|
@@ -384,21 +258,6 @@ const metaFieldsOf = (meta, notes) => {
|
|
|
384
258
|
...(description === undefined ? {} : { description })
|
|
385
259
|
};
|
|
386
260
|
};
|
|
387
|
-
/**
|
|
388
|
-
* The exports that are stories, in the order of `__namedExportsOrder` when the file writes one, else of the file.
|
|
389
|
-
*
|
|
390
|
-
* @param program - the parsed file.
|
|
391
|
-
* @param top - the file's top level.
|
|
392
|
-
* @param meta - the meta's fields, for `includeStories` and `excludeStories`.
|
|
393
|
-
*/
|
|
394
|
-
const storyExports = (program, top, meta) => {
|
|
395
|
-
const exported = namedExports(program).filter(({ exportName }) => exportName !== "__namedExportsOrder" && isIncluded(meta, exportName));
|
|
396
|
-
const order = exportsOrder(top);
|
|
397
|
-
if (order === undefined)
|
|
398
|
-
return exported;
|
|
399
|
-
const rank = (name) => (order.includes(name) ? order.indexOf(name) : order.length);
|
|
400
|
-
return [...exported].sort((first, second) => rank(first.exportName) - rank(second.exportName));
|
|
401
|
-
};
|
|
402
261
|
/**
|
|
403
262
|
* The index of one story file.
|
|
404
263
|
*
|
|
@@ -410,8 +269,11 @@ const storyExports = (program, top, meta) => {
|
|
|
410
269
|
export const indexStoryFile = (file, text, options = {}) => {
|
|
411
270
|
const { program, comments, errors } = parseStoryFile(file, text);
|
|
412
271
|
const [error] = errors;
|
|
413
|
-
if (error !== undefined)
|
|
414
|
-
|
|
272
|
+
if (error !== undefined) {
|
|
273
|
+
const [label] = error.labels;
|
|
274
|
+
const place = label === undefined ? file : `${file}:${lineAndColumn(text, label.start)}`;
|
|
275
|
+
return `${place} does not parse: ${error.message}`;
|
|
276
|
+
}
|
|
415
277
|
const top = topLevelOf(program);
|
|
416
278
|
const metaNode = metaObject(program, top);
|
|
417
279
|
if (metaNode === undefined)
|
|
@@ -420,9 +282,10 @@ export const indexStoryFile = (file, text, options = {}) => {
|
|
|
420
282
|
const title = titleOf(meta, options);
|
|
421
283
|
if (typeof title === "string")
|
|
422
284
|
return `${file}: ${title}`;
|
|
423
|
-
const
|
|
424
|
-
if (
|
|
425
|
-
return `${file}: the meta's ${
|
|
285
|
+
const writtenTags = stringListOf(meta, "tags");
|
|
286
|
+
if (writtenTags instanceof Error)
|
|
287
|
+
return `${file}: the meta's ${writtenTags.message}`;
|
|
288
|
+
const metaTags = { tags: writtenTags, status: statusTagsOf(meta) };
|
|
426
289
|
const stories = [];
|
|
427
290
|
const storyNotes = [];
|
|
428
291
|
for (const named of storyExports(program, top, meta)) {
|
|
@@ -442,10 +305,12 @@ export const indexStoryFile = (file, text, options = {}) => {
|
|
|
442
305
|
if (metaFields instanceof Error)
|
|
443
306
|
return `${file}: the meta's ${metaFields.message}`;
|
|
444
307
|
const notes = [...title.notes, ...metaNotes, ...storyNotes];
|
|
308
|
+
const tags = combinedTags([metaTags.tags, metaTags.status]);
|
|
445
309
|
return {
|
|
446
310
|
title: title.title,
|
|
447
311
|
stories,
|
|
448
312
|
...metaFields,
|
|
313
|
+
...(tags.length > 0 ? { tags } : {}),
|
|
449
314
|
...(notes.length > 0 ? { notes } : {})
|
|
450
315
|
};
|
|
451
316
|
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where an application draws a JSX component, read from its program with the TypeScript checker (no code runs): each
|
|
3
|
+
* element whose tag is the component, with the props it gives a literal value. `forgebook new` takes its values from
|
|
4
|
+
* them, so a first story shows the component as the application uses it rather than with a prop's name for its text.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* Shared by the frameworks whose components are functions of their props (React, Preact, Solid). The program is the
|
|
8
|
+
* component's configuration's, read whole. Story files, tests and declaration files are left out: they are not the
|
|
9
|
+
* application. A value is kept only when it is a literal (a string, a number, `true`, `false`, `null`, a list or an
|
|
10
|
+
* object of them); one that depends on the caller's state would not mean anything in a story. A child that is plain text
|
|
11
|
+
* is `children`.
|
|
12
|
+
*
|
|
13
|
+
* @module
|
|
14
|
+
*/
|
|
15
|
+
import ts from "typescript-6";
|
|
16
|
+
import type { ExtractCallSites } from "./adapter.ts";
|
|
17
|
+
/**
|
|
18
|
+
* An expression as code a story can hold, when it is a literal: shared with the frameworks that read their templates'
|
|
19
|
+
* bindings as expressions (Vue's `:size="3"`).
|
|
20
|
+
*
|
|
21
|
+
* @param node - the expression.
|
|
22
|
+
* @param depth - how deep in a list or an object it is.
|
|
23
|
+
* @returns the code; none when it is not a literal.
|
|
24
|
+
*/
|
|
25
|
+
export declare const literalExpressionCode: (node: ts.Expression, depth?: number) => string | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Where the application draws a component a file exports.
|
|
28
|
+
*
|
|
29
|
+
* @param file - the component's file, absolute.
|
|
30
|
+
* @param name - the export's name (`default` for a default export).
|
|
31
|
+
* @returns the call sites; a message when the file or the export cannot be read.
|
|
32
|
+
*/
|
|
33
|
+
export declare const jsxCallSites: ExtractCallSites;
|