forgebook 0.3.3 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +994 -72
- package/dist/bin/forgebook/agentClient.d.ts +2 -1
- package/dist/bin/forgebook/agentClient.js +13 -6
- package/dist/bin/forgebook/agentGuide.d.ts +59 -0
- package/dist/bin/forgebook/agentGuide.js +203 -0
- package/dist/bin/forgebook/agentLoopCommands.mjs +22 -42
- package/dist/bin/forgebook/agentSetup/agentFiles.d.ts +55 -0
- package/dist/bin/forgebook/agentSetup/agentFiles.js +319 -0
- package/dist/bin/forgebook/agentSetup/assistantHooks.d.ts +71 -0
- package/dist/bin/forgebook/agentSetup/assistantHooks.js +125 -0
- package/dist/bin/forgebook/agentSetup/ciWorkflow.d.ts +23 -0
- package/dist/bin/forgebook/agentSetup/ciWorkflow.js +55 -0
- package/dist/bin/forgebook/agentSetup/drawCandidates.d.ts +25 -0
- package/dist/bin/forgebook/agentSetup/drawCandidates.js +116 -0
- package/dist/bin/forgebook/agentSetup/drawDiagnosis.d.ts +28 -0
- package/dist/bin/forgebook/agentSetup/drawDiagnosis.js +134 -0
- package/dist/bin/forgebook/agentSetup/drawRun.d.ts +91 -0
- package/dist/bin/forgebook/agentSetup/drawRun.js +353 -0
- package/dist/bin/forgebook/agentSetup/hookNames.d.ts +7 -0
- package/dist/bin/forgebook/agentSetup/hookNames.js +7 -0
- package/dist/bin/forgebook/agentSetup/initAgentSteps.d.ts +48 -0
- package/dist/bin/forgebook/agentSetup/initAgentSteps.js +104 -0
- package/dist/bin/forgebook/agentSetup/liftedProviders.d.ts +17 -0
- package/dist/bin/forgebook/agentSetup/liftedProviders.js +186 -0
- package/dist/bin/forgebook/agentSetup/projectRunner.d.ts +46 -0
- package/dist/bin/forgebook/agentSetup/projectRunner.js +85 -0
- package/dist/bin/forgebook/agentSetup/stopHook.d.ts +65 -0
- package/dist/bin/forgebook/agentSetup/stopHook.js +202 -0
- package/dist/bin/forgebook/agentSetup/uniformPicture.d.ts +7 -0
- package/dist/bin/forgebook/agentSetup/uniformPicture.js +98 -0
- package/dist/bin/forgebook/agentSetupCommands.d.mts +14 -0
- package/dist/bin/forgebook/agentSetupCommands.mjs +98 -0
- package/dist/bin/forgebook/agentText.d.ts +23 -3
- package/dist/bin/forgebook/agentText.js +182 -28
- package/dist/bin/forgebook/agents.md +20 -191
- package/dist/bin/forgebook/agentsText.js +2 -1
- package/dist/bin/forgebook/appBuild/appBuild.d.ts +59 -0
- package/dist/bin/forgebook/appBuild/appBuild.js +213 -0
- package/dist/bin/forgebook/appBuild/appViteConfig.d.ts +96 -0
- package/dist/bin/forgebook/appBuild/appViteConfig.js +320 -0
- package/dist/bin/forgebook/appBuild/tsconfigPaths.d.ts +14 -0
- package/dist/bin/forgebook/appBuild/tsconfigPaths.js +80 -0
- package/dist/bin/forgebook/auditCommand.d.mts +8 -0
- package/dist/bin/forgebook/auditCommand.mjs +75 -0
- package/dist/bin/forgebook/auditRun.d.ts +95 -0
- package/dist/bin/forgebook/auditRun.js +270 -0
- package/dist/bin/forgebook/browserRun.d.ts +21 -0
- package/dist/bin/forgebook/browserRun.js +57 -0
- package/dist/bin/forgebook/buildFailure.d.ts +7 -0
- package/dist/bin/forgebook/buildFailure.js +47 -0
- package/dist/bin/forgebook/buildWatch.d.ts +52 -0
- package/dist/bin/forgebook/buildWatch.js +137 -0
- package/dist/bin/forgebook/builtCatalogue.js +9 -5
- package/dist/bin/forgebook/catalogueCommands.d.ts +9 -0
- package/dist/bin/forgebook/catalogueCommands.js +23 -0
- package/dist/bin/forgebook/catalogueVite.d.ts +5 -1
- package/dist/bin/forgebook/catalogueVite.js +14 -6
- package/dist/bin/forgebook/commandCacheClaim.d.ts +18 -0
- package/dist/bin/forgebook/commandCacheClaim.js +170 -0
- package/dist/bin/forgebook/commandServer.d.ts +8 -0
- package/dist/bin/forgebook/commandServer.js +61 -13
- package/dist/bin/forgebook/forgebookCommands.mjs +105 -28
- package/dist/bin/forgebook/graphCommand.d.mts +8 -0
- package/dist/bin/forgebook/graphCommand.mjs +84 -0
- package/dist/bin/forgebook/guide/commands.md +62 -0
- package/dist/bin/forgebook/guide/devices.md +17 -0
- package/dist/bin/forgebook/guide/docs-pages.md +13 -0
- package/dist/bin/forgebook/guide/frameworks/angular.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/html.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/nextjs.md +23 -0
- package/dist/bin/forgebook/guide/frameworks/nuxt.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/preact.md +16 -0
- package/dist/bin/forgebook/guide/frameworks/react-native-web.md +21 -0
- package/dist/bin/forgebook/guide/frameworks/react.md +16 -0
- package/dist/bin/forgebook/guide/frameworks/solid.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/svelte.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/sveltekit.md +23 -0
- package/dist/bin/forgebook/guide/frameworks/vue.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/web-components.md +21 -0
- package/dist/bin/forgebook/guide/links.md +29 -0
- package/dist/bin/forgebook/guide/setup.md +23 -0
- package/dist/bin/forgebook/guide/stories.md +95 -0
- package/dist/bin/forgebook/guide/switches.md +43 -0
- package/dist/bin/forgebook/guideCommand.d.mts +13 -0
- package/dist/bin/forgebook/guideCommand.mjs +37 -0
- package/dist/bin/forgebook/importers/storybook.d.ts +21 -0
- package/dist/bin/forgebook/importers/storybook.js +11 -5
- package/dist/bin/forgebook/importers/storybookFrameworks.js +1 -1
- package/dist/bin/forgebook/initCommands.d.mts +11 -0
- package/dist/bin/forgebook/initCommands.mjs +51 -78
- package/dist/bin/forgebook/initConfig.d.ts +5 -3
- package/dist/bin/forgebook/initConfig.js +6 -3
- package/dist/bin/forgebook/initInstall.d.ts +15 -0
- package/dist/bin/forgebook/initInstall.js +77 -0
- package/dist/bin/forgebook/initPrint.d.ts +9 -0
- package/dist/bin/forgebook/initPrint.js +60 -0
- package/dist/bin/forgebook/initRefusals.d.ts +45 -0
- package/dist/bin/forgebook/initRefusals.js +91 -0
- package/dist/bin/forgebook/initRun.d.ts +28 -0
- package/dist/bin/forgebook/initRun.js +311 -0
- package/dist/bin/forgebook/mcpCommand.mjs +38 -4
- package/dist/bin/forgebook/mcpGraph.d.ts +13 -0
- package/dist/bin/forgebook/mcpGraph.js +24 -0
- package/dist/bin/forgebook/mcpTokens.d.ts +14 -0
- package/dist/bin/forgebook/mcpTokens.js +58 -0
- package/dist/bin/forgebook/mcpToolParts.d.ts +7 -0
- package/dist/bin/forgebook/mcpToolParts.js +10 -0
- package/dist/bin/forgebook/mcpTools.d.ts +13 -6
- package/dist/bin/forgebook/mcpTools.js +57 -90
- package/dist/bin/forgebook/mcpVerify.d.ts +16 -0
- package/dist/bin/forgebook/mcpVerify.js +36 -0
- package/dist/bin/forgebook/migrate/codemods.d.ts +11 -0
- package/dist/bin/forgebook/migrate/codemods.js +61 -0
- package/dist/bin/forgebook/migrate/migrate.types.d.ts +117 -0
- package/dist/bin/forgebook/migrate/migrate.types.js +5 -0
- package/dist/bin/forgebook/migrate/migrateCommand.d.mts +8 -0
- package/dist/bin/forgebook/migrate/migrateCommand.mjs +76 -0
- package/dist/bin/forgebook/migrate/migrateRun.d.ts +61 -0
- package/dist/bin/forgebook/migrate/migrateRun.js +210 -0
- package/dist/bin/forgebook/migrate/migrateText.d.ts +12 -0
- package/dist/bin/forgebook/migrate/migrateText.js +30 -0
- package/dist/bin/forgebook/migrate/migrateWrite.d.ts +27 -0
- package/dist/bin/forgebook/migrate/migrateWrite.js +66 -0
- package/dist/bin/forgebook/migrate/objectEdits.d.ts +70 -0
- package/dist/bin/forgebook/migrate/objectEdits.js +241 -0
- package/dist/bin/forgebook/migrate/playOnInBuilds.d.ts +3 -0
- package/dist/bin/forgebook/migrate/playOnInBuilds.js +86 -0
- package/dist/bin/forgebook/migrate/propGroupStrings.d.ts +5 -0
- package/dist/bin/forgebook/migrate/propGroupStrings.js +81 -0
- package/dist/bin/forgebook/newProject/newProject.d.ts +39 -0
- package/dist/bin/forgebook/newProject/newProject.js +180 -0
- package/dist/bin/forgebook/newProject/newProject.types.d.ts +97 -0
- package/dist/bin/forgebook/newProject/newProject.types.js +6 -0
- package/dist/bin/forgebook/newProject/packageManagers.d.ts +51 -0
- package/dist/bin/forgebook/newProject/packageManagers.js +121 -0
- package/dist/bin/forgebook/newProject/projectEntries.d.ts +62 -0
- package/dist/bin/forgebook/newProject/projectEntries.js +191 -0
- package/dist/bin/forgebook/newProject/projectFrameworks.d.ts +57 -0
- package/dist/bin/forgebook/newProject/projectFrameworks.js +148 -0
- package/dist/bin/forgebook/newProject/projectLook.d.ts +23 -0
- package/dist/bin/forgebook/newProject/projectLook.js +293 -0
- package/dist/bin/forgebook/newProject/projectPackages.d.ts +66 -0
- package/dist/bin/forgebook/newProject/projectPackages.js +178 -0
- package/dist/bin/forgebook/newRepair.d.ts +45 -0
- package/dist/bin/forgebook/newRepair.js +157 -0
- package/dist/bin/forgebook/newRepairRun.d.ts +69 -0
- package/dist/bin/forgebook/newRepairRun.js +148 -0
- package/dist/bin/forgebook/newStories.d.ts +23 -1
- package/dist/bin/forgebook/newStories.js +101 -11
- package/dist/bin/forgebook/newStoriesFile.d.ts +20 -1
- package/dist/bin/forgebook/newStoriesFile.js +43 -4
- package/dist/bin/forgebook/prebundleRun.d.ts +3 -1
- package/dist/bin/forgebook/prebundleRun.js +28 -8
- package/dist/bin/forgebook/proofCommand.d.mts +15 -0
- package/dist/bin/forgebook/proofCommand.mjs +212 -0
- package/dist/bin/forgebook/proofRun.d.ts +63 -0
- package/dist/bin/forgebook/proofRun.js +412 -0
- package/dist/bin/forgebook/proofText.d.ts +36 -0
- package/dist/bin/forgebook/proofText.js +131 -0
- package/dist/bin/forgebook/proofWorkflow.d.ts +29 -0
- package/dist/bin/forgebook/proofWorkflow.js +205 -0
- package/dist/bin/forgebook/setArgsTool.d.ts +8 -0
- package/dist/bin/forgebook/setArgsTool.js +70 -0
- package/dist/bin/forgebook/storyCheckCommands.mjs +42 -3
- package/dist/bin/forgebook/storyCheckRun.d.ts +50 -0
- package/dist/bin/forgebook/storyCheckRun.js +83 -9
- package/dist/bin/forgebook/storyFileIds.d.ts +15 -0
- package/dist/bin/forgebook/storyFileIds.js +14 -0
- package/dist/bin/forgebook/stressCases.d.ts +31 -0
- package/dist/bin/forgebook/stressCases.js +79 -0
- package/dist/bin/forgebook/stressRun.d.ts +12 -0
- package/dist/bin/forgebook/stressRun.js +61 -0
- package/dist/bin/forgebook/stressText.d.ts +27 -0
- package/dist/bin/forgebook/stressText.js +46 -0
- package/dist/bin/forgebook/verifyBase.d.ts +45 -0
- package/dist/bin/forgebook/verifyBase.js +204 -0
- package/dist/bin/forgebook/verifyCommand.d.mts +13 -0
- package/dist/bin/forgebook/verifyCommand.mjs +125 -0
- package/dist/bin/forgebook/verifyRun.d.ts +63 -0
- package/dist/bin/forgebook/verifyRun.js +108 -0
- package/dist/bin/forgebook/verifyVerdict.d.ts +40 -0
- package/dist/bin/forgebook/verifyVerdict.js +323 -0
- package/dist/bin/forgebook/workflowActions.d.ts +23 -0
- package/dist/bin/forgebook/workflowActions.js +23 -0
- package/dist/bin/forgebook-docs/catalogueMarkdown.js +12 -1
- package/dist/src/addressArgs.d.ts +29 -5
- package/dist/src/addressArgs.js +58 -16
- package/dist/src/addressArgsParam.d.ts +54 -0
- package/dist/src/addressArgsParam.js +51 -0
- package/dist/src/addressTexts.d.ts +14 -0
- package/dist/src/addressTexts.js +28 -21
- package/dist/src/agentIndexFile.d.ts +11 -0
- package/dist/src/agentIndexFile.js +11 -0
- package/dist/src/argConditions.d.ts +52 -0
- package/dist/src/argConditions.js +80 -0
- package/dist/src/argControl.d.ts +148 -0
- package/dist/src/argControl.js +0 -0
- package/dist/src/argExpression.d.ts +21 -0
- package/dist/src/argExpression.js +30 -0
- package/dist/src/argTypes.d.ts +40 -51
- package/dist/src/argTypes.js +69 -185
- package/dist/src/argsProps.d.ts +3 -3
- package/dist/src/argsProps.js +11 -5
- package/dist/src/bundlerErrors.d.ts +29 -0
- package/dist/src/bundlerErrors.js +49 -0
- package/dist/src/catalogue.d.ts +31 -0
- package/dist/src/catalogue.js +13 -2
- package/dist/src/catalogueRefs.d.ts +75 -0
- package/dist/src/catalogueRefs.js +122 -0
- package/dist/src/componentDocs.d.ts +83 -0
- package/dist/src/componentDocs.js +20 -3
- package/dist/src/controlCode.d.ts +27 -0
- package/dist/src/controlCode.js +41 -0
- package/dist/src/frame/callValues.d.ts +19 -0
- package/dist/src/frame/callValues.js +58 -0
- package/dist/src/frame/canvasScheme.d.ts +33 -0
- package/dist/src/frame/canvasScheme.js +67 -0
- package/dist/src/frame/controlValues.d.ts +39 -0
- package/dist/src/frame/controlValues.js +143 -0
- package/dist/src/frame/frame.css +36 -3
- package/dist/src/frame/frameStatus.d.ts +16 -1
- package/dist/src/frame/frameStatus.js +16 -1
- package/dist/src/frame/frameView.js +4 -3
- package/dist/src/frame/mountFrame.d.ts +10 -1
- package/dist/src/frame/mountFrame.js +160 -55
- package/dist/src/frame/panelControls.d.ts +67 -0
- package/dist/src/frame/panelControls.js +110 -0
- package/dist/src/frame/panelValues.d.ts +35 -0
- package/dist/src/frame/panelValues.js +127 -0
- package/dist/src/frame/playActions.d.ts +39 -0
- package/dist/src/frame/playActions.js +98 -0
- package/dist/src/frame/playStepper.d.ts +28 -0
- package/dist/src/frame/playStepper.js +38 -0
- package/dist/src/frame/playStory.d.ts +9 -1
- package/dist/src/frame/playStory.js +49 -3
- package/dist/src/frame/renderer.d.ts +34 -1
- package/dist/src/frame/renderer.js +24 -0
- package/dist/src/frame/shellChannel.d.ts +1 -1
- package/dist/src/frame/shellChannel.js +1 -1
- package/dist/src/frame/shellCheck.d.ts +17 -0
- package/dist/src/frame/shellCheck.js +25 -0
- package/dist/src/frame/shellMessageCheck.d.ts +7 -0
- package/dist/src/frame/shellMessageCheck.js +53 -0
- package/dist/src/frame/storyContent.d.ts +50 -0
- package/dist/src/frame/storyContent.js +73 -0
- package/dist/src/frame/storyModule.d.ts +9 -0
- package/dist/src/frame/storyModule.js +20 -2
- package/dist/src/frame/storyRun.d.ts +15 -7
- package/dist/src/frame/storyRun.js +64 -15
- package/dist/src/frame/valueSheets.d.ts +35 -0
- package/dist/src/frame/valueSheets.js +99 -0
- package/dist/src/hotModules.d.ts +20 -0
- package/dist/src/hotModules.js +23 -0
- package/dist/src/jsxCode.d.ts +1 -14
- package/dist/src/jsxCode.js +46 -10
- package/dist/src/liveErrors.d.ts +30 -4
- package/dist/src/liveErrors.js +18 -3
- package/dist/src/messages.d.ts +77 -27
- package/dist/src/messages.js +58 -100
- package/dist/src/namedValues.d.ts +2 -26
- package/dist/src/namedValues.js +0 -47
- package/dist/src/pageConfig.d.ts +2 -0
- package/dist/src/playTrace.d.ts +19 -2
- package/dist/src/playTrace.js +10 -5
- package/dist/src/plugin.d.ts +10 -3
- package/dist/src/previewRelay.js +9 -1
- package/dist/src/printable.d.ts +12 -0
- package/dist/src/printable.js +22 -0
- package/dist/src/propsSignature.d.ts +37 -0
- package/dist/src/propsSignature.js +40 -0
- package/dist/src/search.d.ts +41 -5
- package/dist/src/search.js +93 -23
- package/dist/src/searchMatch.d.ts +4 -1
- package/dist/src/searchMatch.js +26 -5
- package/dist/src/searchTypos.d.ts +88 -0
- package/dist/src/searchTypos.js +178 -0
- package/dist/src/shapeValues.d.ts +86 -0
- package/dist/src/shapeValues.js +295 -0
- package/dist/src/shell/ApiReference.js +6 -3
- package/dist/src/shell/ApiTableBox.d.ts +15 -0
- package/dist/src/shell/ApiTableBox.js +11 -0
- package/dist/src/shell/AppearanceMenu.d.ts +4 -1
- package/dist/src/shell/AppearanceMenu.js +9 -6
- package/dist/src/shell/AuthoredHome.js +3 -1
- package/dist/src/shell/CodeTab.d.ts +12 -6
- package/dist/src/shell/CodeTab.js +47 -3
- package/dist/src/shell/CodeText.d.ts +1 -1
- package/dist/src/shell/CodeText.js +2 -3
- package/dist/src/shell/CompareGrid.js +1 -1
- package/dist/src/shell/ComponentPage.d.ts +6 -6
- package/dist/src/shell/ComponentPage.js +8 -2
- package/dist/src/shell/CustomControl.d.ts +34 -0
- package/dist/src/shell/CustomControl.js +125 -0
- package/dist/src/shell/DocContainers.js +1 -1
- package/dist/src/shell/DocPage.js +2 -2
- package/dist/src/shell/DroppedArgsList.d.ts +2 -2
- package/dist/src/shell/DroppedArgsList.js +1 -1
- package/dist/src/shell/EmbedPage.js +30 -12
- package/dist/src/shell/Example.d.ts +5 -1
- package/dist/src/shell/Example.js +16 -8
- package/dist/src/shell/FrameView.d.ts +6 -3
- package/dist/src/shell/FrameView.js +2 -2
- package/dist/src/shell/HomePage.d.ts +3 -1
- package/dist/src/shell/HomePage.js +18 -6
- package/dist/src/shell/InfoTip.js +2 -2
- package/dist/src/shell/InteractionsTab.d.ts +11 -4
- package/dist/src/shell/InteractionsTab.js +18 -2
- package/dist/src/shell/LazyPage.js +1 -1
- package/dist/src/shell/PackageHtml.js +3 -1
- package/dist/src/shell/PageWidth.d.ts +29 -0
- package/dist/src/shell/PageWidth.js +18 -0
- package/dist/src/shell/PinnedControl.js +14 -62
- package/dist/src/shell/PinnedControlMenu.d.ts +44 -0
- package/dist/src/shell/PinnedControlMenu.js +72 -0
- package/dist/src/shell/PropFields.d.ts +3 -1
- package/dist/src/shell/PropFields.js +9 -6
- package/dist/src/shell/PropRows.d.ts +22 -11
- package/dist/src/shell/PropRows.js +62 -24
- package/dist/src/shell/PropsTab.d.ts +12 -5
- package/dist/src/shell/PropsTab.js +9 -22
- package/dist/src/shell/RefStoryPage.d.ts +33 -0
- package/dist/src/shell/RefStoryPage.js +123 -0
- package/dist/src/shell/SearchPanel.js +51 -24
- package/dist/src/shell/Shell.d.ts +18 -0
- package/dist/src/shell/Shell.js +141 -23
- package/dist/src/shell/ShortcutHelp.d.ts +22 -0
- package/dist/src/shell/ShortcutHelp.js +66 -0
- package/dist/src/shell/Sidebar.d.ts +17 -4
- package/dist/src/shell/Sidebar.js +92 -41
- package/dist/src/shell/SidebarDocs.js +2 -2
- package/dist/src/shell/SidebarEntries.js +5 -3
- package/dist/src/shell/SidebarHandle.d.ts +3 -5
- package/dist/src/shell/SidebarHandle.js +4 -4
- package/dist/src/shell/SidebarRefs.d.ts +39 -0
- package/dist/src/shell/SidebarRefs.js +99 -0
- package/dist/src/shell/SidebarSearch.js +37 -9
- package/dist/src/shell/SignatureReference.js +3 -1
- package/dist/src/shell/Stage.d.ts +10 -2
- package/dist/src/shell/Stage.js +29 -49
- package/dist/src/shell/StatusBadges.d.ts +54 -0
- package/dist/src/shell/StatusBadges.js +77 -0
- package/dist/src/shell/StoryCodeBlock.d.ts +8 -19
- package/dist/src/shell/StoryCodeBlock.js +7 -6
- package/dist/src/shell/StoryPicker.d.ts +4 -2
- package/dist/src/shell/StoryPicker.js +3 -3
- package/dist/src/shell/Switch.d.ts +29 -0
- package/dist/src/shell/Switch.js +11 -0
- package/dist/src/shell/SwitchGallery.d.ts +36 -0
- package/dist/src/shell/SwitchGallery.js +17 -0
- package/dist/src/shell/SwitchGalleryPanel.d.ts +37 -0
- package/dist/src/shell/SwitchGalleryPanel.js +99 -0
- package/dist/src/shell/TagFilter.d.ts +24 -0
- package/dist/src/shell/TagFilter.js +45 -0
- package/dist/src/shell/TagViews.d.ts +39 -0
- package/dist/src/shell/TagViews.js +20 -0
- package/dist/src/shell/Toolbar.d.ts +4 -1
- package/dist/src/shell/Toolbar.js +17 -7
- package/dist/src/shell/ToolbarControl.d.ts +3 -0
- package/dist/src/shell/ToolbarControl.js +23 -6
- package/dist/src/shell/ViewMenuPanel.js +6 -1
- package/dist/src/shell/argChecks.d.ts +22 -0
- package/dist/src/shell/argChecks.js +20 -0
- package/dist/src/shell/asideStory.js +7 -2
- package/dist/src/shell/audienceSections.css +9 -9
- package/dist/src/shell/catalogueContext.d.ts +1 -1
- package/dist/src/shell/catalogueContext.js +6 -1
- package/dist/src/shell/codeSpans.d.ts +27 -0
- package/dist/src/shell/codeSpans.js +76 -0
- package/dist/src/shell/compareVariants.d.ts +4 -2
- package/dist/src/shell/compareVariants.js +16 -8
- package/dist/src/shell/composition.d.ts +23 -0
- package/dist/src/shell/composition.js +26 -0
- package/dist/src/shell/controlCycle.d.ts +1 -1
- package/dist/src/shell/controlCycle.js +3 -2
- package/dist/src/shell/customControls.d.ts +62 -0
- package/dist/src/shell/customControls.js +81 -0
- package/dist/src/shell/docPage.css +22 -22
- package/dist/src/shell/dockTabs.d.ts +19 -3
- package/dist/src/shell/dockTabs.js +29 -20
- package/dist/src/shell/embed.css +7 -7
- package/dist/src/shell/frameOrder.d.ts +35 -0
- package/dist/src/shell/frameOrder.js +45 -0
- package/dist/src/shell/framesOrigin.d.ts +7 -0
- package/dist/src/shell/framesOrigin.js +1 -1
- package/dist/src/shell/galleryPlace.d.ts +20 -0
- package/dist/src/shell/galleryPlace.js +26 -0
- package/dist/src/shell/icons.d.ts +1 -0
- package/dist/src/shell/icons.js +1 -0
- package/dist/src/shell/keyboard.d.ts +14 -12
- package/dist/src/shell/keyboard.js +21 -6
- package/dist/src/shell/laterStrings.d.ts +30 -0
- package/dist/src/shell/laterStrings.js +43 -3
- package/dist/src/shell/mountShell.js +3 -0
- package/dist/src/shell/pageStrings.d.ts +4 -0
- package/dist/src/shell/pageStrings.js +4 -0
- package/dist/src/shell/pageTagView.d.ts +18 -0
- package/dist/src/shell/pageTagView.js +10 -0
- package/dist/src/shell/playMemory.d.ts +14 -0
- package/dist/src/shell/playMemory.js +8 -0
- package/dist/src/shell/propNotes.d.ts +23 -0
- package/dist/src/shell/propNotes.js +37 -0
- package/dist/src/shell/refIndexLoad.d.ts +17 -0
- package/dist/src/shell/refIndexLoad.js +38 -0
- package/dist/src/shell/refParts.d.ts +34 -0
- package/dist/src/shell/refParts.js +9 -0
- package/dist/src/shell/refStory.css +21 -0
- package/dist/src/shell/refStrings.d.ts +13 -0
- package/dist/src/shell/refStrings.js +21 -0
- package/dist/src/shell/search.css +11 -11
- package/dist/src/shell/shell.css +376 -169
- package/dist/src/shell/shellScheme.js +2 -2
- package/dist/src/shell/shortcutHelp.css +64 -0
- package/dist/src/shell/stageArgs.d.ts +53 -0
- package/dist/src/shell/stageArgs.js +64 -0
- package/dist/src/shell/statusBadges.css +51 -0
- package/dist/src/shell/strings.d.ts +7 -16
- package/dist/src/shell/strings.js +12 -17
- package/dist/src/shell/switchGallery.css +104 -0
- package/dist/src/shell/tagFilter.css +46 -0
- package/dist/src/shell/tagView.d.ts +20 -0
- package/dist/src/shell/tagView.js +10 -0
- package/dist/src/shell/useAddressArgs.d.ts +9 -0
- package/dist/src/shell/useAddressArgs.js +56 -11
- package/dist/src/shell/useControlKeys.js +2 -2
- package/dist/src/shell/useEditedProblems.d.ts +6 -0
- package/dist/src/shell/useEditedProblems.js +40 -0
- package/dist/src/shell/useFrameMessages.js +3 -0
- package/dist/src/shell/useFrameQueue.d.ts +8 -3
- package/dist/src/shell/useFrameQueue.js +42 -12
- package/dist/src/shell/useListedTree.d.ts +13 -0
- package/dist/src/shell/useListedTree.js +32 -0
- package/dist/src/shell/usePageFrames.js +2 -2
- package/dist/src/shell/usePopover.d.ts +5 -0
- package/dist/src/shell/usePopover.js +7 -1
- package/dist/src/shell/useRefIndex.d.ts +22 -0
- package/dist/src/shell/useRefIndex.js +36 -0
- package/dist/src/shell/useScrollSettled.d.ts +18 -0
- package/dist/src/shell/useScrollSettled.js +56 -0
- package/dist/src/shell/useScrollStops.d.ts +20 -0
- package/dist/src/shell/useScrollStops.js +41 -0
- package/dist/src/shell/useShortcutHelp.d.ts +18 -0
- package/dist/src/shell/useShortcutHelp.js +32 -0
- package/dist/src/shell/useSidebarOverlay.d.ts +2 -1
- package/dist/src/shell/useSidebarOverlay.js +12 -4
- package/dist/src/shell/useStoryCode.d.ts +2 -1
- package/dist/src/shell/useStoryCode.js +12 -7
- package/dist/src/shell/useToolbarLayout.d.ts +5 -1
- package/dist/src/shell/useToolbarLayout.js +2 -2
- package/dist/src/shell/useWorstCase.d.ts +8 -2
- package/dist/src/shell/useWorstCase.js +2 -2
- package/dist/src/shell/valueEditors/FileEditor.d.ts +28 -0
- package/dist/src/shell/valueEditors/FileEditor.js +66 -0
- package/dist/src/shell/valueEditors/JsonEditor.d.ts +14 -0
- package/dist/src/shell/valueEditors/JsonEditor.js +53 -0
- package/dist/src/shell/valueEditors/ListEditor.d.ts +24 -0
- package/dist/src/shell/valueEditors/ListEditor.js +82 -0
- package/dist/src/shell/valueEditors/ObjectEditor.d.ts +32 -0
- package/dist/src/shell/valueEditors/ObjectEditor.js +70 -0
- package/dist/src/shell/valueEditors/PropEditor.d.ts +37 -0
- package/dist/src/shell/valueEditors/PropEditor.js +53 -0
- package/dist/src/shell/valueEditors/RecordEditor.d.ts +20 -0
- package/dist/src/shell/valueEditors/RecordEditor.js +84 -0
- package/dist/src/shell/valueEditors/SearchSelect.d.ts +42 -0
- package/dist/src/shell/valueEditors/SearchSelect.js +80 -0
- package/dist/src/shell/valueEditors/TokenEditor.d.ts +49 -0
- package/dist/src/shell/valueEditors/TokenEditor.js +74 -0
- package/dist/src/shell/valueEditors/UnionEditor.d.ts +20 -0
- package/dist/src/shell/valueEditors/UnionEditor.js +64 -0
- package/dist/src/shell/valueEditors/ValueField.d.ts +15 -0
- package/dist/src/shell/valueEditors/ValueField.js +148 -0
- package/dist/src/shell/valueEditors/editorStrings.d.ts +56 -0
- package/dist/src/shell/valueEditors/editorStrings.js +66 -0
- package/dist/src/shell/valueEditors/fieldTypes.d.ts +31 -0
- package/dist/src/shell/valueEditors/fieldTypes.js +0 -0
- package/dist/src/shell/valueEditors/valueEditors.css +153 -0
- package/dist/src/shell/worstArgs.d.ts +8 -5
- package/dist/src/shell/worstArgs.js +14 -7
- package/dist/src/shellTheme.d.ts +1 -1
- package/dist/src/shellTheme.js +15 -1
- package/dist/src/shellTheme.types.d.ts +4 -0
- package/dist/src/shellWord.d.ts +12 -0
- package/dist/src/shellWord.js +15 -0
- package/dist/src/sourceFiles.js +2 -1
- package/dist/src/storyArgTypes.d.ts +57 -0
- package/dist/src/storyArgTypes.js +195 -0
- package/dist/src/storyBackground.js +14 -3
- package/dist/src/storyCheck.d.ts +99 -3
- package/dist/src/storyCheck.js +39 -1
- package/dist/src/storyCodeText.d.ts +52 -0
- package/dist/src/storyCodeText.js +30 -0
- package/dist/src/storyControls.d.ts +103 -0
- package/dist/src/storyControls.js +100 -0
- package/dist/src/storyStatuses.d.ts +55 -0
- package/dist/src/storyStatuses.js +104 -0
- package/dist/src/storyTagNames.d.ts +25 -0
- package/dist/src/storyTagNames.js +25 -0
- package/dist/src/storyTags.d.ts +29 -0
- package/dist/src/storyTags.js +85 -0
- package/dist/src/storyTree.d.ts +13 -0
- package/dist/src/storyTree.js +24 -4
- package/dist/src/storybookArgs.d.ts +24 -0
- package/dist/src/storybookArgs.js +185 -0
- package/dist/src/switches.d.ts +66 -3
- package/dist/src/switches.js +42 -1
- package/dist/src/valueSchema.d.ts +28 -0
- package/dist/src/valueSchema.js +196 -0
- package/dist/src/valueShape.d.ts +94 -0
- package/dist/src/valueShape.js +25 -0
- package/dist/src/viewState.d.ts +8 -3
- package/dist/src/viewState.js +27 -10
- package/dist/src/vite/adapter.d.ts +40 -2
- package/dist/src/vite/adapter.js +1 -0
- package/dist/src/vite/agent.types.d.ts +354 -7
- package/dist/src/vite/agentApi.d.ts +23 -0
- package/dist/src/vite/agentApi.js +90 -17
- package/dist/src/vite/agentIndex.d.ts +0 -2
- package/dist/src/vite/agentIndex.js +5 -6
- package/dist/src/vite/agentRoutes.d.ts +20 -1
- package/dist/src/vite/agentRoutes.js +135 -66
- package/dist/src/vite/agentStatuses.d.ts +42 -0
- package/dist/src/vite/agentStatuses.js +67 -0
- package/dist/src/vite/agentStoryCode.d.ts +51 -0
- package/dist/src/vite/agentStoryCode.js +44 -0
- package/dist/src/vite/agentVisibility.d.ts +47 -0
- package/dist/src/vite/agentVisibility.js +174 -0
- package/dist/src/vite/appAudit.d.ts +134 -0
- package/dist/src/vite/appAudit.js +333 -0
- package/dist/src/vite/appBuildOption.d.ts +53 -0
- package/dist/src/vite/appBuildOption.js +55 -0
- package/dist/src/vite/appTokenFiles.d.ts +92 -0
- package/dist/src/vite/appTokenFiles.js +433 -0
- package/dist/src/vite/appTokens.d.ts +23 -0
- package/dist/src/vite/appTokens.js +275 -0
- package/dist/src/vite/argControlsConfig.d.ts +30 -0
- package/dist/src/vite/argControlsConfig.js +176 -0
- package/dist/src/vite/builtTexts.d.ts +10 -0
- package/dist/src/vite/builtTexts.js +59 -22
- package/dist/src/vite/catalogueConfig.d.ts +3 -1
- package/dist/src/vite/catalogueConfig.js +21 -4
- package/dist/src/vite/changeCoverage.d.ts +74 -0
- package/dist/src/vite/changeCoverage.js +120 -0
- package/dist/src/vite/changedRoute.d.ts +30 -0
- package/dist/src/vite/changedRoute.js +197 -0
- package/dist/src/vite/checkCode.d.ts +105 -3
- package/dist/src/vite/checkCode.js +323 -36
- package/dist/src/vite/checkoutWatch.d.ts +97 -0
- package/dist/src/vite/checkoutWatch.js +287 -0
- package/dist/src/vite/closeWatch.d.ts +8 -0
- package/dist/src/vite/closeWatch.js +1 -1
- package/dist/src/vite/componentCache.d.ts +8 -0
- package/dist/src/vite/componentCache.js +66 -0
- package/dist/src/vite/componentGraph.d.ts +71 -0
- package/dist/src/vite/componentGraph.js +133 -0
- package/dist/src/vite/componentRules.d.ts +33 -0
- package/dist/src/vite/componentRules.js +105 -0
- package/dist/src/vite/componentScan.d.ts +69 -0
- package/dist/src/vite/componentScan.js +418 -0
- package/dist/src/vite/compositionCheck.d.ts +15 -0
- package/dist/src/vite/compositionCheck.js +243 -0
- package/dist/src/vite/config.d.ts +67 -1
- package/dist/src/vite/configFile.d.ts +15 -2
- package/dist/src/vite/configFile.js +109 -40
- package/dist/src/vite/configKeys.d.ts +15 -0
- package/dist/src/vite/configKeys.js +172 -0
- package/dist/src/vite/configLoadError.d.ts +23 -0
- package/dist/src/vite/configLoadError.js +71 -0
- package/dist/src/vite/cssDeclarations.d.ts +71 -0
- package/dist/src/vite/cssDeclarations.js +290 -0
- package/dist/src/vite/cssImports.d.ts +14 -0
- package/dist/src/vite/cssImports.js +48 -0
- package/dist/src/vite/cssReferences.d.ts +54 -0
- package/dist/src/vite/cssReferences.js +157 -0
- package/dist/src/vite/cssTokenValues.d.ts +50 -0
- package/dist/src/vite/cssTokenValues.js +233 -0
- package/dist/src/vite/designTokens.d.ts +24 -0
- package/dist/src/vite/designTokens.js +5 -1
- package/dist/src/vite/docsExtractor.d.ts +9 -3
- package/dist/src/vite/docsExtractor.js +11 -3
- package/dist/src/vite/docsProgram.d.ts +17 -4
- package/dist/src/vite/docsProgram.js +52 -11
- package/dist/src/vite/docsWorker.js +7 -2
- package/dist/src/vite/emptyStoryGlobs.d.ts +41 -0
- package/dist/src/vite/emptyStoryGlobs.js +52 -0
- package/dist/src/vite/fileImports.d.ts +17 -0
- package/dist/src/vite/fileImports.js +57 -0
- package/dist/src/vite/findComponent.d.ts +10 -2
- package/dist/src/vite/findComponent.js +27 -22
- package/dist/src/vite/findRoute.js +3 -2
- package/dist/src/vite/forcedStates.d.ts +9 -2
- package/dist/src/vite/forcedStates.js +12 -3
- package/dist/src/vite/forgebookPlugin.d.ts +2 -0
- package/dist/src/vite/forgebookPlugin.js +55 -73
- package/dist/src/vite/frameErrors.d.ts +19 -0
- package/dist/src/vite/frameErrors.js +70 -0
- package/dist/src/vite/framesServer.d.ts +12 -0
- package/dist/src/vite/framesServer.js +21 -4
- package/dist/src/vite/functionComponentDocs.js +81 -12
- package/dist/src/vite/generatedModules.js +4 -2
- package/dist/src/vite/gitChange.d.ts +38 -5
- package/dist/src/vite/gitChange.js +71 -11
- package/dist/src/vite/hiddenStoryFiles.d.ts +23 -0
- package/dist/src/vite/hiddenStoryFiles.js +107 -0
- package/dist/src/vite/hotSnippets.d.ts +38 -14
- package/dist/src/vite/hotSnippets.js +137 -39
- package/dist/src/vite/importedNames.d.ts +37 -0
- package/dist/src/vite/importedNames.js +138 -0
- package/dist/src/vite/indexFields.d.ts +6 -0
- package/dist/src/vite/indexFields.js +21 -0
- package/dist/src/vite/indexStoryFile.d.ts +8 -1
- package/dist/src/vite/indexStoryFile.js +22 -157
- package/dist/src/vite/jsxCallSites.d.ts +33 -0
- package/dist/src/vite/jsxCallSites.js +200 -0
- package/dist/src/vite/jsxInScripts.d.ts +67 -0
- package/dist/src/vite/jsxInScripts.js +138 -0
- package/dist/src/vite/jsxTree.d.ts +20 -0
- package/dist/src/vite/jsxTree.js +163 -0
- package/dist/src/vite/lineAndColumn.d.ts +13 -0
- package/dist/src/vite/lineAndColumn.js +18 -0
- package/dist/src/vite/lookAlikes.d.ts +65 -0
- package/dist/src/vite/lookAlikes.js +228 -0
- package/dist/src/vite/nearestToken.d.ts +17 -0
- package/dist/src/vite/nearestToken.js +9 -2
- package/dist/src/vite/packageEntries.d.ts +42 -0
- package/dist/src/vite/packageEntries.js +127 -0
- package/dist/src/vite/pages.d.ts +9 -1
- package/dist/src/vite/pages.js +119 -4
- package/dist/src/vite/pluginConfig.js +4 -0
- package/dist/src/vite/pluginIds.d.ts +2 -0
- package/dist/src/vite/pluginIds.js +5 -1
- package/dist/src/vite/pluginModules.d.ts +81 -11
- package/dist/src/vite/pluginModules.js +109 -21
- package/dist/src/vite/prebundled.d.ts +57 -15
- package/dist/src/vite/prebundled.js +80 -0
- package/dist/src/vite/previewTags.d.ts +25 -0
- package/dist/src/vite/previewTags.js +56 -0
- package/dist/src/vite/projectFiles.d.ts +54 -0
- package/dist/src/vite/projectFiles.js +116 -0
- package/dist/src/vite/projectPostcss.d.ts +70 -0
- package/dist/src/vite/projectPostcss.js +250 -0
- package/dist/src/vite/propDocs.d.ts +12 -0
- package/dist/src/vite/propDocs.js +187 -60
- package/dist/src/vite/propKind.d.ts +40 -0
- package/dist/src/vite/propKind.js +71 -0
- package/dist/src/vite/propTypeNotes.d.ts +22 -0
- package/dist/src/vite/propTypeNotes.js +51 -0
- package/dist/src/vite/publishedExports.d.ts +27 -0
- package/dist/src/vite/publishedExports.js +298 -0
- package/dist/src/vite/realFolder.d.ts +6 -0
- package/dist/src/vite/realFolder.js +25 -0
- package/dist/src/vite/refsConfig.d.ts +39 -0
- package/dist/src/vite/refsConfig.js +54 -0
- package/dist/src/vite/reuseCheck.d.ts +45 -0
- package/dist/src/vite/reuseCheck.js +260 -0
- package/dist/src/vite/runningVersions.d.ts +33 -0
- package/dist/src/vite/runningVersions.js +25 -0
- package/dist/src/vite/scriptProblems.d.ts +60 -0
- package/dist/src/vite/scriptProblems.js +155 -0
- package/dist/src/vite/searchModule.js +3 -2
- package/dist/src/vite/searchRoute.js +4 -2
- package/dist/src/vite/shapeDocs.d.ts +36 -0
- package/dist/src/vite/shapeDocs.js +177 -0
- package/dist/src/vite/singleFileComponent.d.ts +17 -0
- package/dist/src/vite/singleFileComponent.js +83 -0
- package/dist/src/vite/sourceText.d.ts +34 -0
- package/dist/src/vite/sourceText.js +72 -0
- package/dist/src/vite/sourceTokens.d.ts +7 -0
- package/dist/src/vite/sourceTokens.js +7 -2
- package/dist/src/vite/stackLines.d.ts +49 -0
- package/dist/src/vite/stackLines.js +96 -0
- package/dist/src/vite/storyCode.d.ts +22 -7
- package/dist/src/vite/storyCode.js +263 -37
- package/dist/src/vite/storyCoverage.d.ts +48 -0
- package/dist/src/vite/storyCoverage.js +179 -0
- package/dist/src/vite/storyFilesModule.d.ts +48 -3
- package/dist/src/vite/storyFilesModule.js +105 -15
- package/dist/src/vite/storyPatterns.d.ts +31 -0
- package/dist/src/vite/storyPatterns.js +140 -5
- package/dist/src/vite/storyReach.d.ts +10 -2
- package/dist/src/vite/storyReach.js +15 -11
- package/dist/src/vite/storyTopLevel.d.ts +51 -0
- package/dist/src/vite/storyTopLevel.js +146 -0
- package/dist/src/vite/storylessRoutes.d.ts +4 -3
- package/dist/src/vite/storylessRoutes.js +210 -19
- package/dist/src/vite/switchValuesCheck.d.ts +19 -0
- package/dist/src/vite/switchValuesCheck.js +164 -0
- package/dist/src/vite/switchesDocument.d.ts +15 -0
- package/dist/src/vite/switchesDocument.js +47 -0
- package/dist/src/vite/tailwindConfigTokens.d.ts +41 -0
- package/dist/src/vite/tailwindConfigTokens.js +306 -0
- package/dist/src/vite/textImports.d.ts +15 -0
- package/dist/src/vite/textImports.js +58 -0
- package/dist/src/vite/textModules.d.ts +6 -5
- package/dist/src/vite/textModules.js +13 -8
- package/dist/src/vite/tokenAnswers.d.ts +6 -2
- package/dist/src/vite/tokenAnswers.js +11 -7
- package/dist/src/vite/typeParameters.d.ts +83 -0
- package/dist/src/vite/typeParameters.js +270 -0
- package/dist/src/vite/typedControls.d.ts +31 -0
- package/dist/src/vite/typedControls.js +66 -0
- package/dist/src/vite/unionProps.d.ts +37 -0
- package/dist/src/vite/unionProps.js +121 -0
- package/dist/src/vite/unresolvedTokens.d.ts +20 -0
- package/dist/src/vite/unresolvedTokens.js +193 -0
- package/dist/src/vite/usageGraph.js +10 -52
- package/dist/src/vite/usageGuidance.d.ts +9 -2
- package/dist/src/vite/usageGuidance.js +36 -8
- package/dist/src/vite/usageImports.d.ts +35 -0
- package/dist/src/vite/usageImports.js +280 -0
- package/dist/src/vite/visibilityRoute.d.ts +16 -0
- package/dist/src/vite/visibilityRoute.js +320 -0
- package/dist/src/worstCase.d.ts +2 -0
- package/dist/src/worstCase.js +2 -0
- package/package.json +28 -8
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,32 @@ 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
|
+
};
|
|
372
|
+
/**
|
|
373
|
+
* The frame's list of the custom controls' frame modules, each with the import that loads it when the shell first gives
|
|
374
|
+
* the story a value of that control; nothing for a catalogue whose controls have none.
|
|
375
|
+
*
|
|
376
|
+
* @param config - the configuration.
|
|
377
|
+
*/
|
|
378
|
+
const argControlFrameLines = (config) => {
|
|
379
|
+
const frames = Object.entries(config.argControls).flatMap(([name, { frame }]) => frame === undefined ? [] : [` ${codeLiteral(name)}: () => import(${codeLiteral(frame)}),`]);
|
|
380
|
+
return frames.length === 0 ? [] : [" argControls: {", ...frames, " },"];
|
|
381
|
+
};
|
|
280
382
|
/**
|
|
281
383
|
* The shell's entry: the shell mounted with the configuration's data, the logo, the sources and the code writer.
|
|
282
384
|
*
|
|
@@ -300,12 +402,15 @@ export const shellEntry = (config) => {
|
|
|
300
402
|
...(config.heights === undefined ? [] : [" heights: config.heights,"]),
|
|
301
403
|
...(config.home === undefined ? [] : [` home: ${writtenHomeCode(config.home)},`]),
|
|
302
404
|
` sources: ${sources.list},`,
|
|
405
|
+
...(config.stories.length === 0 ? [] : [" storyGlobs: config.storyGlobs,"]),
|
|
303
406
|
' frameUrl: "frame.html",',
|
|
304
407
|
" frames: config.frames,",
|
|
305
408
|
" languages: config.languages,",
|
|
306
409
|
...(config.switches === undefined ? [] : [" switches: config.switches,"]),
|
|
307
410
|
" lists: config.lists,",
|
|
411
|
+
...refsLines(config),
|
|
308
412
|
...pluginViewLines(config),
|
|
413
|
+
...argControlLines(config),
|
|
309
414
|
...(config.framework.addressTexts === undefined
|
|
310
415
|
? []
|
|
311
416
|
: [` addressTexts: ${codeLiteral(config.framework.addressTexts)},`]),
|
|
@@ -313,6 +418,12 @@ export const shellEntry = (config) => {
|
|
|
313
418
|
...(config.tokens.length === 0 && config.sources.length === 0
|
|
314
419
|
? []
|
|
315
420
|
: [` loadTokens: () => import(${codeLiteral(TOKENS_MODULE)}).then((module) => module.default),`]),
|
|
421
|
+
// only for a catalogue with previews: the others' first load carries not even the way to them
|
|
422
|
+
...(config.switches?.some((each) => each.values.some((value) => value.preview !== undefined))
|
|
423
|
+
? [
|
|
424
|
+
` loadSwitchPreviews: () => import(${codeLiteral(SWITCH_PREVIEWS_MODULE)}).then((module) => module.default),`
|
|
425
|
+
]
|
|
426
|
+
: []),
|
|
316
427
|
" codeOf",
|
|
317
428
|
" });",
|
|
318
429
|
""
|
|
@@ -356,6 +467,7 @@ const previewsHot = (previews) => previews.length === 0
|
|
|
356
467
|
* found, which leaves the card to say so.
|
|
357
468
|
*/
|
|
358
469
|
export const frameEntry = (config, axe) => {
|
|
470
|
+
const valueSheets = valueSheetsCode(config);
|
|
359
471
|
const sources = sourcesCode(config);
|
|
360
472
|
const frames = config.plugins.flatMap((plugin) => {
|
|
361
473
|
const frame = pluginFrameModule(plugin, config.framework.name);
|
|
@@ -366,6 +478,7 @@ export const frameEntry = (config, axe) => {
|
|
|
366
478
|
`import config from ${codeLiteral(CONFIG_MODULE)};`,
|
|
367
479
|
...(axe?.imports ?? []),
|
|
368
480
|
...sources.imports,
|
|
481
|
+
...valueSheets.imports,
|
|
369
482
|
...config.previews.map((file, index) => `import * as preview${index} from ${codeLiteral(file)};`),
|
|
370
483
|
...frames.map((plugin, index) => `import { frame as pluginFrame${index} } from ${codeLiteral(plugin.frame)};`),
|
|
371
484
|
'const root = document.getElementById("root");',
|
|
@@ -375,9 +488,11 @@ export const frameEntry = (config, axe) => {
|
|
|
375
488
|
...(axe === undefined ? [] : [` axeUrl: ${axe.value},`]),
|
|
376
489
|
" languages: config.languages,",
|
|
377
490
|
...(config.switches === undefined ? [] : [" switches: config.switches,"]),
|
|
491
|
+
...(valueSheets.list.length === 0 ? [] : [` valueSheets: { ${valueSheets.list.join(", ")} },`]),
|
|
378
492
|
" lists: config.lists,",
|
|
379
493
|
" frames: config.frames,",
|
|
380
494
|
...(config.hasPlayTools ? [playToolsLoader()] : []),
|
|
495
|
+
...argControlFrameLines(config),
|
|
381
496
|
...(frames.length === 0
|
|
382
497
|
? []
|
|
383
498
|
: [
|
|
@@ -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
|
+
};
|