forgebook 0.3.3 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +914 -72
- package/dist/bin/forgebook/agentClient.d.ts +2 -1
- package/dist/bin/forgebook/agentClient.js +13 -6
- package/dist/bin/forgebook/agentGuide.d.ts +59 -0
- package/dist/bin/forgebook/agentGuide.js +203 -0
- package/dist/bin/forgebook/agentLoopCommands.mjs +22 -42
- package/dist/bin/forgebook/agentSetup/agentFiles.d.ts +55 -0
- package/dist/bin/forgebook/agentSetup/agentFiles.js +319 -0
- package/dist/bin/forgebook/agentSetup/assistantHooks.d.ts +71 -0
- package/dist/bin/forgebook/agentSetup/assistantHooks.js +125 -0
- package/dist/bin/forgebook/agentSetup/ciWorkflow.d.ts +23 -0
- package/dist/bin/forgebook/agentSetup/ciWorkflow.js +55 -0
- package/dist/bin/forgebook/agentSetup/drawCandidates.d.ts +25 -0
- package/dist/bin/forgebook/agentSetup/drawCandidates.js +116 -0
- package/dist/bin/forgebook/agentSetup/drawDiagnosis.d.ts +28 -0
- package/dist/bin/forgebook/agentSetup/drawDiagnosis.js +134 -0
- package/dist/bin/forgebook/agentSetup/drawRun.d.ts +91 -0
- package/dist/bin/forgebook/agentSetup/drawRun.js +353 -0
- package/dist/bin/forgebook/agentSetup/hookNames.d.ts +7 -0
- package/dist/bin/forgebook/agentSetup/hookNames.js +7 -0
- package/dist/bin/forgebook/agentSetup/initAgentSteps.d.ts +48 -0
- package/dist/bin/forgebook/agentSetup/initAgentSteps.js +104 -0
- package/dist/bin/forgebook/agentSetup/liftedProviders.d.ts +17 -0
- package/dist/bin/forgebook/agentSetup/liftedProviders.js +186 -0
- package/dist/bin/forgebook/agentSetup/projectRunner.d.ts +46 -0
- package/dist/bin/forgebook/agentSetup/projectRunner.js +85 -0
- package/dist/bin/forgebook/agentSetup/stopHook.d.ts +65 -0
- package/dist/bin/forgebook/agentSetup/stopHook.js +202 -0
- package/dist/bin/forgebook/agentSetup/uniformPicture.d.ts +7 -0
- package/dist/bin/forgebook/agentSetup/uniformPicture.js +98 -0
- package/dist/bin/forgebook/agentSetupCommands.d.mts +14 -0
- package/dist/bin/forgebook/agentSetupCommands.mjs +98 -0
- package/dist/bin/forgebook/agentText.d.ts +23 -3
- package/dist/bin/forgebook/agentText.js +175 -28
- package/dist/bin/forgebook/agents.md +20 -191
- package/dist/bin/forgebook/agentsText.js +2 -1
- package/dist/bin/forgebook/appBuild/appBuild.d.ts +59 -0
- package/dist/bin/forgebook/appBuild/appBuild.js +213 -0
- package/dist/bin/forgebook/appBuild/appViteConfig.d.ts +96 -0
- package/dist/bin/forgebook/appBuild/appViteConfig.js +320 -0
- package/dist/bin/forgebook/appBuild/tsconfigPaths.d.ts +14 -0
- package/dist/bin/forgebook/appBuild/tsconfigPaths.js +80 -0
- package/dist/bin/forgebook/auditCommand.d.mts +8 -0
- package/dist/bin/forgebook/auditCommand.mjs +75 -0
- package/dist/bin/forgebook/auditRun.d.ts +95 -0
- package/dist/bin/forgebook/auditRun.js +270 -0
- package/dist/bin/forgebook/browserRun.d.ts +21 -0
- package/dist/bin/forgebook/browserRun.js +57 -0
- package/dist/bin/forgebook/buildFailure.d.ts +7 -0
- package/dist/bin/forgebook/buildFailure.js +47 -0
- package/dist/bin/forgebook/buildWatch.d.ts +52 -0
- package/dist/bin/forgebook/buildWatch.js +137 -0
- package/dist/bin/forgebook/builtCatalogue.js +9 -5
- package/dist/bin/forgebook/catalogueCommands.d.ts +9 -0
- package/dist/bin/forgebook/catalogueCommands.js +23 -0
- package/dist/bin/forgebook/catalogueVite.d.ts +5 -1
- package/dist/bin/forgebook/catalogueVite.js +14 -6
- package/dist/bin/forgebook/commandCacheClaim.d.ts +18 -0
- package/dist/bin/forgebook/commandCacheClaim.js +170 -0
- package/dist/bin/forgebook/commandServer.d.ts +8 -0
- package/dist/bin/forgebook/commandServer.js +61 -13
- package/dist/bin/forgebook/forgebookCommands.mjs +105 -28
- package/dist/bin/forgebook/graphCommand.d.mts +8 -0
- package/dist/bin/forgebook/graphCommand.mjs +84 -0
- package/dist/bin/forgebook/guide/commands.md +57 -0
- package/dist/bin/forgebook/guide/devices.md +17 -0
- package/dist/bin/forgebook/guide/docs-pages.md +13 -0
- package/dist/bin/forgebook/guide/frameworks/angular.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/html.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/nextjs.md +23 -0
- package/dist/bin/forgebook/guide/frameworks/nuxt.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/preact.md +16 -0
- package/dist/bin/forgebook/guide/frameworks/react-native-web.md +21 -0
- package/dist/bin/forgebook/guide/frameworks/react.md +16 -0
- package/dist/bin/forgebook/guide/frameworks/solid.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/svelte.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/sveltekit.md +23 -0
- package/dist/bin/forgebook/guide/frameworks/vue.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/web-components.md +21 -0
- package/dist/bin/forgebook/guide/links.md +29 -0
- package/dist/bin/forgebook/guide/setup.md +23 -0
- package/dist/bin/forgebook/guide/stories.md +90 -0
- package/dist/bin/forgebook/guide/switches.md +43 -0
- package/dist/bin/forgebook/guideCommand.d.mts +13 -0
- package/dist/bin/forgebook/guideCommand.mjs +37 -0
- package/dist/bin/forgebook/importers/storybook.d.ts +21 -0
- package/dist/bin/forgebook/importers/storybook.js +11 -5
- package/dist/bin/forgebook/importers/storybookFrameworks.js +1 -1
- package/dist/bin/forgebook/initCommands.d.mts +11 -0
- package/dist/bin/forgebook/initCommands.mjs +51 -78
- package/dist/bin/forgebook/initConfig.d.ts +5 -3
- package/dist/bin/forgebook/initConfig.js +6 -3
- package/dist/bin/forgebook/initInstall.d.ts +15 -0
- package/dist/bin/forgebook/initInstall.js +77 -0
- package/dist/bin/forgebook/initPrint.d.ts +9 -0
- package/dist/bin/forgebook/initPrint.js +60 -0
- package/dist/bin/forgebook/initRefusals.d.ts +45 -0
- package/dist/bin/forgebook/initRefusals.js +91 -0
- package/dist/bin/forgebook/initRun.d.ts +28 -0
- package/dist/bin/forgebook/initRun.js +311 -0
- package/dist/bin/forgebook/mcpCommand.mjs +38 -4
- package/dist/bin/forgebook/mcpGraph.d.ts +13 -0
- package/dist/bin/forgebook/mcpGraph.js +24 -0
- package/dist/bin/forgebook/mcpTokens.d.ts +14 -0
- package/dist/bin/forgebook/mcpTokens.js +58 -0
- package/dist/bin/forgebook/mcpToolParts.d.ts +7 -0
- package/dist/bin/forgebook/mcpToolParts.js +10 -0
- package/dist/bin/forgebook/mcpTools.d.ts +13 -6
- package/dist/bin/forgebook/mcpTools.js +57 -90
- package/dist/bin/forgebook/mcpVerify.d.ts +16 -0
- package/dist/bin/forgebook/mcpVerify.js +36 -0
- package/dist/bin/forgebook/migrate/codemods.d.ts +11 -0
- package/dist/bin/forgebook/migrate/codemods.js +61 -0
- package/dist/bin/forgebook/migrate/migrate.types.d.ts +117 -0
- package/dist/bin/forgebook/migrate/migrate.types.js +5 -0
- package/dist/bin/forgebook/migrate/migrateCommand.d.mts +8 -0
- package/dist/bin/forgebook/migrate/migrateCommand.mjs +76 -0
- package/dist/bin/forgebook/migrate/migrateRun.d.ts +61 -0
- package/dist/bin/forgebook/migrate/migrateRun.js +210 -0
- package/dist/bin/forgebook/migrate/migrateText.d.ts +12 -0
- package/dist/bin/forgebook/migrate/migrateText.js +30 -0
- package/dist/bin/forgebook/migrate/migrateWrite.d.ts +27 -0
- package/dist/bin/forgebook/migrate/migrateWrite.js +66 -0
- package/dist/bin/forgebook/migrate/objectEdits.d.ts +70 -0
- package/dist/bin/forgebook/migrate/objectEdits.js +241 -0
- package/dist/bin/forgebook/migrate/playOnInBuilds.d.ts +3 -0
- package/dist/bin/forgebook/migrate/playOnInBuilds.js +86 -0
- package/dist/bin/forgebook/migrate/propGroupStrings.d.ts +5 -0
- package/dist/bin/forgebook/migrate/propGroupStrings.js +81 -0
- package/dist/bin/forgebook/newProject/newProject.d.ts +39 -0
- package/dist/bin/forgebook/newProject/newProject.js +180 -0
- package/dist/bin/forgebook/newProject/newProject.types.d.ts +97 -0
- package/dist/bin/forgebook/newProject/newProject.types.js +6 -0
- package/dist/bin/forgebook/newProject/packageManagers.d.ts +51 -0
- package/dist/bin/forgebook/newProject/packageManagers.js +121 -0
- package/dist/bin/forgebook/newProject/projectEntries.d.ts +62 -0
- package/dist/bin/forgebook/newProject/projectEntries.js +191 -0
- package/dist/bin/forgebook/newProject/projectFrameworks.d.ts +57 -0
- package/dist/bin/forgebook/newProject/projectFrameworks.js +148 -0
- package/dist/bin/forgebook/newProject/projectLook.d.ts +23 -0
- package/dist/bin/forgebook/newProject/projectLook.js +293 -0
- package/dist/bin/forgebook/newProject/projectPackages.d.ts +66 -0
- package/dist/bin/forgebook/newProject/projectPackages.js +178 -0
- package/dist/bin/forgebook/newRepair.d.ts +45 -0
- package/dist/bin/forgebook/newRepair.js +157 -0
- package/dist/bin/forgebook/newRepairRun.d.ts +69 -0
- package/dist/bin/forgebook/newRepairRun.js +148 -0
- package/dist/bin/forgebook/newStories.d.ts +23 -1
- package/dist/bin/forgebook/newStories.js +101 -11
- package/dist/bin/forgebook/newStoriesFile.d.ts +20 -1
- package/dist/bin/forgebook/newStoriesFile.js +43 -4
- package/dist/bin/forgebook/prebundleRun.d.ts +3 -1
- package/dist/bin/forgebook/prebundleRun.js +28 -8
- package/dist/bin/forgebook/proofCommand.d.mts +15 -0
- package/dist/bin/forgebook/proofCommand.mjs +212 -0
- package/dist/bin/forgebook/proofRun.d.ts +63 -0
- package/dist/bin/forgebook/proofRun.js +412 -0
- package/dist/bin/forgebook/proofText.d.ts +36 -0
- package/dist/bin/forgebook/proofText.js +131 -0
- package/dist/bin/forgebook/proofWorkflow.d.ts +29 -0
- package/dist/bin/forgebook/proofWorkflow.js +205 -0
- package/dist/bin/forgebook/setArgsTool.d.ts +8 -0
- package/dist/bin/forgebook/setArgsTool.js +70 -0
- package/dist/bin/forgebook/storyCheckCommands.mjs +42 -3
- package/dist/bin/forgebook/storyCheckRun.d.ts +50 -0
- package/dist/bin/forgebook/storyCheckRun.js +83 -9
- package/dist/bin/forgebook/storyFileIds.d.ts +15 -0
- package/dist/bin/forgebook/storyFileIds.js +14 -0
- package/dist/bin/forgebook/stressCases.d.ts +31 -0
- package/dist/bin/forgebook/stressCases.js +79 -0
- package/dist/bin/forgebook/stressRun.d.ts +12 -0
- package/dist/bin/forgebook/stressRun.js +61 -0
- package/dist/bin/forgebook/stressText.d.ts +27 -0
- package/dist/bin/forgebook/stressText.js +46 -0
- package/dist/bin/forgebook/verifyBase.d.ts +45 -0
- package/dist/bin/forgebook/verifyBase.js +196 -0
- package/dist/bin/forgebook/verifyCommand.d.mts +13 -0
- package/dist/bin/forgebook/verifyCommand.mjs +125 -0
- package/dist/bin/forgebook/verifyRun.d.ts +63 -0
- package/dist/bin/forgebook/verifyRun.js +108 -0
- package/dist/bin/forgebook/verifyVerdict.d.ts +40 -0
- package/dist/bin/forgebook/verifyVerdict.js +297 -0
- package/dist/bin/forgebook/workflowActions.d.ts +23 -0
- package/dist/bin/forgebook/workflowActions.js +23 -0
- package/dist/bin/forgebook-docs/catalogueMarkdown.js +12 -1
- package/dist/src/addressArgs.d.ts +29 -5
- package/dist/src/addressArgs.js +58 -16
- package/dist/src/addressArgsParam.d.ts +54 -0
- package/dist/src/addressArgsParam.js +51 -0
- package/dist/src/addressTexts.d.ts +14 -0
- package/dist/src/addressTexts.js +28 -21
- package/dist/src/agentIndexFile.d.ts +11 -0
- package/dist/src/agentIndexFile.js +11 -0
- package/dist/src/argConditions.d.ts +52 -0
- package/dist/src/argConditions.js +80 -0
- package/dist/src/argControl.d.ts +100 -0
- package/dist/src/argControl.js +0 -0
- package/dist/src/argExpression.d.ts +21 -0
- package/dist/src/argExpression.js +30 -0
- package/dist/src/argTypes.d.ts +40 -51
- package/dist/src/argTypes.js +66 -184
- package/dist/src/argsProps.d.ts +3 -3
- package/dist/src/argsProps.js +11 -5
- package/dist/src/bundlerErrors.d.ts +29 -0
- package/dist/src/bundlerErrors.js +49 -0
- package/dist/src/catalogue.d.ts +31 -0
- package/dist/src/catalogue.js +13 -2
- package/dist/src/catalogueRefs.d.ts +75 -0
- package/dist/src/catalogueRefs.js +122 -0
- package/dist/src/componentDocs.d.ts +71 -0
- package/dist/src/componentDocs.js +15 -2
- package/dist/src/frame/callValues.d.ts +19 -0
- package/dist/src/frame/callValues.js +58 -0
- package/dist/src/frame/canvasScheme.d.ts +33 -0
- package/dist/src/frame/canvasScheme.js +67 -0
- package/dist/src/frame/frame.css +36 -3
- package/dist/src/frame/frameStatus.d.ts +16 -1
- package/dist/src/frame/frameStatus.js +16 -1
- package/dist/src/frame/frameView.js +4 -3
- package/dist/src/frame/mountFrame.d.ts +7 -1
- package/dist/src/frame/mountFrame.js +153 -46
- package/dist/src/frame/panelValues.d.ts +35 -0
- package/dist/src/frame/panelValues.js +127 -0
- package/dist/src/frame/playActions.d.ts +39 -0
- package/dist/src/frame/playActions.js +98 -0
- package/dist/src/frame/playStepper.d.ts +28 -0
- package/dist/src/frame/playStepper.js +38 -0
- package/dist/src/frame/playStory.d.ts +9 -1
- package/dist/src/frame/playStory.js +49 -3
- package/dist/src/frame/renderer.d.ts +34 -1
- package/dist/src/frame/renderer.js +24 -0
- package/dist/src/frame/shellChannel.d.ts +1 -1
- package/dist/src/frame/shellChannel.js +1 -1
- package/dist/src/frame/shellCheck.d.ts +17 -0
- package/dist/src/frame/shellCheck.js +25 -0
- package/dist/src/frame/shellMessageCheck.d.ts +7 -0
- package/dist/src/frame/shellMessageCheck.js +53 -0
- package/dist/src/frame/storyContent.d.ts +50 -0
- package/dist/src/frame/storyContent.js +73 -0
- package/dist/src/frame/storyModule.d.ts +9 -0
- package/dist/src/frame/storyModule.js +20 -2
- package/dist/src/frame/storyRun.d.ts +15 -7
- package/dist/src/frame/storyRun.js +64 -15
- package/dist/src/frame/valueSheets.d.ts +35 -0
- package/dist/src/frame/valueSheets.js +99 -0
- package/dist/src/hotModules.d.ts +20 -0
- package/dist/src/hotModules.js +23 -0
- package/dist/src/jsxCode.d.ts +1 -14
- package/dist/src/jsxCode.js +46 -10
- package/dist/src/liveErrors.d.ts +30 -4
- package/dist/src/liveErrors.js +18 -3
- package/dist/src/messages.d.ts +77 -27
- package/dist/src/messages.js +58 -100
- package/dist/src/namedValues.d.ts +2 -26
- package/dist/src/namedValues.js +0 -47
- package/dist/src/pageConfig.d.ts +2 -0
- package/dist/src/playTrace.d.ts +19 -2
- package/dist/src/playTrace.js +10 -5
- package/dist/src/plugin.d.ts +10 -3
- package/dist/src/previewRelay.js +9 -1
- package/dist/src/printable.d.ts +12 -0
- package/dist/src/printable.js +22 -0
- package/dist/src/propsSignature.d.ts +37 -0
- package/dist/src/propsSignature.js +40 -0
- package/dist/src/search.d.ts +41 -5
- package/dist/src/search.js +93 -23
- package/dist/src/searchMatch.d.ts +4 -1
- package/dist/src/searchMatch.js +26 -5
- package/dist/src/searchTypos.d.ts +88 -0
- package/dist/src/searchTypos.js +178 -0
- package/dist/src/shapeValues.d.ts +86 -0
- package/dist/src/shapeValues.js +295 -0
- package/dist/src/shell/ApiReference.js +6 -3
- package/dist/src/shell/ApiTableBox.d.ts +15 -0
- package/dist/src/shell/ApiTableBox.js +11 -0
- package/dist/src/shell/AppearanceMenu.d.ts +4 -1
- package/dist/src/shell/AppearanceMenu.js +9 -6
- package/dist/src/shell/CodeTab.d.ts +3 -2
- package/dist/src/shell/CodeTab.js +3 -2
- package/dist/src/shell/CodeText.d.ts +1 -1
- package/dist/src/shell/CodeText.js +2 -3
- package/dist/src/shell/CompareGrid.js +1 -1
- package/dist/src/shell/ComponentPage.d.ts +1 -1
- package/dist/src/shell/ComponentPage.js +5 -1
- package/dist/src/shell/CustomControl.d.ts +34 -0
- package/dist/src/shell/CustomControl.js +132 -0
- package/dist/src/shell/DocContainers.js +1 -1
- package/dist/src/shell/DocPage.js +2 -2
- package/dist/src/shell/DroppedArgsList.d.ts +2 -2
- package/dist/src/shell/DroppedArgsList.js +1 -1
- package/dist/src/shell/EmbedPage.js +30 -12
- package/dist/src/shell/Example.d.ts +5 -1
- package/dist/src/shell/Example.js +16 -8
- package/dist/src/shell/FrameView.d.ts +6 -3
- package/dist/src/shell/FrameView.js +2 -2
- package/dist/src/shell/HomePage.d.ts +3 -1
- package/dist/src/shell/HomePage.js +16 -6
- package/dist/src/shell/InfoTip.js +2 -2
- package/dist/src/shell/InteractionsTab.d.ts +11 -4
- package/dist/src/shell/InteractionsTab.js +18 -2
- package/dist/src/shell/LazyPage.js +1 -1
- package/dist/src/shell/PackageHtml.js +3 -1
- package/dist/src/shell/PinnedControl.js +14 -62
- package/dist/src/shell/PinnedControlMenu.d.ts +44 -0
- package/dist/src/shell/PinnedControlMenu.js +72 -0
- package/dist/src/shell/PropFields.d.ts +3 -1
- package/dist/src/shell/PropFields.js +9 -6
- package/dist/src/shell/PropRows.d.ts +23 -2
- package/dist/src/shell/PropRows.js +58 -19
- package/dist/src/shell/PropsTab.d.ts +12 -5
- package/dist/src/shell/PropsTab.js +9 -21
- package/dist/src/shell/RefStoryPage.d.ts +33 -0
- package/dist/src/shell/RefStoryPage.js +123 -0
- package/dist/src/shell/SearchPanel.js +51 -24
- package/dist/src/shell/Shell.d.ts +18 -0
- package/dist/src/shell/Shell.js +137 -22
- package/dist/src/shell/ShortcutHelp.d.ts +22 -0
- package/dist/src/shell/ShortcutHelp.js +66 -0
- package/dist/src/shell/Sidebar.d.ts +17 -4
- package/dist/src/shell/Sidebar.js +92 -41
- package/dist/src/shell/SidebarDocs.js +2 -2
- package/dist/src/shell/SidebarEntries.js +5 -3
- package/dist/src/shell/SidebarHandle.d.ts +3 -5
- package/dist/src/shell/SidebarHandle.js +4 -4
- package/dist/src/shell/SidebarRefs.d.ts +39 -0
- package/dist/src/shell/SidebarRefs.js +99 -0
- package/dist/src/shell/SidebarSearch.js +37 -9
- package/dist/src/shell/SignatureReference.js +3 -1
- package/dist/src/shell/Stage.d.ts +10 -2
- package/dist/src/shell/Stage.js +29 -49
- package/dist/src/shell/StatusBadges.d.ts +54 -0
- package/dist/src/shell/StatusBadges.js +77 -0
- package/dist/src/shell/StoryCodeBlock.d.ts +8 -19
- package/dist/src/shell/StoryCodeBlock.js +7 -6
- package/dist/src/shell/SwitchGallery.d.ts +36 -0
- package/dist/src/shell/SwitchGallery.js +17 -0
- package/dist/src/shell/SwitchGalleryPanel.d.ts +37 -0
- package/dist/src/shell/SwitchGalleryPanel.js +99 -0
- package/dist/src/shell/TagFilter.d.ts +24 -0
- package/dist/src/shell/TagFilter.js +45 -0
- package/dist/src/shell/TagViews.d.ts +39 -0
- package/dist/src/shell/TagViews.js +20 -0
- package/dist/src/shell/Toolbar.d.ts +4 -1
- package/dist/src/shell/Toolbar.js +17 -7
- package/dist/src/shell/ToolbarControl.d.ts +3 -0
- package/dist/src/shell/ToolbarControl.js +23 -6
- package/dist/src/shell/ViewMenuPanel.js +6 -1
- package/dist/src/shell/argChecks.d.ts +22 -0
- package/dist/src/shell/argChecks.js +20 -0
- package/dist/src/shell/asideStory.js +7 -2
- package/dist/src/shell/audienceSections.css +9 -9
- package/dist/src/shell/catalogueContext.d.ts +1 -1
- package/dist/src/shell/catalogueContext.js +6 -1
- package/dist/src/shell/codeSpans.d.ts +27 -0
- package/dist/src/shell/codeSpans.js +76 -0
- package/dist/src/shell/compareVariants.d.ts +4 -2
- package/dist/src/shell/compareVariants.js +16 -8
- package/dist/src/shell/composition.d.ts +23 -0
- package/dist/src/shell/composition.js +26 -0
- package/dist/src/shell/controlCycle.d.ts +1 -1
- package/dist/src/shell/controlCycle.js +3 -2
- package/dist/src/shell/customControls.d.ts +55 -0
- package/dist/src/shell/customControls.js +70 -0
- package/dist/src/shell/docPage.css +22 -22
- package/dist/src/shell/dockTabs.d.ts +19 -3
- package/dist/src/shell/dockTabs.js +28 -20
- package/dist/src/shell/embed.css +7 -7
- package/dist/src/shell/framesOrigin.d.ts +7 -0
- package/dist/src/shell/framesOrigin.js +1 -1
- package/dist/src/shell/galleryPlace.d.ts +20 -0
- package/dist/src/shell/galleryPlace.js +26 -0
- package/dist/src/shell/icons.d.ts +1 -0
- package/dist/src/shell/icons.js +1 -0
- package/dist/src/shell/keyboard.d.ts +14 -12
- package/dist/src/shell/keyboard.js +21 -6
- package/dist/src/shell/laterStrings.d.ts +29 -0
- package/dist/src/shell/laterStrings.js +42 -3
- package/dist/src/shell/mountShell.js +3 -0
- package/dist/src/shell/pageStrings.d.ts +4 -0
- package/dist/src/shell/pageStrings.js +4 -0
- package/dist/src/shell/pageTagView.d.ts +18 -0
- package/dist/src/shell/pageTagView.js +10 -0
- package/dist/src/shell/playMemory.d.ts +14 -0
- package/dist/src/shell/playMemory.js +8 -0
- package/dist/src/shell/propNotes.d.ts +23 -0
- package/dist/src/shell/propNotes.js +37 -0
- package/dist/src/shell/refIndexLoad.d.ts +17 -0
- package/dist/src/shell/refIndexLoad.js +38 -0
- package/dist/src/shell/refParts.d.ts +34 -0
- package/dist/src/shell/refParts.js +9 -0
- package/dist/src/shell/refStory.css +21 -0
- package/dist/src/shell/refStrings.d.ts +13 -0
- package/dist/src/shell/refStrings.js +21 -0
- package/dist/src/shell/search.css +11 -11
- package/dist/src/shell/shell.css +348 -168
- package/dist/src/shell/shellScheme.js +2 -2
- package/dist/src/shell/shortcutHelp.css +64 -0
- package/dist/src/shell/stageArgs.d.ts +53 -0
- package/dist/src/shell/stageArgs.js +64 -0
- package/dist/src/shell/statusBadges.css +51 -0
- package/dist/src/shell/strings.d.ts +7 -16
- package/dist/src/shell/strings.js +12 -17
- package/dist/src/shell/switchGallery.css +104 -0
- package/dist/src/shell/tagFilter.css +46 -0
- package/dist/src/shell/tagView.d.ts +20 -0
- package/dist/src/shell/tagView.js +10 -0
- package/dist/src/shell/useAddressArgs.d.ts +9 -0
- package/dist/src/shell/useAddressArgs.js +56 -11
- package/dist/src/shell/useControlKeys.js +2 -2
- package/dist/src/shell/useEditedProblems.d.ts +6 -0
- package/dist/src/shell/useEditedProblems.js +40 -0
- package/dist/src/shell/useFrameMessages.js +3 -0
- package/dist/src/shell/useListedTree.d.ts +13 -0
- package/dist/src/shell/useListedTree.js +32 -0
- package/dist/src/shell/usePageFrames.js +2 -2
- package/dist/src/shell/usePopover.d.ts +5 -0
- package/dist/src/shell/usePopover.js +7 -1
- package/dist/src/shell/useRefIndex.d.ts +22 -0
- package/dist/src/shell/useRefIndex.js +36 -0
- package/dist/src/shell/useScrollStops.d.ts +20 -0
- package/dist/src/shell/useScrollStops.js +41 -0
- package/dist/src/shell/useShortcutHelp.d.ts +18 -0
- package/dist/src/shell/useShortcutHelp.js +32 -0
- package/dist/src/shell/useSidebarOverlay.d.ts +2 -1
- package/dist/src/shell/useSidebarOverlay.js +12 -4
- package/dist/src/shell/useStoryCode.d.ts +2 -1
- package/dist/src/shell/useStoryCode.js +12 -7
- package/dist/src/shell/useToolbarLayout.d.ts +5 -1
- package/dist/src/shell/useToolbarLayout.js +2 -2
- package/dist/src/shell/useWorstCase.d.ts +8 -2
- package/dist/src/shell/useWorstCase.js +2 -2
- package/dist/src/shell/valueEditors/FileEditor.d.ts +28 -0
- package/dist/src/shell/valueEditors/FileEditor.js +66 -0
- package/dist/src/shell/valueEditors/JsonEditor.d.ts +14 -0
- package/dist/src/shell/valueEditors/JsonEditor.js +53 -0
- package/dist/src/shell/valueEditors/ListEditor.d.ts +24 -0
- package/dist/src/shell/valueEditors/ListEditor.js +82 -0
- package/dist/src/shell/valueEditors/ObjectEditor.d.ts +32 -0
- package/dist/src/shell/valueEditors/ObjectEditor.js +70 -0
- package/dist/src/shell/valueEditors/PropEditor.d.ts +37 -0
- package/dist/src/shell/valueEditors/PropEditor.js +53 -0
- package/dist/src/shell/valueEditors/RecordEditor.d.ts +20 -0
- package/dist/src/shell/valueEditors/RecordEditor.js +84 -0
- package/dist/src/shell/valueEditors/SearchSelect.d.ts +42 -0
- package/dist/src/shell/valueEditors/SearchSelect.js +80 -0
- package/dist/src/shell/valueEditors/TokenEditor.d.ts +49 -0
- package/dist/src/shell/valueEditors/TokenEditor.js +74 -0
- package/dist/src/shell/valueEditors/UnionEditor.d.ts +20 -0
- package/dist/src/shell/valueEditors/UnionEditor.js +64 -0
- package/dist/src/shell/valueEditors/ValueField.d.ts +15 -0
- package/dist/src/shell/valueEditors/ValueField.js +147 -0
- package/dist/src/shell/valueEditors/editorStrings.d.ts +56 -0
- package/dist/src/shell/valueEditors/editorStrings.js +66 -0
- package/dist/src/shell/valueEditors/fieldTypes.d.ts +31 -0
- package/dist/src/shell/valueEditors/fieldTypes.js +0 -0
- package/dist/src/shell/valueEditors/valueEditors.css +153 -0
- package/dist/src/shell/worstArgs.d.ts +8 -5
- package/dist/src/shell/worstArgs.js +14 -7
- package/dist/src/shellTheme.d.ts +1 -1
- package/dist/src/shellTheme.js +15 -1
- package/dist/src/shellTheme.types.d.ts +4 -0
- package/dist/src/shellWord.d.ts +12 -0
- package/dist/src/shellWord.js +15 -0
- package/dist/src/sourceFiles.js +2 -1
- package/dist/src/storyArgTypes.d.ts +57 -0
- package/dist/src/storyArgTypes.js +195 -0
- package/dist/src/storyBackground.js +14 -3
- package/dist/src/storyCheck.d.ts +85 -3
- package/dist/src/storyCheck.js +23 -1
- package/dist/src/storyCodeText.d.ts +46 -0
- package/dist/src/storyCodeText.js +27 -0
- package/dist/src/storyControls.d.ts +100 -0
- package/dist/src/storyControls.js +100 -0
- package/dist/src/storyStatuses.d.ts +55 -0
- package/dist/src/storyStatuses.js +104 -0
- package/dist/src/storyTagNames.d.ts +25 -0
- package/dist/src/storyTagNames.js +25 -0
- package/dist/src/storyTags.d.ts +29 -0
- package/dist/src/storyTags.js +85 -0
- package/dist/src/storyTree.d.ts +13 -0
- package/dist/src/storyTree.js +24 -4
- package/dist/src/storybookArgs.d.ts +24 -0
- package/dist/src/storybookArgs.js +185 -0
- package/dist/src/switches.d.ts +66 -3
- package/dist/src/switches.js +42 -1
- package/dist/src/valueSchema.d.ts +28 -0
- package/dist/src/valueSchema.js +196 -0
- package/dist/src/valueShape.d.ts +94 -0
- package/dist/src/valueShape.js +25 -0
- package/dist/src/viewState.d.ts +8 -3
- package/dist/src/viewState.js +27 -10
- package/dist/src/vite/adapter.d.ts +40 -2
- package/dist/src/vite/adapter.js +1 -0
- package/dist/src/vite/agent.types.d.ts +347 -7
- package/dist/src/vite/agentApi.d.ts +23 -0
- package/dist/src/vite/agentApi.js +90 -17
- package/dist/src/vite/agentIndex.d.ts +0 -2
- package/dist/src/vite/agentIndex.js +5 -6
- package/dist/src/vite/agentRoutes.d.ts +20 -1
- package/dist/src/vite/agentRoutes.js +106 -65
- package/dist/src/vite/agentStatuses.d.ts +42 -0
- package/dist/src/vite/agentStatuses.js +67 -0
- package/dist/src/vite/agentStoryCode.d.ts +48 -0
- package/dist/src/vite/agentStoryCode.js +38 -0
- package/dist/src/vite/agentVisibility.d.ts +47 -0
- package/dist/src/vite/agentVisibility.js +174 -0
- package/dist/src/vite/appAudit.d.ts +134 -0
- package/dist/src/vite/appAudit.js +333 -0
- package/dist/src/vite/appBuildOption.d.ts +53 -0
- package/dist/src/vite/appBuildOption.js +55 -0
- package/dist/src/vite/appTokenFiles.d.ts +92 -0
- package/dist/src/vite/appTokenFiles.js +433 -0
- package/dist/src/vite/appTokens.d.ts +23 -0
- package/dist/src/vite/appTokens.js +275 -0
- package/dist/src/vite/builtTexts.d.ts +10 -0
- package/dist/src/vite/builtTexts.js +59 -22
- package/dist/src/vite/catalogueConfig.d.ts +3 -1
- package/dist/src/vite/catalogueConfig.js +15 -3
- package/dist/src/vite/changeCoverage.d.ts +74 -0
- package/dist/src/vite/changeCoverage.js +120 -0
- package/dist/src/vite/changedRoute.d.ts +30 -0
- package/dist/src/vite/changedRoute.js +197 -0
- package/dist/src/vite/checkCode.d.ts +105 -3
- package/dist/src/vite/checkCode.js +323 -36
- package/dist/src/vite/checkoutWatch.d.ts +97 -0
- package/dist/src/vite/checkoutWatch.js +287 -0
- package/dist/src/vite/closeWatch.d.ts +8 -0
- package/dist/src/vite/closeWatch.js +1 -1
- package/dist/src/vite/componentCache.d.ts +8 -0
- package/dist/src/vite/componentCache.js +66 -0
- package/dist/src/vite/componentGraph.d.ts +71 -0
- package/dist/src/vite/componentGraph.js +133 -0
- package/dist/src/vite/componentRules.d.ts +33 -0
- package/dist/src/vite/componentRules.js +105 -0
- package/dist/src/vite/componentScan.d.ts +69 -0
- package/dist/src/vite/componentScan.js +418 -0
- package/dist/src/vite/compositionCheck.d.ts +15 -0
- package/dist/src/vite/compositionCheck.js +243 -0
- package/dist/src/vite/config.d.ts +32 -1
- package/dist/src/vite/configFile.d.ts +14 -2
- package/dist/src/vite/configFile.js +124 -40
- package/dist/src/vite/configKeys.d.ts +15 -0
- package/dist/src/vite/configKeys.js +171 -0
- package/dist/src/vite/configLoadError.d.ts +23 -0
- package/dist/src/vite/configLoadError.js +71 -0
- package/dist/src/vite/cssDeclarations.d.ts +71 -0
- package/dist/src/vite/cssDeclarations.js +290 -0
- package/dist/src/vite/cssImports.d.ts +14 -0
- package/dist/src/vite/cssImports.js +48 -0
- package/dist/src/vite/cssReferences.d.ts +54 -0
- package/dist/src/vite/cssReferences.js +157 -0
- package/dist/src/vite/cssTokenValues.d.ts +50 -0
- package/dist/src/vite/cssTokenValues.js +233 -0
- package/dist/src/vite/designTokens.d.ts +24 -0
- package/dist/src/vite/designTokens.js +5 -1
- package/dist/src/vite/docsExtractor.d.ts +9 -3
- package/dist/src/vite/docsExtractor.js +11 -3
- package/dist/src/vite/docsProgram.d.ts +17 -4
- package/dist/src/vite/docsProgram.js +52 -11
- package/dist/src/vite/docsWorker.js +7 -2
- package/dist/src/vite/emptyStoryGlobs.d.ts +41 -0
- package/dist/src/vite/emptyStoryGlobs.js +52 -0
- package/dist/src/vite/fileImports.d.ts +17 -0
- package/dist/src/vite/fileImports.js +57 -0
- package/dist/src/vite/findComponent.d.ts +10 -2
- package/dist/src/vite/findComponent.js +27 -22
- package/dist/src/vite/findRoute.js +3 -2
- package/dist/src/vite/forcedStates.d.ts +9 -2
- package/dist/src/vite/forcedStates.js +12 -3
- package/dist/src/vite/forgebookPlugin.d.ts +2 -0
- package/dist/src/vite/forgebookPlugin.js +52 -72
- package/dist/src/vite/frameErrors.d.ts +19 -0
- package/dist/src/vite/frameErrors.js +70 -0
- package/dist/src/vite/framesServer.d.ts +12 -0
- package/dist/src/vite/framesServer.js +21 -4
- package/dist/src/vite/functionComponentDocs.js +81 -12
- package/dist/src/vite/generatedModules.js +4 -2
- package/dist/src/vite/gitChange.d.ts +38 -5
- package/dist/src/vite/gitChange.js +71 -11
- package/dist/src/vite/hiddenStoryFiles.d.ts +23 -0
- package/dist/src/vite/hiddenStoryFiles.js +107 -0
- package/dist/src/vite/hotSnippets.d.ts +38 -14
- package/dist/src/vite/hotSnippets.js +137 -39
- package/dist/src/vite/importedNames.d.ts +37 -0
- package/dist/src/vite/importedNames.js +138 -0
- package/dist/src/vite/indexFields.d.ts +6 -0
- package/dist/src/vite/indexFields.js +21 -0
- package/dist/src/vite/indexStoryFile.d.ts +8 -1
- package/dist/src/vite/indexStoryFile.js +22 -157
- package/dist/src/vite/jsxCallSites.d.ts +33 -0
- package/dist/src/vite/jsxCallSites.js +200 -0
- package/dist/src/vite/jsxInScripts.d.ts +67 -0
- package/dist/src/vite/jsxInScripts.js +138 -0
- package/dist/src/vite/jsxTree.d.ts +20 -0
- package/dist/src/vite/jsxTree.js +163 -0
- package/dist/src/vite/lineAndColumn.d.ts +13 -0
- package/dist/src/vite/lineAndColumn.js +18 -0
- package/dist/src/vite/lookAlikes.d.ts +65 -0
- package/dist/src/vite/lookAlikes.js +228 -0
- package/dist/src/vite/nearestToken.d.ts +17 -0
- package/dist/src/vite/nearestToken.js +9 -2
- package/dist/src/vite/packageEntries.d.ts +42 -0
- package/dist/src/vite/packageEntries.js +127 -0
- package/dist/src/vite/pages.d.ts +9 -1
- package/dist/src/vite/pages.js +108 -4
- package/dist/src/vite/pluginConfig.js +4 -0
- package/dist/src/vite/pluginIds.d.ts +2 -0
- package/dist/src/vite/pluginIds.js +5 -1
- package/dist/src/vite/pluginModules.d.ts +81 -11
- package/dist/src/vite/pluginModules.js +109 -21
- package/dist/src/vite/prebundled.d.ts +57 -15
- package/dist/src/vite/prebundled.js +80 -0
- package/dist/src/vite/previewTags.d.ts +25 -0
- package/dist/src/vite/previewTags.js +56 -0
- package/dist/src/vite/projectFiles.d.ts +54 -0
- package/dist/src/vite/projectFiles.js +116 -0
- package/dist/src/vite/projectPostcss.d.ts +70 -0
- package/dist/src/vite/projectPostcss.js +250 -0
- package/dist/src/vite/propDocs.d.ts +12 -0
- package/dist/src/vite/propDocs.js +130 -58
- package/dist/src/vite/propKind.d.ts +40 -0
- package/dist/src/vite/propKind.js +71 -0
- package/dist/src/vite/propTypeNotes.d.ts +22 -0
- package/dist/src/vite/propTypeNotes.js +51 -0
- package/dist/src/vite/publishedExports.d.ts +27 -0
- package/dist/src/vite/publishedExports.js +298 -0
- package/dist/src/vite/realFolder.d.ts +6 -0
- package/dist/src/vite/realFolder.js +25 -0
- package/dist/src/vite/refsConfig.d.ts +39 -0
- package/dist/src/vite/refsConfig.js +54 -0
- package/dist/src/vite/reuseCheck.d.ts +45 -0
- package/dist/src/vite/reuseCheck.js +260 -0
- package/dist/src/vite/runningVersions.d.ts +33 -0
- package/dist/src/vite/runningVersions.js +25 -0
- package/dist/src/vite/scriptProblems.d.ts +60 -0
- package/dist/src/vite/scriptProblems.js +155 -0
- package/dist/src/vite/searchModule.js +3 -2
- package/dist/src/vite/searchRoute.js +4 -2
- package/dist/src/vite/shapeDocs.d.ts +36 -0
- package/dist/src/vite/shapeDocs.js +177 -0
- package/dist/src/vite/singleFileComponent.d.ts +17 -0
- package/dist/src/vite/singleFileComponent.js +83 -0
- package/dist/src/vite/sourceText.d.ts +34 -0
- package/dist/src/vite/sourceText.js +72 -0
- package/dist/src/vite/sourceTokens.d.ts +7 -0
- package/dist/src/vite/sourceTokens.js +7 -2
- package/dist/src/vite/stackLines.d.ts +49 -0
- package/dist/src/vite/stackLines.js +96 -0
- package/dist/src/vite/storyCode.d.ts +22 -7
- package/dist/src/vite/storyCode.js +263 -37
- package/dist/src/vite/storyCoverage.d.ts +48 -0
- package/dist/src/vite/storyCoverage.js +179 -0
- package/dist/src/vite/storyFilesModule.d.ts +48 -3
- package/dist/src/vite/storyFilesModule.js +105 -15
- package/dist/src/vite/storyPatterns.d.ts +31 -0
- package/dist/src/vite/storyPatterns.js +140 -5
- package/dist/src/vite/storyReach.d.ts +10 -2
- package/dist/src/vite/storyReach.js +15 -11
- package/dist/src/vite/storyTopLevel.d.ts +51 -0
- package/dist/src/vite/storyTopLevel.js +146 -0
- package/dist/src/vite/storylessRoutes.d.ts +4 -3
- package/dist/src/vite/storylessRoutes.js +210 -19
- package/dist/src/vite/switchValuesCheck.d.ts +19 -0
- package/dist/src/vite/switchValuesCheck.js +164 -0
- package/dist/src/vite/switchesDocument.d.ts +15 -0
- package/dist/src/vite/switchesDocument.js +47 -0
- package/dist/src/vite/tailwindConfigTokens.d.ts +41 -0
- package/dist/src/vite/tailwindConfigTokens.js +306 -0
- package/dist/src/vite/textImports.d.ts +15 -0
- package/dist/src/vite/textImports.js +58 -0
- package/dist/src/vite/textModules.d.ts +6 -5
- package/dist/src/vite/textModules.js +13 -8
- package/dist/src/vite/tokenAnswers.d.ts +6 -2
- package/dist/src/vite/tokenAnswers.js +11 -7
- package/dist/src/vite/typeParameters.d.ts +83 -0
- package/dist/src/vite/typeParameters.js +270 -0
- package/dist/src/vite/unionProps.d.ts +37 -0
- package/dist/src/vite/unionProps.js +121 -0
- package/dist/src/vite/unresolvedTokens.d.ts +20 -0
- package/dist/src/vite/unresolvedTokens.js +193 -0
- package/dist/src/vite/usageGraph.js +10 -52
- package/dist/src/vite/usageGuidance.d.ts +9 -2
- package/dist/src/vite/usageGuidance.js +36 -8
- package/dist/src/vite/usageImports.d.ts +35 -0
- package/dist/src/vite/usageImports.js +280 -0
- package/dist/src/vite/visibilityRoute.d.ts +16 -0
- package/dist/src/vite/visibilityRoute.js +320 -0
- package/dist/src/worstCase.d.ts +2 -0
- package/dist/src/worstCase.js +2 -0
- package/package.json +28 -8
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import ts from "typescript-6";
|
|
2
2
|
import type { PropDocs } from "../componentDocs.ts";
|
|
3
|
+
import { type Bindings } from "./typeParameters.ts";
|
|
3
4
|
/**
|
|
4
5
|
* A symbol, through an import to what it names.
|
|
5
6
|
*
|
|
@@ -40,6 +41,17 @@ export type PropReading = {
|
|
|
40
41
|
* capital by default.
|
|
41
42
|
*/
|
|
42
43
|
readonly eventName?: RegExp | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* The same prop as the other variants of a union of props declare it (`selected?: Date` beside `selected?: Date[]`):
|
|
46
|
+
* their written types join its own. When their types differ, what only one of them would say (an event's signature,
|
|
47
|
+
* a value's shape, an object's members) is left out, and its kind is `other` unless all share one.
|
|
48
|
+
*/
|
|
49
|
+
readonly variants?: readonly ts.Symbol[] | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* What the props type's type parameters stand for in the component (`typeParameters.ts`), so a type parameter left
|
|
52
|
+
* open is shown by the component's constraint; none reads each by its own.
|
|
53
|
+
*/
|
|
54
|
+
readonly bindings?: Bindings | undefined;
|
|
43
55
|
};
|
|
44
56
|
/**
|
|
45
57
|
* One prop's docs.
|
|
@@ -12,18 +12,11 @@
|
|
|
12
12
|
import { dirname } from "node:path";
|
|
13
13
|
import ts from "typescript-6";
|
|
14
14
|
import { summaryOf, tagOf } from "./docsProgram.js";
|
|
15
|
+
import { literalValues, typeAndKind } from "./propKind.js";
|
|
16
|
+
import { propTypeNotes } from "./propTypeNotes.js";
|
|
17
|
+
import { shapeOfProp } from "./shapeDocs.js";
|
|
15
18
|
import { unwrapped } from "./storyMeta.js";
|
|
16
|
-
|
|
17
|
-
const EVENT_NAME = /^on[A-Z]/;
|
|
18
|
-
/** Whether a type is a union of string or number literals (a choice). */
|
|
19
|
-
const literalValues = (type) => {
|
|
20
|
-
if (!type.isUnion())
|
|
21
|
-
return undefined;
|
|
22
|
-
const values = type.types.map((member) => member.isStringLiteral() || member.isNumberLiteral() ? member.value : undefined);
|
|
23
|
-
return values.every((value) => value !== undefined)
|
|
24
|
-
? values.filter((value) => value !== undefined)
|
|
25
|
-
: undefined;
|
|
26
|
-
};
|
|
19
|
+
import { genericFreeText, usesTypeParameter } from "./typeParameters.js";
|
|
27
20
|
/** A literal value an expression writes (`"md"`, `3`, `-1`), or none for anything else. */
|
|
28
21
|
const literalOfExpression = (expression) => {
|
|
29
22
|
if (ts.isStringLiteral(expression) || ts.isNoSubstitutionTemplateLiteral(expression))
|
|
@@ -131,25 +124,48 @@ const writtenLiterals = (node, checker, seen) => {
|
|
|
131
124
|
return [...fromArguments, ...(alias === undefined ? [] : writtenLiterals(alias.type, checker, seen))];
|
|
132
125
|
};
|
|
133
126
|
/**
|
|
134
|
-
*
|
|
135
|
-
* the types in, which a program kept between reads changes from one read to the next.
|
|
127
|
+
* What puts a choice's values in the order the source writes them: the checker's order follows the order it happened to
|
|
128
|
+
* meet the types in, which a program kept between reads changes from one read to the next.
|
|
129
|
+
*
|
|
130
|
+
* @remarks
|
|
131
|
+
* A prop's shape asks for the order of every union inside it, and a library's unions can hold hundreds of values (an
|
|
132
|
+
* icon's name): the declared values are read once per prop, on the first ask, and each value's place is looked up, not
|
|
133
|
+
* searched for.
|
|
136
134
|
*
|
|
137
|
-
* @param values - the values, in the checker's order.
|
|
138
135
|
* @param declared - the prop's declared type nodes.
|
|
139
136
|
* @param checker - the type checker.
|
|
140
|
-
* @returns the values, those the source writes in its order first, any other
|
|
137
|
+
* @returns the sorter: given values in the checker's order, those the source writes in its order first, any other
|
|
138
|
+
* after them in the checker's order.
|
|
141
139
|
*/
|
|
142
|
-
const
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
140
|
+
const writtenOrderOf = (declared, checker) => {
|
|
141
|
+
let places;
|
|
142
|
+
let unwritten = 0;
|
|
143
|
+
return (values) => {
|
|
144
|
+
if (places === undefined) {
|
|
145
|
+
const seen = new Set();
|
|
146
|
+
const written = declared.flatMap((node) => ts.isMethodSignature(node) ? [] : writtenLiterals(node, checker, seen));
|
|
147
|
+
places = new Map();
|
|
148
|
+
unwritten = written.length;
|
|
149
|
+
// a value written twice keeps its first place, as a search from the start would find it
|
|
150
|
+
for (const [index, value] of written.entries())
|
|
151
|
+
if (!places.has(value))
|
|
152
|
+
places.set(value, index);
|
|
153
|
+
}
|
|
154
|
+
const known = places;
|
|
155
|
+
const rank = (value) => known.get(value) ?? unwritten;
|
|
156
|
+
return [...values].sort((left, right) => rank(left) - rank(right));
|
|
148
157
|
};
|
|
149
|
-
return [...values].sort((left, right) => rank(left) - rank(right));
|
|
150
158
|
};
|
|
151
159
|
/** A choice's type as TypeScript writes it, its members in the given order (`"md" | "sm"`). */
|
|
152
160
|
const choiceTypeText = (values) => values.map((value) => (typeof value === "string" ? JSON.stringify(value) : String(value))).join(" | ");
|
|
161
|
+
/**
|
|
162
|
+
* Declarations by file and position: a prop several variants declare comes with them in the order the checker met
|
|
163
|
+
* the variants, which a program kept between reads changes.
|
|
164
|
+
*
|
|
165
|
+
* @param declarations - the declarations.
|
|
166
|
+
*/
|
|
167
|
+
const byPosition = (declarations) => [...declarations].sort((left, right) => left.getSourceFile().fileName.localeCompare(right.getSourceFile().fileName) ||
|
|
168
|
+
left.getStart() - right.getStart());
|
|
153
169
|
/**
|
|
154
170
|
* The props in the order the source declares them: those declared in the component's own folder first, then the
|
|
155
171
|
* ones it takes from elsewhere, each by file and position. The checker's order follows the types it met first (an
|
|
@@ -160,7 +176,7 @@ const choiceTypeText = (values) => values.map((value) => (typeof value === "stri
|
|
|
160
176
|
*/
|
|
161
177
|
export const declarationOrder = (props, componentFolder) => {
|
|
162
178
|
const keyOf = (prop) => {
|
|
163
|
-
const [declaration] = prop.declarations ?? [];
|
|
179
|
+
const [declaration] = byPosition(prop.declarations ?? []);
|
|
164
180
|
if (declaration === undefined)
|
|
165
181
|
return [2, "", 0];
|
|
166
182
|
const file = declaration.getSourceFile().fileName;
|
|
@@ -172,8 +188,15 @@ export const declarationOrder = (props, componentFolder) => {
|
|
|
172
188
|
return leftOwn - rightOwn || leftFile.localeCompare(rightFile) || leftAt - rightAt;
|
|
173
189
|
});
|
|
174
190
|
};
|
|
175
|
-
/**
|
|
176
|
-
|
|
191
|
+
/**
|
|
192
|
+
* A type node's text as the source writes it, on one line; given a checker, each generic type parameter it uses
|
|
193
|
+
* replaced by what it is shown as (`typeParameters.ts`).
|
|
194
|
+
*/
|
|
195
|
+
const nodeText = (node, generic) => (generic === undefined ? node.getText() : genericFreeText(node, generic))
|
|
196
|
+
// an inline object's TSDoc is the docs' to read, not part of its type
|
|
197
|
+
.replace(/\/\*[\s\S]*?\*\//g, "")
|
|
198
|
+
.replace(/\s+/g, " ")
|
|
199
|
+
.trim();
|
|
177
200
|
/**
|
|
178
201
|
* Whether a type node adds nothing a prop can take: `undefined` and `null` (left out as the checker's `NonNullable`
|
|
179
202
|
* did) and `never` (a branch of the props where the prop is not allowed).
|
|
@@ -200,7 +223,7 @@ const declaredMembers = (node) => {
|
|
|
200
223
|
*
|
|
201
224
|
* @param symbol - the prop.
|
|
202
225
|
*/
|
|
203
|
-
const declaredTypesOf = (symbol) => (symbol.declarations ?? []).flatMap((declaration) => {
|
|
226
|
+
const declaredTypesOf = (symbol) => byPosition(symbol.declarations ?? []).flatMap((declaration) => {
|
|
204
227
|
if (ts.isMethodSignature(declaration))
|
|
205
228
|
return [declaration];
|
|
206
229
|
return (ts.isPropertySignature(declaration) || ts.isPropertyDeclaration(declaration)) &&
|
|
@@ -214,36 +237,51 @@ const declaredTypesOf = (symbol) => (symbol.declarations ?? []).flatMap((declara
|
|
|
214
237
|
* between reads changes from one read to the next.
|
|
215
238
|
*
|
|
216
239
|
* @param declaredTypes - the prop's declared type nodes.
|
|
240
|
+
* @param generic - the checker and the bindings when the prop's type is still generic, to replace the type parameters
|
|
241
|
+
* its text uses; none to write it as it is.
|
|
217
242
|
* @returns the text, or none when the prop writes no type (the caller falls back to the checker's).
|
|
218
243
|
*/
|
|
219
|
-
const writtenTypeText = (declaredTypes) => {
|
|
244
|
+
const writtenTypeText = (declaredTypes, generic) => {
|
|
245
|
+
const text = (node) => nodeText(node, generic);
|
|
220
246
|
const texts = declaredTypes.flatMap((declared) => {
|
|
221
247
|
if (!ts.isMethodSignature(declared))
|
|
222
|
-
return declaredMembers(declared).map(
|
|
223
|
-
const parameters = declared.parameters.map(
|
|
224
|
-
return [`(${parameters}) => ${declared.type === undefined ? "void" :
|
|
248
|
+
return declaredMembers(declared).map(text);
|
|
249
|
+
const parameters = declared.parameters.map(text).join(", ");
|
|
250
|
+
return [`(${parameters}) => ${declared.type === undefined ? "void" : text(declared.type)}`];
|
|
225
251
|
});
|
|
226
252
|
// each branch's members once, in the order the branches write them
|
|
227
253
|
const unique = [...new Set(texts)];
|
|
228
254
|
return unique.length === 0 ? undefined : unique.join(" | ");
|
|
229
255
|
};
|
|
256
|
+
/**
|
|
257
|
+
* A prop's type as the source writes it, or none for the checker's: a text naming a type parameter the component
|
|
258
|
+
* instantiates (`value: TValue` in `BaseProps<string>`) says less than the checker's `string`.
|
|
259
|
+
*
|
|
260
|
+
* @param declared - the prop's declared types.
|
|
261
|
+
* @param generic - the checker and the bindings when the prop's type is still generic.
|
|
262
|
+
* @param checker - the program's checker.
|
|
263
|
+
*/
|
|
264
|
+
const writtenText = (declared, generic, checker) => generic === undefined && usesTypeParameter(declared, checker)
|
|
265
|
+
? undefined
|
|
266
|
+
: writtenTypeText(declared, generic);
|
|
230
267
|
/**
|
|
231
268
|
* An event's signature as the source writes it: a function type among the prop's declared members, or a method.
|
|
232
269
|
*
|
|
233
270
|
* @param declaredTypes - the event prop's declared type nodes.
|
|
271
|
+
* @param generic - the checker and the bindings when the event's type is still generic, as `writtenTypeText` takes them.
|
|
234
272
|
* @returns the signature, or none when the source writes none in place (a named handler type).
|
|
235
273
|
*/
|
|
236
|
-
const writtenSignature = (declaredTypes) => {
|
|
274
|
+
const writtenSignature = (declaredTypes, generic) => {
|
|
237
275
|
const nodes = declaredTypes.flatMap((declared) => ts.isMethodSignature(declared) ? [declared] : declaredMembers(declared));
|
|
238
276
|
const fn = nodes.find((node) => ts.isMethodSignature(node) || ts.isFunctionTypeNode(node));
|
|
239
277
|
if (fn === undefined)
|
|
240
278
|
return undefined;
|
|
241
279
|
return {
|
|
242
280
|
parameters: fn.parameters.map((parameter) => ({
|
|
243
|
-
name: nodeText(parameter.name),
|
|
244
|
-
type: parameter.type === undefined ? "unknown" : nodeText(parameter.type)
|
|
281
|
+
name: nodeText(parameter.name, undefined),
|
|
282
|
+
type: parameter.type === undefined ? "unknown" : nodeText(parameter.type, generic)
|
|
245
283
|
})),
|
|
246
|
-
returns: fn.type === undefined ? "void" : nodeText(fn.type)
|
|
284
|
+
returns: fn.type === undefined ? "void" : nodeText(fn.type, generic)
|
|
247
285
|
};
|
|
248
286
|
};
|
|
249
287
|
/** An event's signature. */
|
|
@@ -259,20 +297,6 @@ const signatureOf = (type, checker, node) => {
|
|
|
259
297
|
returns: checker.typeToString(signature.getReturnType())
|
|
260
298
|
};
|
|
261
299
|
};
|
|
262
|
-
/** A prop's kind, from its name and its type without `undefined`. */
|
|
263
|
-
const kindOf = (name, type, eventName) => {
|
|
264
|
-
if (eventName.test(name) && type.getCallSignatures().length > 0)
|
|
265
|
-
return "event";
|
|
266
|
-
if (type.flags & ts.TypeFlags.Boolean || type.flags & ts.TypeFlags.BooleanLiteral)
|
|
267
|
-
return "toggle";
|
|
268
|
-
if (literalValues(type) !== undefined)
|
|
269
|
-
return "choice";
|
|
270
|
-
if (type.flags & ts.TypeFlags.String)
|
|
271
|
-
return "text";
|
|
272
|
-
if (type.flags & ts.TypeFlags.Number)
|
|
273
|
-
return "number";
|
|
274
|
-
return "other";
|
|
275
|
-
};
|
|
276
300
|
/** Whether a symbol is declared outside the package (a DOM attribute from React's types). */
|
|
277
301
|
export const isForeign = (symbol) => (symbol.declarations ?? []).every((declaration) => declaration.getSourceFile().fileName.includes("/node_modules/"));
|
|
278
302
|
/**
|
|
@@ -334,6 +358,22 @@ const groupingOf = (symbol, kind, type, checker, node) => {
|
|
|
334
358
|
...(members === undefined ? {} : { members })
|
|
335
359
|
};
|
|
336
360
|
};
|
|
361
|
+
/**
|
|
362
|
+
* A choice's values across the variants' types that declare it, each once, in the order the source writes them.
|
|
363
|
+
*
|
|
364
|
+
* @param kind - the prop's kind: only a choice has values.
|
|
365
|
+
* @param types - its type in each variant, its own first.
|
|
366
|
+
* @param declared - its declared types, for their order.
|
|
367
|
+
* @param checker - the program's checker.
|
|
368
|
+
*/
|
|
369
|
+
const choicesOf = (kind, types, declared, checker) => {
|
|
370
|
+
if (kind !== "choice")
|
|
371
|
+
return undefined;
|
|
372
|
+
const lists = types.map(literalValues);
|
|
373
|
+
return lists.every((list) => list !== undefined)
|
|
374
|
+
? writtenOrderOf(declared, checker)([...new Set(lists.flat())])
|
|
375
|
+
: undefined;
|
|
376
|
+
};
|
|
337
377
|
/**
|
|
338
378
|
* One prop's docs.
|
|
339
379
|
*
|
|
@@ -343,23 +383,26 @@ const groupingOf = (symbol, kind, type, checker, node) => {
|
|
|
343
383
|
* @param reading - how the framework's props differ from a plain function's; none for a plain prop.
|
|
344
384
|
*/
|
|
345
385
|
export const propDocs = (symbol, checker, node, reading = {}) => {
|
|
346
|
-
const { taken,
|
|
347
|
-
const type = checker.getNonNullableType(taken?.type ?? checker.getTypeOfSymbolAtLocation(symbol, node));
|
|
386
|
+
const { taken, variants = [] } = reading;
|
|
348
387
|
const takenNodes = taken?.typeNode === undefined ? [] : [taken.typeNode];
|
|
349
|
-
const declared = taken === undefined ? declaredTypesOf
|
|
388
|
+
const declared = taken === undefined ? [symbol, ...variants].flatMap(declaredTypesOf) : takenNodes;
|
|
389
|
+
const { type, variantTypes, isMixed, kind, generic } = typeAndKind(symbol, reading, checker, node);
|
|
350
390
|
const name = symbol.getName();
|
|
351
|
-
const kind = kindOf(name, type, eventName);
|
|
352
391
|
const defaultValue = tagOf(symbol, checker, "defaultValue");
|
|
353
|
-
const
|
|
354
|
-
|
|
355
|
-
const signature = kind === "event"
|
|
392
|
+
const choices = choicesOf(kind, [type, ...variantTypes], declared, checker);
|
|
393
|
+
// what one variant's type says of its values is not true of the others'
|
|
394
|
+
const signature = kind === "event" && !isMixed
|
|
395
|
+
? (writtenSignature(declared, generic) ?? signatureOf(type, checker, node))
|
|
396
|
+
: undefined;
|
|
356
397
|
// a node takes a text: the panel can set it as one, which covers labels, titles and children
|
|
357
|
-
const canTakeText = kind === "other" &&
|
|
398
|
+
const canTakeText = kind === "other" &&
|
|
399
|
+
[type, ...variantTypes].every((each) => checker.isTypeAssignableTo(checker.getStringType(), each));
|
|
400
|
+
const notes = propTypeNotes(declared, type, checker, generic);
|
|
358
401
|
return {
|
|
359
402
|
name,
|
|
360
403
|
kind,
|
|
361
404
|
type: choices === undefined
|
|
362
|
-
? (
|
|
405
|
+
? (writtenText(declared, generic, checker) ?? checker.typeToString(type))
|
|
363
406
|
: choiceTypeText(choices),
|
|
364
407
|
description: summaryOf(symbol, checker),
|
|
365
408
|
isRequired: (symbol.flags & ts.SymbolFlags.Optional) === 0,
|
|
@@ -367,7 +410,36 @@ export const propDocs = (symbol, checker, node, reading = {}) => {
|
|
|
367
410
|
...(choices === undefined ? {} : { choices }),
|
|
368
411
|
...(signature === undefined ? {} : { signature }),
|
|
369
412
|
...(canTakeText ? { canTakeText } : {}),
|
|
370
|
-
...
|
|
413
|
+
...(isMixed
|
|
414
|
+
? {}
|
|
415
|
+
: {
|
|
416
|
+
...editingOf(symbol, { kind, type, canTakeText, declared, checker, node }),
|
|
417
|
+
...groupingOf(symbol, kind, type, checker, node)
|
|
418
|
+
}),
|
|
419
|
+
...(notes.length === 0 ? {} : { notes })
|
|
420
|
+
};
|
|
421
|
+
};
|
|
422
|
+
/**
|
|
423
|
+
* How a prop's value is edited, beyond its kind: what it looks like, and the tokens its TSDoc asks for.
|
|
424
|
+
*
|
|
425
|
+
* @param symbol - the prop.
|
|
426
|
+
* @param prop - what is known of it.
|
|
427
|
+
*/
|
|
428
|
+
const editingOf = (symbol, prop) => {
|
|
429
|
+
const { kind, type, canTakeText, declared, checker, node } = prop;
|
|
430
|
+
const shape = kind === "other"
|
|
431
|
+
? shapeOfProp(type, canTakeText, {
|
|
432
|
+
checker,
|
|
433
|
+
node,
|
|
434
|
+
order: writtenOrderOf(declared, checker),
|
|
435
|
+
typeText: (member) => writtenTypeText(declaredTypesOf(member)),
|
|
436
|
+
description: (member) => summaryOf(member, checker)
|
|
437
|
+
})
|
|
438
|
+
: undefined;
|
|
439
|
+
const token = tagOf(symbol, checker, "token");
|
|
440
|
+
return {
|
|
441
|
+
...(shape === undefined ? {} : { shape }),
|
|
442
|
+
...(token === undefined || token === "" ? {} : { token })
|
|
371
443
|
};
|
|
372
444
|
};
|
|
373
445
|
/** The props whose keys are the component's parts. */
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A prop's kind (the panel's group and control) and the type it is read from: a choice, a text, a number, a toggle, an
|
|
3
|
+
* event or anything else, across the variants of a union of props that declare it and through a generic's type
|
|
4
|
+
* parameters. Used by `propDocs.ts`.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
import ts from "typescript-6";
|
|
9
|
+
import type { PropKind } from "../componentDocs.ts";
|
|
10
|
+
import type { PropReading } from "./propDocs.ts";
|
|
11
|
+
import { type Generics } from "./typeParameters.ts";
|
|
12
|
+
/** Whether a type is a union of string or number literals (a choice). */
|
|
13
|
+
export declare const literalValues: (type: ts.Type) => (string | number)[] | undefined;
|
|
14
|
+
/** A prop's kind, from its name and its type without `undefined`. */
|
|
15
|
+
export declare const kindOf: (name: string, type: ts.Type, eventName: RegExp) => PropKind;
|
|
16
|
+
/** A prop's type and kind, read across the variants of a union of props that declare it. */
|
|
17
|
+
export type TypeAndKind = {
|
|
18
|
+
/** Its type, without `undefined`: what a type parameter is shown as, for a prop typed by one. */
|
|
19
|
+
readonly type: ts.Type;
|
|
20
|
+
/** Its type in each other variant that declares it. */
|
|
21
|
+
readonly variantTypes: readonly ts.Type[];
|
|
22
|
+
/** Whether those variants type it otherwise. */
|
|
23
|
+
readonly isMixed: boolean;
|
|
24
|
+
/** Its kind, shared by every variant's type. */
|
|
25
|
+
readonly kind: PropKind;
|
|
26
|
+
/**
|
|
27
|
+
* The checker and the bindings when its type, as the component takes it, still holds a type parameter
|
|
28
|
+
* (`readonly TItem[]`): its text then replaces them. None otherwise.
|
|
29
|
+
*/
|
|
30
|
+
readonly generic: Generics | undefined;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* A prop's type and kind.
|
|
34
|
+
*
|
|
35
|
+
* @param symbol - the prop.
|
|
36
|
+
* @param reading - how the framework's props differ, and the other variants'.
|
|
37
|
+
* @param checker - the program's checker.
|
|
38
|
+
* @param node - where the code names the component.
|
|
39
|
+
*/
|
|
40
|
+
export declare const typeAndKind: (symbol: ts.Symbol, { taken, eventName, variants, bindings }: PropReading, checker: ts.TypeChecker, node: ts.Node) => TypeAndKind;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A prop's kind (the panel's group and control) and the type it is read from: a choice, a text, a number, a toggle, an
|
|
3
|
+
* event or anything else, across the variants of a union of props that declare it and through a generic's type
|
|
4
|
+
* parameters. Used by `propDocs.ts`.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
import ts from "typescript-6";
|
|
9
|
+
import { genericShownType, hasTypeParameter } from "./typeParameters.js";
|
|
10
|
+
/** No bindings: each type parameter is shown by its own constraint. */
|
|
11
|
+
const NO_BINDINGS = new Map();
|
|
12
|
+
/** An event: a function prop named `on` and a capital (React's `onPress`). */
|
|
13
|
+
const EVENT_NAME = /^on[A-Z]/;
|
|
14
|
+
/** Whether a type is a union of string or number literals (a choice). */
|
|
15
|
+
export const literalValues = (type) => {
|
|
16
|
+
if (!type.isUnion())
|
|
17
|
+
return undefined;
|
|
18
|
+
const values = type.types.map((member) => member.isStringLiteral() || member.isNumberLiteral() ? member.value : undefined);
|
|
19
|
+
return values.every((value) => value !== undefined)
|
|
20
|
+
? values.filter((value) => value !== undefined)
|
|
21
|
+
: undefined;
|
|
22
|
+
};
|
|
23
|
+
/** A prop's kind, from its name and its type without `undefined`. */
|
|
24
|
+
export const kindOf = (name, type, eventName) => {
|
|
25
|
+
if (eventName.test(name) && type.getCallSignatures().length > 0)
|
|
26
|
+
return "event";
|
|
27
|
+
if (type.flags & ts.TypeFlags.Boolean || type.flags & ts.TypeFlags.BooleanLiteral)
|
|
28
|
+
return "toggle";
|
|
29
|
+
if (literalValues(type) !== undefined)
|
|
30
|
+
return "choice";
|
|
31
|
+
if (type.flags & ts.TypeFlags.String)
|
|
32
|
+
return "text";
|
|
33
|
+
if (type.flags & ts.TypeFlags.Number)
|
|
34
|
+
return "number";
|
|
35
|
+
return "other";
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* A prop's kind across the variants that declare it: theirs when all share one, `other` otherwise.
|
|
39
|
+
*
|
|
40
|
+
* @param name - the prop's name.
|
|
41
|
+
* @param types - its type in each variant, without `undefined`.
|
|
42
|
+
* @param eventName - what an event's name is.
|
|
43
|
+
*/
|
|
44
|
+
const sharedKind = (name, types, eventName) => {
|
|
45
|
+
const kinds = new Set(types.map((type) => kindOf(name, type, eventName)));
|
|
46
|
+
const [only] = kinds;
|
|
47
|
+
return kinds.size === 1 && only !== undefined ? only : "other";
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* A prop's type and kind.
|
|
51
|
+
*
|
|
52
|
+
* @param symbol - the prop.
|
|
53
|
+
* @param reading - how the framework's props differ, and the other variants'.
|
|
54
|
+
* @param checker - the program's checker.
|
|
55
|
+
* @param node - where the code names the component.
|
|
56
|
+
*/
|
|
57
|
+
export const typeAndKind = (symbol, { taken, eventName = EVENT_NAME, variants = [], bindings }, checker, node) => {
|
|
58
|
+
const ownType = taken?.type ?? checker.getTypeOfSymbolAtLocation(symbol, node);
|
|
59
|
+
const isGeneric = hasTypeParameter(ownType, checker);
|
|
60
|
+
// a prop typed by a type parameter takes what that parameter is shown as: its kind and control follow from it
|
|
61
|
+
const shown = (each) => checker.getNonNullableType(genericShownType(each, checker) ?? each);
|
|
62
|
+
const type = shown(ownType);
|
|
63
|
+
const variantTypes = variants.map((variant) => shown(checker.getTypeOfSymbolAtLocation(variant, node)));
|
|
64
|
+
// two variants that write the same type have two of it: alike is what each accepts of the other
|
|
65
|
+
const isMixed = variantTypes.some((variantType) => !checker.isTypeAssignableTo(variantType, type) || !checker.isTypeAssignableTo(type, variantType));
|
|
66
|
+
const name = symbol.getName();
|
|
67
|
+
const kind = isMixed ? sharedKind(name, [type, ...variantTypes], eventName) : kindOf(name, type, eventName);
|
|
68
|
+
// a type parameter is replaced only where the component leaves it open: a props type it instantiates is read as is
|
|
69
|
+
const generic = isGeneric ? { checker, bindings: bindings ?? NO_BINDINGS } : undefined;
|
|
70
|
+
return { type, variantTypes, isMixed, kind, generic };
|
|
71
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a prop's type cannot say plainly: a generic's type parameter and what it is shown as (`typeParameters.ts`), a
|
|
3
|
+
* name the checker cannot find, an `any`. `propDocs` lists a note for each, so a reader sees why a type is not the one
|
|
4
|
+
* the source wrote, or why it says nothing.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
import ts from "typescript-6";
|
|
9
|
+
import type { PropTypeNote } from "../componentDocs.ts";
|
|
10
|
+
import { type DeclaredType, type Generics } from "./typeParameters.ts";
|
|
11
|
+
/**
|
|
12
|
+
* Why a prop's type is not the one its source writes, or says nothing: each generic type parameter and what it is
|
|
13
|
+
* shown as, each name the checker cannot find, and an `any` with neither.
|
|
14
|
+
*
|
|
15
|
+
* @param declared - the prop's declared types.
|
|
16
|
+
* @param type - the prop's type as the checker has it, without `undefined`.
|
|
17
|
+
* @param checker - the program's checker.
|
|
18
|
+
* @param generics - the checker and the bindings when the component leaves a type parameter of the prop's type open;
|
|
19
|
+
* none otherwise.
|
|
20
|
+
* @returns the notes, in source order, each once; empty when the type is read as written.
|
|
21
|
+
*/
|
|
22
|
+
export declare const propTypeNotes: (declared: readonly DeclaredType[], type: ts.Type, checker: ts.TypeChecker, generics: Generics | undefined) => PropTypeNote[];
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a prop's type cannot say plainly: a generic's type parameter and what it is shown as (`typeParameters.ts`), a
|
|
3
|
+
* name the checker cannot find, an `any`. `propDocs` lists a note for each, so a reader sees why a type is not the one
|
|
4
|
+
* the source wrote, or why it says nothing.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
import ts from "typescript-6";
|
|
9
|
+
import { genericNotes, referencesIn } from "./typeParameters.js";
|
|
10
|
+
/**
|
|
11
|
+
* Whether a type reference names something the checker cannot find: no symbol, or an import of nothing.
|
|
12
|
+
*
|
|
13
|
+
* @param reference - the reference.
|
|
14
|
+
* @param checker - the program's checker.
|
|
15
|
+
*/
|
|
16
|
+
const isUnresolved = (reference, checker) => {
|
|
17
|
+
const symbol = checker.getSymbolAtLocation(reference.typeName);
|
|
18
|
+
if (symbol === undefined)
|
|
19
|
+
return true;
|
|
20
|
+
const target = symbol.flags & ts.SymbolFlags.Alias ? checker.getAliasedSymbol(symbol) : symbol;
|
|
21
|
+
return (target.declarations ?? []).length === 0;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Why a prop's type is not the one its source writes, or says nothing: each generic type parameter and what it is
|
|
25
|
+
* shown as, each name the checker cannot find, and an `any` with neither.
|
|
26
|
+
*
|
|
27
|
+
* @param declared - the prop's declared types.
|
|
28
|
+
* @param type - the prop's type as the checker has it, without `undefined`.
|
|
29
|
+
* @param checker - the program's checker.
|
|
30
|
+
* @param generics - the checker and the bindings when the component leaves a type parameter of the prop's type open;
|
|
31
|
+
* none otherwise.
|
|
32
|
+
* @returns the notes, in source order, each once; empty when the type is read as written.
|
|
33
|
+
*/
|
|
34
|
+
export const propTypeNotes = (declared, type, checker, generics) => {
|
|
35
|
+
const notes = new Map();
|
|
36
|
+
for (const note of generics === undefined ? [] : genericNotes(declared, generics)) {
|
|
37
|
+
if (note.reason === "generic")
|
|
38
|
+
notes.set(`generic:${note.parameter}`, note);
|
|
39
|
+
}
|
|
40
|
+
for (const node of declared) {
|
|
41
|
+
for (const reference of referencesIn(node)) {
|
|
42
|
+
if (!isUnresolved(reference, checker))
|
|
43
|
+
continue;
|
|
44
|
+
const name = reference.typeName.getText();
|
|
45
|
+
notes.set(`unresolved:${name}`, { reason: "unresolved", name });
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (notes.size === 0 && type.flags & ts.TypeFlags.Any)
|
|
49
|
+
notes.set("any", { reason: "any" });
|
|
50
|
+
return [...notes.values()];
|
|
51
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** A published file, with the components it declares. */
|
|
2
|
+
export type PublishedFile = {
|
|
3
|
+
/** The file, absolute. */
|
|
4
|
+
readonly file: string;
|
|
5
|
+
/** The names it publishes them under, in the order they are first met. */
|
|
6
|
+
readonly names: readonly string[];
|
|
7
|
+
/** Whether one of them plainly takes props: a parameter, a type argument. */
|
|
8
|
+
readonly takesProps: boolean;
|
|
9
|
+
/** Whether one of them has a doc comment on its declaration, or the file a `@module` one. */
|
|
10
|
+
readonly hasComment: boolean;
|
|
11
|
+
};
|
|
12
|
+
/** What `publishedComponents` asks of the disk. */
|
|
13
|
+
export type ExportsDisk = {
|
|
14
|
+
/** A file's text; none when it does not exist. */
|
|
15
|
+
readonly readText: (file: string) => string | undefined;
|
|
16
|
+
/** The file a relative import names, from the file importing it; none when none is found or it is out of reach. */
|
|
17
|
+
readonly resolve: (specifier: string, from: string) => string | undefined;
|
|
18
|
+
/** Told of an import written through a project's alias, which this cannot follow. */
|
|
19
|
+
readonly onAlias?: (specifier: string, from: string) => void;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* The components some entries publish, one element per declaring file.
|
|
23
|
+
*
|
|
24
|
+
* @param entries - the entries' source files, absolute.
|
|
25
|
+
* @param disk - what is asked of the disk.
|
|
26
|
+
*/
|
|
27
|
+
export declare const publishedComponents: (entries: readonly string[], disk: ExportsDisk) => PublishedFile[];
|