forgebook 0.3.3 → 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 +914 -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 +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 +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 +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 +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 +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/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 +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/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 +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 +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/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
|
@@ -23,30 +23,36 @@
|
|
|
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";
|
|
50
56
|
import { VITE_PATHS } from "./vitePaths.js";
|
|
51
57
|
/** This module's folder, in the core's package: the core's own dependencies resolve from here, not the project's. */
|
|
52
58
|
const PACKAGE_DIR = import.meta.dirname;
|
|
@@ -64,21 +70,6 @@ const sassOptions = async () => {
|
|
|
64
70
|
const DOCS_PAGE_FILE = /\.md$/;
|
|
65
71
|
/** A TypeScript source file, whose edit may change a component's docs. */
|
|
66
72
|
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
73
|
/**
|
|
83
74
|
* The page a request names, when it names one: `/` is the shell's.
|
|
84
75
|
*
|
|
@@ -89,31 +80,6 @@ const requestedPage = (url) => {
|
|
|
89
80
|
const name = path === "/" ? "index.html" : path.replace(/^\//, "");
|
|
90
81
|
return PAGE_FILES.find((page) => page === name);
|
|
91
82
|
};
|
|
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
83
|
/**
|
|
118
84
|
* The catalogue's Vite plugin: the story index, the docs, the code and the Markdown of the stories, the forced-states
|
|
119
85
|
* rewrite of every style sheet and, with a configuration, the catalogue's two pages.
|
|
@@ -124,8 +90,8 @@ const docsModuleOf = async (id, watch, isServing, plugins, isKept) => {
|
|
|
124
90
|
*/
|
|
125
91
|
export const forgebookPlugin = (options = {}) => {
|
|
126
92
|
/**
|
|
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
|
|
93
|
+
* The modules of the groups of story files, with the versions served since the pages last reloaded (none while it
|
|
94
|
+
* could not be made), renewed when a story file is added to or removed from what a page may hold.
|
|
129
95
|
*/
|
|
130
96
|
const filesModules = new Map();
|
|
131
97
|
// what each pattern's module was served with: an edit of a story file that changes its list reloads the pages
|
|
@@ -153,11 +119,13 @@ export const forgebookPlugin = (options = {}) => {
|
|
|
153
119
|
if (config === undefined)
|
|
154
120
|
return undefined;
|
|
155
121
|
if (id === CONFIG_ID)
|
|
156
|
-
return { code: configModule(config, await framesPlacement()), moduleType: "js" };
|
|
122
|
+
return { code: configModule(config, await framesPlacement(), isServing()), moduleType: "js" };
|
|
157
123
|
return generatedModule(id, config, command);
|
|
158
124
|
};
|
|
159
125
|
/** The files followed one by one, so an edit reaches the dev server at once. */
|
|
160
126
|
const watching = currentCloseWatch();
|
|
127
|
+
/** Git's checkouts, so the files a branch switch rewrites reach the dev server when the system's events do not. */
|
|
128
|
+
const checkouts = currentCheckoutWatch();
|
|
161
129
|
/** Whether a dev server runs, or a build: tools ask only the former. */
|
|
162
130
|
let command = "serve";
|
|
163
131
|
const isServing = () => command === "serve";
|
|
@@ -170,6 +138,9 @@ export const forgebookPlugin = (options = {}) => {
|
|
|
170
138
|
});
|
|
171
139
|
// a build's docs, code and pages of each group's story files, read while the build loads the stories
|
|
172
140
|
const texts = groupTexts();
|
|
141
|
+
// 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
|
|
142
|
+
// no page to name it on
|
|
143
|
+
const isForgiving = () => isServing() && !isTestRun;
|
|
173
144
|
// whether an edited story file is drawn anew in its open frames: a dev server's, unless the framework cannot
|
|
174
145
|
const isRedrawing = () => isServing() && (config?.framework ?? options.framework)?.redrawsEditedStories !== false;
|
|
175
146
|
/**
|
|
@@ -177,8 +148,10 @@ export const forgebookPlugin = (options = {}) => {
|
|
|
177
148
|
* still loading TypeScript when the tests end is stopped by Node mid-parse, which aborts the process.
|
|
178
149
|
*/
|
|
179
150
|
let isTestRun = false;
|
|
151
|
+
const scripts = { ...scriptProblems(), isQuick: options.isQuickScan === true };
|
|
180
152
|
/** Where answers are kept between starts (`diskCache.ts`): in Vite's cache folder, so what clears it clears them. */
|
|
181
153
|
let cacheFolder;
|
|
154
|
+
const jsxScripts = jsxInScripts(() => config?.framework ?? options.framework);
|
|
182
155
|
/** The stamp of the plugin's own code, which makes the kept indexes and code: another version is a miss. */
|
|
183
156
|
let pluginCode;
|
|
184
157
|
const keptCache = (kind, isValue) => {
|
|
@@ -235,7 +208,7 @@ export const forgebookPlugin = (options = {}) => {
|
|
|
235
208
|
* @param pack - writes a module's JSON as its value: as it is, or kept out of a build's JavaScript.
|
|
236
209
|
* @param startTexts - a build's browser files': starts reading a pattern's docs, code and pages, which its module
|
|
237
210
|
* imports from the group's texts module; none imports each from its query.
|
|
238
|
-
* @throws when a story file cannot be indexed.
|
|
211
|
+
* @throws when a story file cannot be indexed, and no person at a dev server is told instead (a build, a test run).
|
|
239
212
|
*/
|
|
240
213
|
const storiesModule = async (id, watch, pack, startTexts) => {
|
|
241
214
|
if (id.startsWith(USAGE_ID_PREFIX)) {
|
|
@@ -251,16 +224,14 @@ export const forgebookPlugin = (options = {}) => {
|
|
|
251
224
|
}
|
|
252
225
|
if (!id.startsWith(FILES_PREFIX))
|
|
253
226
|
return undefined;
|
|
254
|
-
filesModules.set(id, undefined);
|
|
255
227
|
const lists = config?.lists ?? {};
|
|
256
228
|
const hasUsage = offersUsedIn(lists);
|
|
257
229
|
// 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)));
|
|
230
|
+
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
231
|
if (!isRedrawing())
|
|
261
232
|
return { code, moduleType: "js" };
|
|
262
|
-
served.keep(id, files);
|
|
263
|
-
return { code: `${code}\n${
|
|
233
|
+
served.keep(id, { files, refused });
|
|
234
|
+
return { code: `${code}\n${filesModuleHot(refused)}`, moduleType: "js" };
|
|
264
235
|
};
|
|
265
236
|
/**
|
|
266
237
|
* 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 +313,13 @@ export const forgebookPlugin = (options = {}) => {
|
|
|
342
313
|
(await storiesModule(id, watch, pack, startTexts)) ??
|
|
343
314
|
null);
|
|
344
315
|
};
|
|
316
|
+
// whatever its mode: a run of Vitest has no page to name a file on, and must fail on it
|
|
317
|
+
const vitestHooks = {
|
|
318
|
+
configureVitest: (context) => {
|
|
319
|
+
isTestRun = true;
|
|
320
|
+
VITEST_HOOKS.configureVitest(context);
|
|
321
|
+
}
|
|
322
|
+
};
|
|
345
323
|
return {
|
|
346
324
|
name: "forgebook",
|
|
347
325
|
enforce: "pre",
|
|
@@ -353,7 +331,7 @@ export const forgebookPlugin = (options = {}) => {
|
|
|
353
331
|
if (file !== undefined)
|
|
354
332
|
config = await loadConfigFile(file);
|
|
355
333
|
}
|
|
356
|
-
const pages = config === undefined ? {} : catalogueConfig(config, userConfig);
|
|
334
|
+
const pages = config === undefined ? {} : catalogueConfig(config, userConfig, scripts);
|
|
357
335
|
return {
|
|
358
336
|
...pages,
|
|
359
337
|
css: {
|
|
@@ -382,14 +360,16 @@ export const forgebookPlugin = (options = {}) => {
|
|
|
382
360
|
access.noteImported(pattern);
|
|
383
361
|
return pattern;
|
|
384
362
|
},
|
|
385
|
-
// a warning and not a failure: a theme a reader can still use must not stop a catalogue from building
|
|
386
363
|
configResolved: (resolved) => {
|
|
364
|
+
jsxScripts.remember(resolved);
|
|
365
|
+
checkAtStart(resolved, config?.shell.problems ?? []);
|
|
387
366
|
// a dev server's answers only: a build reads everything once, and stamping each answer's files costs it more than
|
|
388
367
|
// a later build would save
|
|
389
368
|
if (isServing())
|
|
390
369
|
cacheFolder = join(resolved.cacheDir, "forgebook");
|
|
391
|
-
|
|
392
|
-
|
|
370
|
+
scripts.start(resolved.logger, cacheFolder);
|
|
371
|
+
if (config !== undefined && !isTestRun)
|
|
372
|
+
sayEmptyStoryGlobs(config, isServing(), resolved.logger);
|
|
393
373
|
},
|
|
394
374
|
configureServer: (server) => {
|
|
395
375
|
access.serve(server, config === undefined ? undefined : pageModulePath(config.dir, AGENT_SOURCES_FILE));
|
|
@@ -397,7 +377,9 @@ export const forgebookPlugin = (options = {}) => {
|
|
|
397
377
|
access.settle(request.url ?? "/").then(() => next(), next);
|
|
398
378
|
});
|
|
399
379
|
// no person waits for a page in a test run
|
|
400
|
-
|
|
380
|
+
const followed = isTestRun ? undefined : server;
|
|
381
|
+
watching.serve(followed);
|
|
382
|
+
checkouts.serve(followed);
|
|
401
383
|
server.httpServer?.on("close", () => void docs?.close());
|
|
402
384
|
// first: the frames' own origin, and the guard that keeps every other origin's page from reading this one
|
|
403
385
|
if (config !== undefined)
|
|
@@ -415,10 +397,7 @@ export const forgebookPlugin = (options = {}) => {
|
|
|
415
397
|
};
|
|
416
398
|
server.middlewares.use(missingHeightsMiddleware(file));
|
|
417
399
|
}
|
|
418
|
-
server
|
|
419
|
-
if (isLiveErrorReport(report))
|
|
420
|
-
live.add(report, new Date());
|
|
421
|
-
});
|
|
400
|
+
receiveFrameErrors(server, live);
|
|
422
401
|
// the catalogue's pages, made here: no HTML file is written
|
|
423
402
|
server.middlewares.use((request, response, next) => {
|
|
424
403
|
const page = requestedPage(request.url ?? "/");
|
|
@@ -447,6 +426,7 @@ export const forgebookPlugin = (options = {}) => {
|
|
|
447
426
|
return;
|
|
448
427
|
invalidateEverywhere(server, renewed);
|
|
449
428
|
server.ws.send({ type: "full-reload" });
|
|
429
|
+
pagesReloaded(filesModules);
|
|
450
430
|
};
|
|
451
431
|
server.watcher.on("add", refresh);
|
|
452
432
|
server.watcher.on("unlink", refresh);
|
|
@@ -462,21 +442,21 @@ export const forgebookPlugin = (options = {}) => {
|
|
|
462
442
|
},
|
|
463
443
|
// a dev server without an HTTP server of its own (middleware mode) ends its close watch here only
|
|
464
444
|
closeServer: (context) => {
|
|
465
|
-
if (context.reason === "close")
|
|
445
|
+
if (context.reason === "close") {
|
|
466
446
|
watching.close();
|
|
447
|
+
checkouts.close();
|
|
448
|
+
}
|
|
467
449
|
},
|
|
468
450
|
closeBundle: async () => {
|
|
469
451
|
await docs?.close();
|
|
470
452
|
},
|
|
471
|
-
...storyFileHotHooks(isRedrawing, served
|
|
472
|
-
...
|
|
453
|
+
...storyFileHotHooks(isRedrawing, served, watching, scripts),
|
|
454
|
+
...vitestHooks,
|
|
473
455
|
async load(id) {
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
if (refusal !== undefined)
|
|
479
|
-
return refusal;
|
|
456
|
+
// a generated module, a file the server refuses, or a `.js` file whose JSX is compiled as it loads
|
|
457
|
+
const early = (await pagesModule(id)) ?? access.refusal(id) ?? (await jsxScripts.load(id));
|
|
458
|
+
if (early !== null)
|
|
459
|
+
return early;
|
|
480
460
|
// 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
461
|
const watch = (file) => this.addWatchFile(VITE_PATHS.normalize(file));
|
|
482
462
|
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;
|