forgebook 0.3.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +917 -74
- package/dist/bin/forgebook/agentClient.d.ts +2 -1
- package/dist/bin/forgebook/agentClient.js +13 -6
- package/dist/bin/forgebook/agentGuide.d.ts +59 -0
- package/dist/bin/forgebook/agentGuide.js +203 -0
- package/dist/bin/forgebook/agentLoopCommands.mjs +22 -42
- package/dist/bin/forgebook/agentSetup/agentFiles.d.ts +55 -0
- package/dist/bin/forgebook/agentSetup/agentFiles.js +319 -0
- package/dist/bin/forgebook/agentSetup/assistantHooks.d.ts +71 -0
- package/dist/bin/forgebook/agentSetup/assistantHooks.js +125 -0
- package/dist/bin/forgebook/agentSetup/ciWorkflow.d.ts +23 -0
- package/dist/bin/forgebook/agentSetup/ciWorkflow.js +55 -0
- package/dist/bin/forgebook/agentSetup/drawCandidates.d.ts +25 -0
- package/dist/bin/forgebook/agentSetup/drawCandidates.js +116 -0
- package/dist/bin/forgebook/agentSetup/drawDiagnosis.d.ts +28 -0
- package/dist/bin/forgebook/agentSetup/drawDiagnosis.js +134 -0
- package/dist/bin/forgebook/agentSetup/drawRun.d.ts +91 -0
- package/dist/bin/forgebook/agentSetup/drawRun.js +353 -0
- package/dist/bin/forgebook/agentSetup/hookNames.d.ts +7 -0
- package/dist/bin/forgebook/agentSetup/hookNames.js +7 -0
- package/dist/bin/forgebook/agentSetup/initAgentSteps.d.ts +48 -0
- package/dist/bin/forgebook/agentSetup/initAgentSteps.js +104 -0
- package/dist/bin/forgebook/agentSetup/liftedProviders.d.ts +17 -0
- package/dist/bin/forgebook/agentSetup/liftedProviders.js +186 -0
- package/dist/bin/forgebook/agentSetup/projectRunner.d.ts +46 -0
- package/dist/bin/forgebook/agentSetup/projectRunner.js +85 -0
- package/dist/bin/forgebook/agentSetup/stopHook.d.ts +65 -0
- package/dist/bin/forgebook/agentSetup/stopHook.js +202 -0
- package/dist/bin/forgebook/agentSetup/uniformPicture.d.ts +7 -0
- package/dist/bin/forgebook/agentSetup/uniformPicture.js +98 -0
- package/dist/bin/forgebook/agentSetupCommands.d.mts +14 -0
- package/dist/bin/forgebook/agentSetupCommands.mjs +98 -0
- package/dist/bin/forgebook/agentText.d.ts +23 -3
- package/dist/bin/forgebook/agentText.js +175 -28
- package/dist/bin/forgebook/agents.md +20 -191
- package/dist/bin/forgebook/agentsText.js +2 -1
- package/dist/bin/forgebook/appBuild/appBuild.d.ts +59 -0
- package/dist/bin/forgebook/appBuild/appBuild.js +213 -0
- package/dist/bin/forgebook/appBuild/appViteConfig.d.ts +96 -0
- package/dist/bin/forgebook/appBuild/appViteConfig.js +320 -0
- package/dist/bin/forgebook/appBuild/tsconfigPaths.d.ts +14 -0
- package/dist/bin/forgebook/appBuild/tsconfigPaths.js +80 -0
- package/dist/bin/forgebook/auditCommand.d.mts +8 -0
- package/dist/bin/forgebook/auditCommand.mjs +75 -0
- package/dist/bin/forgebook/auditRun.d.ts +95 -0
- package/dist/bin/forgebook/auditRun.js +270 -0
- package/dist/bin/forgebook/browserRun.d.ts +21 -0
- package/dist/bin/forgebook/browserRun.js +57 -0
- package/dist/bin/forgebook/buildFailure.d.ts +7 -0
- package/dist/bin/forgebook/buildFailure.js +47 -0
- package/dist/bin/forgebook/buildWatch.d.ts +52 -0
- package/dist/bin/forgebook/buildWatch.js +137 -0
- package/dist/bin/forgebook/builtCatalogue.js +9 -5
- package/dist/bin/forgebook/catalogueCommands.d.ts +9 -0
- package/dist/bin/forgebook/catalogueCommands.js +23 -0
- package/dist/bin/forgebook/catalogueVite.d.ts +5 -1
- package/dist/bin/forgebook/catalogueVite.js +14 -6
- package/dist/bin/forgebook/commandCacheClaim.d.ts +18 -0
- package/dist/bin/forgebook/commandCacheClaim.js +170 -0
- package/dist/bin/forgebook/commandServer.d.ts +8 -0
- package/dist/bin/forgebook/commandServer.js +61 -13
- package/dist/bin/forgebook/forgebookCommands.mjs +105 -28
- package/dist/bin/forgebook/graphCommand.d.mts +8 -0
- package/dist/bin/forgebook/graphCommand.mjs +84 -0
- package/dist/bin/forgebook/guide/commands.md +57 -0
- package/dist/bin/forgebook/guide/devices.md +17 -0
- package/dist/bin/forgebook/guide/docs-pages.md +13 -0
- package/dist/bin/forgebook/guide/frameworks/angular.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/html.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/nextjs.md +23 -0
- package/dist/bin/forgebook/guide/frameworks/nuxt.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/preact.md +16 -0
- package/dist/bin/forgebook/guide/frameworks/react-native-web.md +21 -0
- package/dist/bin/forgebook/guide/frameworks/react.md +16 -0
- package/dist/bin/forgebook/guide/frameworks/solid.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/svelte.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/sveltekit.md +23 -0
- package/dist/bin/forgebook/guide/frameworks/vue.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/web-components.md +21 -0
- package/dist/bin/forgebook/guide/links.md +29 -0
- package/dist/bin/forgebook/guide/setup.md +23 -0
- package/dist/bin/forgebook/guide/stories.md +90 -0
- package/dist/bin/forgebook/guide/switches.md +43 -0
- package/dist/bin/forgebook/guideCommand.d.mts +13 -0
- package/dist/bin/forgebook/guideCommand.mjs +37 -0
- package/dist/bin/forgebook/importers/storybook.d.ts +21 -0
- package/dist/bin/forgebook/importers/storybook.js +11 -5
- package/dist/bin/forgebook/importers/storybookFrameworks.js +1 -1
- package/dist/bin/forgebook/initCommands.d.mts +11 -0
- package/dist/bin/forgebook/initCommands.mjs +51 -78
- package/dist/bin/forgebook/initConfig.d.ts +5 -3
- package/dist/bin/forgebook/initConfig.js +6 -3
- package/dist/bin/forgebook/initInstall.d.ts +15 -0
- package/dist/bin/forgebook/initInstall.js +77 -0
- package/dist/bin/forgebook/initPrint.d.ts +9 -0
- package/dist/bin/forgebook/initPrint.js +60 -0
- package/dist/bin/forgebook/initRefusals.d.ts +45 -0
- package/dist/bin/forgebook/initRefusals.js +91 -0
- package/dist/bin/forgebook/initRun.d.ts +28 -0
- package/dist/bin/forgebook/initRun.js +311 -0
- package/dist/bin/forgebook/mcpCommand.mjs +38 -4
- package/dist/bin/forgebook/mcpGraph.d.ts +13 -0
- package/dist/bin/forgebook/mcpGraph.js +24 -0
- package/dist/bin/forgebook/mcpTokens.d.ts +14 -0
- package/dist/bin/forgebook/mcpTokens.js +58 -0
- package/dist/bin/forgebook/mcpToolParts.d.ts +7 -0
- package/dist/bin/forgebook/mcpToolParts.js +10 -0
- package/dist/bin/forgebook/mcpTools.d.ts +13 -6
- package/dist/bin/forgebook/mcpTools.js +57 -90
- package/dist/bin/forgebook/mcpVerify.d.ts +16 -0
- package/dist/bin/forgebook/mcpVerify.js +36 -0
- package/dist/bin/forgebook/migrate/codemods.d.ts +11 -0
- package/dist/bin/forgebook/migrate/codemods.js +61 -0
- package/dist/bin/forgebook/migrate/migrate.types.d.ts +117 -0
- package/dist/bin/forgebook/migrate/migrate.types.js +5 -0
- package/dist/bin/forgebook/migrate/migrateCommand.d.mts +8 -0
- package/dist/bin/forgebook/migrate/migrateCommand.mjs +76 -0
- package/dist/bin/forgebook/migrate/migrateRun.d.ts +61 -0
- package/dist/bin/forgebook/migrate/migrateRun.js +210 -0
- package/dist/bin/forgebook/migrate/migrateText.d.ts +12 -0
- package/dist/bin/forgebook/migrate/migrateText.js +30 -0
- package/dist/bin/forgebook/migrate/migrateWrite.d.ts +27 -0
- package/dist/bin/forgebook/migrate/migrateWrite.js +66 -0
- package/dist/bin/forgebook/migrate/objectEdits.d.ts +70 -0
- package/dist/bin/forgebook/migrate/objectEdits.js +241 -0
- package/dist/bin/forgebook/migrate/playOnInBuilds.d.ts +3 -0
- package/dist/bin/forgebook/migrate/playOnInBuilds.js +86 -0
- package/dist/bin/forgebook/migrate/propGroupStrings.d.ts +5 -0
- package/dist/bin/forgebook/migrate/propGroupStrings.js +81 -0
- package/dist/bin/forgebook/newProject/newProject.d.ts +39 -0
- package/dist/bin/forgebook/newProject/newProject.js +180 -0
- package/dist/bin/forgebook/newProject/newProject.types.d.ts +97 -0
- package/dist/bin/forgebook/newProject/newProject.types.js +6 -0
- package/dist/bin/forgebook/newProject/packageManagers.d.ts +51 -0
- package/dist/bin/forgebook/newProject/packageManagers.js +121 -0
- package/dist/bin/forgebook/newProject/projectEntries.d.ts +62 -0
- package/dist/bin/forgebook/newProject/projectEntries.js +191 -0
- package/dist/bin/forgebook/newProject/projectFrameworks.d.ts +57 -0
- package/dist/bin/forgebook/newProject/projectFrameworks.js +148 -0
- package/dist/bin/forgebook/newProject/projectLook.d.ts +23 -0
- package/dist/bin/forgebook/newProject/projectLook.js +293 -0
- package/dist/bin/forgebook/newProject/projectPackages.d.ts +66 -0
- package/dist/bin/forgebook/newProject/projectPackages.js +178 -0
- package/dist/bin/forgebook/newRepair.d.ts +45 -0
- package/dist/bin/forgebook/newRepair.js +157 -0
- package/dist/bin/forgebook/newRepairRun.d.ts +69 -0
- package/dist/bin/forgebook/newRepairRun.js +148 -0
- package/dist/bin/forgebook/newStories.d.ts +23 -1
- package/dist/bin/forgebook/newStories.js +101 -11
- package/dist/bin/forgebook/newStoriesFile.d.ts +20 -1
- package/dist/bin/forgebook/newStoriesFile.js +43 -4
- package/dist/bin/forgebook/prebundleRun.d.ts +3 -1
- package/dist/bin/forgebook/prebundleRun.js +28 -8
- package/dist/bin/forgebook/proofCommand.d.mts +15 -0
- package/dist/bin/forgebook/proofCommand.mjs +212 -0
- package/dist/bin/forgebook/proofRun.d.ts +63 -0
- package/dist/bin/forgebook/proofRun.js +412 -0
- package/dist/bin/forgebook/proofText.d.ts +36 -0
- package/dist/bin/forgebook/proofText.js +131 -0
- package/dist/bin/forgebook/proofWorkflow.d.ts +29 -0
- package/dist/bin/forgebook/proofWorkflow.js +205 -0
- package/dist/bin/forgebook/setArgsTool.d.ts +8 -0
- package/dist/bin/forgebook/setArgsTool.js +70 -0
- package/dist/bin/forgebook/storyCheckCommands.mjs +42 -3
- package/dist/bin/forgebook/storyCheckRun.d.ts +50 -0
- package/dist/bin/forgebook/storyCheckRun.js +83 -9
- package/dist/bin/forgebook/storyFileIds.d.ts +15 -0
- package/dist/bin/forgebook/storyFileIds.js +14 -0
- package/dist/bin/forgebook/stressCases.d.ts +31 -0
- package/dist/bin/forgebook/stressCases.js +79 -0
- package/dist/bin/forgebook/stressRun.d.ts +12 -0
- package/dist/bin/forgebook/stressRun.js +61 -0
- package/dist/bin/forgebook/stressText.d.ts +27 -0
- package/dist/bin/forgebook/stressText.js +46 -0
- package/dist/bin/forgebook/verifyBase.d.ts +45 -0
- package/dist/bin/forgebook/verifyBase.js +196 -0
- package/dist/bin/forgebook/verifyCommand.d.mts +13 -0
- package/dist/bin/forgebook/verifyCommand.mjs +125 -0
- package/dist/bin/forgebook/verifyRun.d.ts +63 -0
- package/dist/bin/forgebook/verifyRun.js +108 -0
- package/dist/bin/forgebook/verifyVerdict.d.ts +40 -0
- package/dist/bin/forgebook/verifyVerdict.js +297 -0
- package/dist/bin/forgebook/workflowActions.d.ts +23 -0
- package/dist/bin/forgebook/workflowActions.js +23 -0
- package/dist/bin/forgebook-docs/catalogueMarkdown.js +12 -1
- package/dist/src/addressArgs.d.ts +54 -6
- package/dist/src/addressArgs.js +72 -16
- package/dist/src/addressArgsParam.d.ts +54 -0
- package/dist/src/addressArgsParam.js +51 -0
- package/dist/src/addressTexts.d.ts +14 -0
- package/dist/src/addressTexts.js +28 -21
- package/dist/src/agentIndexFile.d.ts +11 -0
- package/dist/src/agentIndexFile.js +11 -0
- package/dist/src/argConditions.d.ts +52 -0
- package/dist/src/argConditions.js +80 -0
- package/dist/src/argControl.d.ts +100 -0
- package/dist/src/argControl.js +0 -0
- package/dist/src/argExpression.d.ts +21 -0
- package/dist/src/argExpression.js +30 -0
- package/dist/src/argTypes.d.ts +40 -51
- package/dist/src/argTypes.js +66 -184
- package/dist/src/argsProps.d.ts +3 -3
- package/dist/src/argsProps.js +11 -5
- package/dist/src/bundlerErrors.d.ts +29 -0
- package/dist/src/bundlerErrors.js +49 -0
- package/dist/src/catalogue.d.ts +31 -0
- package/dist/src/catalogue.js +13 -2
- package/dist/src/catalogueRefs.d.ts +75 -0
- package/dist/src/catalogueRefs.js +122 -0
- package/dist/src/componentDocs.d.ts +71 -0
- package/dist/src/componentDocs.js +15 -2
- package/dist/src/frame/callValues.d.ts +19 -0
- package/dist/src/frame/callValues.js +58 -0
- package/dist/src/frame/canvasScheme.d.ts +33 -0
- package/dist/src/frame/canvasScheme.js +67 -0
- package/dist/src/frame/frame.css +36 -3
- package/dist/src/frame/frameStatus.d.ts +16 -1
- package/dist/src/frame/frameStatus.js +16 -1
- package/dist/src/frame/frameView.js +4 -3
- package/dist/src/frame/mountFrame.d.ts +7 -1
- package/dist/src/frame/mountFrame.js +153 -46
- package/dist/src/frame/panelValues.d.ts +35 -0
- package/dist/src/frame/panelValues.js +127 -0
- package/dist/src/frame/playActions.d.ts +39 -0
- package/dist/src/frame/playActions.js +98 -0
- package/dist/src/frame/playStepper.d.ts +28 -0
- package/dist/src/frame/playStepper.js +38 -0
- package/dist/src/frame/playStory.d.ts +9 -1
- package/dist/src/frame/playStory.js +49 -3
- package/dist/src/frame/renderer.d.ts +34 -1
- package/dist/src/frame/renderer.js +24 -0
- package/dist/src/frame/shellChannel.d.ts +1 -1
- package/dist/src/frame/shellChannel.js +1 -1
- package/dist/src/frame/shellCheck.d.ts +17 -0
- package/dist/src/frame/shellCheck.js +25 -0
- package/dist/src/frame/shellMessageCheck.d.ts +7 -0
- package/dist/src/frame/shellMessageCheck.js +53 -0
- package/dist/src/frame/storyContent.d.ts +50 -0
- package/dist/src/frame/storyContent.js +73 -0
- package/dist/src/frame/storyModule.d.ts +9 -0
- package/dist/src/frame/storyModule.js +20 -2
- package/dist/src/frame/storyRun.d.ts +15 -7
- package/dist/src/frame/storyRun.js +64 -15
- package/dist/src/frame/valueSheets.d.ts +35 -0
- package/dist/src/frame/valueSheets.js +99 -0
- package/dist/src/hotModules.d.ts +20 -0
- package/dist/src/hotModules.js +23 -0
- package/dist/src/jsxCode.d.ts +1 -14
- package/dist/src/jsxCode.js +46 -10
- package/dist/src/liveErrors.d.ts +30 -4
- package/dist/src/liveErrors.js +18 -3
- package/dist/src/messages.d.ts +77 -27
- package/dist/src/messages.js +58 -100
- package/dist/src/namedValues.d.ts +2 -26
- package/dist/src/namedValues.js +0 -47
- package/dist/src/pageConfig.d.ts +2 -0
- package/dist/src/playTrace.d.ts +19 -2
- package/dist/src/playTrace.js +10 -5
- package/dist/src/plugin.d.ts +10 -3
- package/dist/src/previewRelay.js +9 -1
- package/dist/src/printable.d.ts +12 -0
- package/dist/src/printable.js +22 -0
- package/dist/src/propsSignature.d.ts +37 -0
- package/dist/src/propsSignature.js +40 -0
- package/dist/src/search.d.ts +41 -5
- package/dist/src/search.js +93 -23
- package/dist/src/searchMatch.d.ts +4 -1
- package/dist/src/searchMatch.js +26 -5
- package/dist/src/searchTypos.d.ts +88 -0
- package/dist/src/searchTypos.js +178 -0
- package/dist/src/shapeValues.d.ts +86 -0
- package/dist/src/shapeValues.js +295 -0
- package/dist/src/shell/ApiReference.js +6 -3
- package/dist/src/shell/ApiTableBox.d.ts +15 -0
- package/dist/src/shell/ApiTableBox.js +11 -0
- package/dist/src/shell/AppearanceMenu.d.ts +4 -1
- package/dist/src/shell/AppearanceMenu.js +9 -6
- package/dist/src/shell/CodeTab.d.ts +3 -2
- package/dist/src/shell/CodeTab.js +3 -2
- package/dist/src/shell/CodeText.d.ts +1 -1
- package/dist/src/shell/CodeText.js +2 -3
- package/dist/src/shell/CompareGrid.js +1 -1
- package/dist/src/shell/ComponentPage.d.ts +1 -1
- package/dist/src/shell/ComponentPage.js +5 -1
- package/dist/src/shell/CustomControl.d.ts +34 -0
- package/dist/src/shell/CustomControl.js +132 -0
- package/dist/src/shell/DocContainers.js +1 -1
- package/dist/src/shell/DocPage.js +2 -2
- package/dist/src/shell/DroppedArgsList.d.ts +2 -2
- package/dist/src/shell/DroppedArgsList.js +1 -1
- package/dist/src/shell/EmbedPage.js +58 -14
- package/dist/src/shell/Example.d.ts +5 -1
- package/dist/src/shell/Example.js +16 -8
- package/dist/src/shell/FrameView.d.ts +6 -3
- package/dist/src/shell/FrameView.js +2 -2
- package/dist/src/shell/HomePage.d.ts +3 -1
- package/dist/src/shell/HomePage.js +16 -6
- package/dist/src/shell/InfoTip.js +2 -2
- package/dist/src/shell/InteractionsTab.d.ts +11 -4
- package/dist/src/shell/InteractionsTab.js +18 -2
- package/dist/src/shell/LazyPage.js +1 -1
- package/dist/src/shell/PackageHtml.js +3 -1
- package/dist/src/shell/PinnedControl.js +14 -62
- package/dist/src/shell/PinnedControlMenu.d.ts +44 -0
- package/dist/src/shell/PinnedControlMenu.js +72 -0
- package/dist/src/shell/PluginBlockHost.js +2 -1
- package/dist/src/shell/PluginTabHost.js +19 -2
- package/dist/src/shell/PropFields.d.ts +3 -1
- package/dist/src/shell/PropFields.js +9 -6
- package/dist/src/shell/PropRows.d.ts +23 -2
- package/dist/src/shell/PropRows.js +58 -19
- package/dist/src/shell/PropsTab.d.ts +12 -5
- package/dist/src/shell/PropsTab.js +9 -21
- package/dist/src/shell/RefStoryPage.d.ts +33 -0
- package/dist/src/shell/RefStoryPage.js +123 -0
- package/dist/src/shell/SearchPanel.js +51 -24
- package/dist/src/shell/Shell.d.ts +18 -0
- package/dist/src/shell/Shell.js +137 -22
- package/dist/src/shell/ShortcutHelp.d.ts +22 -0
- package/dist/src/shell/ShortcutHelp.js +66 -0
- package/dist/src/shell/Sidebar.d.ts +17 -4
- package/dist/src/shell/Sidebar.js +92 -41
- package/dist/src/shell/SidebarDocs.js +2 -2
- package/dist/src/shell/SidebarEntries.js +5 -3
- package/dist/src/shell/SidebarHandle.d.ts +3 -5
- package/dist/src/shell/SidebarHandle.js +4 -4
- package/dist/src/shell/SidebarRefs.d.ts +39 -0
- package/dist/src/shell/SidebarRefs.js +99 -0
- package/dist/src/shell/SidebarSearch.js +37 -9
- package/dist/src/shell/SignatureReference.js +3 -1
- package/dist/src/shell/Stage.d.ts +10 -2
- package/dist/src/shell/Stage.js +35 -60
- package/dist/src/shell/StatusBadges.d.ts +54 -0
- package/dist/src/shell/StatusBadges.js +77 -0
- package/dist/src/shell/StoryCodeBlock.d.ts +8 -19
- package/dist/src/shell/StoryCodeBlock.js +7 -6
- package/dist/src/shell/SwitchGallery.d.ts +36 -0
- package/dist/src/shell/SwitchGallery.js +17 -0
- package/dist/src/shell/SwitchGalleryPanel.d.ts +37 -0
- package/dist/src/shell/SwitchGalleryPanel.js +99 -0
- package/dist/src/shell/TagFilter.d.ts +24 -0
- package/dist/src/shell/TagFilter.js +45 -0
- package/dist/src/shell/TagViews.d.ts +39 -0
- package/dist/src/shell/TagViews.js +20 -0
- package/dist/src/shell/Toolbar.d.ts +4 -1
- package/dist/src/shell/Toolbar.js +17 -7
- package/dist/src/shell/ToolbarControl.d.ts +3 -0
- package/dist/src/shell/ToolbarControl.js +23 -6
- package/dist/src/shell/ViewMenuPanel.js +6 -1
- package/dist/src/shell/argChecks.d.ts +22 -0
- package/dist/src/shell/argChecks.js +20 -0
- package/dist/src/shell/asideStory.d.ts +17 -4
- package/dist/src/shell/asideStory.js +21 -4
- package/dist/src/shell/audienceSections.css +9 -9
- package/dist/src/shell/catalogueContext.d.ts +1 -1
- package/dist/src/shell/catalogueContext.js +6 -1
- package/dist/src/shell/codeSpans.d.ts +27 -0
- package/dist/src/shell/codeSpans.js +76 -0
- package/dist/src/shell/compareVariants.d.ts +4 -2
- package/dist/src/shell/compareVariants.js +16 -8
- package/dist/src/shell/composition.d.ts +23 -0
- package/dist/src/shell/composition.js +26 -0
- package/dist/src/shell/controlCycle.d.ts +1 -1
- package/dist/src/shell/controlCycle.js +3 -2
- package/dist/src/shell/customControls.d.ts +55 -0
- package/dist/src/shell/customControls.js +70 -0
- package/dist/src/shell/docPage.css +22 -22
- package/dist/src/shell/dockTabs.d.ts +19 -3
- package/dist/src/shell/dockTabs.js +28 -20
- package/dist/src/shell/embed.css +7 -7
- package/dist/src/shell/framesOrigin.d.ts +7 -0
- package/dist/src/shell/framesOrigin.js +1 -1
- package/dist/src/shell/galleryPlace.d.ts +20 -0
- package/dist/src/shell/galleryPlace.js +26 -0
- package/dist/src/shell/icons.d.ts +1 -0
- package/dist/src/shell/icons.js +1 -0
- package/dist/src/shell/keyboard.d.ts +14 -12
- package/dist/src/shell/keyboard.js +21 -6
- package/dist/src/shell/laterStrings.d.ts +29 -0
- package/dist/src/shell/laterStrings.js +42 -3
- package/dist/src/shell/mountShell.js +3 -0
- package/dist/src/shell/pageStrings.d.ts +4 -0
- package/dist/src/shell/pageStrings.js +4 -0
- package/dist/src/shell/pageTagView.d.ts +18 -0
- package/dist/src/shell/pageTagView.js +10 -0
- package/dist/src/shell/playMemory.d.ts +14 -0
- package/dist/src/shell/playMemory.js +8 -0
- package/dist/src/shell/propNotes.d.ts +23 -0
- package/dist/src/shell/propNotes.js +37 -0
- package/dist/src/shell/refIndexLoad.d.ts +17 -0
- package/dist/src/shell/refIndexLoad.js +38 -0
- package/dist/src/shell/refParts.d.ts +34 -0
- package/dist/src/shell/refParts.js +9 -0
- package/dist/src/shell/refStory.css +21 -0
- package/dist/src/shell/refStrings.d.ts +13 -0
- package/dist/src/shell/refStrings.js +21 -0
- package/dist/src/shell/search.css +11 -11
- package/dist/src/shell/shell.css +348 -168
- package/dist/src/shell/shellScheme.js +2 -2
- package/dist/src/shell/shortcutHelp.css +64 -0
- package/dist/src/shell/stageArgs.d.ts +53 -0
- package/dist/src/shell/stageArgs.js +64 -0
- package/dist/src/shell/statusBadges.css +51 -0
- package/dist/src/shell/strings.d.ts +7 -16
- package/dist/src/shell/strings.js +12 -17
- package/dist/src/shell/switchGallery.css +104 -0
- package/dist/src/shell/tagFilter.css +46 -0
- package/dist/src/shell/tagView.d.ts +20 -0
- package/dist/src/shell/tagView.js +10 -0
- package/dist/src/shell/useAddressArgs.d.ts +27 -2
- package/dist/src/shell/useAddressArgs.js +71 -14
- package/dist/src/shell/useControlKeys.js +2 -2
- package/dist/src/shell/useEditedProblems.d.ts +6 -0
- package/dist/src/shell/useEditedProblems.js +40 -0
- package/dist/src/shell/useFrameMessages.js +3 -0
- package/dist/src/shell/useListedTree.d.ts +13 -0
- package/dist/src/shell/useListedTree.js +32 -0
- package/dist/src/shell/usePageFrames.js +2 -2
- package/dist/src/shell/usePopover.d.ts +5 -0
- package/dist/src/shell/usePopover.js +7 -1
- package/dist/src/shell/useRefIndex.d.ts +22 -0
- package/dist/src/shell/useRefIndex.js +36 -0
- package/dist/src/shell/useScrollStops.d.ts +20 -0
- package/dist/src/shell/useScrollStops.js +41 -0
- package/dist/src/shell/useShortcutHelp.d.ts +18 -0
- package/dist/src/shell/useShortcutHelp.js +32 -0
- package/dist/src/shell/useSidebarOverlay.d.ts +2 -1
- package/dist/src/shell/useSidebarOverlay.js +12 -4
- package/dist/src/shell/useStoryCode.d.ts +2 -1
- package/dist/src/shell/useStoryCode.js +12 -7
- package/dist/src/shell/useToolbarLayout.d.ts +5 -1
- package/dist/src/shell/useToolbarLayout.js +2 -2
- package/dist/src/shell/useWorstCase.d.ts +8 -2
- package/dist/src/shell/useWorstCase.js +2 -2
- package/dist/src/shell/valueEditors/FileEditor.d.ts +28 -0
- package/dist/src/shell/valueEditors/FileEditor.js +66 -0
- package/dist/src/shell/valueEditors/JsonEditor.d.ts +14 -0
- package/dist/src/shell/valueEditors/JsonEditor.js +53 -0
- package/dist/src/shell/valueEditors/ListEditor.d.ts +24 -0
- package/dist/src/shell/valueEditors/ListEditor.js +82 -0
- package/dist/src/shell/valueEditors/ObjectEditor.d.ts +32 -0
- package/dist/src/shell/valueEditors/ObjectEditor.js +70 -0
- package/dist/src/shell/valueEditors/PropEditor.d.ts +37 -0
- package/dist/src/shell/valueEditors/PropEditor.js +53 -0
- package/dist/src/shell/valueEditors/RecordEditor.d.ts +20 -0
- package/dist/src/shell/valueEditors/RecordEditor.js +84 -0
- package/dist/src/shell/valueEditors/SearchSelect.d.ts +42 -0
- package/dist/src/shell/valueEditors/SearchSelect.js +80 -0
- package/dist/src/shell/valueEditors/TokenEditor.d.ts +49 -0
- package/dist/src/shell/valueEditors/TokenEditor.js +74 -0
- package/dist/src/shell/valueEditors/UnionEditor.d.ts +20 -0
- package/dist/src/shell/valueEditors/UnionEditor.js +64 -0
- package/dist/src/shell/valueEditors/ValueField.d.ts +15 -0
- package/dist/src/shell/valueEditors/ValueField.js +147 -0
- package/dist/src/shell/valueEditors/editorStrings.d.ts +56 -0
- package/dist/src/shell/valueEditors/editorStrings.js +66 -0
- package/dist/src/shell/valueEditors/fieldTypes.d.ts +31 -0
- package/dist/src/shell/valueEditors/fieldTypes.js +0 -0
- package/dist/src/shell/valueEditors/valueEditors.css +153 -0
- package/dist/src/shell/worstArgs.d.ts +8 -5
- package/dist/src/shell/worstArgs.js +14 -7
- package/dist/src/shellTheme.d.ts +1 -1
- package/dist/src/shellTheme.js +15 -1
- package/dist/src/shellTheme.types.d.ts +4 -0
- package/dist/src/shellWord.d.ts +12 -0
- package/dist/src/shellWord.js +15 -0
- package/dist/src/sourceFiles.js +2 -1
- package/dist/src/storyArgTypes.d.ts +57 -0
- package/dist/src/storyArgTypes.js +195 -0
- package/dist/src/storyBackground.js +14 -3
- package/dist/src/storyCheck.d.ts +85 -3
- package/dist/src/storyCheck.js +23 -1
- package/dist/src/storyCodeText.d.ts +46 -0
- package/dist/src/storyCodeText.js +27 -0
- package/dist/src/storyControls.d.ts +100 -0
- package/dist/src/storyControls.js +100 -0
- package/dist/src/storyStatuses.d.ts +55 -0
- package/dist/src/storyStatuses.js +104 -0
- package/dist/src/storyTagNames.d.ts +25 -0
- package/dist/src/storyTagNames.js +25 -0
- package/dist/src/storyTags.d.ts +29 -0
- package/dist/src/storyTags.js +85 -0
- package/dist/src/storyTree.d.ts +13 -0
- package/dist/src/storyTree.js +24 -4
- package/dist/src/storybookArgs.d.ts +24 -0
- package/dist/src/storybookArgs.js +185 -0
- package/dist/src/switches.d.ts +66 -3
- package/dist/src/switches.js +42 -1
- package/dist/src/valueSchema.d.ts +28 -0
- package/dist/src/valueSchema.js +196 -0
- package/dist/src/valueShape.d.ts +94 -0
- package/dist/src/valueShape.js +25 -0
- package/dist/src/viewState.d.ts +8 -3
- package/dist/src/viewState.js +27 -10
- package/dist/src/vite/adapter.d.ts +40 -2
- package/dist/src/vite/adapter.js +1 -0
- package/dist/src/vite/agent.types.d.ts +347 -7
- package/dist/src/vite/agentApi.d.ts +23 -0
- package/dist/src/vite/agentApi.js +90 -17
- package/dist/src/vite/agentIndex.d.ts +0 -2
- package/dist/src/vite/agentIndex.js +5 -6
- package/dist/src/vite/agentRoutes.d.ts +20 -1
- package/dist/src/vite/agentRoutes.js +106 -65
- package/dist/src/vite/agentStatuses.d.ts +42 -0
- package/dist/src/vite/agentStatuses.js +67 -0
- package/dist/src/vite/agentStoryCode.d.ts +48 -0
- package/dist/src/vite/agentStoryCode.js +38 -0
- package/dist/src/vite/agentVisibility.d.ts +47 -0
- package/dist/src/vite/agentVisibility.js +174 -0
- package/dist/src/vite/appAudit.d.ts +134 -0
- package/dist/src/vite/appAudit.js +333 -0
- package/dist/src/vite/appBuildOption.d.ts +53 -0
- package/dist/src/vite/appBuildOption.js +55 -0
- package/dist/src/vite/appTokenFiles.d.ts +92 -0
- package/dist/src/vite/appTokenFiles.js +433 -0
- package/dist/src/vite/appTokens.d.ts +23 -0
- package/dist/src/vite/appTokens.js +275 -0
- package/dist/src/vite/builtTexts.d.ts +10 -0
- package/dist/src/vite/builtTexts.js +59 -22
- package/dist/src/vite/catalogueConfig.d.ts +3 -1
- package/dist/src/vite/catalogueConfig.js +15 -3
- package/dist/src/vite/changeCoverage.d.ts +74 -0
- package/dist/src/vite/changeCoverage.js +120 -0
- package/dist/src/vite/changedRoute.d.ts +30 -0
- package/dist/src/vite/changedRoute.js +197 -0
- package/dist/src/vite/checkCode.d.ts +105 -3
- package/dist/src/vite/checkCode.js +323 -36
- package/dist/src/vite/checkoutWatch.d.ts +97 -0
- package/dist/src/vite/checkoutWatch.js +287 -0
- package/dist/src/vite/closeWatch.d.ts +8 -0
- package/dist/src/vite/closeWatch.js +1 -1
- package/dist/src/vite/componentCache.d.ts +8 -0
- package/dist/src/vite/componentCache.js +66 -0
- package/dist/src/vite/componentGraph.d.ts +71 -0
- package/dist/src/vite/componentGraph.js +133 -0
- package/dist/src/vite/componentRules.d.ts +33 -0
- package/dist/src/vite/componentRules.js +105 -0
- package/dist/src/vite/componentScan.d.ts +69 -0
- package/dist/src/vite/componentScan.js +418 -0
- package/dist/src/vite/compositionCheck.d.ts +15 -0
- package/dist/src/vite/compositionCheck.js +243 -0
- package/dist/src/vite/config.d.ts +32 -1
- package/dist/src/vite/configFile.d.ts +14 -2
- package/dist/src/vite/configFile.js +124 -40
- package/dist/src/vite/configKeys.d.ts +15 -0
- package/dist/src/vite/configKeys.js +171 -0
- package/dist/src/vite/configLoadError.d.ts +23 -0
- package/dist/src/vite/configLoadError.js +71 -0
- package/dist/src/vite/cssDeclarations.d.ts +71 -0
- package/dist/src/vite/cssDeclarations.js +290 -0
- package/dist/src/vite/cssImports.d.ts +14 -0
- package/dist/src/vite/cssImports.js +48 -0
- package/dist/src/vite/cssReferences.d.ts +54 -0
- package/dist/src/vite/cssReferences.js +157 -0
- package/dist/src/vite/cssTokenValues.d.ts +50 -0
- package/dist/src/vite/cssTokenValues.js +233 -0
- package/dist/src/vite/designTokens.d.ts +24 -0
- package/dist/src/vite/designTokens.js +5 -1
- package/dist/src/vite/docsExtractor.d.ts +9 -3
- package/dist/src/vite/docsExtractor.js +11 -3
- package/dist/src/vite/docsProgram.d.ts +17 -4
- package/dist/src/vite/docsProgram.js +52 -11
- package/dist/src/vite/docsWorker.js +7 -2
- package/dist/src/vite/emptyStoryGlobs.d.ts +41 -0
- package/dist/src/vite/emptyStoryGlobs.js +52 -0
- package/dist/src/vite/fileImports.d.ts +17 -0
- package/dist/src/vite/fileImports.js +57 -0
- package/dist/src/vite/findComponent.d.ts +10 -2
- package/dist/src/vite/findComponent.js +27 -22
- package/dist/src/vite/findRoute.js +3 -2
- package/dist/src/vite/forcedStates.d.ts +9 -2
- package/dist/src/vite/forcedStates.js +12 -3
- package/dist/src/vite/forgebookPlugin.d.ts +2 -0
- package/dist/src/vite/forgebookPlugin.js +52 -72
- package/dist/src/vite/frameErrors.d.ts +19 -0
- package/dist/src/vite/frameErrors.js +70 -0
- package/dist/src/vite/framesServer.d.ts +12 -0
- package/dist/src/vite/framesServer.js +21 -4
- package/dist/src/vite/functionComponentDocs.js +81 -12
- package/dist/src/vite/generatedModules.js +4 -2
- package/dist/src/vite/gitChange.d.ts +38 -5
- package/dist/src/vite/gitChange.js +71 -11
- package/dist/src/vite/hiddenStoryFiles.d.ts +23 -0
- package/dist/src/vite/hiddenStoryFiles.js +107 -0
- package/dist/src/vite/hotSnippets.d.ts +38 -14
- package/dist/src/vite/hotSnippets.js +137 -39
- package/dist/src/vite/importedNames.d.ts +37 -0
- package/dist/src/vite/importedNames.js +138 -0
- package/dist/src/vite/indexFields.d.ts +6 -0
- package/dist/src/vite/indexFields.js +21 -0
- package/dist/src/vite/indexStoryFile.d.ts +8 -1
- package/dist/src/vite/indexStoryFile.js +22 -157
- package/dist/src/vite/jsxCallSites.d.ts +33 -0
- package/dist/src/vite/jsxCallSites.js +200 -0
- package/dist/src/vite/jsxInScripts.d.ts +67 -0
- package/dist/src/vite/jsxInScripts.js +138 -0
- package/dist/src/vite/jsxTree.d.ts +20 -0
- package/dist/src/vite/jsxTree.js +163 -0
- package/dist/src/vite/lineAndColumn.d.ts +13 -0
- package/dist/src/vite/lineAndColumn.js +18 -0
- package/dist/src/vite/lookAlikes.d.ts +65 -0
- package/dist/src/vite/lookAlikes.js +228 -0
- package/dist/src/vite/nearestToken.d.ts +17 -0
- package/dist/src/vite/nearestToken.js +9 -2
- package/dist/src/vite/packageEntries.d.ts +42 -0
- package/dist/src/vite/packageEntries.js +127 -0
- package/dist/src/vite/pages.d.ts +9 -1
- package/dist/src/vite/pages.js +108 -4
- package/dist/src/vite/pluginConfig.js +4 -0
- package/dist/src/vite/pluginIds.d.ts +2 -0
- package/dist/src/vite/pluginIds.js +5 -1
- package/dist/src/vite/pluginModules.d.ts +81 -11
- package/dist/src/vite/pluginModules.js +109 -21
- package/dist/src/vite/prebundled.d.ts +57 -15
- package/dist/src/vite/prebundled.js +80 -0
- package/dist/src/vite/previewTags.d.ts +25 -0
- package/dist/src/vite/previewTags.js +56 -0
- package/dist/src/vite/projectFiles.d.ts +54 -0
- package/dist/src/vite/projectFiles.js +116 -0
- package/dist/src/vite/projectPostcss.d.ts +70 -0
- package/dist/src/vite/projectPostcss.js +250 -0
- package/dist/src/vite/propDocs.d.ts +12 -0
- package/dist/src/vite/propDocs.js +130 -58
- package/dist/src/vite/propKind.d.ts +40 -0
- package/dist/src/vite/propKind.js +71 -0
- package/dist/src/vite/propTypeNotes.d.ts +22 -0
- package/dist/src/vite/propTypeNotes.js +51 -0
- package/dist/src/vite/publishedExports.d.ts +27 -0
- package/dist/src/vite/publishedExports.js +298 -0
- package/dist/src/vite/realFolder.d.ts +6 -0
- package/dist/src/vite/realFolder.js +25 -0
- package/dist/src/vite/refsConfig.d.ts +39 -0
- package/dist/src/vite/refsConfig.js +54 -0
- package/dist/src/vite/reuseCheck.d.ts +45 -0
- package/dist/src/vite/reuseCheck.js +260 -0
- package/dist/src/vite/runningVersions.d.ts +33 -0
- package/dist/src/vite/runningVersions.js +25 -0
- package/dist/src/vite/scriptProblems.d.ts +60 -0
- package/dist/src/vite/scriptProblems.js +155 -0
- package/dist/src/vite/searchModule.js +3 -2
- package/dist/src/vite/searchRoute.js +4 -2
- package/dist/src/vite/shapeDocs.d.ts +36 -0
- package/dist/src/vite/shapeDocs.js +177 -0
- package/dist/src/vite/singleFileComponent.d.ts +17 -0
- package/dist/src/vite/singleFileComponent.js +83 -0
- package/dist/src/vite/sourceText.d.ts +34 -0
- package/dist/src/vite/sourceText.js +72 -0
- package/dist/src/vite/sourceTokens.d.ts +7 -0
- package/dist/src/vite/sourceTokens.js +7 -2
- package/dist/src/vite/stackLines.d.ts +49 -0
- package/dist/src/vite/stackLines.js +96 -0
- package/dist/src/vite/storyCode.d.ts +22 -7
- package/dist/src/vite/storyCode.js +263 -37
- package/dist/src/vite/storyCoverage.d.ts +48 -0
- package/dist/src/vite/storyCoverage.js +179 -0
- package/dist/src/vite/storyFilesModule.d.ts +48 -3
- package/dist/src/vite/storyFilesModule.js +105 -15
- package/dist/src/vite/storyPatterns.d.ts +31 -0
- package/dist/src/vite/storyPatterns.js +140 -5
- package/dist/src/vite/storyReach.d.ts +10 -2
- package/dist/src/vite/storyReach.js +15 -11
- package/dist/src/vite/storyTopLevel.d.ts +51 -0
- package/dist/src/vite/storyTopLevel.js +146 -0
- package/dist/src/vite/storylessRoutes.d.ts +4 -3
- package/dist/src/vite/storylessRoutes.js +210 -19
- package/dist/src/vite/switchValuesCheck.d.ts +19 -0
- package/dist/src/vite/switchValuesCheck.js +164 -0
- package/dist/src/vite/switchesDocument.d.ts +15 -0
- package/dist/src/vite/switchesDocument.js +47 -0
- package/dist/src/vite/tailwindConfigTokens.d.ts +41 -0
- package/dist/src/vite/tailwindConfigTokens.js +306 -0
- package/dist/src/vite/textImports.d.ts +15 -0
- package/dist/src/vite/textImports.js +58 -0
- package/dist/src/vite/textModules.d.ts +6 -5
- package/dist/src/vite/textModules.js +13 -8
- package/dist/src/vite/tokenAnswers.d.ts +6 -2
- package/dist/src/vite/tokenAnswers.js +11 -7
- package/dist/src/vite/typeParameters.d.ts +83 -0
- package/dist/src/vite/typeParameters.js +270 -0
- package/dist/src/vite/unionProps.d.ts +37 -0
- package/dist/src/vite/unionProps.js +121 -0
- package/dist/src/vite/unresolvedTokens.d.ts +20 -0
- package/dist/src/vite/unresolvedTokens.js +193 -0
- package/dist/src/vite/usageGraph.js +10 -52
- package/dist/src/vite/usageGuidance.d.ts +9 -2
- package/dist/src/vite/usageGuidance.js +36 -8
- package/dist/src/vite/usageImports.d.ts +35 -0
- package/dist/src/vite/usageImports.js +280 -0
- package/dist/src/vite/visibilityRoute.d.ts +16 -0
- package/dist/src/vite/visibilityRoute.js +320 -0
- package/dist/src/worstCase.d.ts +2 -0
- package/dist/src/worstCase.js +2 -0
- package/package.json +28 -8
|
@@ -9,13 +9,15 @@
|
|
|
9
9
|
* into its own JSX; a story without JSX renders its meta's component. A component is known by the file that declares
|
|
10
10
|
* it and its name there, so two imports of one component are one. The import graph holds the modules the rendered
|
|
11
11
|
* components reach through the package's own imports, never a dependency's (`node_modules`): "used through" follows
|
|
12
|
-
* those edges
|
|
12
|
+
* those edges, by what each import names: a name taken through a barrel counts for the file that declares it, or every
|
|
13
|
+
* file a barrel lists would look used (`usageImports.ts`). A lowercase tag is an element (`<div>`), not a component. A component reached only through code the
|
|
13
14
|
* checker cannot follow (a computed lazy import, a component handed in as a prop) is not found.
|
|
14
15
|
*
|
|
15
16
|
* @module
|
|
16
17
|
*/
|
|
17
18
|
import ts from "typescript-6";
|
|
18
19
|
import { configurationOf, programFor } from "./docsProgram.js";
|
|
20
|
+
import { importsOf, textImportsOf } from "./usageImports.js";
|
|
19
21
|
import { VITE_PATHS } from "./vitePaths.js";
|
|
20
22
|
/**
|
|
21
23
|
* The symbol a name stands for, through its imports and re-exports.
|
|
@@ -169,53 +171,6 @@ const fileUsage = (request, program) => {
|
|
|
169
171
|
});
|
|
170
172
|
return { storyFile: request.storyFile, ...(component === undefined ? {} : { component }), stories };
|
|
171
173
|
};
|
|
172
|
-
/**
|
|
173
|
-
* The package's own modules a module imports or re-exports from, resolved as its program resolves them.
|
|
174
|
-
*
|
|
175
|
-
* @param source - the module.
|
|
176
|
-
* @param program - its program.
|
|
177
|
-
* @param cache - the program's resolution cache.
|
|
178
|
-
*/
|
|
179
|
-
/**
|
|
180
|
-
* Whether an import or an export takes types only (`import type`, `export type`, `import { type A }`).
|
|
181
|
-
*
|
|
182
|
-
* @param statement - the statement.
|
|
183
|
-
*/
|
|
184
|
-
const isTypeOnly = (statement) => {
|
|
185
|
-
if (ts.isExportDeclaration(statement))
|
|
186
|
-
return statement.isTypeOnly;
|
|
187
|
-
if (!ts.isImportDeclaration(statement))
|
|
188
|
-
return false;
|
|
189
|
-
const clause = statement.importClause;
|
|
190
|
-
if (clause === undefined)
|
|
191
|
-
return false;
|
|
192
|
-
if (clause.isTypeOnly)
|
|
193
|
-
return true;
|
|
194
|
-
// `import { type A, type B }`: every name a type, and no default
|
|
195
|
-
const bindings = clause.namedBindings;
|
|
196
|
-
return (clause.name === undefined &&
|
|
197
|
-
bindings !== undefined &&
|
|
198
|
-
ts.isNamedImports(bindings) &&
|
|
199
|
-
bindings.elements.length > 0 &&
|
|
200
|
-
bindings.elements.every((element) => element.isTypeOnly));
|
|
201
|
-
};
|
|
202
|
-
const importsOf = (source, program, cache) => {
|
|
203
|
-
const targets = [];
|
|
204
|
-
for (const statement of source.statements) {
|
|
205
|
-
const specifier = (ts.isImportDeclaration(statement) || ts.isExportDeclaration(statement)) &&
|
|
206
|
-
statement.moduleSpecifier !== undefined &&
|
|
207
|
-
ts.isStringLiteral(statement.moduleSpecifier)
|
|
208
|
-
? statement.moduleSpecifier.text
|
|
209
|
-
: undefined;
|
|
210
|
-
// a type renders nothing: a file that only takes types from another does not use its components
|
|
211
|
-
if (specifier === undefined || isTypeOnly(statement))
|
|
212
|
-
continue;
|
|
213
|
-
const resolved = ts.resolveModuleName(specifier, source.fileName, program.getCompilerOptions(), ts.sys, cache).resolvedModule;
|
|
214
|
-
if (resolved !== undefined && !resolved.isExternalLibraryImport)
|
|
215
|
-
targets.push(resolved.resolvedFileName);
|
|
216
|
-
}
|
|
217
|
-
return targets;
|
|
218
|
-
};
|
|
219
174
|
/**
|
|
220
175
|
* The import graph of the modules the given files reach, through the package's own imports.
|
|
221
176
|
*
|
|
@@ -236,8 +191,9 @@ const reachedImports = (starts, programs) => {
|
|
|
236
191
|
const program = programs.find((candidate) => candidate.getSourceFile(file) !== undefined);
|
|
237
192
|
const source = program?.getSourceFile(file);
|
|
238
193
|
const cache = program === undefined ? undefined : caches.get(program);
|
|
194
|
+
// a style sheet or a single-file component is in no program, and it still imports what it draws with
|
|
239
195
|
const targets = program === undefined || source === undefined || cache === undefined
|
|
240
|
-
? []
|
|
196
|
+
? textImportsOf(file, programs[0], programs[0] === undefined ? undefined : caches.get(programs[0]))
|
|
241
197
|
: importsOf(source, program, cache);
|
|
242
198
|
imports[file] = targets;
|
|
243
199
|
queue.push(...targets);
|
|
@@ -245,7 +201,7 @@ const reachedImports = (starts, programs) => {
|
|
|
245
201
|
return imports;
|
|
246
202
|
};
|
|
247
203
|
/**
|
|
248
|
-
* The facts of the story files one configuration holds, read with
|
|
204
|
+
* The facts of the story files one configuration holds, read with the program of what they all reach.
|
|
249
205
|
*
|
|
250
206
|
* @param group - the story files, in Vite's form, each held by the same configuration.
|
|
251
207
|
* @returns the facts, or why a story file's program could not be read.
|
|
@@ -254,8 +210,8 @@ const groupGraph = (group) => {
|
|
|
254
210
|
const files = [];
|
|
255
211
|
const programs = new Set();
|
|
256
212
|
for (const request of group) {
|
|
257
|
-
// what every story of the configuration reaches
|
|
258
|
-
const docsProgram = programFor(request.storyFile, { reach: "
|
|
213
|
+
// what every story of the configuration reaches, in one program built once
|
|
214
|
+
const docsProgram = programFor(request.storyFile, { reach: "stories" });
|
|
259
215
|
if (typeof docsProgram === "string")
|
|
260
216
|
return docsProgram;
|
|
261
217
|
programs.add(docsProgram.program);
|
|
@@ -264,6 +220,8 @@ const groupGraph = (group) => {
|
|
|
264
220
|
files.push(usage);
|
|
265
221
|
}
|
|
266
222
|
const starts = files.flatMap((file) => [
|
|
223
|
+
// what a story file imports itself runs with its stories: a single-file component, a sheet, a fixture
|
|
224
|
+
file.storyFile,
|
|
267
225
|
...(file.component === undefined ? [] : [file.component.file]),
|
|
268
226
|
...file.stories.flatMap((story) => story.renders.map((ref) => ref.file))
|
|
269
227
|
]);
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* When to use a component and when not, read from its TSDoc tags. Shared by the frameworks' docs modules: a framework
|
|
3
|
-
* whose components have no symbol to carry a comment (a Vue single-file component) hands the tags it read itself.
|
|
3
|
+
* whose components have no symbol to carry a comment (a Vue single-file component) hands the tags it read itself. It holds
|
|
4
|
+
* only the compiler's types, so that what reads a whole project in a moment, from comments' text, does not load it.
|
|
4
5
|
*
|
|
5
6
|
* @module
|
|
6
7
|
*/
|
|
7
|
-
import ts from "typescript-6";
|
|
8
|
+
import type ts from "typescript-6";
|
|
8
9
|
import type { UsageGuidance } from "../componentDocs.ts";
|
|
9
10
|
/** One TSDoc tag, read. */
|
|
10
11
|
export type DocTag = {
|
|
@@ -22,6 +23,12 @@ export type DocTag = {
|
|
|
22
23
|
export declare const guidanceOfTags: (tags: readonly DocTag[]) => {
|
|
23
24
|
readonly guidance?: UsageGuidance;
|
|
24
25
|
};
|
|
26
|
+
/**
|
|
27
|
+
* The tags of a documentation comment's text, each with the lines that follow it.
|
|
28
|
+
*
|
|
29
|
+
* @param comment - the comment, with or without its stars.
|
|
30
|
+
*/
|
|
31
|
+
export declare const tagsOfComment: (comment: string) => DocTag[];
|
|
25
32
|
/**
|
|
26
33
|
* The field of a component's docs saying when to use it and when not, from its symbol's TSDoc.
|
|
27
34
|
*
|
|
@@ -1,10 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
3
|
-
* whose components have no symbol to carry a comment (a Vue single-file component) hands the tags it read itself.
|
|
4
|
-
*
|
|
5
|
-
* @module
|
|
6
|
-
*/
|
|
7
|
-
import ts from "typescript-6";
|
|
1
|
+
/** A tag at a word's start. */
|
|
2
|
+
const TAG = /(?:^|\s)@(\w+)/g;
|
|
8
3
|
/**
|
|
9
4
|
* The field of a component's docs saying when to use it and when not; none when its TSDoc says nothing, so most
|
|
10
5
|
* components carry nothing.
|
|
@@ -33,6 +28,36 @@ export const guidanceOfTags = (tags) => {
|
|
|
33
28
|
};
|
|
34
29
|
return Object.keys(guidance).length === 0 ? {} : { guidance };
|
|
35
30
|
};
|
|
31
|
+
/** A comment's text without its fenced examples: what an example shows is not said of this component. */
|
|
32
|
+
const withoutFences = (text) => {
|
|
33
|
+
const parts = text.split("```");
|
|
34
|
+
return parts.filter((_, index) => index % 2 === 0).join(" ");
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* The tags of a documentation comment's text, each with the lines that follow it.
|
|
38
|
+
*
|
|
39
|
+
* @param comment - the comment, with or without its stars.
|
|
40
|
+
*/
|
|
41
|
+
export const tagsOfComment = (comment) => {
|
|
42
|
+
const plain = comment
|
|
43
|
+
.split("\n")
|
|
44
|
+
.map((line) => {
|
|
45
|
+
const text = line.trimEnd();
|
|
46
|
+
const open = text.replace(/^\s*\/?\*+\/?\s?/, "");
|
|
47
|
+
return open.endsWith("*/") ? open.slice(0, -2) : open;
|
|
48
|
+
})
|
|
49
|
+
.join(" ");
|
|
50
|
+
const shown = withoutFences(plain);
|
|
51
|
+
const found = [...shown.matchAll(TAG)];
|
|
52
|
+
return found.map((match, index) => ({
|
|
53
|
+
name: match[1] ?? "",
|
|
54
|
+
text: shown
|
|
55
|
+
.slice(match.index + match[0].length, found[index + 1]?.index ?? shown.length)
|
|
56
|
+
.split(/\s+/)
|
|
57
|
+
.join(" ")
|
|
58
|
+
.trim()
|
|
59
|
+
}));
|
|
60
|
+
};
|
|
36
61
|
/**
|
|
37
62
|
* The field of a component's docs saying when to use it and when not, from its symbol's TSDoc.
|
|
38
63
|
*
|
|
@@ -41,5 +66,8 @@ export const guidanceOfTags = (tags) => {
|
|
|
41
66
|
*/
|
|
42
67
|
export const guidanceOf = (symbol, checker) => guidanceOfTags(symbol.getJsDocTags(checker).map((tag) => ({
|
|
43
68
|
name: tag.name,
|
|
44
|
-
text:
|
|
69
|
+
text: (tag.text ?? [])
|
|
70
|
+
.map((part) => part.text)
|
|
71
|
+
.join("")
|
|
72
|
+
.trim()
|
|
45
73
|
})));
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The edges of the import graph: what a module takes from the package's own modules, what a style sheet or a single-file
|
|
3
|
+
* component names in its text.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* An import counts for the file that declares each name it takes, not for the module it is written against: a barrel
|
|
7
|
+
* lists every component, so following it would make a story of one component reach all of them, and a new component
|
|
8
|
+
* would look verified for being exported. A name only an ambient declaration knows (a `.vue` shim) counts for the file its
|
|
9
|
+
* last re-export names, and a name from a dependency for nothing. A barrel is followed only for a namespace import or a
|
|
10
|
+
* side effect, and what it imports for its side effects (a global sheet) still runs when a name is taken through it. A
|
|
11
|
+
* module's own `export … from` stays an edge, for those cases. A relative import that resolves to nothing is kept as an edge to where it points: the file may
|
|
12
|
+
* have just been deleted, and the stories behind the edge are the ones that break. TypeScript does not resolve a style
|
|
13
|
+
* sheet or a single-file component, so their names are read from the text; an Angular component's `templateUrl` and
|
|
14
|
+
* `styleUrls` are found the same way.
|
|
15
|
+
*
|
|
16
|
+
* @module
|
|
17
|
+
*/
|
|
18
|
+
import ts from "typescript-6";
|
|
19
|
+
/**
|
|
20
|
+
* The edges of a file no program holds, read from its text; a file that cannot be read has none.
|
|
21
|
+
*
|
|
22
|
+
* @param file - the file, absolute.
|
|
23
|
+
* @param program - a program whose rules resolve its imports.
|
|
24
|
+
* @param cache - that program's resolution cache.
|
|
25
|
+
*/
|
|
26
|
+
export declare const textImportsOf: (file: string, program: ts.Program | undefined, cache: ts.ModuleResolutionCache | undefined) => string[];
|
|
27
|
+
/**
|
|
28
|
+
* The package's own modules a module imports or re-exports from, resolved as its program resolves them, with the assets
|
|
29
|
+
* and lazy modules its text names.
|
|
30
|
+
*
|
|
31
|
+
* @param source - the module.
|
|
32
|
+
* @param program - its program.
|
|
33
|
+
* @param cache - the program's resolution cache.
|
|
34
|
+
*/
|
|
35
|
+
export declare const importsOf: (source: ts.SourceFile, program: ts.Program, cache: ts.ModuleResolutionCache) => string[];
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The edges of the import graph: what a module takes from the package's own modules, what a style sheet or a single-file
|
|
3
|
+
* component names in its text.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* An import counts for the file that declares each name it takes, not for the module it is written against: a barrel
|
|
7
|
+
* lists every component, so following it would make a story of one component reach all of them, and a new component
|
|
8
|
+
* would look verified for being exported. A name only an ambient declaration knows (a `.vue` shim) counts for the file its
|
|
9
|
+
* last re-export names, and a name from a dependency for nothing. A barrel is followed only for a namespace import or a
|
|
10
|
+
* side effect, and what it imports for its side effects (a global sheet) still runs when a name is taken through it. A
|
|
11
|
+
* module's own `export … from` stays an edge, for those cases. A relative import that resolves to nothing is kept as an edge to where it points: the file may
|
|
12
|
+
* have just been deleted, and the stories behind the edge are the ones that break. TypeScript does not resolve a style
|
|
13
|
+
* sheet or a single-file component, so their names are read from the text; an Angular component's `templateUrl` and
|
|
14
|
+
* `styleUrls` are found the same way.
|
|
15
|
+
*
|
|
16
|
+
* @module
|
|
17
|
+
*/
|
|
18
|
+
import ts from "typescript-6";
|
|
19
|
+
import { assetImports, sheetImports } from "./textImports.js";
|
|
20
|
+
import { VITE_PATHS } from "./vitePaths.js";
|
|
21
|
+
/** A dynamic import of a path written out: a lazy component is drawn as any other. */
|
|
22
|
+
const DYNAMIC_IMPORT = /\bimport\(\s*["'`]([^"'`\n$]+)["'`]\s*\)/g;
|
|
23
|
+
/** A static import in the script of a single-file component, whose text no program holds. */
|
|
24
|
+
const STATIC_IMPORT = /^[ \t]*(?:import|export)\s+(?:[^"';]{0,2000}?\sfrom\s+)?["']([^"']+)["']/gm;
|
|
25
|
+
/** A file whose imports are read from its text. */
|
|
26
|
+
const SINGLE_FILE_COMPONENT = /\.(?:vue|svelte|astro)$/;
|
|
27
|
+
/** A style sheet. */
|
|
28
|
+
const STYLE_SHEET = /\.(?:css|scss|sass|less)$/;
|
|
29
|
+
/** The file system as each resolution cache's resolutions read it, remembered for the cache's life. */
|
|
30
|
+
const HOSTS = new WeakMap();
|
|
31
|
+
/**
|
|
32
|
+
* The file system a resolution reads, with what it asked remembered as long as its cache lives: resolving every import
|
|
33
|
+
* of a library asks again and again whether the same candidate files and folders exist, each time a call to the disk.
|
|
34
|
+
*
|
|
35
|
+
* @param cache - the resolution cache, made for one graph.
|
|
36
|
+
*/
|
|
37
|
+
const hostOf = (cache) => {
|
|
38
|
+
const known = HOSTS.get(cache);
|
|
39
|
+
if (known !== undefined)
|
|
40
|
+
return known;
|
|
41
|
+
const remembered = (read) => {
|
|
42
|
+
const answers = new Map();
|
|
43
|
+
return (path) => {
|
|
44
|
+
const answer = answers.get(path) ?? { value: read(path) };
|
|
45
|
+
answers.set(path, answer);
|
|
46
|
+
return answer.value;
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
const host = {
|
|
50
|
+
fileExists: remembered((path) => ts.sys.fileExists(path)),
|
|
51
|
+
readFile: remembered((path) => ts.sys.readFile(path)),
|
|
52
|
+
directoryExists: remembered((path) => ts.sys.directoryExists(path)),
|
|
53
|
+
realpath: remembered((path) => (ts.sys.realpath === undefined ? path : ts.sys.realpath(path))),
|
|
54
|
+
getCurrentDirectory: () => ts.sys.getCurrentDirectory(),
|
|
55
|
+
getDirectories: (path) => ts.sys.getDirectories(path)
|
|
56
|
+
};
|
|
57
|
+
HOSTS.set(cache, host);
|
|
58
|
+
return host;
|
|
59
|
+
};
|
|
60
|
+
/** Resolves a specifier as a program does, leaving out a dependency's files. */
|
|
61
|
+
const resolverOf = (program, cache) => {
|
|
62
|
+
return (specifier, containing) => {
|
|
63
|
+
const resolved = ts.resolveModuleName(specifier, containing, program.getCompilerOptions(), hostOf(cache), cache).resolvedModule;
|
|
64
|
+
return resolved === undefined || resolved.isExternalLibraryImport ? undefined : resolved.resolvedFileName;
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
/** Where a path alias of the program's configuration sends a name TypeScript cannot resolve: a sheet, a `.vue` file. */
|
|
68
|
+
const aliased = (specifier, options) => {
|
|
69
|
+
const configFile = options["configFilePath"];
|
|
70
|
+
const base = options.baseUrl ?? (typeof configFile === "string" ? VITE_PATHS.dirname(configFile) : undefined);
|
|
71
|
+
if (base === undefined)
|
|
72
|
+
return undefined;
|
|
73
|
+
for (const [pattern, targets] of Object.entries(options.paths ?? {})) {
|
|
74
|
+
const [prefix = "", suffix] = pattern.split("*");
|
|
75
|
+
const [target] = targets;
|
|
76
|
+
if (target === undefined || suffix === undefined)
|
|
77
|
+
continue;
|
|
78
|
+
if (specifier.startsWith(prefix) && specifier.endsWith(suffix))
|
|
79
|
+
return VITE_PATHS.resolve(base, target.split("*").join(specifier.slice(prefix.length, specifier.length - suffix.length)));
|
|
80
|
+
}
|
|
81
|
+
return undefined;
|
|
82
|
+
};
|
|
83
|
+
/** A specifier that resolves to nothing, as a path: where an alias sends it, or where a relative one points. */
|
|
84
|
+
const unresolvedTarget = (specifier, file, options) => {
|
|
85
|
+
const name = specifier.split("?")[0] ?? specifier;
|
|
86
|
+
if (name.startsWith("."))
|
|
87
|
+
return VITE_PATHS.join(VITE_PATHS.dirname(file), name);
|
|
88
|
+
return aliased(name, options);
|
|
89
|
+
};
|
|
90
|
+
/** The specifiers matched in a text, resolved; a relative one that resolves to nothing kept as where it points. */
|
|
91
|
+
const specifierTargets = (file, text, pattern, program, cache) => [...text.matchAll(pattern)].flatMap((match) => {
|
|
92
|
+
const specifier = match[1] ?? "";
|
|
93
|
+
const resolved = program === undefined || cache === undefined ? undefined : resolverOf(program, cache)(specifier, file);
|
|
94
|
+
if (resolved !== undefined)
|
|
95
|
+
return [resolved];
|
|
96
|
+
return [unresolvedTarget(specifier, file, program?.getCompilerOptions() ?? {}) ?? []].flat();
|
|
97
|
+
});
|
|
98
|
+
/**
|
|
99
|
+
* The edges of a file no program holds, read from its text; a file that cannot be read has none.
|
|
100
|
+
*
|
|
101
|
+
* @param file - the file, absolute.
|
|
102
|
+
* @param program - a program whose rules resolve its imports.
|
|
103
|
+
* @param cache - that program's resolution cache.
|
|
104
|
+
*/
|
|
105
|
+
export const textImportsOf = (file, program, cache) => {
|
|
106
|
+
const text = ts.sys.readFile(file);
|
|
107
|
+
if (text === undefined)
|
|
108
|
+
return [];
|
|
109
|
+
if (STYLE_SHEET.test(file))
|
|
110
|
+
return sheetImports(file, text);
|
|
111
|
+
if (!SINGLE_FILE_COMPONENT.test(file))
|
|
112
|
+
return [];
|
|
113
|
+
return [
|
|
114
|
+
...new Set([
|
|
115
|
+
...assetImports(file, text),
|
|
116
|
+
...specifierTargets(file, text, STATIC_IMPORT, program, cache),
|
|
117
|
+
...specifierTargets(file, text, DYNAMIC_IMPORT, program, cache)
|
|
118
|
+
])
|
|
119
|
+
];
|
|
120
|
+
};
|
|
121
|
+
/**
|
|
122
|
+
* Whether an import or an export takes types only (`import type`, `export type`, `import { type A }`).
|
|
123
|
+
*
|
|
124
|
+
* @param statement - the statement.
|
|
125
|
+
*/
|
|
126
|
+
const isTypeOnly = (statement) => {
|
|
127
|
+
if (ts.isExportDeclaration(statement))
|
|
128
|
+
return statement.isTypeOnly;
|
|
129
|
+
if (!ts.isImportDeclaration(statement))
|
|
130
|
+
return false;
|
|
131
|
+
const clause = statement.importClause;
|
|
132
|
+
if (clause === undefined)
|
|
133
|
+
return false;
|
|
134
|
+
if (clause.isTypeOnly)
|
|
135
|
+
return true;
|
|
136
|
+
// `import { type A, type B }`: every name a type, and no default
|
|
137
|
+
const bindings = clause.namedBindings;
|
|
138
|
+
return (clause.name === undefined &&
|
|
139
|
+
bindings !== undefined &&
|
|
140
|
+
ts.isNamedImports(bindings) &&
|
|
141
|
+
bindings.elements.length > 0 &&
|
|
142
|
+
bindings.elements.every((element) => element.isTypeOnly));
|
|
143
|
+
};
|
|
144
|
+
/** The import or export statement a declaration of a name belongs to, with its module's name. */
|
|
145
|
+
const moduleOfDeclaration = (declaration) => {
|
|
146
|
+
let node = declaration;
|
|
147
|
+
while (node !== undefined && !ts.isSourceFile(node)) {
|
|
148
|
+
if ((ts.isImportDeclaration(node) || ts.isExportDeclaration(node)) &&
|
|
149
|
+
node.moduleSpecifier !== undefined &&
|
|
150
|
+
ts.isStringLiteral(node.moduleSpecifier))
|
|
151
|
+
return node.moduleSpecifier;
|
|
152
|
+
node = node.parent;
|
|
153
|
+
}
|
|
154
|
+
return undefined;
|
|
155
|
+
};
|
|
156
|
+
/**
|
|
157
|
+
* The file an ambiently declared name comes from: the module named by the last import or re-export on its way, which is
|
|
158
|
+
* the only place that says which `.vue` file it is.
|
|
159
|
+
*
|
|
160
|
+
* @param name - the imported name.
|
|
161
|
+
* @param checker - its program's checker.
|
|
162
|
+
* @param options - its program's options.
|
|
163
|
+
*/
|
|
164
|
+
const ambientOrigin = (name, checker, options) => {
|
|
165
|
+
let symbol = checker.getSymbolAtLocation(name);
|
|
166
|
+
let origin;
|
|
167
|
+
while (symbol !== undefined && (symbol.flags & ts.SymbolFlags.Alias) !== 0) {
|
|
168
|
+
const literal = moduleOfDeclaration(symbol.declarations?.[0]);
|
|
169
|
+
if (literal !== undefined)
|
|
170
|
+
origin = unresolvedTarget(literal.text, literal.getSourceFile().fileName, options) ?? origin;
|
|
171
|
+
symbol = checker.getImmediateAliasedSymbol(symbol);
|
|
172
|
+
}
|
|
173
|
+
return origin;
|
|
174
|
+
};
|
|
175
|
+
/**
|
|
176
|
+
* Where an imported name comes from: the file that declares it, nothing for a dependency's, or none when it cannot be told.
|
|
177
|
+
*
|
|
178
|
+
* @param name - the imported name.
|
|
179
|
+
* @param program - its program.
|
|
180
|
+
*/
|
|
181
|
+
const nameOrigin = (name, program) => {
|
|
182
|
+
const checker = program.getTypeChecker();
|
|
183
|
+
const symbol = checker.getSymbolAtLocation(name);
|
|
184
|
+
const target = symbol !== undefined && (symbol.flags & ts.SymbolFlags.Alias) !== 0
|
|
185
|
+
? checker.getAliasedSymbol(symbol)
|
|
186
|
+
: symbol;
|
|
187
|
+
const declaring = target?.declarations?.[0]?.getSourceFile();
|
|
188
|
+
if (declaring !== undefined && program.isSourceFileFromExternalLibrary(declaring))
|
|
189
|
+
return null;
|
|
190
|
+
if (declaring !== undefined && !declaring.isDeclarationFile)
|
|
191
|
+
return declaring.fileName;
|
|
192
|
+
return ambientOrigin(name, checker, program.getCompilerOptions());
|
|
193
|
+
};
|
|
194
|
+
/**
|
|
195
|
+
* The files that declare the names an import takes, or none when that cannot be told: a side effect, a namespace, a name
|
|
196
|
+
* with no known origin.
|
|
197
|
+
*
|
|
198
|
+
* @param statement - the import.
|
|
199
|
+
* @param program - its program.
|
|
200
|
+
*/
|
|
201
|
+
const declaringFiles = (statement, program) => {
|
|
202
|
+
if (!ts.isImportDeclaration(statement))
|
|
203
|
+
return undefined;
|
|
204
|
+
const clause = statement.importClause;
|
|
205
|
+
const bindings = clause?.namedBindings;
|
|
206
|
+
if (clause === undefined || (bindings !== undefined && ts.isNamespaceImport(bindings)))
|
|
207
|
+
return undefined;
|
|
208
|
+
const names = [
|
|
209
|
+
...(clause.name === undefined ? [] : [clause.name]),
|
|
210
|
+
...(bindings === undefined || !ts.isNamedImports(bindings)
|
|
211
|
+
? []
|
|
212
|
+
: bindings.elements.filter((element) => !element.isTypeOnly).map((element) => element.name))
|
|
213
|
+
];
|
|
214
|
+
const found = names.map((name) => nameOrigin(name, program));
|
|
215
|
+
return found.includes(undefined) ? undefined : found.flatMap((file) => file ?? []);
|
|
216
|
+
};
|
|
217
|
+
/** The module a statement names, when it is an import or a re-export that takes more than types. */
|
|
218
|
+
const moduleNamed = (statement) => {
|
|
219
|
+
if (!ts.isImportDeclaration(statement) && !ts.isExportDeclaration(statement))
|
|
220
|
+
return undefined;
|
|
221
|
+
const literal = statement.moduleSpecifier;
|
|
222
|
+
// a type renders nothing: a file that only takes types from another does not use its components
|
|
223
|
+
if (literal === undefined || !ts.isStringLiteral(literal) || isTypeOnly(statement))
|
|
224
|
+
return undefined;
|
|
225
|
+
return literal.text;
|
|
226
|
+
};
|
|
227
|
+
/**
|
|
228
|
+
* What a module imports for its side effects alone: it runs whichever name is taken through it.
|
|
229
|
+
*
|
|
230
|
+
* @param file - the module, absolute.
|
|
231
|
+
* @param reading - its program.
|
|
232
|
+
*/
|
|
233
|
+
const sideEffectTargets = (file, { program, cache }) => {
|
|
234
|
+
const source = program.getSourceFile(file);
|
|
235
|
+
if (source === undefined)
|
|
236
|
+
return [];
|
|
237
|
+
return source.statements.flatMap((statement) => ts.isImportDeclaration(statement) && statement.importClause === undefined
|
|
238
|
+
? statementTargets(statement, { source, program, cache })
|
|
239
|
+
: []);
|
|
240
|
+
};
|
|
241
|
+
/**
|
|
242
|
+
* The files a statement of a module takes.
|
|
243
|
+
*
|
|
244
|
+
* @param statement - the statement.
|
|
245
|
+
* @param reading - its module and program.
|
|
246
|
+
*/
|
|
247
|
+
const statementTargets = (statement, reading) => {
|
|
248
|
+
const { source, program, cache } = reading;
|
|
249
|
+
const specifier = moduleNamed(statement);
|
|
250
|
+
if (specifier === undefined)
|
|
251
|
+
return [];
|
|
252
|
+
const options = program.getCompilerOptions();
|
|
253
|
+
const resolved = ts.resolveModuleName(specifier, source.fileName, options, hostOf(cache), cache).resolvedModule;
|
|
254
|
+
if (resolved === undefined)
|
|
255
|
+
return [unresolvedTarget(specifier, source.fileName, options) ?? []].flat();
|
|
256
|
+
if (resolved.isExternalLibraryImport)
|
|
257
|
+
return [];
|
|
258
|
+
const declaring = declaringFiles(statement, program);
|
|
259
|
+
if (declaring === undefined)
|
|
260
|
+
return [resolved.resolvedFileName];
|
|
261
|
+
const through = declaring.includes(resolved.resolvedFileName)
|
|
262
|
+
? []
|
|
263
|
+
: sideEffectTargets(resolved.resolvedFileName, reading);
|
|
264
|
+
return [...declaring, ...through];
|
|
265
|
+
};
|
|
266
|
+
/**
|
|
267
|
+
* The package's own modules a module imports or re-exports from, resolved as its program resolves them, with the assets
|
|
268
|
+
* and lazy modules its text names.
|
|
269
|
+
*
|
|
270
|
+
* @param source - the module.
|
|
271
|
+
* @param program - its program.
|
|
272
|
+
* @param cache - the program's resolution cache.
|
|
273
|
+
*/
|
|
274
|
+
export const importsOf = (source, program, cache) => [
|
|
275
|
+
...new Set([
|
|
276
|
+
...source.statements.flatMap((statement) => statementTargets(statement, { source, program, cache })),
|
|
277
|
+
...assetImports(source.fileName, source.text),
|
|
278
|
+
...specifierTargets(source.fileName, source.text, DYNAMIC_IMPORT, program, cache)
|
|
279
|
+
])
|
|
280
|
+
];
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type AgentAnswer, type RouteContext } from "./agentRoutes.ts";
|
|
2
|
+
import { type PublishedFile } from "./publishedExports.ts";
|
|
3
|
+
/**
|
|
4
|
+
* The published files a change holds to the check: those it edits, and those it starts publishing or names anew.
|
|
5
|
+
*
|
|
6
|
+
* @param now - what is published now.
|
|
7
|
+
* @param changed - the files it changes, in the catalogue's form.
|
|
8
|
+
* @param readBefore - what the change's start published; read only when an entry or a barrel changed.
|
|
9
|
+
*/
|
|
10
|
+
export declare const filesOfChange: (now: readonly PublishedFile[], changed: readonly string[], readBefore: () => Promise<readonly PublishedFile[]>) => Promise<readonly PublishedFile[]>;
|
|
11
|
+
/**
|
|
12
|
+
* What agents cannot see.
|
|
13
|
+
*
|
|
14
|
+
* @param context - what the routes read.
|
|
15
|
+
*/
|
|
16
|
+
export declare const visibilityAnswer: (context: RouteContext) => Promise<AgentAnswer>;
|