forgebook 0.3.3 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +994 -72
- package/dist/bin/forgebook/agentClient.d.ts +2 -1
- package/dist/bin/forgebook/agentClient.js +13 -6
- package/dist/bin/forgebook/agentGuide.d.ts +59 -0
- package/dist/bin/forgebook/agentGuide.js +203 -0
- package/dist/bin/forgebook/agentLoopCommands.mjs +22 -42
- package/dist/bin/forgebook/agentSetup/agentFiles.d.ts +55 -0
- package/dist/bin/forgebook/agentSetup/agentFiles.js +319 -0
- package/dist/bin/forgebook/agentSetup/assistantHooks.d.ts +71 -0
- package/dist/bin/forgebook/agentSetup/assistantHooks.js +125 -0
- package/dist/bin/forgebook/agentSetup/ciWorkflow.d.ts +23 -0
- package/dist/bin/forgebook/agentSetup/ciWorkflow.js +55 -0
- package/dist/bin/forgebook/agentSetup/drawCandidates.d.ts +25 -0
- package/dist/bin/forgebook/agentSetup/drawCandidates.js +116 -0
- package/dist/bin/forgebook/agentSetup/drawDiagnosis.d.ts +28 -0
- package/dist/bin/forgebook/agentSetup/drawDiagnosis.js +134 -0
- package/dist/bin/forgebook/agentSetup/drawRun.d.ts +91 -0
- package/dist/bin/forgebook/agentSetup/drawRun.js +353 -0
- package/dist/bin/forgebook/agentSetup/hookNames.d.ts +7 -0
- package/dist/bin/forgebook/agentSetup/hookNames.js +7 -0
- package/dist/bin/forgebook/agentSetup/initAgentSteps.d.ts +48 -0
- package/dist/bin/forgebook/agentSetup/initAgentSteps.js +104 -0
- package/dist/bin/forgebook/agentSetup/liftedProviders.d.ts +17 -0
- package/dist/bin/forgebook/agentSetup/liftedProviders.js +186 -0
- package/dist/bin/forgebook/agentSetup/projectRunner.d.ts +46 -0
- package/dist/bin/forgebook/agentSetup/projectRunner.js +85 -0
- package/dist/bin/forgebook/agentSetup/stopHook.d.ts +65 -0
- package/dist/bin/forgebook/agentSetup/stopHook.js +202 -0
- package/dist/bin/forgebook/agentSetup/uniformPicture.d.ts +7 -0
- package/dist/bin/forgebook/agentSetup/uniformPicture.js +98 -0
- package/dist/bin/forgebook/agentSetupCommands.d.mts +14 -0
- package/dist/bin/forgebook/agentSetupCommands.mjs +98 -0
- package/dist/bin/forgebook/agentText.d.ts +23 -3
- package/dist/bin/forgebook/agentText.js +182 -28
- package/dist/bin/forgebook/agents.md +20 -191
- package/dist/bin/forgebook/agentsText.js +2 -1
- package/dist/bin/forgebook/appBuild/appBuild.d.ts +59 -0
- package/dist/bin/forgebook/appBuild/appBuild.js +213 -0
- package/dist/bin/forgebook/appBuild/appViteConfig.d.ts +96 -0
- package/dist/bin/forgebook/appBuild/appViteConfig.js +320 -0
- package/dist/bin/forgebook/appBuild/tsconfigPaths.d.ts +14 -0
- package/dist/bin/forgebook/appBuild/tsconfigPaths.js +80 -0
- package/dist/bin/forgebook/auditCommand.d.mts +8 -0
- package/dist/bin/forgebook/auditCommand.mjs +75 -0
- package/dist/bin/forgebook/auditRun.d.ts +95 -0
- package/dist/bin/forgebook/auditRun.js +270 -0
- package/dist/bin/forgebook/browserRun.d.ts +21 -0
- package/dist/bin/forgebook/browserRun.js +57 -0
- package/dist/bin/forgebook/buildFailure.d.ts +7 -0
- package/dist/bin/forgebook/buildFailure.js +47 -0
- package/dist/bin/forgebook/buildWatch.d.ts +52 -0
- package/dist/bin/forgebook/buildWatch.js +137 -0
- package/dist/bin/forgebook/builtCatalogue.js +9 -5
- package/dist/bin/forgebook/catalogueCommands.d.ts +9 -0
- package/dist/bin/forgebook/catalogueCommands.js +23 -0
- package/dist/bin/forgebook/catalogueVite.d.ts +5 -1
- package/dist/bin/forgebook/catalogueVite.js +14 -6
- package/dist/bin/forgebook/commandCacheClaim.d.ts +18 -0
- package/dist/bin/forgebook/commandCacheClaim.js +170 -0
- package/dist/bin/forgebook/commandServer.d.ts +8 -0
- package/dist/bin/forgebook/commandServer.js +61 -13
- package/dist/bin/forgebook/forgebookCommands.mjs +105 -28
- package/dist/bin/forgebook/graphCommand.d.mts +8 -0
- package/dist/bin/forgebook/graphCommand.mjs +84 -0
- package/dist/bin/forgebook/guide/commands.md +62 -0
- package/dist/bin/forgebook/guide/devices.md +17 -0
- package/dist/bin/forgebook/guide/docs-pages.md +13 -0
- package/dist/bin/forgebook/guide/frameworks/angular.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/html.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/nextjs.md +23 -0
- package/dist/bin/forgebook/guide/frameworks/nuxt.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/preact.md +16 -0
- package/dist/bin/forgebook/guide/frameworks/react-native-web.md +21 -0
- package/dist/bin/forgebook/guide/frameworks/react.md +16 -0
- package/dist/bin/forgebook/guide/frameworks/solid.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/svelte.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/sveltekit.md +23 -0
- package/dist/bin/forgebook/guide/frameworks/vue.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/web-components.md +21 -0
- package/dist/bin/forgebook/guide/links.md +29 -0
- package/dist/bin/forgebook/guide/setup.md +23 -0
- package/dist/bin/forgebook/guide/stories.md +95 -0
- package/dist/bin/forgebook/guide/switches.md +43 -0
- package/dist/bin/forgebook/guideCommand.d.mts +13 -0
- package/dist/bin/forgebook/guideCommand.mjs +37 -0
- package/dist/bin/forgebook/importers/storybook.d.ts +21 -0
- package/dist/bin/forgebook/importers/storybook.js +11 -5
- package/dist/bin/forgebook/importers/storybookFrameworks.js +1 -1
- package/dist/bin/forgebook/initCommands.d.mts +11 -0
- package/dist/bin/forgebook/initCommands.mjs +51 -78
- package/dist/bin/forgebook/initConfig.d.ts +5 -3
- package/dist/bin/forgebook/initConfig.js +6 -3
- package/dist/bin/forgebook/initInstall.d.ts +15 -0
- package/dist/bin/forgebook/initInstall.js +77 -0
- package/dist/bin/forgebook/initPrint.d.ts +9 -0
- package/dist/bin/forgebook/initPrint.js +60 -0
- package/dist/bin/forgebook/initRefusals.d.ts +45 -0
- package/dist/bin/forgebook/initRefusals.js +91 -0
- package/dist/bin/forgebook/initRun.d.ts +28 -0
- package/dist/bin/forgebook/initRun.js +311 -0
- package/dist/bin/forgebook/mcpCommand.mjs +38 -4
- package/dist/bin/forgebook/mcpGraph.d.ts +13 -0
- package/dist/bin/forgebook/mcpGraph.js +24 -0
- package/dist/bin/forgebook/mcpTokens.d.ts +14 -0
- package/dist/bin/forgebook/mcpTokens.js +58 -0
- package/dist/bin/forgebook/mcpToolParts.d.ts +7 -0
- package/dist/bin/forgebook/mcpToolParts.js +10 -0
- package/dist/bin/forgebook/mcpTools.d.ts +13 -6
- package/dist/bin/forgebook/mcpTools.js +57 -90
- package/dist/bin/forgebook/mcpVerify.d.ts +16 -0
- package/dist/bin/forgebook/mcpVerify.js +36 -0
- package/dist/bin/forgebook/migrate/codemods.d.ts +11 -0
- package/dist/bin/forgebook/migrate/codemods.js +61 -0
- package/dist/bin/forgebook/migrate/migrate.types.d.ts +117 -0
- package/dist/bin/forgebook/migrate/migrate.types.js +5 -0
- package/dist/bin/forgebook/migrate/migrateCommand.d.mts +8 -0
- package/dist/bin/forgebook/migrate/migrateCommand.mjs +76 -0
- package/dist/bin/forgebook/migrate/migrateRun.d.ts +61 -0
- package/dist/bin/forgebook/migrate/migrateRun.js +210 -0
- package/dist/bin/forgebook/migrate/migrateText.d.ts +12 -0
- package/dist/bin/forgebook/migrate/migrateText.js +30 -0
- package/dist/bin/forgebook/migrate/migrateWrite.d.ts +27 -0
- package/dist/bin/forgebook/migrate/migrateWrite.js +66 -0
- package/dist/bin/forgebook/migrate/objectEdits.d.ts +70 -0
- package/dist/bin/forgebook/migrate/objectEdits.js +241 -0
- package/dist/bin/forgebook/migrate/playOnInBuilds.d.ts +3 -0
- package/dist/bin/forgebook/migrate/playOnInBuilds.js +86 -0
- package/dist/bin/forgebook/migrate/propGroupStrings.d.ts +5 -0
- package/dist/bin/forgebook/migrate/propGroupStrings.js +81 -0
- package/dist/bin/forgebook/newProject/newProject.d.ts +39 -0
- package/dist/bin/forgebook/newProject/newProject.js +180 -0
- package/dist/bin/forgebook/newProject/newProject.types.d.ts +97 -0
- package/dist/bin/forgebook/newProject/newProject.types.js +6 -0
- package/dist/bin/forgebook/newProject/packageManagers.d.ts +51 -0
- package/dist/bin/forgebook/newProject/packageManagers.js +121 -0
- package/dist/bin/forgebook/newProject/projectEntries.d.ts +62 -0
- package/dist/bin/forgebook/newProject/projectEntries.js +191 -0
- package/dist/bin/forgebook/newProject/projectFrameworks.d.ts +57 -0
- package/dist/bin/forgebook/newProject/projectFrameworks.js +148 -0
- package/dist/bin/forgebook/newProject/projectLook.d.ts +23 -0
- package/dist/bin/forgebook/newProject/projectLook.js +293 -0
- package/dist/bin/forgebook/newProject/projectPackages.d.ts +66 -0
- package/dist/bin/forgebook/newProject/projectPackages.js +178 -0
- package/dist/bin/forgebook/newRepair.d.ts +45 -0
- package/dist/bin/forgebook/newRepair.js +157 -0
- package/dist/bin/forgebook/newRepairRun.d.ts +69 -0
- package/dist/bin/forgebook/newRepairRun.js +148 -0
- package/dist/bin/forgebook/newStories.d.ts +23 -1
- package/dist/bin/forgebook/newStories.js +101 -11
- package/dist/bin/forgebook/newStoriesFile.d.ts +20 -1
- package/dist/bin/forgebook/newStoriesFile.js +43 -4
- package/dist/bin/forgebook/prebundleRun.d.ts +3 -1
- package/dist/bin/forgebook/prebundleRun.js +28 -8
- package/dist/bin/forgebook/proofCommand.d.mts +15 -0
- package/dist/bin/forgebook/proofCommand.mjs +212 -0
- package/dist/bin/forgebook/proofRun.d.ts +63 -0
- package/dist/bin/forgebook/proofRun.js +412 -0
- package/dist/bin/forgebook/proofText.d.ts +36 -0
- package/dist/bin/forgebook/proofText.js +131 -0
- package/dist/bin/forgebook/proofWorkflow.d.ts +29 -0
- package/dist/bin/forgebook/proofWorkflow.js +205 -0
- package/dist/bin/forgebook/setArgsTool.d.ts +8 -0
- package/dist/bin/forgebook/setArgsTool.js +70 -0
- package/dist/bin/forgebook/storyCheckCommands.mjs +42 -3
- package/dist/bin/forgebook/storyCheckRun.d.ts +50 -0
- package/dist/bin/forgebook/storyCheckRun.js +83 -9
- package/dist/bin/forgebook/storyFileIds.d.ts +15 -0
- package/dist/bin/forgebook/storyFileIds.js +14 -0
- package/dist/bin/forgebook/stressCases.d.ts +31 -0
- package/dist/bin/forgebook/stressCases.js +79 -0
- package/dist/bin/forgebook/stressRun.d.ts +12 -0
- package/dist/bin/forgebook/stressRun.js +61 -0
- package/dist/bin/forgebook/stressText.d.ts +27 -0
- package/dist/bin/forgebook/stressText.js +46 -0
- package/dist/bin/forgebook/verifyBase.d.ts +45 -0
- package/dist/bin/forgebook/verifyBase.js +204 -0
- package/dist/bin/forgebook/verifyCommand.d.mts +13 -0
- package/dist/bin/forgebook/verifyCommand.mjs +125 -0
- package/dist/bin/forgebook/verifyRun.d.ts +63 -0
- package/dist/bin/forgebook/verifyRun.js +108 -0
- package/dist/bin/forgebook/verifyVerdict.d.ts +40 -0
- package/dist/bin/forgebook/verifyVerdict.js +323 -0
- package/dist/bin/forgebook/workflowActions.d.ts +23 -0
- package/dist/bin/forgebook/workflowActions.js +23 -0
- package/dist/bin/forgebook-docs/catalogueMarkdown.js +12 -1
- package/dist/src/addressArgs.d.ts +29 -5
- package/dist/src/addressArgs.js +58 -16
- package/dist/src/addressArgsParam.d.ts +54 -0
- package/dist/src/addressArgsParam.js +51 -0
- package/dist/src/addressTexts.d.ts +14 -0
- package/dist/src/addressTexts.js +28 -21
- package/dist/src/agentIndexFile.d.ts +11 -0
- package/dist/src/agentIndexFile.js +11 -0
- package/dist/src/argConditions.d.ts +52 -0
- package/dist/src/argConditions.js +80 -0
- package/dist/src/argControl.d.ts +148 -0
- package/dist/src/argControl.js +0 -0
- package/dist/src/argExpression.d.ts +21 -0
- package/dist/src/argExpression.js +30 -0
- package/dist/src/argTypes.d.ts +40 -51
- package/dist/src/argTypes.js +69 -185
- package/dist/src/argsProps.d.ts +3 -3
- package/dist/src/argsProps.js +11 -5
- package/dist/src/bundlerErrors.d.ts +29 -0
- package/dist/src/bundlerErrors.js +49 -0
- package/dist/src/catalogue.d.ts +31 -0
- package/dist/src/catalogue.js +13 -2
- package/dist/src/catalogueRefs.d.ts +75 -0
- package/dist/src/catalogueRefs.js +122 -0
- package/dist/src/componentDocs.d.ts +83 -0
- package/dist/src/componentDocs.js +20 -3
- package/dist/src/controlCode.d.ts +27 -0
- package/dist/src/controlCode.js +41 -0
- package/dist/src/frame/callValues.d.ts +19 -0
- package/dist/src/frame/callValues.js +58 -0
- package/dist/src/frame/canvasScheme.d.ts +33 -0
- package/dist/src/frame/canvasScheme.js +67 -0
- package/dist/src/frame/controlValues.d.ts +39 -0
- package/dist/src/frame/controlValues.js +143 -0
- package/dist/src/frame/frame.css +36 -3
- package/dist/src/frame/frameStatus.d.ts +16 -1
- package/dist/src/frame/frameStatus.js +16 -1
- package/dist/src/frame/frameView.js +4 -3
- package/dist/src/frame/mountFrame.d.ts +10 -1
- package/dist/src/frame/mountFrame.js +160 -55
- package/dist/src/frame/panelControls.d.ts +67 -0
- package/dist/src/frame/panelControls.js +110 -0
- package/dist/src/frame/panelValues.d.ts +35 -0
- package/dist/src/frame/panelValues.js +127 -0
- package/dist/src/frame/playActions.d.ts +39 -0
- package/dist/src/frame/playActions.js +98 -0
- package/dist/src/frame/playStepper.d.ts +28 -0
- package/dist/src/frame/playStepper.js +38 -0
- package/dist/src/frame/playStory.d.ts +9 -1
- package/dist/src/frame/playStory.js +49 -3
- package/dist/src/frame/renderer.d.ts +34 -1
- package/dist/src/frame/renderer.js +24 -0
- package/dist/src/frame/shellChannel.d.ts +1 -1
- package/dist/src/frame/shellChannel.js +1 -1
- package/dist/src/frame/shellCheck.d.ts +17 -0
- package/dist/src/frame/shellCheck.js +25 -0
- package/dist/src/frame/shellMessageCheck.d.ts +7 -0
- package/dist/src/frame/shellMessageCheck.js +53 -0
- package/dist/src/frame/storyContent.d.ts +50 -0
- package/dist/src/frame/storyContent.js +73 -0
- package/dist/src/frame/storyModule.d.ts +9 -0
- package/dist/src/frame/storyModule.js +20 -2
- package/dist/src/frame/storyRun.d.ts +15 -7
- package/dist/src/frame/storyRun.js +64 -15
- package/dist/src/frame/valueSheets.d.ts +35 -0
- package/dist/src/frame/valueSheets.js +99 -0
- package/dist/src/hotModules.d.ts +20 -0
- package/dist/src/hotModules.js +23 -0
- package/dist/src/jsxCode.d.ts +1 -14
- package/dist/src/jsxCode.js +46 -10
- package/dist/src/liveErrors.d.ts +30 -4
- package/dist/src/liveErrors.js +18 -3
- package/dist/src/messages.d.ts +77 -27
- package/dist/src/messages.js +58 -100
- package/dist/src/namedValues.d.ts +2 -26
- package/dist/src/namedValues.js +0 -47
- package/dist/src/pageConfig.d.ts +2 -0
- package/dist/src/playTrace.d.ts +19 -2
- package/dist/src/playTrace.js +10 -5
- package/dist/src/plugin.d.ts +10 -3
- package/dist/src/previewRelay.js +9 -1
- package/dist/src/printable.d.ts +12 -0
- package/dist/src/printable.js +22 -0
- package/dist/src/propsSignature.d.ts +37 -0
- package/dist/src/propsSignature.js +40 -0
- package/dist/src/search.d.ts +41 -5
- package/dist/src/search.js +93 -23
- package/dist/src/searchMatch.d.ts +4 -1
- package/dist/src/searchMatch.js +26 -5
- package/dist/src/searchTypos.d.ts +88 -0
- package/dist/src/searchTypos.js +178 -0
- package/dist/src/shapeValues.d.ts +86 -0
- package/dist/src/shapeValues.js +295 -0
- package/dist/src/shell/ApiReference.js +6 -3
- package/dist/src/shell/ApiTableBox.d.ts +15 -0
- package/dist/src/shell/ApiTableBox.js +11 -0
- package/dist/src/shell/AppearanceMenu.d.ts +4 -1
- package/dist/src/shell/AppearanceMenu.js +9 -6
- package/dist/src/shell/AuthoredHome.js +3 -1
- package/dist/src/shell/CodeTab.d.ts +12 -6
- package/dist/src/shell/CodeTab.js +47 -3
- package/dist/src/shell/CodeText.d.ts +1 -1
- package/dist/src/shell/CodeText.js +2 -3
- package/dist/src/shell/CompareGrid.js +1 -1
- package/dist/src/shell/ComponentPage.d.ts +6 -6
- package/dist/src/shell/ComponentPage.js +8 -2
- package/dist/src/shell/CustomControl.d.ts +34 -0
- package/dist/src/shell/CustomControl.js +125 -0
- package/dist/src/shell/DocContainers.js +1 -1
- package/dist/src/shell/DocPage.js +2 -2
- package/dist/src/shell/DroppedArgsList.d.ts +2 -2
- package/dist/src/shell/DroppedArgsList.js +1 -1
- package/dist/src/shell/EmbedPage.js +30 -12
- package/dist/src/shell/Example.d.ts +5 -1
- package/dist/src/shell/Example.js +16 -8
- package/dist/src/shell/FrameView.d.ts +6 -3
- package/dist/src/shell/FrameView.js +2 -2
- package/dist/src/shell/HomePage.d.ts +3 -1
- package/dist/src/shell/HomePage.js +18 -6
- package/dist/src/shell/InfoTip.js +2 -2
- package/dist/src/shell/InteractionsTab.d.ts +11 -4
- package/dist/src/shell/InteractionsTab.js +18 -2
- package/dist/src/shell/LazyPage.js +1 -1
- package/dist/src/shell/PackageHtml.js +3 -1
- package/dist/src/shell/PageWidth.d.ts +29 -0
- package/dist/src/shell/PageWidth.js +18 -0
- package/dist/src/shell/PinnedControl.js +14 -62
- package/dist/src/shell/PinnedControlMenu.d.ts +44 -0
- package/dist/src/shell/PinnedControlMenu.js +72 -0
- package/dist/src/shell/PropFields.d.ts +3 -1
- package/dist/src/shell/PropFields.js +9 -6
- package/dist/src/shell/PropRows.d.ts +22 -11
- package/dist/src/shell/PropRows.js +62 -24
- package/dist/src/shell/PropsTab.d.ts +12 -5
- package/dist/src/shell/PropsTab.js +9 -22
- package/dist/src/shell/RefStoryPage.d.ts +33 -0
- package/dist/src/shell/RefStoryPage.js +123 -0
- package/dist/src/shell/SearchPanel.js +51 -24
- package/dist/src/shell/Shell.d.ts +18 -0
- package/dist/src/shell/Shell.js +141 -23
- package/dist/src/shell/ShortcutHelp.d.ts +22 -0
- package/dist/src/shell/ShortcutHelp.js +66 -0
- package/dist/src/shell/Sidebar.d.ts +17 -4
- package/dist/src/shell/Sidebar.js +92 -41
- package/dist/src/shell/SidebarDocs.js +2 -2
- package/dist/src/shell/SidebarEntries.js +5 -3
- package/dist/src/shell/SidebarHandle.d.ts +3 -5
- package/dist/src/shell/SidebarHandle.js +4 -4
- package/dist/src/shell/SidebarRefs.d.ts +39 -0
- package/dist/src/shell/SidebarRefs.js +99 -0
- package/dist/src/shell/SidebarSearch.js +37 -9
- package/dist/src/shell/SignatureReference.js +3 -1
- package/dist/src/shell/Stage.d.ts +10 -2
- package/dist/src/shell/Stage.js +29 -49
- package/dist/src/shell/StatusBadges.d.ts +54 -0
- package/dist/src/shell/StatusBadges.js +77 -0
- package/dist/src/shell/StoryCodeBlock.d.ts +8 -19
- package/dist/src/shell/StoryCodeBlock.js +7 -6
- package/dist/src/shell/StoryPicker.d.ts +4 -2
- package/dist/src/shell/StoryPicker.js +3 -3
- package/dist/src/shell/Switch.d.ts +29 -0
- package/dist/src/shell/Switch.js +11 -0
- package/dist/src/shell/SwitchGallery.d.ts +36 -0
- package/dist/src/shell/SwitchGallery.js +17 -0
- package/dist/src/shell/SwitchGalleryPanel.d.ts +37 -0
- package/dist/src/shell/SwitchGalleryPanel.js +99 -0
- package/dist/src/shell/TagFilter.d.ts +24 -0
- package/dist/src/shell/TagFilter.js +45 -0
- package/dist/src/shell/TagViews.d.ts +39 -0
- package/dist/src/shell/TagViews.js +20 -0
- package/dist/src/shell/Toolbar.d.ts +4 -1
- package/dist/src/shell/Toolbar.js +17 -7
- package/dist/src/shell/ToolbarControl.d.ts +3 -0
- package/dist/src/shell/ToolbarControl.js +23 -6
- package/dist/src/shell/ViewMenuPanel.js +6 -1
- package/dist/src/shell/argChecks.d.ts +22 -0
- package/dist/src/shell/argChecks.js +20 -0
- package/dist/src/shell/asideStory.js +7 -2
- package/dist/src/shell/audienceSections.css +9 -9
- package/dist/src/shell/catalogueContext.d.ts +1 -1
- package/dist/src/shell/catalogueContext.js +6 -1
- package/dist/src/shell/codeSpans.d.ts +27 -0
- package/dist/src/shell/codeSpans.js +76 -0
- package/dist/src/shell/compareVariants.d.ts +4 -2
- package/dist/src/shell/compareVariants.js +16 -8
- package/dist/src/shell/composition.d.ts +23 -0
- package/dist/src/shell/composition.js +26 -0
- package/dist/src/shell/controlCycle.d.ts +1 -1
- package/dist/src/shell/controlCycle.js +3 -2
- package/dist/src/shell/customControls.d.ts +62 -0
- package/dist/src/shell/customControls.js +81 -0
- package/dist/src/shell/docPage.css +22 -22
- package/dist/src/shell/dockTabs.d.ts +19 -3
- package/dist/src/shell/dockTabs.js +29 -20
- package/dist/src/shell/embed.css +7 -7
- package/dist/src/shell/frameOrder.d.ts +35 -0
- package/dist/src/shell/frameOrder.js +45 -0
- package/dist/src/shell/framesOrigin.d.ts +7 -0
- package/dist/src/shell/framesOrigin.js +1 -1
- package/dist/src/shell/galleryPlace.d.ts +20 -0
- package/dist/src/shell/galleryPlace.js +26 -0
- package/dist/src/shell/icons.d.ts +1 -0
- package/dist/src/shell/icons.js +1 -0
- package/dist/src/shell/keyboard.d.ts +14 -12
- package/dist/src/shell/keyboard.js +21 -6
- package/dist/src/shell/laterStrings.d.ts +30 -0
- package/dist/src/shell/laterStrings.js +43 -3
- package/dist/src/shell/mountShell.js +3 -0
- package/dist/src/shell/pageStrings.d.ts +4 -0
- package/dist/src/shell/pageStrings.js +4 -0
- package/dist/src/shell/pageTagView.d.ts +18 -0
- package/dist/src/shell/pageTagView.js +10 -0
- package/dist/src/shell/playMemory.d.ts +14 -0
- package/dist/src/shell/playMemory.js +8 -0
- package/dist/src/shell/propNotes.d.ts +23 -0
- package/dist/src/shell/propNotes.js +37 -0
- package/dist/src/shell/refIndexLoad.d.ts +17 -0
- package/dist/src/shell/refIndexLoad.js +38 -0
- package/dist/src/shell/refParts.d.ts +34 -0
- package/dist/src/shell/refParts.js +9 -0
- package/dist/src/shell/refStory.css +21 -0
- package/dist/src/shell/refStrings.d.ts +13 -0
- package/dist/src/shell/refStrings.js +21 -0
- package/dist/src/shell/search.css +11 -11
- package/dist/src/shell/shell.css +376 -169
- package/dist/src/shell/shellScheme.js +2 -2
- package/dist/src/shell/shortcutHelp.css +64 -0
- package/dist/src/shell/stageArgs.d.ts +53 -0
- package/dist/src/shell/stageArgs.js +64 -0
- package/dist/src/shell/statusBadges.css +51 -0
- package/dist/src/shell/strings.d.ts +7 -16
- package/dist/src/shell/strings.js +12 -17
- package/dist/src/shell/switchGallery.css +104 -0
- package/dist/src/shell/tagFilter.css +46 -0
- package/dist/src/shell/tagView.d.ts +20 -0
- package/dist/src/shell/tagView.js +10 -0
- package/dist/src/shell/useAddressArgs.d.ts +9 -0
- package/dist/src/shell/useAddressArgs.js +56 -11
- package/dist/src/shell/useControlKeys.js +2 -2
- package/dist/src/shell/useEditedProblems.d.ts +6 -0
- package/dist/src/shell/useEditedProblems.js +40 -0
- package/dist/src/shell/useFrameMessages.js +3 -0
- package/dist/src/shell/useFrameQueue.d.ts +8 -3
- package/dist/src/shell/useFrameQueue.js +42 -12
- package/dist/src/shell/useListedTree.d.ts +13 -0
- package/dist/src/shell/useListedTree.js +32 -0
- package/dist/src/shell/usePageFrames.js +2 -2
- package/dist/src/shell/usePopover.d.ts +5 -0
- package/dist/src/shell/usePopover.js +7 -1
- package/dist/src/shell/useRefIndex.d.ts +22 -0
- package/dist/src/shell/useRefIndex.js +36 -0
- package/dist/src/shell/useScrollSettled.d.ts +18 -0
- package/dist/src/shell/useScrollSettled.js +56 -0
- package/dist/src/shell/useScrollStops.d.ts +20 -0
- package/dist/src/shell/useScrollStops.js +41 -0
- package/dist/src/shell/useShortcutHelp.d.ts +18 -0
- package/dist/src/shell/useShortcutHelp.js +32 -0
- package/dist/src/shell/useSidebarOverlay.d.ts +2 -1
- package/dist/src/shell/useSidebarOverlay.js +12 -4
- package/dist/src/shell/useStoryCode.d.ts +2 -1
- package/dist/src/shell/useStoryCode.js +12 -7
- package/dist/src/shell/useToolbarLayout.d.ts +5 -1
- package/dist/src/shell/useToolbarLayout.js +2 -2
- package/dist/src/shell/useWorstCase.d.ts +8 -2
- package/dist/src/shell/useWorstCase.js +2 -2
- package/dist/src/shell/valueEditors/FileEditor.d.ts +28 -0
- package/dist/src/shell/valueEditors/FileEditor.js +66 -0
- package/dist/src/shell/valueEditors/JsonEditor.d.ts +14 -0
- package/dist/src/shell/valueEditors/JsonEditor.js +53 -0
- package/dist/src/shell/valueEditors/ListEditor.d.ts +24 -0
- package/dist/src/shell/valueEditors/ListEditor.js +82 -0
- package/dist/src/shell/valueEditors/ObjectEditor.d.ts +32 -0
- package/dist/src/shell/valueEditors/ObjectEditor.js +70 -0
- package/dist/src/shell/valueEditors/PropEditor.d.ts +37 -0
- package/dist/src/shell/valueEditors/PropEditor.js +53 -0
- package/dist/src/shell/valueEditors/RecordEditor.d.ts +20 -0
- package/dist/src/shell/valueEditors/RecordEditor.js +84 -0
- package/dist/src/shell/valueEditors/SearchSelect.d.ts +42 -0
- package/dist/src/shell/valueEditors/SearchSelect.js +80 -0
- package/dist/src/shell/valueEditors/TokenEditor.d.ts +49 -0
- package/dist/src/shell/valueEditors/TokenEditor.js +74 -0
- package/dist/src/shell/valueEditors/UnionEditor.d.ts +20 -0
- package/dist/src/shell/valueEditors/UnionEditor.js +64 -0
- package/dist/src/shell/valueEditors/ValueField.d.ts +15 -0
- package/dist/src/shell/valueEditors/ValueField.js +148 -0
- package/dist/src/shell/valueEditors/editorStrings.d.ts +56 -0
- package/dist/src/shell/valueEditors/editorStrings.js +66 -0
- package/dist/src/shell/valueEditors/fieldTypes.d.ts +31 -0
- package/dist/src/shell/valueEditors/fieldTypes.js +0 -0
- package/dist/src/shell/valueEditors/valueEditors.css +153 -0
- package/dist/src/shell/worstArgs.d.ts +8 -5
- package/dist/src/shell/worstArgs.js +14 -7
- package/dist/src/shellTheme.d.ts +1 -1
- package/dist/src/shellTheme.js +15 -1
- package/dist/src/shellTheme.types.d.ts +4 -0
- package/dist/src/shellWord.d.ts +12 -0
- package/dist/src/shellWord.js +15 -0
- package/dist/src/sourceFiles.js +2 -1
- package/dist/src/storyArgTypes.d.ts +57 -0
- package/dist/src/storyArgTypes.js +195 -0
- package/dist/src/storyBackground.js +14 -3
- package/dist/src/storyCheck.d.ts +99 -3
- package/dist/src/storyCheck.js +39 -1
- package/dist/src/storyCodeText.d.ts +52 -0
- package/dist/src/storyCodeText.js +30 -0
- package/dist/src/storyControls.d.ts +103 -0
- package/dist/src/storyControls.js +100 -0
- package/dist/src/storyStatuses.d.ts +55 -0
- package/dist/src/storyStatuses.js +104 -0
- package/dist/src/storyTagNames.d.ts +25 -0
- package/dist/src/storyTagNames.js +25 -0
- package/dist/src/storyTags.d.ts +29 -0
- package/dist/src/storyTags.js +85 -0
- package/dist/src/storyTree.d.ts +13 -0
- package/dist/src/storyTree.js +24 -4
- package/dist/src/storybookArgs.d.ts +24 -0
- package/dist/src/storybookArgs.js +185 -0
- package/dist/src/switches.d.ts +66 -3
- package/dist/src/switches.js +42 -1
- package/dist/src/valueSchema.d.ts +28 -0
- package/dist/src/valueSchema.js +196 -0
- package/dist/src/valueShape.d.ts +94 -0
- package/dist/src/valueShape.js +25 -0
- package/dist/src/viewState.d.ts +8 -3
- package/dist/src/viewState.js +27 -10
- package/dist/src/vite/adapter.d.ts +40 -2
- package/dist/src/vite/adapter.js +1 -0
- package/dist/src/vite/agent.types.d.ts +354 -7
- package/dist/src/vite/agentApi.d.ts +23 -0
- package/dist/src/vite/agentApi.js +90 -17
- package/dist/src/vite/agentIndex.d.ts +0 -2
- package/dist/src/vite/agentIndex.js +5 -6
- package/dist/src/vite/agentRoutes.d.ts +20 -1
- package/dist/src/vite/agentRoutes.js +135 -66
- package/dist/src/vite/agentStatuses.d.ts +42 -0
- package/dist/src/vite/agentStatuses.js +67 -0
- package/dist/src/vite/agentStoryCode.d.ts +51 -0
- package/dist/src/vite/agentStoryCode.js +44 -0
- package/dist/src/vite/agentVisibility.d.ts +47 -0
- package/dist/src/vite/agentVisibility.js +174 -0
- package/dist/src/vite/appAudit.d.ts +134 -0
- package/dist/src/vite/appAudit.js +333 -0
- package/dist/src/vite/appBuildOption.d.ts +53 -0
- package/dist/src/vite/appBuildOption.js +55 -0
- package/dist/src/vite/appTokenFiles.d.ts +92 -0
- package/dist/src/vite/appTokenFiles.js +433 -0
- package/dist/src/vite/appTokens.d.ts +23 -0
- package/dist/src/vite/appTokens.js +275 -0
- package/dist/src/vite/argControlsConfig.d.ts +30 -0
- package/dist/src/vite/argControlsConfig.js +176 -0
- package/dist/src/vite/builtTexts.d.ts +10 -0
- package/dist/src/vite/builtTexts.js +59 -22
- package/dist/src/vite/catalogueConfig.d.ts +3 -1
- package/dist/src/vite/catalogueConfig.js +21 -4
- package/dist/src/vite/changeCoverage.d.ts +74 -0
- package/dist/src/vite/changeCoverage.js +120 -0
- package/dist/src/vite/changedRoute.d.ts +30 -0
- package/dist/src/vite/changedRoute.js +197 -0
- package/dist/src/vite/checkCode.d.ts +105 -3
- package/dist/src/vite/checkCode.js +323 -36
- package/dist/src/vite/checkoutWatch.d.ts +97 -0
- package/dist/src/vite/checkoutWatch.js +287 -0
- package/dist/src/vite/closeWatch.d.ts +8 -0
- package/dist/src/vite/closeWatch.js +1 -1
- package/dist/src/vite/componentCache.d.ts +8 -0
- package/dist/src/vite/componentCache.js +66 -0
- package/dist/src/vite/componentGraph.d.ts +71 -0
- package/dist/src/vite/componentGraph.js +133 -0
- package/dist/src/vite/componentRules.d.ts +33 -0
- package/dist/src/vite/componentRules.js +105 -0
- package/dist/src/vite/componentScan.d.ts +69 -0
- package/dist/src/vite/componentScan.js +418 -0
- package/dist/src/vite/compositionCheck.d.ts +15 -0
- package/dist/src/vite/compositionCheck.js +243 -0
- package/dist/src/vite/config.d.ts +67 -1
- package/dist/src/vite/configFile.d.ts +15 -2
- package/dist/src/vite/configFile.js +109 -40
- package/dist/src/vite/configKeys.d.ts +15 -0
- package/dist/src/vite/configKeys.js +172 -0
- package/dist/src/vite/configLoadError.d.ts +23 -0
- package/dist/src/vite/configLoadError.js +71 -0
- package/dist/src/vite/cssDeclarations.d.ts +71 -0
- package/dist/src/vite/cssDeclarations.js +290 -0
- package/dist/src/vite/cssImports.d.ts +14 -0
- package/dist/src/vite/cssImports.js +48 -0
- package/dist/src/vite/cssReferences.d.ts +54 -0
- package/dist/src/vite/cssReferences.js +157 -0
- package/dist/src/vite/cssTokenValues.d.ts +50 -0
- package/dist/src/vite/cssTokenValues.js +233 -0
- package/dist/src/vite/designTokens.d.ts +24 -0
- package/dist/src/vite/designTokens.js +5 -1
- package/dist/src/vite/docsExtractor.d.ts +9 -3
- package/dist/src/vite/docsExtractor.js +11 -3
- package/dist/src/vite/docsProgram.d.ts +17 -4
- package/dist/src/vite/docsProgram.js +52 -11
- package/dist/src/vite/docsWorker.js +7 -2
- package/dist/src/vite/emptyStoryGlobs.d.ts +41 -0
- package/dist/src/vite/emptyStoryGlobs.js +52 -0
- package/dist/src/vite/fileImports.d.ts +17 -0
- package/dist/src/vite/fileImports.js +57 -0
- package/dist/src/vite/findComponent.d.ts +10 -2
- package/dist/src/vite/findComponent.js +27 -22
- package/dist/src/vite/findRoute.js +3 -2
- package/dist/src/vite/forcedStates.d.ts +9 -2
- package/dist/src/vite/forcedStates.js +12 -3
- package/dist/src/vite/forgebookPlugin.d.ts +2 -0
- package/dist/src/vite/forgebookPlugin.js +55 -73
- package/dist/src/vite/frameErrors.d.ts +19 -0
- package/dist/src/vite/frameErrors.js +70 -0
- package/dist/src/vite/framesServer.d.ts +12 -0
- package/dist/src/vite/framesServer.js +21 -4
- package/dist/src/vite/functionComponentDocs.js +81 -12
- package/dist/src/vite/generatedModules.js +4 -2
- package/dist/src/vite/gitChange.d.ts +38 -5
- package/dist/src/vite/gitChange.js +71 -11
- package/dist/src/vite/hiddenStoryFiles.d.ts +23 -0
- package/dist/src/vite/hiddenStoryFiles.js +107 -0
- package/dist/src/vite/hotSnippets.d.ts +38 -14
- package/dist/src/vite/hotSnippets.js +137 -39
- package/dist/src/vite/importedNames.d.ts +37 -0
- package/dist/src/vite/importedNames.js +138 -0
- package/dist/src/vite/indexFields.d.ts +6 -0
- package/dist/src/vite/indexFields.js +21 -0
- package/dist/src/vite/indexStoryFile.d.ts +8 -1
- package/dist/src/vite/indexStoryFile.js +22 -157
- package/dist/src/vite/jsxCallSites.d.ts +33 -0
- package/dist/src/vite/jsxCallSites.js +200 -0
- package/dist/src/vite/jsxInScripts.d.ts +67 -0
- package/dist/src/vite/jsxInScripts.js +138 -0
- package/dist/src/vite/jsxTree.d.ts +20 -0
- package/dist/src/vite/jsxTree.js +163 -0
- package/dist/src/vite/lineAndColumn.d.ts +13 -0
- package/dist/src/vite/lineAndColumn.js +18 -0
- package/dist/src/vite/lookAlikes.d.ts +65 -0
- package/dist/src/vite/lookAlikes.js +228 -0
- package/dist/src/vite/nearestToken.d.ts +17 -0
- package/dist/src/vite/nearestToken.js +9 -2
- package/dist/src/vite/packageEntries.d.ts +42 -0
- package/dist/src/vite/packageEntries.js +127 -0
- package/dist/src/vite/pages.d.ts +9 -1
- package/dist/src/vite/pages.js +119 -4
- package/dist/src/vite/pluginConfig.js +4 -0
- package/dist/src/vite/pluginIds.d.ts +2 -0
- package/dist/src/vite/pluginIds.js +5 -1
- package/dist/src/vite/pluginModules.d.ts +81 -11
- package/dist/src/vite/pluginModules.js +109 -21
- package/dist/src/vite/prebundled.d.ts +57 -15
- package/dist/src/vite/prebundled.js +80 -0
- package/dist/src/vite/previewTags.d.ts +25 -0
- package/dist/src/vite/previewTags.js +56 -0
- package/dist/src/vite/projectFiles.d.ts +54 -0
- package/dist/src/vite/projectFiles.js +116 -0
- package/dist/src/vite/projectPostcss.d.ts +70 -0
- package/dist/src/vite/projectPostcss.js +250 -0
- package/dist/src/vite/propDocs.d.ts +12 -0
- package/dist/src/vite/propDocs.js +187 -60
- package/dist/src/vite/propKind.d.ts +40 -0
- package/dist/src/vite/propKind.js +71 -0
- package/dist/src/vite/propTypeNotes.d.ts +22 -0
- package/dist/src/vite/propTypeNotes.js +51 -0
- package/dist/src/vite/publishedExports.d.ts +27 -0
- package/dist/src/vite/publishedExports.js +298 -0
- package/dist/src/vite/realFolder.d.ts +6 -0
- package/dist/src/vite/realFolder.js +25 -0
- package/dist/src/vite/refsConfig.d.ts +39 -0
- package/dist/src/vite/refsConfig.js +54 -0
- package/dist/src/vite/reuseCheck.d.ts +45 -0
- package/dist/src/vite/reuseCheck.js +260 -0
- package/dist/src/vite/runningVersions.d.ts +33 -0
- package/dist/src/vite/runningVersions.js +25 -0
- package/dist/src/vite/scriptProblems.d.ts +60 -0
- package/dist/src/vite/scriptProblems.js +155 -0
- package/dist/src/vite/searchModule.js +3 -2
- package/dist/src/vite/searchRoute.js +4 -2
- package/dist/src/vite/shapeDocs.d.ts +36 -0
- package/dist/src/vite/shapeDocs.js +177 -0
- package/dist/src/vite/singleFileComponent.d.ts +17 -0
- package/dist/src/vite/singleFileComponent.js +83 -0
- package/dist/src/vite/sourceText.d.ts +34 -0
- package/dist/src/vite/sourceText.js +72 -0
- package/dist/src/vite/sourceTokens.d.ts +7 -0
- package/dist/src/vite/sourceTokens.js +7 -2
- package/dist/src/vite/stackLines.d.ts +49 -0
- package/dist/src/vite/stackLines.js +96 -0
- package/dist/src/vite/storyCode.d.ts +22 -7
- package/dist/src/vite/storyCode.js +263 -37
- package/dist/src/vite/storyCoverage.d.ts +48 -0
- package/dist/src/vite/storyCoverage.js +179 -0
- package/dist/src/vite/storyFilesModule.d.ts +48 -3
- package/dist/src/vite/storyFilesModule.js +105 -15
- package/dist/src/vite/storyPatterns.d.ts +31 -0
- package/dist/src/vite/storyPatterns.js +140 -5
- package/dist/src/vite/storyReach.d.ts +10 -2
- package/dist/src/vite/storyReach.js +15 -11
- package/dist/src/vite/storyTopLevel.d.ts +51 -0
- package/dist/src/vite/storyTopLevel.js +146 -0
- package/dist/src/vite/storylessRoutes.d.ts +4 -3
- package/dist/src/vite/storylessRoutes.js +210 -19
- package/dist/src/vite/switchValuesCheck.d.ts +19 -0
- package/dist/src/vite/switchValuesCheck.js +164 -0
- package/dist/src/vite/switchesDocument.d.ts +15 -0
- package/dist/src/vite/switchesDocument.js +47 -0
- package/dist/src/vite/tailwindConfigTokens.d.ts +41 -0
- package/dist/src/vite/tailwindConfigTokens.js +306 -0
- package/dist/src/vite/textImports.d.ts +15 -0
- package/dist/src/vite/textImports.js +58 -0
- package/dist/src/vite/textModules.d.ts +6 -5
- package/dist/src/vite/textModules.js +13 -8
- package/dist/src/vite/tokenAnswers.d.ts +6 -2
- package/dist/src/vite/tokenAnswers.js +11 -7
- package/dist/src/vite/typeParameters.d.ts +83 -0
- package/dist/src/vite/typeParameters.js +270 -0
- package/dist/src/vite/typedControls.d.ts +31 -0
- package/dist/src/vite/typedControls.js +66 -0
- package/dist/src/vite/unionProps.d.ts +37 -0
- package/dist/src/vite/unionProps.js +121 -0
- package/dist/src/vite/unresolvedTokens.d.ts +20 -0
- package/dist/src/vite/unresolvedTokens.js +193 -0
- package/dist/src/vite/usageGraph.js +10 -52
- package/dist/src/vite/usageGuidance.d.ts +9 -2
- package/dist/src/vite/usageGuidance.js +36 -8
- package/dist/src/vite/usageImports.d.ts +35 -0
- package/dist/src/vite/usageImports.js +280 -0
- package/dist/src/vite/visibilityRoute.d.ts +16 -0
- package/dist/src/vite/visibilityRoute.js +320 -0
- package/dist/src/worstCase.d.ts +2 -0
- package/dist/src/worstCase.js +2 -0
- package/package.json +28 -8
|
@@ -23,30 +23,37 @@
|
|
|
23
23
|
import { extname, join, resolve } from "node:path";
|
|
24
24
|
import { checksA11y, offersUsedIn, readsComponentDocs } from "../catalogue.js";
|
|
25
25
|
import { SAME_ORIGIN } from "../frameOrigins.js";
|
|
26
|
-
import { createLiveErrors
|
|
26
|
+
import { createLiveErrors } from "../liveErrors.js";
|
|
27
27
|
import { agentMiddleware, FRAMED_AGENT_PAGES } from "./agentRoutes.js";
|
|
28
28
|
import { STORY_FILE } from "./autoTitle.js";
|
|
29
29
|
import { axeBuildAsset } from "./axeScript.js";
|
|
30
30
|
import { groupTexts } from "./builtTexts.js";
|
|
31
31
|
import { catalogueConfig } from "./catalogueConfig.js";
|
|
32
|
+
import { currentCheckoutWatch } from "./checkoutWatch.js";
|
|
32
33
|
import { currentCloseWatch } from "./closeWatch.js";
|
|
33
34
|
import { findConfigFile, loadConfigFile, packageResolver } from "./configFile.js";
|
|
34
35
|
import { codeStamp, diskCache } from "./diskCache.js";
|
|
35
36
|
import { createDocsExtractor, NO_DOCS_EXTRACTOR } from "./docsExtractor.js";
|
|
37
|
+
import { sayEmptyStoryGlobs } from "./emptyStoryGlobs.js";
|
|
36
38
|
import { devServerAccess, VITEST_HOOKS } from "./fileAccess.js";
|
|
37
39
|
import { FORCED_STATES_VISITOR } from "./forcedStates.js";
|
|
40
|
+
import { receiveFrameErrors } from "./frameErrors.js";
|
|
38
41
|
import { builtPlacement } from "./framesConfig.js";
|
|
39
42
|
import { serveFrames } from "./framesServer.js";
|
|
40
43
|
import { generatedId, generatedModule } from "./generatedModules.js";
|
|
41
44
|
import { missingHeightsMiddleware } from "./heightsRoute.js";
|
|
42
|
-
import {
|
|
45
|
+
import { filesModuleHot, renewedModule, servedPatterns, storyFileHotHooks } from "./hotSnippets.js";
|
|
46
|
+
import { jsxInScripts } from "./jsxInScripts.js";
|
|
43
47
|
import { inlineJson, packedJsonOf } from "./packedModule.js";
|
|
44
48
|
import { AGENT_SOURCES_FILE, configModule, PAGE_FILES, pageHtml, pageModulePath } from "./pages.js";
|
|
45
49
|
import { CONFIG_ID, DOCS_PAGES_PREFIX, patternId, TOKENS_ID, virtualId } from "./pluginIds.js";
|
|
46
|
-
import { docsModule, docsValue, FILES_PREFIX, listingRenewals, patternModule, REACH_ID_PREFIX, reachModule, searchIndexes, USAGE_ID_PREFIX, usageModule } from "./pluginModules.js";
|
|
47
|
-
import {
|
|
50
|
+
import { docsModule, docsModuleOf, docsValue, FILES_PREFIX, invalidateEverywhere, keptListing, listingRenewals, pagesReloaded, patternModule, REACH_ID_PREFIX, reachModule, searchIndexes, USAGE_ID_PREFIX, usageModule } from "./pluginModules.js";
|
|
51
|
+
import { checkAtStart } from "./runningVersions.js";
|
|
52
|
+
import { scriptProblems } from "./scriptProblems.js";
|
|
53
|
+
import { isKeptIndex } from "./storyFilesModule.js";
|
|
48
54
|
import { tokensModule } from "./storylessRoutes.js";
|
|
49
|
-
import {
|
|
55
|
+
import { DOCS_QUERY, RENEWED_QUERIES, TEXT_QUERIES } from "./textQueries.js";
|
|
56
|
+
import { withTypedControls } from "./typedControls.js";
|
|
50
57
|
import { VITE_PATHS } from "./vitePaths.js";
|
|
51
58
|
/** This module's folder, in the core's package: the core's own dependencies resolve from here, not the project's. */
|
|
52
59
|
const PACKAGE_DIR = import.meta.dirname;
|
|
@@ -64,21 +71,6 @@ const sassOptions = async () => {
|
|
|
64
71
|
const DOCS_PAGE_FILE = /\.md$/;
|
|
65
72
|
/** A TypeScript source file, whose edit may change a component's docs. */
|
|
66
73
|
const SOURCE_FILE = /\.tsx?$/;
|
|
67
|
-
/**
|
|
68
|
-
* Renews modules in every environment that loaded them: the agents' routes load them on the server too.
|
|
69
|
-
*
|
|
70
|
-
* @param server - the dev server.
|
|
71
|
-
* @param ids - the modules' ids.
|
|
72
|
-
*/
|
|
73
|
-
const invalidateEverywhere = (server, ids) => {
|
|
74
|
-
for (const environment of Object.values(server.environments)) {
|
|
75
|
-
for (const id of ids) {
|
|
76
|
-
const module = environment.moduleGraph.getModuleById(id);
|
|
77
|
-
if (module !== undefined)
|
|
78
|
-
environment.moduleGraph.invalidateModule(module);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
74
|
/**
|
|
83
75
|
* The page a request names, when it names one: `/` is the shell's.
|
|
84
76
|
*
|
|
@@ -89,31 +81,6 @@ const requestedPage = (url) => {
|
|
|
89
81
|
const name = path === "/" ? "index.html" : path.replace(/^\//, "");
|
|
90
82
|
return PAGE_FILES.find((page) => page === name);
|
|
91
83
|
};
|
|
92
|
-
/**
|
|
93
|
-
* A docs pages' module, when the id is a pattern's, a page's or the written home's. The Markdown reader loads with the
|
|
94
|
-
* first: a catalogue may have no docs pages, and a story's page reads none.
|
|
95
|
-
*
|
|
96
|
-
* @param id - the module's id.
|
|
97
|
-
* @param watch - adds a file whose edit renews the module.
|
|
98
|
-
* @param isServing - whether a dev server runs.
|
|
99
|
-
* @param plugins - the catalogue's plugins, whose fences a page may draw.
|
|
100
|
-
* @param isKept - whether a page its group lists may be read.
|
|
101
|
-
*/
|
|
102
|
-
const docsModuleOf = async (id, watch, isServing, plugins, isKept) => {
|
|
103
|
-
const isHome = id.endsWith(HOME_QUERY);
|
|
104
|
-
const isPage = id.endsWith(DOCS_PAGE_QUERY);
|
|
105
|
-
if (!isHome && !isPage && !id.startsWith(DOCS_PAGES_PREFIX))
|
|
106
|
-
return undefined;
|
|
107
|
-
const { docPageModule, docPagesModule, homeModule } = await import("./docPagesModule.js");
|
|
108
|
-
if (isHome)
|
|
109
|
-
return { code: homeModule(id.slice(0, -HOME_QUERY.length), watch, isServing, plugins), moduleType: "js" };
|
|
110
|
-
if (isPage) {
|
|
111
|
-
const file = id.slice(0, -DOCS_PAGE_QUERY.length);
|
|
112
|
-
return { code: docPageModule(file, watch, isServing, plugins), moduleType: "js" };
|
|
113
|
-
}
|
|
114
|
-
const { root, patterns } = storyFilesGroupOf(id.slice(DOCS_PAGES_PREFIX.length));
|
|
115
|
-
return { code: docPagesModule(root, patterns, watch, isServing, plugins, isKept), moduleType: "js" };
|
|
116
|
-
};
|
|
117
84
|
/**
|
|
118
85
|
* The catalogue's Vite plugin: the story index, the docs, the code and the Markdown of the stories, the forced-states
|
|
119
86
|
* rewrite of every style sheet and, with a configuration, the catalogue's two pages.
|
|
@@ -124,8 +91,8 @@ const docsModuleOf = async (id, watch, isServing, plugins, isKept) => {
|
|
|
124
91
|
*/
|
|
125
92
|
export const forgebookPlugin = (options = {}) => {
|
|
126
93
|
/**
|
|
127
|
-
* The modules of the groups of story files, with the
|
|
128
|
-
* made), renewed when a story file is added to or removed from what
|
|
94
|
+
* The modules of the groups of story files, with the versions served since the pages last reloaded (none while it
|
|
95
|
+
* could not be made), renewed when a story file is added to or removed from what a page may hold.
|
|
129
96
|
*/
|
|
130
97
|
const filesModules = new Map();
|
|
131
98
|
// what each pattern's module was served with: an edit of a story file that changes its list reloads the pages
|
|
@@ -153,23 +120,29 @@ export const forgebookPlugin = (options = {}) => {
|
|
|
153
120
|
if (config === undefined)
|
|
154
121
|
return undefined;
|
|
155
122
|
if (id === CONFIG_ID)
|
|
156
|
-
return { code: configModule(config, await framesPlacement()), moduleType: "js" };
|
|
123
|
+
return { code: configModule(config, await framesPlacement(), isServing()), moduleType: "js" };
|
|
157
124
|
return generatedModule(id, config, command);
|
|
158
125
|
};
|
|
159
126
|
/** The files followed one by one, so an edit reaches the dev server at once. */
|
|
160
127
|
const watching = currentCloseWatch();
|
|
128
|
+
/** Git's checkouts, so the files a branch switch rewrites reach the dev server when the system's events do not. */
|
|
129
|
+
const checkouts = currentCheckoutWatch();
|
|
161
130
|
/** Whether a dev server runs, or a build: tools ask only the former. */
|
|
162
131
|
let command = "serve";
|
|
163
132
|
const isServing = () => command === "serve";
|
|
164
133
|
// the search's indexes, a build reading each component's docs once for its page and its index
|
|
165
134
|
const search = searchIndexes({
|
|
166
|
-
|
|
135
|
+
// the catalogue's controls by type are written into the docs here, so every reader of them sees the same panel
|
|
136
|
+
extract: async (storyFile) => withTypedControls(await extractor().extract(storyFile), config?.argControls ?? {}),
|
|
167
137
|
isServing,
|
|
168
138
|
track: (id, isPages) => (isPages ? docsModules : searchModules).add(id),
|
|
169
139
|
isKept: access.isKept
|
|
170
140
|
});
|
|
171
141
|
// a build's docs, code and pages of each group's story files, read while the build loads the stories
|
|
172
142
|
const texts = groupTexts();
|
|
143
|
+
// whether a story file that cannot be read is named while the rest draws: a build must fail on it, and a test run has
|
|
144
|
+
// no page to name it on
|
|
145
|
+
const isForgiving = () => isServing() && !isTestRun;
|
|
173
146
|
// whether an edited story file is drawn anew in its open frames: a dev server's, unless the framework cannot
|
|
174
147
|
const isRedrawing = () => isServing() && (config?.framework ?? options.framework)?.redrawsEditedStories !== false;
|
|
175
148
|
/**
|
|
@@ -177,8 +150,10 @@ export const forgebookPlugin = (options = {}) => {
|
|
|
177
150
|
* still loading TypeScript when the tests end is stopped by Node mid-parse, which aborts the process.
|
|
178
151
|
*/
|
|
179
152
|
let isTestRun = false;
|
|
153
|
+
const scripts = { ...scriptProblems(), isQuick: options.isQuickScan === true };
|
|
180
154
|
/** Where answers are kept between starts (`diskCache.ts`): in Vite's cache folder, so what clears it clears them. */
|
|
181
155
|
let cacheFolder;
|
|
156
|
+
const jsxScripts = jsxInScripts(() => config?.framework ?? options.framework);
|
|
182
157
|
/** The stamp of the plugin's own code, which makes the kept indexes and code: another version is a miss. */
|
|
183
158
|
let pluginCode;
|
|
184
159
|
const keptCache = (kind, isValue) => {
|
|
@@ -235,7 +210,7 @@ export const forgebookPlugin = (options = {}) => {
|
|
|
235
210
|
* @param pack - writes a module's JSON as its value: as it is, or kept out of a build's JavaScript.
|
|
236
211
|
* @param startTexts - a build's browser files': starts reading a pattern's docs, code and pages, which its module
|
|
237
212
|
* imports from the group's texts module; none imports each from its query.
|
|
238
|
-
* @throws when a story file cannot be indexed.
|
|
213
|
+
* @throws when a story file cannot be indexed, and no person at a dev server is told instead (a build, a test run).
|
|
239
214
|
*/
|
|
240
215
|
const storiesModule = async (id, watch, pack, startTexts) => {
|
|
241
216
|
if (id.startsWith(USAGE_ID_PREFIX)) {
|
|
@@ -251,16 +226,14 @@ export const forgebookPlugin = (options = {}) => {
|
|
|
251
226
|
}
|
|
252
227
|
if (!id.startsWith(FILES_PREFIX))
|
|
253
228
|
return undefined;
|
|
254
|
-
filesModules.set(id, undefined);
|
|
255
229
|
const lists = config?.lists ?? {};
|
|
256
230
|
const hasUsage = offersUsedIn(lists);
|
|
257
231
|
// the worker starts while Vite loads the pages, unless the disk keeps the docs; a test run asks for no page
|
|
258
|
-
const { files, code } = patternModule(id, watch, { hasDocs: readsComponentDocs(lists), hasUsage, hasReach: hasUsage && isServing() }, indexCache(), isTestRun ? undefined : extractor().warm, startTexts, access.isKept);
|
|
259
|
-
filesModules.set(id, new Set(files.map((file) => file.file)));
|
|
232
|
+
const { files, refused, code } = keptListing(filesModules, id, () => patternModule(id, watch, { hasDocs: readsComponentDocs(lists), hasUsage, hasReach: hasUsage && isServing() }, indexCache(), isTestRun ? undefined : extractor().warm, startTexts, access.isKept, isForgiving(), config, scripts.list()));
|
|
260
233
|
if (!isRedrawing())
|
|
261
234
|
return { code, moduleType: "js" };
|
|
262
|
-
served.keep(id, files);
|
|
263
|
-
return { code: `${code}\n${
|
|
235
|
+
served.keep(id, { files, refused });
|
|
236
|
+
return { code: `${code}\n${filesModuleHot(refused)}`, moduleType: "js" };
|
|
264
237
|
};
|
|
265
238
|
/**
|
|
266
239
|
* Tells the docs a source file was added or removed: it may be what an import now finds, so no kept docs are read
|
|
@@ -342,6 +315,13 @@ export const forgebookPlugin = (options = {}) => {
|
|
|
342
315
|
(await storiesModule(id, watch, pack, startTexts)) ??
|
|
343
316
|
null);
|
|
344
317
|
};
|
|
318
|
+
// whatever its mode: a run of Vitest has no page to name a file on, and must fail on it
|
|
319
|
+
const vitestHooks = {
|
|
320
|
+
configureVitest: (context) => {
|
|
321
|
+
isTestRun = true;
|
|
322
|
+
VITEST_HOOKS.configureVitest(context);
|
|
323
|
+
}
|
|
324
|
+
};
|
|
345
325
|
return {
|
|
346
326
|
name: "forgebook",
|
|
347
327
|
enforce: "pre",
|
|
@@ -353,7 +333,7 @@ export const forgebookPlugin = (options = {}) => {
|
|
|
353
333
|
if (file !== undefined)
|
|
354
334
|
config = await loadConfigFile(file);
|
|
355
335
|
}
|
|
356
|
-
const pages = config === undefined ? {} : catalogueConfig(config, userConfig);
|
|
336
|
+
const pages = config === undefined ? {} : catalogueConfig(config, userConfig, scripts);
|
|
357
337
|
return {
|
|
358
338
|
...pages,
|
|
359
339
|
css: {
|
|
@@ -382,14 +362,16 @@ export const forgebookPlugin = (options = {}) => {
|
|
|
382
362
|
access.noteImported(pattern);
|
|
383
363
|
return pattern;
|
|
384
364
|
},
|
|
385
|
-
// a warning and not a failure: a theme a reader can still use must not stop a catalogue from building
|
|
386
365
|
configResolved: (resolved) => {
|
|
366
|
+
jsxScripts.remember(resolved);
|
|
367
|
+
checkAtStart(resolved, config?.shell.problems ?? []);
|
|
387
368
|
// a dev server's answers only: a build reads everything once, and stamping each answer's files costs it more than
|
|
388
369
|
// a later build would save
|
|
389
370
|
if (isServing())
|
|
390
371
|
cacheFolder = join(resolved.cacheDir, "forgebook");
|
|
391
|
-
|
|
392
|
-
|
|
372
|
+
scripts.start(resolved.logger, cacheFolder);
|
|
373
|
+
if (config !== undefined && !isTestRun)
|
|
374
|
+
sayEmptyStoryGlobs(config, isServing(), resolved.logger);
|
|
393
375
|
},
|
|
394
376
|
configureServer: (server) => {
|
|
395
377
|
access.serve(server, config === undefined ? undefined : pageModulePath(config.dir, AGENT_SOURCES_FILE));
|
|
@@ -397,7 +379,9 @@ export const forgebookPlugin = (options = {}) => {
|
|
|
397
379
|
access.settle(request.url ?? "/").then(() => next(), next);
|
|
398
380
|
});
|
|
399
381
|
// no person waits for a page in a test run
|
|
400
|
-
|
|
382
|
+
const followed = isTestRun ? undefined : server;
|
|
383
|
+
watching.serve(followed);
|
|
384
|
+
checkouts.serve(followed);
|
|
401
385
|
server.httpServer?.on("close", () => void docs?.close());
|
|
402
386
|
// first: the frames' own origin, and the guard that keeps every other origin's page from reading this one
|
|
403
387
|
if (config !== undefined)
|
|
@@ -415,10 +399,7 @@ export const forgebookPlugin = (options = {}) => {
|
|
|
415
399
|
};
|
|
416
400
|
server.middlewares.use(missingHeightsMiddleware(file));
|
|
417
401
|
}
|
|
418
|
-
server
|
|
419
|
-
if (isLiveErrorReport(report))
|
|
420
|
-
live.add(report, new Date());
|
|
421
|
-
});
|
|
402
|
+
receiveFrameErrors(server, live);
|
|
422
403
|
// the catalogue's pages, made here: no HTML file is written
|
|
423
404
|
server.middlewares.use((request, response, next) => {
|
|
424
405
|
const page = requestedPage(request.url ?? "/");
|
|
@@ -447,6 +428,7 @@ export const forgebookPlugin = (options = {}) => {
|
|
|
447
428
|
return;
|
|
448
429
|
invalidateEverywhere(server, renewed);
|
|
449
430
|
server.ws.send({ type: "full-reload" });
|
|
431
|
+
pagesReloaded(filesModules);
|
|
450
432
|
};
|
|
451
433
|
server.watcher.on("add", refresh);
|
|
452
434
|
server.watcher.on("unlink", refresh);
|
|
@@ -462,21 +444,21 @@ export const forgebookPlugin = (options = {}) => {
|
|
|
462
444
|
},
|
|
463
445
|
// a dev server without an HTTP server of its own (middleware mode) ends its close watch here only
|
|
464
446
|
closeServer: (context) => {
|
|
465
|
-
if (context.reason === "close")
|
|
447
|
+
if (context.reason === "close") {
|
|
466
448
|
watching.close();
|
|
449
|
+
checkouts.close();
|
|
450
|
+
}
|
|
467
451
|
},
|
|
468
452
|
closeBundle: async () => {
|
|
469
453
|
await docs?.close();
|
|
470
454
|
},
|
|
471
|
-
...storyFileHotHooks(isRedrawing, served
|
|
472
|
-
...
|
|
455
|
+
...storyFileHotHooks(isRedrawing, served, watching, scripts),
|
|
456
|
+
...vitestHooks,
|
|
473
457
|
async load(id) {
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
if (refusal !== undefined)
|
|
479
|
-
return refusal;
|
|
458
|
+
// a generated module, a file the server refuses, or a `.js` file whose JSX is compiled as it loads
|
|
459
|
+
const early = (await pagesModule(id)) ?? access.refusal(id) ?? (await jsxScripts.load(id));
|
|
460
|
+
if (early !== null)
|
|
461
|
+
return early;
|
|
480
462
|
// in Vite's form, the text Vite's module graph knows a file by: a Node path on Windows (`C:\app\x.md`) is another
|
|
481
463
|
const watch = (file) => this.addWatchFile(VITE_PATHS.normalize(file));
|
|
482
464
|
const resolveImport = async (specifier, importer) => {
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the dev server does with the errors the open frames report: keeps each, with the place its stack maps to, and
|
|
3
|
+
* answers the frame with the stack in the lines of the files as written.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* The mapping runs here, on the maps of the modules the server served (`stackLines.ts`), so the frame loads no decoder
|
|
7
|
+
* and no map. A stack that cannot be mapped is kept and answered as it came. Used by the plugin's dev server.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
import type { ViteDevServer } from "vite";
|
|
12
|
+
import { type LiveErrors } from "../liveErrors.ts";
|
|
13
|
+
/**
|
|
14
|
+
* Listens to the frames' error reports on the dev server's connection.
|
|
15
|
+
*
|
|
16
|
+
* @param server - the dev server.
|
|
17
|
+
* @param live - where the errors are kept.
|
|
18
|
+
*/
|
|
19
|
+
export declare const receiveFrameErrors: (server: ViteDevServer, live: LiveErrors) => void;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { isLiveErrorReport, LIVE_ERROR_EVENT, MAPPED_STACK_EVENT } from "../liveErrors.js";
|
|
2
|
+
import { mappedStack } from "./stackLines.js";
|
|
3
|
+
/**
|
|
4
|
+
* The module the dev server served at an address, with its map: none for another address or one it keeps no map of.
|
|
5
|
+
*
|
|
6
|
+
* @param server - the dev server.
|
|
7
|
+
* @param address - the address, as a stack names it: the server's own or its frames' origin, which serve the same
|
|
8
|
+
* modules.
|
|
9
|
+
*/
|
|
10
|
+
const servedModule = async (server, address) => {
|
|
11
|
+
let url;
|
|
12
|
+
try {
|
|
13
|
+
const parsed = new URL(address);
|
|
14
|
+
url = `${parsed.pathname}${parsed.search}`;
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
const module = await server.environments.client.moduleGraph.getModuleByUrl(url);
|
|
20
|
+
const map = module?.transformResult?.map;
|
|
21
|
+
if (module?.file == null || map == null || !("version" in map))
|
|
22
|
+
return undefined;
|
|
23
|
+
return { file: module.file, map };
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* A report's stack mapped, or as it came when the mapping fails.
|
|
27
|
+
*
|
|
28
|
+
* @param server - the dev server.
|
|
29
|
+
* @param stack - the stack the frame sent.
|
|
30
|
+
*/
|
|
31
|
+
const mapped = async (server, stack) => {
|
|
32
|
+
try {
|
|
33
|
+
return await mappedStack(stack, (address) => servedModule(server, address), server.config.root);
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return { stack };
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Keeps a report, its stack swapped for the place it maps to, and answers the frame with the stack mapped.
|
|
41
|
+
*
|
|
42
|
+
* @param server - the dev server.
|
|
43
|
+
* @param live - the errors kept.
|
|
44
|
+
* @param report - the frame's report.
|
|
45
|
+
* @param client - the frame's connection.
|
|
46
|
+
*/
|
|
47
|
+
const keep = async (server, live, report, client) => {
|
|
48
|
+
const { stack, ...kept } = report;
|
|
49
|
+
if (stack === undefined) {
|
|
50
|
+
live.add(kept, new Date());
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
const result = await mapped(server, stack);
|
|
54
|
+
live.add(result.place === undefined ? kept : { ...kept, place: result.place }, new Date());
|
|
55
|
+
const answer = { sent: stack, stack: result.stack };
|
|
56
|
+
client.send(MAPPED_STACK_EVENT, answer);
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Listens to the frames' error reports on the dev server's connection.
|
|
60
|
+
*
|
|
61
|
+
* @param server - the dev server.
|
|
62
|
+
* @param live - where the errors are kept.
|
|
63
|
+
*/
|
|
64
|
+
export const receiveFrameErrors = (server, live) => {
|
|
65
|
+
server.ws.on(LIVE_ERROR_EVENT, (report, client) => {
|
|
66
|
+
if (!isLiveErrorReport(report))
|
|
67
|
+
return;
|
|
68
|
+
keep(server, live, report, client).catch((error) => server.config.logger.error(`Forgebook could not keep a frame's error: ${error instanceof Error ? error.message : String(error)}`));
|
|
69
|
+
});
|
|
70
|
+
};
|
|
@@ -3,6 +3,18 @@ import type { ViteDevServer } from "vite";
|
|
|
3
3
|
import { type FramesPlacement } from "../frameOrigins.ts";
|
|
4
4
|
import type { ResolvedConfig } from "./configFile.ts";
|
|
5
5
|
import type { ResolvedFrames } from "./framesConfig.ts";
|
|
6
|
+
/**
|
|
7
|
+
* The ports the frames try, in order, 0 for any free one: the one the configuration gives, alone; else the catalogue's
|
|
8
|
+
* + 1 and the ones after it, as Vite moves on from a port taken. A catalogue on any free port (a command's own server)
|
|
9
|
+
* gives its frames any free port too: the system hands out such ports in order on some platforms, so the one after the
|
|
10
|
+
* catalogue's is the next process's, which Vite has just found free and is about to take.
|
|
11
|
+
*
|
|
12
|
+
* @param configured - the frames' port the configuration gives (`frames.port`, `--frame-port`); none for the default.
|
|
13
|
+
* @param catalogue - the port the catalogue listens on.
|
|
14
|
+
* @param isCatalogueOnAnyPort - whether the catalogue asked for any free port (`port: 0`).
|
|
15
|
+
* @returns the ports, in order.
|
|
16
|
+
*/
|
|
17
|
+
export declare const framesPortTries: (configured: number | undefined, catalogue: number, isCatalogueOnAnyPort: boolean) => readonly number[];
|
|
6
18
|
/** A Connect middleware. */
|
|
7
19
|
type Middleware = (request: IncomingMessage, response: ServerResponse, next: (error?: unknown) => void) => void;
|
|
8
20
|
/** The frames' side of a dev server. */
|
|
@@ -22,6 +22,24 @@ import { catalogueAnswer, FRAME_PAGE_PATH, framesAnswer, graphUrlOf, pageEntries
|
|
|
22
22
|
import { pageHtml } from "./pages.js";
|
|
23
23
|
/** How many ports after the default one the frames try before taking any free port. */
|
|
24
24
|
const PORT_TRIES = 20;
|
|
25
|
+
/**
|
|
26
|
+
* The ports the frames try, in order, 0 for any free one: the one the configuration gives, alone; else the catalogue's
|
|
27
|
+
* + 1 and the ones after it, as Vite moves on from a port taken. A catalogue on any free port (a command's own server)
|
|
28
|
+
* gives its frames any free port too: the system hands out such ports in order on some platforms, so the one after the
|
|
29
|
+
* catalogue's is the next process's, which Vite has just found free and is about to take.
|
|
30
|
+
*
|
|
31
|
+
* @param configured - the frames' port the configuration gives (`frames.port`, `--frame-port`); none for the default.
|
|
32
|
+
* @param catalogue - the port the catalogue listens on.
|
|
33
|
+
* @param isCatalogueOnAnyPort - whether the catalogue asked for any free port (`port: 0`).
|
|
34
|
+
* @returns the ports, in order.
|
|
35
|
+
*/
|
|
36
|
+
export const framesPortTries = (configured, catalogue, isCatalogueOnAnyPort) => {
|
|
37
|
+
if (configured !== undefined)
|
|
38
|
+
return [configured];
|
|
39
|
+
if (isCatalogueOnAnyPort)
|
|
40
|
+
return [0];
|
|
41
|
+
return [...Array.from({ length: PORT_TRIES }, (_, index) => catalogue + 1 + index), 0];
|
|
42
|
+
};
|
|
25
43
|
/**
|
|
26
44
|
* A header's single value.
|
|
27
45
|
*
|
|
@@ -188,6 +206,8 @@ export const framesServing = (server, frames, frameHtml, framedPages) => {
|
|
|
188
206
|
const framesRequests = new WeakSet();
|
|
189
207
|
const sharedPaths = frames.kind === "isolated" ? frames.paths : [];
|
|
190
208
|
let framesPort;
|
|
209
|
+
// read before the catalogue listens: once it does, Vite's resolved options name the port it took
|
|
210
|
+
const isCatalogueOnAnyPort = server.config.server.port === 0;
|
|
191
211
|
let settle = () => undefined;
|
|
192
212
|
const placed = new Promise((resolvePlacement) => {
|
|
193
213
|
settle = resolvePlacement;
|
|
@@ -283,10 +303,7 @@ export const framesServing = (server, frames, frameHtml, framedPages) => {
|
|
|
283
303
|
throw new Error("Forgebook's frames start once the catalogue listens");
|
|
284
304
|
const framesServer = framesHttpServer(server, server.httpServer, handleFrames);
|
|
285
305
|
const wanted = frames.port ?? catalogue.port + 1;
|
|
286
|
-
|
|
287
|
-
const tries = frames.port === undefined
|
|
288
|
-
? [...Array.from({ length: PORT_TRIES }, (_, index) => wanted + index), 0]
|
|
289
|
-
: [wanted];
|
|
306
|
+
const tries = framesPortTries(frames.port, catalogue.port, isCatalogueOnAnyPort);
|
|
290
307
|
const listened = await listenOnFirstFree(framesServer, tries, catalogue.address);
|
|
291
308
|
if (listened === undefined)
|
|
292
309
|
throw new Error(`Forgebook's frames: port ${wanted} is taken (frames.port, --frame-port)`);
|
|
@@ -19,6 +19,8 @@ import { moduleSummaryOf } from "./moduleSummary.js";
|
|
|
19
19
|
import { declarationOrder, declaredSymbol, isForeign, partsOf, propDocs } from "./propDocs.js";
|
|
20
20
|
import { signatureDocs } from "./signatureDocs.js";
|
|
21
21
|
import { metaComponent, metaSubcomponents } from "./storyMeta.js";
|
|
22
|
+
import { bindingsOf } from "./typeParameters.js";
|
|
23
|
+
import { propsOfType } from "./unionProps.js";
|
|
22
24
|
import { guidanceOf } from "./usageGuidance.js";
|
|
23
25
|
/**
|
|
24
26
|
* How a component is called: as a function of its props, or constructed with them into something that renders (a
|
|
@@ -32,6 +34,37 @@ const componentSignatures = (type) => [
|
|
|
32
34
|
.getConstructSignatures()
|
|
33
35
|
.filter((signature) => signature.getReturnType().getProperty("render") !== undefined)
|
|
34
36
|
];
|
|
37
|
+
/**
|
|
38
|
+
* The name an export's component is written by: a default export's symbol is named `default`, its declaration by what
|
|
39
|
+
* the file calls it (`export default function Card`).
|
|
40
|
+
*
|
|
41
|
+
* @param symbol - the declared symbol.
|
|
42
|
+
*/
|
|
43
|
+
const writtenName = (symbol) => {
|
|
44
|
+
const [declaration] = symbol.declarations ?? [];
|
|
45
|
+
const name = declaration === undefined ? undefined : ts.getNameOfDeclaration(declaration);
|
|
46
|
+
return symbol.getName() === "default" && name !== undefined && ts.isIdentifier(name)
|
|
47
|
+
? name.text
|
|
48
|
+
: symbol.getName();
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Why a component lists no props although it takes some: it cannot be called with props, its props are `any`, or
|
|
52
|
+
* every one of them is declared outside its package.
|
|
53
|
+
*
|
|
54
|
+
* @param signature - its first call or construct signature, if any.
|
|
55
|
+
* @param propsType - the type of its props, if it takes any.
|
|
56
|
+
* @param listed - how many props it lists.
|
|
57
|
+
* @param all - how many props its props type has, left out ones included.
|
|
58
|
+
*/
|
|
59
|
+
const propsNoteOf = (signature, propsType, listed, all) => {
|
|
60
|
+
if (signature === undefined)
|
|
61
|
+
return { reason: "no-signature" };
|
|
62
|
+
if (propsType === undefined || listed > 0)
|
|
63
|
+
return undefined;
|
|
64
|
+
if (propsType.flags & ts.TypeFlags.Any)
|
|
65
|
+
return { reason: "untyped" };
|
|
66
|
+
return all > 0 ? { reason: "outside-package", count: all } : undefined;
|
|
67
|
+
};
|
|
35
68
|
/**
|
|
36
69
|
* A component's props, read at the expression that names it.
|
|
37
70
|
*
|
|
@@ -47,9 +80,37 @@ const componentProps = (symbol, expression, checker, storyFile) => {
|
|
|
47
80
|
const propsType = propsSymbol === undefined
|
|
48
81
|
? undefined
|
|
49
82
|
: checker.getNonNullableType(checker.getTypeOfSymbolAtLocation(propsSymbol, expression));
|
|
50
|
-
const
|
|
51
|
-
|
|
83
|
+
const { props, variantOnly } = propsType === undefined ? { props: [], variantOnly: new Map() } : propsOfType(propsType, checker);
|
|
84
|
+
const ownProps = declarationOrder(props.filter((prop) => !isForeign(prop)), dirname(symbol.declarations?.[0]?.getSourceFile().fileName ?? storyFile));
|
|
85
|
+
return {
|
|
86
|
+
propsType,
|
|
87
|
+
ownProps,
|
|
88
|
+
variantOnly,
|
|
89
|
+
bindings: propsType === undefined ? new Map() : bindingsOf(propsType, checker),
|
|
90
|
+
propsNote: propsNoteOf(signature, propsType, ownProps.length, props.length)
|
|
91
|
+
};
|
|
52
92
|
};
|
|
93
|
+
/**
|
|
94
|
+
* The docs of a component's listed props: a prop only some variants declare is never required, and says when it can
|
|
95
|
+
* be passed.
|
|
96
|
+
*
|
|
97
|
+
* @param props - the component's props, as `componentProps` read them.
|
|
98
|
+
* @param checker - the program's checker.
|
|
99
|
+
* @param expression - where the code names the component.
|
|
100
|
+
*/
|
|
101
|
+
const listedProps = (props, checker, expression) => props.ownProps.map((prop) => {
|
|
102
|
+
const variant = props.variantOnly.get(prop);
|
|
103
|
+
const { bindings } = props;
|
|
104
|
+
if (variant === undefined)
|
|
105
|
+
return propDocs(prop, checker, expression, { bindings });
|
|
106
|
+
const variants = variant.declarations.filter((declaration) => declaration !== prop);
|
|
107
|
+
const { onlyWhen } = variant;
|
|
108
|
+
return {
|
|
109
|
+
...propDocs(prop, checker, expression, { variants, bindings }),
|
|
110
|
+
isRequired: false,
|
|
111
|
+
...(onlyWhen === undefined ? {} : { onlyWhen })
|
|
112
|
+
};
|
|
113
|
+
});
|
|
53
114
|
/**
|
|
54
115
|
* The files a component's docs come from: the one declaring it and those declaring its own props.
|
|
55
116
|
*
|
|
@@ -76,13 +137,13 @@ const subcomponentsOf = (source, checker) => {
|
|
|
76
137
|
if (symbol === undefined) {
|
|
77
138
|
return `${source.fileName}: the meta's subcomponent ${subcomponent.name} cannot be resolved`;
|
|
78
139
|
}
|
|
79
|
-
const
|
|
140
|
+
const props = componentProps(symbol, subcomponent.expression, checker, source.fileName);
|
|
80
141
|
docs.push({
|
|
81
142
|
name: subcomponent.name,
|
|
82
143
|
description: summaryOf(symbol, checker),
|
|
83
|
-
props:
|
|
144
|
+
props: listedProps(props, checker, subcomponent.expression)
|
|
84
145
|
});
|
|
85
|
-
sources.push(...docsSources(symbol, ownProps, source.fileName));
|
|
146
|
+
sources.push(...docsSources(symbol, props.ownProps, source.fileName));
|
|
86
147
|
}
|
|
87
148
|
return { docs, sources };
|
|
88
149
|
};
|
|
@@ -96,22 +157,24 @@ const subcomponentsOf = (source, checker) => {
|
|
|
96
157
|
* @param subcomponents - the subcomponents' docs and files; none outside a story file.
|
|
97
158
|
*/
|
|
98
159
|
const componentOf = (symbol, expression, checker, file, subcomponents) => {
|
|
99
|
-
const
|
|
100
|
-
const
|
|
160
|
+
const read = componentProps(symbol, expression, checker, file);
|
|
161
|
+
const { propsType, ownProps, propsNote } = read;
|
|
162
|
+
const props = listedProps(read, checker, expression);
|
|
101
163
|
const parts = partsOf(propsType, checker, expression);
|
|
102
164
|
const declarationFile = symbol.declarations?.[0]?.getSourceFile();
|
|
103
165
|
const sources = docsSources(symbol, ownProps, file);
|
|
104
166
|
const signature = signatureDocs(symbol, expression, checker);
|
|
105
167
|
return {
|
|
106
168
|
docs: {
|
|
107
|
-
name: symbol
|
|
169
|
+
name: writtenName(symbol),
|
|
108
170
|
description: summaryOf(symbol, checker),
|
|
109
171
|
summary: declarationFile === undefined ? "" : moduleSummaryOf(declarationFile.text),
|
|
110
172
|
props,
|
|
111
173
|
parts,
|
|
112
174
|
subcomponents: subcomponents.docs,
|
|
113
175
|
...guidanceOf(symbol, checker),
|
|
114
|
-
...(signature === undefined ? {} : { signature })
|
|
176
|
+
...(signature === undefined ? {} : { signature }),
|
|
177
|
+
...(propsNote === undefined ? {} : { propsNote })
|
|
115
178
|
},
|
|
116
179
|
file: sources[0] ?? file,
|
|
117
180
|
sources: [...new Set([...sources, ...subcomponents.sources])]
|
|
@@ -155,7 +218,7 @@ export const functionComponentDocs = (storyFile) => {
|
|
|
155
218
|
return typeof component === "string" ? component : component.docs;
|
|
156
219
|
};
|
|
157
220
|
/** Whether an export is a component: a name in PascalCase whose value can be called or constructed. */
|
|
158
|
-
const isComponentExport = (symbol, checker, node) => /^[A-Z]/.test(symbol
|
|
221
|
+
const isComponentExport = (symbol, checker, node) => /^[A-Z]/.test(writtenName(symbol)) &&
|
|
159
222
|
componentSignatures(checker.getTypeOfSymbolAtLocation(symbol, node)).length > 0;
|
|
160
223
|
/**
|
|
161
224
|
* A component a file exports, read from its types, for writing its first stories (`forgebook new`).
|
|
@@ -175,9 +238,12 @@ export const functionFileComponent = (file, exportName) => {
|
|
|
175
238
|
const moduleSymbol = checker.getSymbolAtLocation(source);
|
|
176
239
|
if (moduleSymbol === undefined)
|
|
177
240
|
return `${file} exports nothing`;
|
|
178
|
-
const
|
|
241
|
+
const exported = checker
|
|
179
242
|
.getExportsOfModule(moduleSymbol)
|
|
180
243
|
.filter((each) => isComponentExport(declaredSymbol(each, checker) ?? each, checker, source));
|
|
244
|
+
// a component exported both by name and as the default is one component, imported by its name unless asked otherwise
|
|
245
|
+
const named = new Set(exported.filter((each) => each.getName() !== "default").map((each) => declaredSymbol(each, checker)));
|
|
246
|
+
const components = exported.filter((each) => each.getName() !== "default" || exportName === "default" || !named.has(declaredSymbol(each, checker)));
|
|
181
247
|
const chosen = chosenExport(components.map((each) => each.getName()), exportName, file);
|
|
182
248
|
if (typeof chosen !== "string")
|
|
183
249
|
return chosen.problem;
|
|
@@ -189,5 +255,8 @@ export const functionFileComponent = (file, exportName) => {
|
|
|
189
255
|
const name = declaration === undefined ? undefined : ts.getNameOfDeclaration(declaration);
|
|
190
256
|
if (name === undefined || !ts.isIdentifier(name))
|
|
191
257
|
return `${file}: ${export_.getName()} has no name to read it at`;
|
|
192
|
-
|
|
258
|
+
const component = componentOf(symbol, name, checker, file, { docs: [], sources: [] });
|
|
259
|
+
return typeof component === "string" || export_.getName() !== "default"
|
|
260
|
+
? component
|
|
261
|
+
: { ...component, isDefaultExport: true };
|
|
193
262
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The modules the plugin generates for a catalogue's pages: the shell's and the frame's entries, the project's own
|
|
3
|
-
* stories' source, the agents' sources and the pages' HTML, and the ids imports name them by.
|
|
3
|
+
* stories' source, the agents' sources, the galleries' previews and the pages' HTML, and the ids imports name them by.
|
|
4
4
|
*
|
|
5
5
|
* @remarks
|
|
6
6
|
* The configuration's data is not among them: it waits for the frames' placement, which only the plugin knows.
|
|
@@ -11,7 +11,7 @@ import { existsSync } from "node:fs";
|
|
|
11
11
|
import { checksA11y } from "../catalogue.js";
|
|
12
12
|
import { axeAddress } from "./axeScript.js";
|
|
13
13
|
import { builtPlacement } from "./framesConfig.js";
|
|
14
|
-
import { agentSourcesModule, frameEntry, PAGE_ENTRIES, PAGE_FILES, pageHtml, pageModuleOf, pageModulePath, shellEntry, storiesSourceModule } from "./pages.js";
|
|
14
|
+
import { agentSourcesModule, frameEntry, PAGE_ENTRIES, PAGE_FILES, pageHtml, pageModuleOf, pageModulePath, SWITCH_PREVIEWS_MODULE, shellEntry, storiesSourceModule, switchPreviewsModule } from "./pages.js";
|
|
15
15
|
import { VITE_PATHS } from "./vitePaths.js";
|
|
16
16
|
/** The core's folder, where axe's script is found from. */
|
|
17
17
|
const PACKAGE_DIR = import.meta.dirname;
|
|
@@ -25,6 +25,8 @@ const PACKAGE_DIR = import.meta.dirname;
|
|
|
25
25
|
* @param command - whether a dev server runs, or a build: where the frame finds axe's script.
|
|
26
26
|
*/
|
|
27
27
|
export const generatedModule = (id, config, command) => {
|
|
28
|
+
if (id === `\0${SWITCH_PREVIEWS_MODULE}`)
|
|
29
|
+
return { code: switchPreviewsModule(config), moduleType: "js" };
|
|
28
30
|
const named = pageModuleOf(id, config.dir);
|
|
29
31
|
if (named === undefined)
|
|
30
32
|
return undefined;
|