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
package/dist/src/vite/pages.js
CHANGED
|
@@ -18,6 +18,7 @@ import { LOAD_RELOADS_KEY } from "../frame/staleModule.js";
|
|
|
18
18
|
import { PREVIEWS_EVENT } from "../hotModules.js";
|
|
19
19
|
import { PLAY_TOOLS_PACKAGES } from "./configFile.js";
|
|
20
20
|
import { pluginFrameModule } from "./pluginConfig.js";
|
|
21
|
+
import { refsLines } from "./refsConfig.js";
|
|
21
22
|
import { DOCS_PAGES_SPECIFIER_PREFIX, FILES_SPECIFIER_PREFIX, storyFilesGroupText } from "./storyFilesModule.js";
|
|
22
23
|
import { HOME_QUERY } from "./textQueries.js";
|
|
23
24
|
import { VITE_PATHS } from "./vitePaths.js";
|
|
@@ -27,6 +28,8 @@ export const PAGE_FILES = ["index.html", "frame.html"];
|
|
|
27
28
|
export const CONFIG_MODULE = "virtual:forgebook/config";
|
|
28
29
|
/** The module the shell reads the design tokens from, imported on first use: a page that shows none never loads it. */
|
|
29
30
|
export const TOKENS_MODULE = "virtual:forgebook/tokens";
|
|
31
|
+
/** The previews of the catalogue's galleries, with each picture's address: loaded when a gallery first opens. */
|
|
32
|
+
export const SWITCH_PREVIEWS_MODULE = "virtual:forgebook/switch-previews";
|
|
30
33
|
/**
|
|
31
34
|
* The entries the pages load, by page: file names in the configuration's folder, never written to disk. Named as
|
|
32
35
|
* files rather than virtual modules because the build names a page's chunk and its style sheet after its entry, and a
|
|
@@ -80,6 +83,18 @@ export const pageModuleOf = (path, dir, paths = VITE_PATHS) => {
|
|
|
80
83
|
* @param text - the text.
|
|
81
84
|
*/
|
|
82
85
|
const escaped = (text) => text.replace(/[&<>"]/g, (character) => `&#${character.charCodeAt(0)};`);
|
|
86
|
+
/**
|
|
87
|
+
* A script as the page carries it: each line without its indent, and the lines that only comment left out. Every
|
|
88
|
+
* frame of a catalogue loads it, and a build counts it in every frame page it writes; the source keeps its indents and
|
|
89
|
+
* comments for whoever reads it.
|
|
90
|
+
*
|
|
91
|
+
* @param script - the script, one statement or brace per line, no string that spans lines.
|
|
92
|
+
*/
|
|
93
|
+
const compactScript = (script) => script
|
|
94
|
+
.split("\n")
|
|
95
|
+
.map((line) => line.trim())
|
|
96
|
+
.filter((line) => line !== "" && !line.startsWith("//"))
|
|
97
|
+
.join("\n");
|
|
83
98
|
/**
|
|
84
99
|
* What a frame shows when its code fails before the frame starts: a preview or a source that throws while it loads, or
|
|
85
100
|
* a module that cannot be loaded at all. The frame's own code never runs then, so without this the frame stays blank
|
|
@@ -189,25 +204,86 @@ export const pageHtml = (page, config, placement) => [
|
|
|
189
204
|
" </head>",
|
|
190
205
|
" <body>",
|
|
191
206
|
' <div id="root"></div>',
|
|
192
|
-
...(page === "frame.html" ? [` <script>${frameLoadGuard(placement)}</script>`] : []),
|
|
207
|
+
...(page === "frame.html" ? [` <script>${compactScript(frameLoadGuard(placement))}</script>`] : []),
|
|
193
208
|
` <script type="module" src="/${PAGE_ENTRIES[page]}"></script>`,
|
|
194
209
|
" </body>",
|
|
195
210
|
"</html>",
|
|
196
211
|
""
|
|
197
212
|
].join("\n");
|
|
213
|
+
/**
|
|
214
|
+
* A switch as the pages read it from the configuration's data: without its values' previews and sheets, which the
|
|
215
|
+
* pages' entries import by themselves, so each first load carries no more than a name for what it may never fetch.
|
|
216
|
+
*
|
|
217
|
+
* @param each - the switch.
|
|
218
|
+
*/
|
|
219
|
+
const pageSwitch = (each) => ({
|
|
220
|
+
...each,
|
|
221
|
+
values: each.values.map(({ preview: _preview, sheet: _sheet, ...value }) => value)
|
|
222
|
+
});
|
|
223
|
+
/**
|
|
224
|
+
* An import of a file for its address alone. Never inlined, whatever its size: a small file's bytes would otherwise
|
|
225
|
+
* land in the page that imports it, in the first load of a catalogue that may never draw it.
|
|
226
|
+
*
|
|
227
|
+
* @param name - the imported name.
|
|
228
|
+
* @param file - the file's path.
|
|
229
|
+
*/
|
|
230
|
+
const addressImport = (name, file) => `import ${name} from ${codeLiteral(`${file}?url&no-inline`)};`;
|
|
231
|
+
/**
|
|
232
|
+
* The module of the galleries' previews: by switch id then value, with each picture's address.
|
|
233
|
+
*
|
|
234
|
+
* @param config - the configuration.
|
|
235
|
+
*/
|
|
236
|
+
export const switchPreviewsModule = (config) => {
|
|
237
|
+
const imports = [];
|
|
238
|
+
const switches = (config.switches ?? []).flatMap((each) => {
|
|
239
|
+
const values = each.values.flatMap(({ value, preview }) => {
|
|
240
|
+
if (preview === undefined)
|
|
241
|
+
return [];
|
|
242
|
+
if (!("image" in preview)) {
|
|
243
|
+
// only the checked fields: serialising the object itself would let a `toJSON` write what was not checked
|
|
244
|
+
const { swatches, font } = preview;
|
|
245
|
+
return [`${codeLiteral(value)}: ${codeLiteral({ swatches: [...swatches], font })}`];
|
|
246
|
+
}
|
|
247
|
+
const name = `picture${imports.length}`;
|
|
248
|
+
imports.push(addressImport(name, preview.image));
|
|
249
|
+
return [`${codeLiteral(value)}: { image: ${name} }`];
|
|
250
|
+
});
|
|
251
|
+
return values.length === 0 ? [] : [`${codeLiteral(each.id)}: { ${values.join(", ")} }`];
|
|
252
|
+
});
|
|
253
|
+
return [...imports, `export default { ${switches.join(", ")} };`, ""].join("\n");
|
|
254
|
+
};
|
|
255
|
+
/**
|
|
256
|
+
* The imports of the switches' values' sheets, and the frame's list of their addresses.
|
|
257
|
+
*
|
|
258
|
+
* @param config - the configuration.
|
|
259
|
+
*/
|
|
260
|
+
const valueSheetsCode = (config) => {
|
|
261
|
+
const imports = [];
|
|
262
|
+
const list = (config.switches ?? []).flatMap((each) => each.values.flatMap(({ value, sheet }) => {
|
|
263
|
+
if (sheet === undefined)
|
|
264
|
+
return [];
|
|
265
|
+
const name = `valueSheet${imports.length}`;
|
|
266
|
+
imports.push(addressImport(name, sheet));
|
|
267
|
+
return [`${codeLiteral(`${each.id}=${value}`)}: ${name}`];
|
|
268
|
+
}));
|
|
269
|
+
return { imports, list };
|
|
270
|
+
};
|
|
198
271
|
/**
|
|
199
272
|
* The configuration's data, as the pages' module exports it.
|
|
200
273
|
*
|
|
201
274
|
* @param config - the configuration.
|
|
202
275
|
* @param frames - where the frames run: known on the dev server once both of its ports listen.
|
|
203
276
|
*/
|
|
204
|
-
export const configModule = (config, frames) => {
|
|
277
|
+
export const configModule = (config, frames, isServing) => {
|
|
205
278
|
const data = {
|
|
206
279
|
title: config.title,
|
|
207
280
|
heights: config.heights,
|
|
208
|
-
switches: config.switches,
|
|
281
|
+
switches: config.switches?.map(pageSwitch),
|
|
282
|
+
// only a dev server draws a home with no story: a built catalogue carries nothing of the project's layout
|
|
283
|
+
...(isServing ? { storyGlobs: config.stories } : {}),
|
|
209
284
|
languages: config.languages,
|
|
210
|
-
|
|
285
|
+
// a reader of published docs did not ask for a story to play; a dev server's author did
|
|
286
|
+
lists: isServing ? config.lists : { play: "off", ...config.lists },
|
|
211
287
|
frames
|
|
212
288
|
};
|
|
213
289
|
return `export default ${codeLiteral(data)};`;
|
|
@@ -277,6 +353,22 @@ const pluginViewLines = (config) => {
|
|
|
277
353
|
` pluginHosts: () => import(${codeLiteral(PLUGIN_HOSTS_MODULE)}).then((module) => module.pluginHosts),`
|
|
278
354
|
];
|
|
279
355
|
};
|
|
356
|
+
/**
|
|
357
|
+
* The shell's list of the custom controls, each with the import that loads it when a story names it; nothing for a
|
|
358
|
+
* catalogue without any, whose entry is then what it would be with no such feature.
|
|
359
|
+
*
|
|
360
|
+
* @param config - the configuration.
|
|
361
|
+
*/
|
|
362
|
+
const argControlLines = (config) => {
|
|
363
|
+
const controls = Object.entries(config.argControls);
|
|
364
|
+
return controls.length === 0
|
|
365
|
+
? []
|
|
366
|
+
: [
|
|
367
|
+
" argControls: {",
|
|
368
|
+
...controls.map(([name, module]) => ` ${codeLiteral(name)}: () => import(${codeLiteral(module)}),`),
|
|
369
|
+
" },"
|
|
370
|
+
];
|
|
371
|
+
};
|
|
280
372
|
/**
|
|
281
373
|
* The shell's entry: the shell mounted with the configuration's data, the logo, the sources and the code writer.
|
|
282
374
|
*
|
|
@@ -300,12 +392,15 @@ export const shellEntry = (config) => {
|
|
|
300
392
|
...(config.heights === undefined ? [] : [" heights: config.heights,"]),
|
|
301
393
|
...(config.home === undefined ? [] : [` home: ${writtenHomeCode(config.home)},`]),
|
|
302
394
|
` sources: ${sources.list},`,
|
|
395
|
+
...(config.stories.length === 0 ? [] : [" storyGlobs: config.storyGlobs,"]),
|
|
303
396
|
' frameUrl: "frame.html",',
|
|
304
397
|
" frames: config.frames,",
|
|
305
398
|
" languages: config.languages,",
|
|
306
399
|
...(config.switches === undefined ? [] : [" switches: config.switches,"]),
|
|
307
400
|
" lists: config.lists,",
|
|
401
|
+
...refsLines(config),
|
|
308
402
|
...pluginViewLines(config),
|
|
403
|
+
...argControlLines(config),
|
|
309
404
|
...(config.framework.addressTexts === undefined
|
|
310
405
|
? []
|
|
311
406
|
: [` addressTexts: ${codeLiteral(config.framework.addressTexts)},`]),
|
|
@@ -313,6 +408,12 @@ export const shellEntry = (config) => {
|
|
|
313
408
|
...(config.tokens.length === 0 && config.sources.length === 0
|
|
314
409
|
? []
|
|
315
410
|
: [` loadTokens: () => import(${codeLiteral(TOKENS_MODULE)}).then((module) => module.default),`]),
|
|
411
|
+
// only for a catalogue with previews: the others' first load carries not even the way to them
|
|
412
|
+
...(config.switches?.some((each) => each.values.some((value) => value.preview !== undefined))
|
|
413
|
+
? [
|
|
414
|
+
` loadSwitchPreviews: () => import(${codeLiteral(SWITCH_PREVIEWS_MODULE)}).then((module) => module.default),`
|
|
415
|
+
]
|
|
416
|
+
: []),
|
|
316
417
|
" codeOf",
|
|
317
418
|
" });",
|
|
318
419
|
""
|
|
@@ -356,6 +457,7 @@ const previewsHot = (previews) => previews.length === 0
|
|
|
356
457
|
* found, which leaves the card to say so.
|
|
357
458
|
*/
|
|
358
459
|
export const frameEntry = (config, axe) => {
|
|
460
|
+
const valueSheets = valueSheetsCode(config);
|
|
359
461
|
const sources = sourcesCode(config);
|
|
360
462
|
const frames = config.plugins.flatMap((plugin) => {
|
|
361
463
|
const frame = pluginFrameModule(plugin, config.framework.name);
|
|
@@ -366,6 +468,7 @@ export const frameEntry = (config, axe) => {
|
|
|
366
468
|
`import config from ${codeLiteral(CONFIG_MODULE)};`,
|
|
367
469
|
...(axe?.imports ?? []),
|
|
368
470
|
...sources.imports,
|
|
471
|
+
...valueSheets.imports,
|
|
369
472
|
...config.previews.map((file, index) => `import * as preview${index} from ${codeLiteral(file)};`),
|
|
370
473
|
...frames.map((plugin, index) => `import { frame as pluginFrame${index} } from ${codeLiteral(plugin.frame)};`),
|
|
371
474
|
'const root = document.getElementById("root");',
|
|
@@ -375,6 +478,7 @@ export const frameEntry = (config, axe) => {
|
|
|
375
478
|
...(axe === undefined ? [] : [` axeUrl: ${axe.value},`]),
|
|
376
479
|
" languages: config.languages,",
|
|
377
480
|
...(config.switches === undefined ? [] : [" switches: config.switches,"]),
|
|
481
|
+
...(valueSheets.list.length === 0 ? [] : [` valueSheets: { ${valueSheets.list.join(", ")} },`]),
|
|
378
482
|
" lists: config.lists,",
|
|
379
483
|
" frames: config.frames,",
|
|
380
484
|
...(config.hasPlayTools ? [playToolsLoader()] : []),
|
|
@@ -101,6 +101,10 @@ const shapeProblem = (plugin) => {
|
|
|
101
101
|
];
|
|
102
102
|
if (named.some((name) => typeof name !== "string"))
|
|
103
103
|
return `the plugin "${plugin.id}" adds something with no id`;
|
|
104
|
+
// a configuration is not type-checked: what a value brings stays the catalogue's to declare
|
|
105
|
+
const isOverreaching = (plugin.switches ?? []).some((each) => (each.values ?? []).some((value) => ["implies", "preview", "sheet"].some((key) => key in value)));
|
|
106
|
+
if (isOverreaching)
|
|
107
|
+
return `the plugin "${plugin.id}" gives a switch's value implies, preview or sheet: those are the catalogue's`;
|
|
104
108
|
const { frame } = plugin;
|
|
105
109
|
const isFrame = frame === undefined || typeof frame === "string" || (typeof frame === "object" && frame !== null);
|
|
106
110
|
return isFrame ? undefined : `the plugin "${plugin.id}" names a frame that is no specifier`;
|
|
@@ -40,3 +40,5 @@ export declare const namesGroup: (code: string) => boolean;
|
|
|
40
40
|
export declare const CONFIG_ID = "\0virtual:forgebook/config";
|
|
41
41
|
/** The resolved id of the design tokens' module. */
|
|
42
42
|
export declare const TOKENS_ID = "\0virtual:forgebook/tokens";
|
|
43
|
+
/** The resolved id of the galleries' previews. */
|
|
44
|
+
export declare const SWITCH_PREVIEWS_ID = "\0virtual:forgebook/switch-previews";
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* @module
|
|
6
6
|
*/
|
|
7
|
-
import { CONFIG_MODULE, TOKENS_MODULE } from "./pages.js";
|
|
7
|
+
import { CONFIG_MODULE, SWITCH_PREVIEWS_MODULE, TOKENS_MODULE } from "./pages.js";
|
|
8
8
|
import { FILES_PREFIX } from "./pluginModules.js";
|
|
9
9
|
import { DOCS_PAGES_SPECIFIER_PREFIX, FILES_SPECIFIER_PREFIX, GROUP_SEPARATOR, PAGES_SEARCH_PREFIX, REACH_PREFIX, SEARCH_PREFIX, storyFilesGroupText, TEXTS_PREFIX, USAGE_PREFIX } from "./storyFilesModule.js";
|
|
10
10
|
/** The query that asks for the story files a pattern matches (`../src/**\/*.stories.tsx?forgebook-files`). */
|
|
@@ -61,6 +61,8 @@ export const virtualId = (source) => {
|
|
|
61
61
|
return CONFIG_ID;
|
|
62
62
|
if (source === TOKENS_MODULE)
|
|
63
63
|
return TOKENS_ID;
|
|
64
|
+
if (source === SWITCH_PREVIEWS_MODULE)
|
|
65
|
+
return SWITCH_PREVIEWS_ID;
|
|
64
66
|
return VIRTUAL_PREFIXES.some((prefix) => source.startsWith(prefix)) ? `\0${source}` : undefined;
|
|
65
67
|
};
|
|
66
68
|
/**
|
|
@@ -97,3 +99,5 @@ export const namesGroup = (code) => [FILES_QUERY, DOCS_PAGES_QUERY, ...VIRTUAL_P
|
|
|
97
99
|
export const CONFIG_ID = `\0${CONFIG_MODULE}`;
|
|
98
100
|
/** The resolved id of the design tokens' module. */
|
|
99
101
|
export const TOKENS_ID = `\0${TOKENS_MODULE}`;
|
|
102
|
+
/** The resolved id of the galleries' previews. */
|
|
103
|
+
export const SWITCH_PREVIEWS_ID = `\0${SWITCH_PREVIEWS_MODULE}`;
|
|
@@ -8,10 +8,12 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @module
|
|
10
10
|
*/
|
|
11
|
+
import type { ViteDevServer } from "vite";
|
|
12
|
+
import type { ResolvedConfig } from "./configFile.ts";
|
|
11
13
|
import type { DiskCache } from "./diskCache.ts";
|
|
12
14
|
import type { DocsExtractor, DocsResult } from "./docsExtractor.ts";
|
|
13
15
|
import type { PackJson } from "./packedModule.ts";
|
|
14
|
-
import { type GroupLoaders, type IndexedStoryFile, type IsFileKept, type KeptIndex } from "./storyFilesModule.ts";
|
|
16
|
+
import { type GroupLoaders, type IndexedStoryFile, type IsFileKept, type KeptIndex, type RefusedStoryFile } from "./storyFilesModule.ts";
|
|
15
17
|
/**
|
|
16
18
|
* The id of a group of story files' module: virtual, with the declaring module's folder and the patterns after it,
|
|
17
19
|
* whether a `?forgebook-files` import or the group's specifier (`FILES_SPECIFIER_PREFIX`) names it.
|
|
@@ -52,38 +54,99 @@ export declare const docsModule: (component: DocsResult, watch: (file: string) =
|
|
|
52
54
|
* @param watch - adds a file whose edit renews the module (each story file).
|
|
53
55
|
* @param loaders - the group's loaders besides its story files'.
|
|
54
56
|
* @param cache - the pattern's index kept between starts; none reads every file.
|
|
55
|
-
* @param warm - starts reading the docs of
|
|
57
|
+
* @param warm - starts reading the docs of the group's story files ahead of their requests; none in a test run.
|
|
56
58
|
* @param startTexts - a build's: starts reading the files' docs, code and pages, which the module imports from the
|
|
57
59
|
* group's texts module (`builtTexts.ts`); none imports each from its query.
|
|
58
60
|
* @param isKept - whether a listed file may be read; every one by default.
|
|
59
|
-
* @
|
|
61
|
+
* @param isForgiving - whether a file that cannot be indexed is named among the catalogue's problems while the others
|
|
62
|
+
* draw (a person at a dev server), rather than failing the module (a build, a test run).
|
|
63
|
+
* @param catalogue - the catalogue, whose previews' tags every story takes; none has none.
|
|
64
|
+
* @param scriptProblems - the project's scripts that do not parse, named among the catalogue's problems with the files
|
|
65
|
+
* that cannot be indexed (`scriptProblems.ts`), where those are (a dev server); none by default.
|
|
66
|
+
* @throws when a story file cannot be indexed, unless it is forgiven.
|
|
60
67
|
*/
|
|
61
|
-
export declare const patternModule: (id: string, watch: (file: string) => void, loaders: GroupLoaders, cache: DiskCache<KeptIndex> | undefined, warm: ((
|
|
68
|
+
export declare const patternModule: (id: string, watch: (file: string) => void, loaders: GroupLoaders, cache: DiskCache<KeptIndex> | undefined, warm: ((storyFiles: readonly string[]) => void) | undefined, startTexts?: (files: readonly IndexedStoryFile[]) => void, isKept?: IsFileKept, isForgiving?: boolean, catalogue?: {
|
|
69
|
+
readonly previews: readonly string[];
|
|
70
|
+
}, scriptProblems?: readonly string[]) => {
|
|
62
71
|
code: string;
|
|
63
72
|
moduleType: "js";
|
|
64
73
|
files: readonly IndexedStoryFile[];
|
|
74
|
+
refused: readonly RefusedStoryFile[];
|
|
65
75
|
};
|
|
66
76
|
/**
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
|
|
77
|
+
* The versions of a group's module served since the pages last reloaded: a page holds one of them, or loads the module
|
|
78
|
+
* after the next change.
|
|
79
|
+
*/
|
|
80
|
+
export type ServedListings = {
|
|
81
|
+
/** The files any of those versions listed. */
|
|
82
|
+
readonly some: ReadonlySet<string>;
|
|
83
|
+
/** The files every one of them listed; none when no version was served since. */
|
|
84
|
+
readonly every: ReadonlySet<string> | undefined;
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Whether a story file added or removed changes what a page may hold of a group of story files: listed now and missing
|
|
88
|
+
* from a version served since the pages last reloaded, or gone and listed by one. A file no pattern lists, or one a
|
|
89
|
+
* `!` pattern leaves out, changes nothing, so the pages need no reload for it.
|
|
90
|
+
*
|
|
91
|
+
* @remarks
|
|
92
|
+
* The module's last version is no measure: another reader (a second tab, a frame, the agents' API) may load it again
|
|
93
|
+
* between the change on the disk and the file's event, and a page that loaded it before would then never reload. A
|
|
94
|
+
* branch switch makes that window wide, as its events arrive after the files are written. Every version since the last
|
|
95
|
+
* reload counts, and no earlier one: that reload renewed the pages that held those.
|
|
70
96
|
*
|
|
71
97
|
* @param id - the group's module's id (`FILES_PREFIX`, then the group).
|
|
72
|
-
* @param
|
|
98
|
+
* @param served - the versions served since the pages last reloaded; none when the module could not be made.
|
|
73
99
|
* @param file - the file added or removed.
|
|
74
100
|
* @param isKept - whether a listed file may be read; every one by default.
|
|
75
101
|
*/
|
|
76
|
-
export declare const isListingChanged: (id: string,
|
|
102
|
+
export declare const isListingChanged: (id: string, served: ServedListings | undefined, file: string, isKept?: IsFileKept) => boolean;
|
|
103
|
+
/**
|
|
104
|
+
* 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
|
|
105
|
+
* first: a catalogue may have no docs pages, and a story's page reads none.
|
|
106
|
+
*
|
|
107
|
+
* @param id - the module's id.
|
|
108
|
+
* @param watch - adds a file whose edit renews the module.
|
|
109
|
+
* @param isServing - whether a dev server runs.
|
|
110
|
+
* @param plugins - the catalogue's plugins, whose fences a page may draw.
|
|
111
|
+
* @param isKept - whether a page its group lists may be read.
|
|
112
|
+
*/
|
|
113
|
+
export declare const docsModuleOf: (id: string, watch: (file: string) => void, isServing: boolean, plugins: ResolvedConfig["plugins"], isKept: IsFileKept) => Promise<{
|
|
114
|
+
code: string;
|
|
115
|
+
moduleType: "js";
|
|
116
|
+
} | undefined>;
|
|
117
|
+
/**
|
|
118
|
+
* Makes a group's module and adds the version to those served since the pages last reloaded (`isListingChanged`).
|
|
119
|
+
* While it is made, and when making it fails, the list is unknown.
|
|
120
|
+
*
|
|
121
|
+
* @param listings - the groups' modules, with the versions served.
|
|
122
|
+
* @param id - the group's module's id.
|
|
123
|
+
* @param make - makes the module.
|
|
124
|
+
* @returns the module made.
|
|
125
|
+
*/
|
|
126
|
+
export declare const keptListing: <TModule extends {
|
|
127
|
+
readonly files: readonly {
|
|
128
|
+
readonly file: string;
|
|
129
|
+
}[];
|
|
130
|
+
readonly refused: readonly {
|
|
131
|
+
readonly file: string;
|
|
132
|
+
}[];
|
|
133
|
+
}>(listings: Map<string, ServedListings | undefined>, id: string, make: () => TModule) => TModule;
|
|
134
|
+
/**
|
|
135
|
+
* Forgets the versions served before a reload the pages were sent: each page loads the module again.
|
|
136
|
+
*
|
|
137
|
+
* @param listings - the groups' modules, with the versions served.
|
|
138
|
+
*/
|
|
139
|
+
export declare const pagesReloaded: (listings: Map<string, ServedListings | undefined>) => void;
|
|
77
140
|
/**
|
|
78
141
|
* The modules a story file added or removed renews: the groups whose list it changes (`isListingChanged`) and, with
|
|
79
142
|
* them, the modules that read their files; none when it changes no list.
|
|
80
143
|
*
|
|
81
|
-
* @param served - the groups' modules, with the
|
|
144
|
+
* @param served - the groups' modules, with the versions served since the pages last reloaded.
|
|
82
145
|
* @param file - the file added or removed.
|
|
83
146
|
* @param readers - the modules that read the groups' files: their "Used in" and search indexes.
|
|
84
147
|
* @param isKept - whether a listed file may be read; every one by default.
|
|
85
148
|
*/
|
|
86
|
-
export declare const listingRenewals: (served: ReadonlyMap<string,
|
|
149
|
+
export declare const listingRenewals: (served: ReadonlyMap<string, ServedListings | undefined>, file: string, readers: readonly string[], isKept?: IsFileKept) => readonly string[] | undefined;
|
|
87
150
|
/**
|
|
88
151
|
* A group's "Used in" module: for each component, the components that use it, packed once per title and list of
|
|
89
152
|
* stories (`packedUsage`), which a page reads.
|
|
@@ -167,3 +230,10 @@ export declare const searchIndexes: (read: {
|
|
|
167
230
|
readonly track: (id: string, isPages: boolean) => void;
|
|
168
231
|
readonly isKept: IsFileKept;
|
|
169
232
|
}) => SearchIndexes;
|
|
233
|
+
/**
|
|
234
|
+
* Renews modules in every environment that loaded them: the agents' routes load them on the server too.
|
|
235
|
+
*
|
|
236
|
+
* @param server - the dev server.
|
|
237
|
+
* @param ids - the modules' ids.
|
|
238
|
+
*/
|
|
239
|
+
export declare const invalidateEverywhere: (server: ViteDevServer, ids: Iterable<string>) => void;
|
|
@@ -10,8 +10,11 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { codeLiteral } from "../codeLiteral.js";
|
|
12
12
|
import { packedUsage } from "../usedIn.js";
|
|
13
|
-
import {
|
|
13
|
+
import { DOCS_PAGES_PREFIX } from "./pluginIds.js";
|
|
14
|
+
import { previewTagsOf, withPreviewTags } from "./previewTags.js";
|
|
15
|
+
import { EVERY_FILE, FILES_SPECIFIER_PREFIX, PAGES_SEARCH_PREFIX, REACH_PREFIX, readStoryFiles, refusalError, SEARCH_PREFIX, storyFileKeys, storyFilesCode, storyFilesGroupOf, TEXTS_PREFIX, USAGE_PREFIX } from "./storyFilesModule.js";
|
|
14
16
|
import { storyReach } from "./storyReach.js";
|
|
17
|
+
import { DOCS_PAGE_QUERY, HOME_QUERY } from "./textQueries.js";
|
|
15
18
|
import { joinedUsage } from "./usageModule.js";
|
|
16
19
|
import { VITE_PATHS } from "./vitePaths.js";
|
|
17
20
|
/**
|
|
@@ -62,44 +65,112 @@ export const docsModule = (component, watch) => ({
|
|
|
62
65
|
* @param watch - adds a file whose edit renews the module (each story file).
|
|
63
66
|
* @param loaders - the group's loaders besides its story files'.
|
|
64
67
|
* @param cache - the pattern's index kept between starts; none reads every file.
|
|
65
|
-
* @param warm - starts reading the docs of
|
|
68
|
+
* @param warm - starts reading the docs of the group's story files ahead of their requests; none in a test run.
|
|
66
69
|
* @param startTexts - a build's: starts reading the files' docs, code and pages, which the module imports from the
|
|
67
70
|
* group's texts module (`builtTexts.ts`); none imports each from its query.
|
|
68
71
|
* @param isKept - whether a listed file may be read; every one by default.
|
|
69
|
-
* @
|
|
72
|
+
* @param isForgiving - whether a file that cannot be indexed is named among the catalogue's problems while the others
|
|
73
|
+
* draw (a person at a dev server), rather than failing the module (a build, a test run).
|
|
74
|
+
* @param catalogue - the catalogue, whose previews' tags every story takes; none has none.
|
|
75
|
+
* @param scriptProblems - the project's scripts that do not parse, named among the catalogue's problems with the files
|
|
76
|
+
* that cannot be indexed (`scriptProblems.ts`), where those are (a dev server); none by default.
|
|
77
|
+
* @throws when a story file cannot be indexed, unless it is forgiven.
|
|
70
78
|
*/
|
|
71
|
-
export const patternModule = (id, watch, loaders, cache, warm, startTexts, isKept = EVERY_FILE) => {
|
|
79
|
+
export const patternModule = (id, watch, loaders, cache, warm, startTexts, isKept = EVERY_FILE, isForgiving = false, catalogue, scriptProblems = []) => {
|
|
72
80
|
const { root, patterns } = storyFilesGroupOf(id.slice(FILES_PREFIX.length));
|
|
73
|
-
const files =
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
81
|
+
const { files, refused } = readStoryFiles(root, patterns, watch, cache, isKept);
|
|
82
|
+
if (refused.length > 0 && !isForgiving)
|
|
83
|
+
throw refusalError(refused);
|
|
84
|
+
warm?.(files.map(({ file }) => file));
|
|
77
85
|
startTexts?.(files);
|
|
78
|
-
const code = storyFilesCode(root, patterns, files, loaders, startTexts !== undefined);
|
|
79
|
-
return { code, moduleType: "js", files };
|
|
86
|
+
const code = storyFilesCode(root, patterns, withPreviewTags(files, previewTagsOf(catalogue, watch)), loaders, startTexts !== undefined, refused, isForgiving ? scriptProblems : []);
|
|
87
|
+
return { code, moduleType: "js", files, refused };
|
|
80
88
|
};
|
|
81
89
|
/**
|
|
82
|
-
* Whether a story file added or removed changes what a group of story files
|
|
83
|
-
*
|
|
84
|
-
* the pages need no reload for it.
|
|
90
|
+
* Whether a story file added or removed changes what a page may hold of a group of story files: listed now and missing
|
|
91
|
+
* from a version served since the pages last reloaded, or gone and listed by one. A file no pattern lists, or one a
|
|
92
|
+
* `!` pattern leaves out, changes nothing, so the pages need no reload for it.
|
|
93
|
+
*
|
|
94
|
+
* @remarks
|
|
95
|
+
* The module's last version is no measure: another reader (a second tab, a frame, the agents' API) may load it again
|
|
96
|
+
* between the change on the disk and the file's event, and a page that loaded it before would then never reload. A
|
|
97
|
+
* branch switch makes that window wide, as its events arrive after the files are written. Every version since the last
|
|
98
|
+
* reload counts, and no earlier one: that reload renewed the pages that held those.
|
|
85
99
|
*
|
|
86
100
|
* @param id - the group's module's id (`FILES_PREFIX`, then the group).
|
|
87
|
-
* @param
|
|
101
|
+
* @param served - the versions served since the pages last reloaded; none when the module could not be made.
|
|
88
102
|
* @param file - the file added or removed.
|
|
89
103
|
* @param isKept - whether a listed file may be read; every one by default.
|
|
90
104
|
*/
|
|
91
|
-
export const isListingChanged = (id,
|
|
92
|
-
if (
|
|
105
|
+
export const isListingChanged = (id, served, file, isKept = EVERY_FILE) => {
|
|
106
|
+
if (served === undefined)
|
|
93
107
|
return true;
|
|
94
108
|
const { root, patterns } = storyFilesGroupOf(id.slice(FILES_PREFIX.length));
|
|
95
109
|
const isListed = storyFileKeys(root, patterns, isKept).includes(VITE_PATHS.relativeKey(root, file));
|
|
96
|
-
|
|
110
|
+
const key = VITE_PATHS.normalize(file);
|
|
111
|
+
return isListed ? served.every !== undefined && !served.every.has(key) : served.some.has(key);
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* 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
|
|
115
|
+
* first: a catalogue may have no docs pages, and a story's page reads none.
|
|
116
|
+
*
|
|
117
|
+
* @param id - the module's id.
|
|
118
|
+
* @param watch - adds a file whose edit renews the module.
|
|
119
|
+
* @param isServing - whether a dev server runs.
|
|
120
|
+
* @param plugins - the catalogue's plugins, whose fences a page may draw.
|
|
121
|
+
* @param isKept - whether a page its group lists may be read.
|
|
122
|
+
*/
|
|
123
|
+
export const docsModuleOf = async (id, watch, isServing, plugins, isKept) => {
|
|
124
|
+
const isHome = id.endsWith(HOME_QUERY);
|
|
125
|
+
const isPage = id.endsWith(DOCS_PAGE_QUERY);
|
|
126
|
+
if (!isHome && !isPage && !id.startsWith(DOCS_PAGES_PREFIX))
|
|
127
|
+
return undefined;
|
|
128
|
+
const { docPageModule, docPagesModule, homeModule } = await import("./docPagesModule.js");
|
|
129
|
+
if (isHome)
|
|
130
|
+
return { code: homeModule(id.slice(0, -HOME_QUERY.length), watch, isServing, plugins), moduleType: "js" };
|
|
131
|
+
if (isPage) {
|
|
132
|
+
const file = id.slice(0, -DOCS_PAGE_QUERY.length);
|
|
133
|
+
return { code: docPageModule(file, watch, isServing, plugins), moduleType: "js" };
|
|
134
|
+
}
|
|
135
|
+
const { root, patterns } = storyFilesGroupOf(id.slice(DOCS_PAGES_PREFIX.length));
|
|
136
|
+
return { code: docPagesModule(root, patterns, watch, isServing, plugins, isKept), moduleType: "js" };
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* Makes a group's module and adds the version to those served since the pages last reloaded (`isListingChanged`).
|
|
140
|
+
* While it is made, and when making it fails, the list is unknown.
|
|
141
|
+
*
|
|
142
|
+
* @param listings - the groups' modules, with the versions served.
|
|
143
|
+
* @param id - the group's module's id.
|
|
144
|
+
* @param make - makes the module.
|
|
145
|
+
* @returns the module made.
|
|
146
|
+
*/
|
|
147
|
+
export const keptListing = (listings, id, make) => {
|
|
148
|
+
const before = listings.get(id);
|
|
149
|
+
listings.set(id, undefined);
|
|
150
|
+
const made = make();
|
|
151
|
+
const listed = new Set([...made.files, ...made.refused].map(({ file }) => file));
|
|
152
|
+
const every = before?.every;
|
|
153
|
+
listings.set(id, {
|
|
154
|
+
some: new Set([...(before?.some ?? []), ...listed]),
|
|
155
|
+
every: every === undefined ? listed : new Set([...every].filter((file) => listed.has(file)))
|
|
156
|
+
});
|
|
157
|
+
return made;
|
|
158
|
+
};
|
|
159
|
+
/**
|
|
160
|
+
* Forgets the versions served before a reload the pages were sent: each page loads the module again.
|
|
161
|
+
*
|
|
162
|
+
* @param listings - the groups' modules, with the versions served.
|
|
163
|
+
*/
|
|
164
|
+
export const pagesReloaded = (listings) => {
|
|
165
|
+
for (const [id, served] of listings)
|
|
166
|
+
if (served !== undefined)
|
|
167
|
+
listings.set(id, { some: new Set(), every: undefined });
|
|
97
168
|
};
|
|
98
169
|
/**
|
|
99
170
|
* The modules a story file added or removed renews: the groups whose list it changes (`isListingChanged`) and, with
|
|
100
171
|
* them, the modules that read their files; none when it changes no list.
|
|
101
172
|
*
|
|
102
|
-
* @param served - the groups' modules, with the
|
|
173
|
+
* @param served - the groups' modules, with the versions served since the pages last reloaded.
|
|
103
174
|
* @param file - the file added or removed.
|
|
104
175
|
* @param readers - the modules that read the groups' files: their "Used in" and search indexes.
|
|
105
176
|
* @param isKept - whether a listed file may be read; every one by default.
|
|
@@ -111,7 +182,8 @@ export const listingRenewals = (served, file, readers, isKept = EVERY_FILE) => {
|
|
|
111
182
|
return changed.length === 0 ? undefined : [...changed, ...readers];
|
|
112
183
|
};
|
|
113
184
|
/**
|
|
114
|
-
* A group's facts: its story files indexed, what their stories render read in the docs worker.
|
|
185
|
+
* A group's facts: its story files indexed, what their stories render read in the docs worker. A file that cannot be
|
|
186
|
+
* indexed adds nothing here: the group's own module names it.
|
|
115
187
|
*
|
|
116
188
|
* @param group - the group (`storyFilesGroupText`).
|
|
117
189
|
* @param watch - adds a file whose edit renews the module (each story file).
|
|
@@ -121,7 +193,7 @@ export const listingRenewals = (served, file, readers, isKept = EVERY_FILE) => {
|
|
|
121
193
|
*/
|
|
122
194
|
const groupUsage = async (group, watch, usage, cache, isKept) => {
|
|
123
195
|
const { root, patterns } = storyFilesGroupOf(group);
|
|
124
|
-
const files =
|
|
196
|
+
const { files } = readStoryFiles(root, patterns, watch, cache, isKept);
|
|
125
197
|
const graph = await usage(files.map((file) => ({
|
|
126
198
|
storyFile: file.file,
|
|
127
199
|
exports: file.index.stories.map((story) => story.exportName)
|
|
@@ -163,8 +235,9 @@ export const usageModule = async (id, watch, usage, cache, pack, isKept = EVERY_
|
|
|
163
235
|
*/
|
|
164
236
|
export const reachModule = async (id, watch, usage, cache, isKept = EVERY_FILE) => {
|
|
165
237
|
const { files, graph } = await groupUsage(id.slice(REACH_ID_PREFIX.length), watch, usage, cache, isKept);
|
|
238
|
+
// the reason, not an empty list: no story reached and no story found are different answers
|
|
166
239
|
const reach = typeof graph === "string"
|
|
167
|
-
?
|
|
240
|
+
? graph
|
|
168
241
|
: storyReach(graph, files.map((file) => ({ storyFile: file.file, title: file.index.title })));
|
|
169
242
|
return { code: `export default ${codeLiteral(reach)};`, moduleType: "js" };
|
|
170
243
|
};
|
|
@@ -219,3 +292,18 @@ export const searchIndexes = (read) => {
|
|
|
219
292
|
}
|
|
220
293
|
};
|
|
221
294
|
};
|
|
295
|
+
/**
|
|
296
|
+
* Renews modules in every environment that loaded them: the agents' routes load them on the server too.
|
|
297
|
+
*
|
|
298
|
+
* @param server - the dev server.
|
|
299
|
+
* @param ids - the modules' ids.
|
|
300
|
+
*/
|
|
301
|
+
export const invalidateEverywhere = (server, ids) => {
|
|
302
|
+
for (const environment of Object.values(server.environments)) {
|
|
303
|
+
for (const id of ids) {
|
|
304
|
+
const module = environment.moduleGraph.getModuleById(id);
|
|
305
|
+
if (module !== undefined)
|
|
306
|
+
environment.moduleGraph.invalidateModule(module);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
};
|
|
@@ -1,19 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
* The packages Vite pre-bundles, and the story files it scans, before the catalogue's first page opens, so the pages
|
|
3
|
-
* never reload while they load.
|
|
4
|
-
*
|
|
5
|
-
* @remarks
|
|
6
|
-
* Vite finds what to pre-bundle by scanning the app's HTML and entries on disk; a catalogue's pages and their entries
|
|
7
|
-
* are generated (`pages.ts`), so without this list Vite discovers each package as a page imports it, pre-bundles it
|
|
8
|
-
* then, and reloads the page, more than once on a first start. The list is the shell's and the frame's packages (the
|
|
9
|
-
* shell is React), the framework's, Testing Library's when the project installs it, what the plugins name, and
|
|
10
|
-
* Forgebook's own modules and the plugins' when they come from an installed package (a linked one is source, which Vite
|
|
11
|
-
* does not pre-bundle). axe is not among them: the frame loads it as a script (`axeScript.ts`). A package the project
|
|
12
|
-
* cannot resolve is left out, since Vite fails on one it cannot find. Pure: a resolver in, names out.
|
|
13
|
-
*
|
|
14
|
-
* @module
|
|
15
|
-
*/
|
|
1
|
+
import type { UserConfig } from "vite";
|
|
16
2
|
import { type ResolvedConfig } from "./configFile.ts";
|
|
3
|
+
import { type ScriptProblems } from "./scriptProblems.ts";
|
|
17
4
|
/**
|
|
18
5
|
* Resolves a package as Node would from the catalogue's folder: its file's real path, or none when it is not there.
|
|
19
6
|
*
|
|
@@ -41,3 +28,58 @@ export declare const prebundled: (config: ResolvedConfig, resolve: Resolve) => s
|
|
|
41
28
|
* @param readText - reads a file's text; none when it cannot.
|
|
42
29
|
*/
|
|
43
30
|
export declare const scannedEntries: (config: ResolvedConfig, resolve: Resolve, readText: (file: string) => string | undefined) => string[];
|
|
31
|
+
/** Vite's options of its dependency scan. */
|
|
32
|
+
type ScanOptions = NonNullable<NonNullable<UserConfig["optimizeDeps"]>["rolldownOptions"]>;
|
|
33
|
+
/** A module the scan reads in place of a file's own text. */
|
|
34
|
+
type ScanModule = {
|
|
35
|
+
code: string;
|
|
36
|
+
moduleType: "js" | "jsx";
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* What the scan reads for one of the project's scripts: nothing in its place when it parses (the scan reads it), the
|
|
40
|
+
* same text read as JSX when only JSX makes a `.js` file parse, and its imports alone when it does not parse at all,
|
|
41
|
+
* which the parser still finds, so their packages are pre-bundled with the rest.
|
|
42
|
+
*
|
|
43
|
+
* @param file - the script's path; its extension decides TypeScript and JSX.
|
|
44
|
+
* @param text - its source.
|
|
45
|
+
* @returns the module to scan, or none to let the scan read the file, and why the file does not parse.
|
|
46
|
+
*/
|
|
47
|
+
export declare const scannedScript: (file: string, text: string) => {
|
|
48
|
+
module: ScanModule | undefined;
|
|
49
|
+
problem: string | undefined;
|
|
50
|
+
};
|
|
51
|
+
/** Where the scan's findings go. */
|
|
52
|
+
export type ScanFindings = {
|
|
53
|
+
/** The catalogue's folder: a warning names a file relative to it; absolute without it. */
|
|
54
|
+
readonly root?: string;
|
|
55
|
+
/** Writes one warning line; none are written without it. */
|
|
56
|
+
readonly warn?: (line: string) => void;
|
|
57
|
+
/** Keeps what the scan found of each of the project's scripts, other than story files (`scriptProblems.ts`). */
|
|
58
|
+
readonly scanned?: ScriptProblems["scanned"];
|
|
59
|
+
/**
|
|
60
|
+
* Whether every `.js` file is read as JSX, for a framework whose adapter compiles their JSX (`compilesJsxInScripts`):
|
|
61
|
+
* JSX is a superset of what such a file may hold, so the others give the same imports. Without it, only a file that
|
|
62
|
+
* parses as nothing else is.
|
|
63
|
+
*/
|
|
64
|
+
readonly isJsxInScripts?: boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Whether the scan reads only the story files here and leaves every other script to the scanner, which parses it
|
|
67
|
+
* itself: a first start's pre-bundling tries that first, since reading and parsing every component a second time in
|
|
68
|
+
* JavaScript costs a large library a quarter of a second, and scans again without it only when a script stops the
|
|
69
|
+
* scan (`prebundleRun.ts`). A server's own scan reads them all.
|
|
70
|
+
*/
|
|
71
|
+
readonly isQuick?: boolean;
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Keeps Vite's dependency scan going past one of the project's scripts that does not parse, a story file or a
|
|
75
|
+
* component, and reads a `.js` file holding JSX as JSX. One such file otherwise stops the scan, and with it the
|
|
76
|
+
* pre-bundling of every other story's packages, and fills the log with the scanner's stack; the pages then reload as
|
|
77
|
+
* each package is found. A script that does not parse is read as its imports alone: a story file is named by the
|
|
78
|
+
* catalogue itself (`storyFilesModule.ts`), any other is kept among the index's problems (`scriptProblems.ts`) and
|
|
79
|
+
* named by one warning with its place. The texts are read here on the scan only: a start that keeps its pre-bundled
|
|
80
|
+
* packages does not scan.
|
|
81
|
+
*
|
|
82
|
+
* @param findings - the catalogue's folder, where warnings and problems go, and whether `.js` is read as JSX.
|
|
83
|
+
*/
|
|
84
|
+
export declare const scanOptions: (findings?: ScanFindings) => ScanOptions;
|
|
85
|
+
export {};
|