forgebook 0.1.8 → 0.3.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 +987 -28
- package/dist/bin/forgebook/agentClient.d.ts +30 -1
- package/dist/bin/forgebook/agentClient.js +155 -14
- package/dist/bin/forgebook/agentLoopCommands.d.mts +0 -1
- package/dist/bin/forgebook/agentLoopCommands.mjs +164 -40
- package/dist/bin/forgebook/agentText.d.ts +76 -5
- package/dist/bin/forgebook/agentText.js +197 -11
- package/dist/bin/forgebook/agents.md +158 -9
- package/dist/bin/forgebook/agentsText.d.ts +7 -3
- package/dist/bin/forgebook/agentsText.js +7 -3
- package/dist/bin/forgebook/builtCatalogue.d.ts +31 -0
- package/dist/bin/forgebook/builtCatalogue.js +96 -0
- package/dist/bin/forgebook/catalogueCommands.d.ts +22 -3
- package/dist/bin/forgebook/catalogueCommands.js +21 -2
- package/dist/bin/forgebook/catalogueVite.d.ts +51 -9
- package/dist/bin/forgebook/catalogueVite.js +95 -9
- package/dist/bin/forgebook/checkCodeRun.d.ts +8 -0
- package/dist/bin/forgebook/checkCodeRun.js +27 -0
- package/dist/bin/forgebook/commandServer.d.ts +11 -0
- package/dist/bin/forgebook/commandServer.js +39 -0
- package/dist/bin/forgebook/compileCache.d.ts +7 -0
- package/dist/bin/forgebook/compileCache.js +24 -0
- package/dist/bin/forgebook/devCommands.d.mts +14 -0
- package/dist/bin/forgebook/devCommands.mjs +104 -0
- package/dist/bin/forgebook/errorsRun.d.ts +0 -1
- package/dist/bin/forgebook/errorsRun.js +0 -1
- package/dist/bin/forgebook/forgebook.d.mts +0 -1
- package/dist/bin/forgebook/forgebook.mjs +18 -302
- package/dist/bin/forgebook/forgebookCommands.d.mts +1 -0
- package/dist/bin/forgebook/forgebookCommands.mjs +292 -0
- package/dist/bin/forgebook/importers/storybook.d.ts +10 -4
- package/dist/bin/forgebook/importers/storybook.js +71 -45
- package/dist/bin/forgebook/importers/storybookAngular.d.ts +15 -0
- package/dist/bin/forgebook/importers/storybookAngular.js +97 -0
- package/dist/bin/forgebook/importers/storybookFrameworks.d.ts +53 -0
- package/dist/bin/forgebook/importers/storybookFrameworks.js +180 -0
- package/dist/bin/forgebook/importers/storybookReactNative.d.ts +40 -0
- package/dist/bin/forgebook/importers/storybookReactNative.js +179 -0
- package/dist/bin/forgebook/initCommands.d.mts +0 -1
- package/dist/bin/forgebook/initCommands.mjs +23 -12
- package/dist/bin/forgebook/initConfig.d.ts +0 -1
- package/dist/bin/forgebook/initConfig.js +17 -3
- package/dist/bin/forgebook/mcpCommand.d.mts +8 -0
- package/dist/bin/forgebook/mcpCommand.mjs +99 -0
- package/dist/bin/forgebook/mcpPreview.d.ts +32 -0
- package/dist/bin/forgebook/mcpPreview.js +107 -0
- package/dist/bin/forgebook/mcpToolParts.d.ts +28 -0
- package/dist/bin/forgebook/mcpToolParts.js +24 -0
- package/dist/bin/forgebook/mcpTools.d.ts +12 -6
- package/dist/bin/forgebook/mcpTools.js +148 -27
- package/dist/bin/forgebook/newStories.d.ts +2 -3
- package/dist/bin/forgebook/newStories.js +4 -3
- package/dist/bin/forgebook/newStoriesFile.d.ts +3 -4
- package/dist/bin/forgebook/newStoriesFile.js +30 -13
- package/dist/bin/forgebook/pageTools.d.ts +8 -0
- package/dist/bin/forgebook/pageTools.js +71 -0
- package/dist/bin/forgebook/pagesCommands.d.mts +14 -0
- package/dist/bin/forgebook/pagesCommands.mjs +109 -0
- package/dist/bin/forgebook/prebundleChild.d.ts +1 -0
- package/dist/bin/forgebook/prebundleChild.js +34 -0
- package/dist/bin/forgebook/prebundleRun.d.ts +22 -0
- package/dist/bin/forgebook/prebundleRun.js +49 -0
- package/dist/bin/forgebook/prebundleStart.d.ts +44 -0
- package/dist/bin/forgebook/prebundleStart.js +82 -0
- package/dist/bin/forgebook/semanticOptions.d.ts +45 -0
- package/dist/bin/forgebook/semanticOptions.js +36 -0
- package/dist/bin/forgebook/storyCheckCommands.d.mts +13 -0
- package/dist/bin/forgebook/storyCheckCommands.mjs +69 -0
- package/dist/bin/forgebook/storyCheckRun.d.ts +40 -6
- package/dist/bin/forgebook/storyCheckRun.js +90 -17
- package/dist/bin/forgebook/tokensRun.d.ts +41 -0
- package/dist/bin/forgebook/tokensRun.js +42 -0
- package/dist/bin/forgebook/touchWindowRun.d.ts +0 -1
- package/dist/bin/forgebook/touchWindowRun.js +0 -1
- package/dist/bin/forgebook/visualCommands.d.mts +37 -0
- package/dist/bin/forgebook/visualCommands.mjs +162 -0
- package/dist/bin/forgebook/viteCache.d.ts +48 -0
- package/dist/bin/forgebook/viteCache.js +112 -0
- package/dist/bin/forgebook-docs/catalogueDocs.d.ts +1 -2
- package/dist/bin/forgebook-docs/catalogueDocs.js +8 -5
- package/dist/bin/forgebook-docs/catalogueDocs.types.d.ts +22 -3
- package/dist/bin/forgebook-docs/catalogueDocs.types.js +0 -1
- package/dist/bin/forgebook-docs/catalogueMarkdown.d.ts +0 -1
- package/dist/bin/forgebook-docs/catalogueMarkdown.js +67 -19
- package/dist/bin/forgebook-docs/catalogueOptions.d.ts +1 -2
- package/dist/bin/forgebook-docs/catalogueOptions.js +8 -2
- package/dist/bin/forgebook-docs/collectDocs.d.ts +4 -4
- package/dist/bin/forgebook-docs/collectDocs.js +122 -30
- package/dist/bin/forgebook-docs/forgebook-docs.d.mts +0 -1
- package/dist/bin/forgebook-docs/forgebook-docs.mjs +0 -1
- package/dist/bin/forgebook-docs/llmsText.d.ts +5 -1
- package/dist/bin/forgebook-docs/llmsText.js +5 -2
- package/dist/bin/forgebook-docs/moduleDocs.d.ts +0 -1
- package/dist/bin/forgebook-docs/moduleDocs.js +0 -1
- package/dist/bin/forgebook-docs/sassDocs.d.ts +0 -1
- package/dist/bin/forgebook-docs/sassDocs.js +0 -1
- package/dist/bin/forgebook-texts/forgebook-texts.d.mts +0 -1
- package/dist/bin/forgebook-texts/forgebook-texts.mjs +1 -2
- package/dist/bin/forgebook-texts/storyTextsReport.d.ts +0 -1
- package/dist/bin/forgebook-texts/storyTextsReport.js +0 -1
- package/dist/bin/forgebook-texts/storyTextsReport.types.d.ts +0 -1
- package/dist/bin/forgebook-texts/storyTextsReport.types.js +0 -1
- package/dist/bin/frameworkDocs.d.ts +0 -1
- package/dist/bin/frameworkDocs.js +0 -1
- package/dist/src/a11y.d.ts +0 -1
- package/dist/src/a11y.js +0 -1
- package/dist/src/addressArgs.d.ts +74 -0
- package/dist/src/addressArgs.js +109 -0
- package/dist/src/addressTexts.d.ts +35 -0
- package/dist/src/addressTexts.js +51 -0
- package/dist/src/argTypes.d.ts +0 -1
- package/dist/src/argTypes.js +2 -2
- package/dist/src/argsProps.d.ts +32 -0
- package/dist/src/argsProps.js +69 -0
- package/dist/src/audiences.d.ts +17 -0
- package/dist/src/audiences.js +15 -0
- package/dist/src/backdrops.d.ts +39 -40
- package/dist/src/backdrops.js +37 -174
- package/dist/src/catalogue.d.ts +103 -24
- package/dist/src/catalogue.js +78 -20
- package/dist/src/codeLiteral.d.ts +41 -0
- package/dist/src/codeLiteral.js +51 -0
- package/dist/src/componentDocs.d.ts +57 -1
- package/dist/src/componentDocs.js +20 -3
- package/dist/src/controlKeys.d.ts +0 -1
- package/dist/src/controlKeys.js +0 -1
- package/dist/src/deviceDrawing.d.ts +114 -0
- package/dist/src/deviceDrawing.js +358 -0
- package/dist/src/deviceMenuView.d.ts +17 -0
- package/dist/src/deviceMenuView.js +22 -0
- package/dist/src/devicePicture.d.ts +57 -0
- package/dist/src/devicePicture.js +104 -0
- package/dist/src/deviceView.d.ts +172 -0
- package/dist/src/deviceView.js +111 -0
- package/dist/src/devices.d.ts +115 -0
- package/dist/src/devices.js +135 -0
- package/dist/src/docAnchors.d.ts +27 -0
- package/dist/src/docAnchors.js +33 -0
- package/dist/src/docPages.d.ts +203 -0
- package/dist/src/docPages.js +169 -0
- package/dist/src/embed.d.ts +32 -0
- package/dist/src/embed.js +24 -0
- package/dist/src/embedCode.d.ts +31 -0
- package/dist/src/embedCode.js +88 -0
- package/dist/src/frame/backdropPictures.d.ts +29 -0
- package/dist/src/frame/backdropPictures.js +187 -0
- package/dist/src/frame/checkStory.d.ts +6 -3
- package/dist/src/frame/checkStory.js +76 -5
- package/dist/src/frame/followTouch.d.ts +9 -0
- package/dist/src/frame/followTouch.js +43 -0
- package/dist/src/frame/frame.css +8 -3
- package/dist/src/frame/frameClock.d.ts +0 -1
- package/dist/src/frame/frameClock.js +0 -1
- package/dist/src/frame/frameStatus.d.ts +2 -1
- package/dist/src/frame/frameStatus.js +2 -1
- package/dist/src/frame/frameView.d.ts +0 -1
- package/dist/src/frame/frameView.js +1 -2
- package/dist/src/frame/matrixLayout.d.ts +0 -1
- package/dist/src/frame/matrixLayout.js +0 -1
- package/dist/src/frame/measureTools.d.ts +0 -1
- package/dist/src/frame/measureTools.js +0 -1
- package/dist/src/frame/mountFrame.d.ts +10 -3
- package/dist/src/frame/mountFrame.js +184 -66
- package/dist/src/frame/playStory.d.ts +0 -1
- package/dist/src/frame/playStory.js +0 -1
- package/dist/src/frame/pluginFrames.d.ts +31 -0
- package/dist/src/frame/pluginFrames.js +23 -0
- package/dist/src/frame/renderer.d.ts +50 -12
- package/dist/src/frame/renderer.js +27 -6
- package/dist/src/frame/settle.d.ts +0 -1
- package/dist/src/frame/settle.js +0 -1
- package/dist/src/frame/shellChannel.d.ts +47 -0
- package/dist/src/frame/shellChannel.js +39 -0
- package/dist/src/frame/spillOutline.d.ts +0 -1
- package/dist/src/frame/spillOutline.js +0 -1
- package/dist/src/frame/staleModule.d.ts +14 -2
- package/dist/src/frame/staleModule.js +19 -2
- package/dist/src/frame/storyCanvas.d.ts +0 -1
- package/dist/src/frame/storyCanvas.js +0 -1
- package/dist/src/frame/storyHooks.d.ts +0 -1
- package/dist/src/frame/storyHooks.js +0 -1
- package/dist/src/frame/storyModule.d.ts +13 -2
- package/dist/src/frame/storyModule.js +45 -3
- package/dist/src/frame/storyRun.d.ts +21 -4
- package/dist/src/frame/storyRun.js +100 -19
- package/dist/src/frame/touchCaret.d.ts +43 -0
- package/dist/src/frame/touchCaret.js +195 -0
- package/dist/src/frame/touchDots.d.ts +0 -1
- package/dist/src/frame/touchDots.js +0 -1
- package/dist/src/frame/touchEvents.d.ts +3 -3
- package/dist/src/frame/touchEvents.js +17 -19
- package/dist/src/frame/touchGesture.d.ts +0 -1
- package/dist/src/frame/touchGesture.js +0 -1
- package/dist/src/frame/touchLayer.d.ts +3 -3
- package/dist/src/frame/touchLayer.js +52 -37
- package/dist/src/frame/touchScroll.d.ts +0 -1
- package/dist/src/frame/touchScroll.js +0 -1
- package/dist/src/frameOrigins.d.ts +62 -0
- package/dist/src/frameOrigins.js +49 -0
- package/dist/src/hotModules.d.ts +48 -0
- package/dist/src/hotModules.js +53 -0
- package/dist/src/jsxCode.d.ts +22 -0
- package/dist/src/jsxCode.js +36 -0
- package/dist/src/languages.d.ts +0 -1
- package/dist/src/languages.js +0 -1
- package/dist/src/liveErrors.d.ts +0 -1
- package/dist/src/liveErrors.js +0 -1
- package/dist/src/matrix.d.ts +0 -1
- package/dist/src/matrix.js +0 -1
- package/dist/src/messages.d.ts +28 -2
- package/dist/src/messages.js +24 -3
- package/dist/src/namedValues.d.ts +11 -1
- package/dist/src/namedValues.js +25 -2
- package/dist/src/namedViews.d.ts +1 -13
- package/dist/src/namedViews.js +30 -7
- package/dist/src/packedText.d.ts +21 -0
- package/dist/src/packedText.js +36 -0
- package/dist/src/pageAddress.d.ts +26 -0
- package/dist/src/pageAddress.js +39 -0
- package/dist/src/pageConfig.d.ts +3 -1
- package/dist/src/pageConfig.js +0 -1
- package/dist/src/pageTree.d.ts +79 -0
- package/dist/src/pageTree.js +108 -0
- package/dist/src/playTrace.d.ts +0 -1
- package/dist/src/playTrace.js +0 -1
- package/dist/src/plugin.d.ts +230 -0
- package/dist/src/plugin.js +12 -0
- package/dist/src/pluginReact.d.ts +23 -0
- package/dist/src/pluginReact.js +24 -0
- package/dist/src/previewRelay.d.ts +40 -0
- package/dist/src/previewRelay.js +69 -0
- package/dist/src/previewTexts.d.ts +26 -0
- package/dist/src/previewTexts.js +33 -0
- package/dist/src/previewView.d.ts +31 -0
- package/dist/src/previewView.js +264 -0
- package/dist/src/propGroups.d.ts +109 -0
- package/dist/src/propGroups.js +113 -0
- package/dist/src/realTouch.d.ts +1 -2
- package/dist/src/realTouch.js +1 -2
- package/dist/src/safeAreaParameter.d.ts +42 -0
- package/dist/src/safeAreaParameter.js +50 -0
- package/dist/src/search.d.ts +154 -0
- package/dist/src/search.js +265 -0
- package/dist/src/searchIndex.d.ts +61 -0
- package/dist/src/searchIndex.js +55 -0
- package/dist/src/searchMarks.d.ts +29 -0
- package/dist/src/searchMarks.js +165 -0
- package/dist/src/searchMatch.d.ts +58 -0
- package/dist/src/searchMatch.js +127 -0
- package/dist/src/shell/A11yTab.d.ts +0 -7
- package/dist/src/shell/A11yTab.js +4 -15
- package/dist/src/shell/AnchorScroll.d.ts +25 -0
- package/dist/src/shell/AnchorScroll.js +10 -0
- package/dist/src/shell/ApiReference.d.ts +16 -4
- package/dist/src/shell/ApiReference.js +82 -20
- package/dist/src/shell/AppearanceMenu.d.ts +1 -2
- package/dist/src/shell/AppearanceMenu.js +8 -5
- package/dist/src/shell/AudienceSections.d.ts +106 -0
- package/dist/src/shell/AudienceSections.js +154 -0
- package/dist/src/shell/AuthoredHome.d.ts +37 -0
- package/dist/src/shell/AuthoredHome.js +96 -0
- package/dist/src/shell/BoxWidth.d.ts +0 -1
- package/dist/src/shell/BoxWidth.js +0 -1
- package/dist/src/shell/ClockBar.d.ts +19 -0
- package/dist/src/shell/ClockBar.js +15 -0
- package/dist/src/shell/ClockControls.d.ts +5 -9
- package/dist/src/shell/ClockControls.js +13 -16
- package/dist/src/shell/Code.d.ts +0 -1
- package/dist/src/shell/Code.js +0 -1
- package/dist/src/shell/CodeTab.d.ts +0 -1
- package/dist/src/shell/CodeTab.js +2 -2
- package/dist/src/shell/CodeText.d.ts +0 -1
- package/dist/src/shell/CodeText.js +0 -1
- package/dist/src/shell/CompareGrid.d.ts +37 -0
- package/dist/src/shell/CompareGrid.js +24 -0
- package/dist/src/shell/ComponentPage.d.ts +48 -7
- package/dist/src/shell/ComponentPage.js +101 -59
- package/dist/src/shell/ControlKeyField.d.ts +0 -1
- package/dist/src/shell/ControlKeyField.js +3 -4
- package/dist/src/shell/ControlRow.d.ts +4 -4
- package/dist/src/shell/ControlRow.js +5 -5
- package/dist/src/shell/DeviceControl.d.ts +31 -0
- package/dist/src/shell/DeviceControl.js +33 -0
- package/dist/src/shell/DeviceSlot.d.ts +114 -0
- package/dist/src/shell/DeviceSlot.js +134 -0
- package/dist/src/shell/DocBlocks.d.ts +100 -0
- package/dist/src/shell/DocBlocks.js +206 -0
- package/dist/src/shell/DocContainers.d.ts +70 -0
- package/dist/src/shell/DocContainers.js +94 -0
- package/dist/src/shell/DocContents.d.ts +29 -0
- package/dist/src/shell/DocContents.js +88 -0
- package/dist/src/shell/DocPage.d.ts +69 -0
- package/dist/src/shell/DocPage.js +141 -0
- package/dist/src/shell/Dock.d.ts +1 -2
- package/dist/src/shell/Dock.js +1 -2
- package/dist/src/shell/DroppedArgsList.d.ts +26 -0
- package/dist/src/shell/DroppedArgsList.js +8 -0
- package/dist/src/shell/DroppedArgsNote.d.ts +14 -0
- package/dist/src/shell/DroppedArgsNote.js +10 -0
- package/dist/src/shell/EmbedButton.d.ts +19 -0
- package/dist/src/shell/EmbedButton.js +96 -0
- package/dist/src/shell/EmbedPage.d.ts +23 -0
- package/dist/src/shell/EmbedPage.js +168 -0
- package/dist/src/shell/EmbedPanel.d.ts +25 -0
- package/dist/src/shell/EmbedPanel.js +46 -0
- package/dist/src/shell/EventsTab.d.ts +0 -1
- package/dist/src/shell/EventsTab.js +2 -3
- package/dist/src/shell/Example.d.ts +20 -2
- package/dist/src/shell/Example.js +75 -22
- package/dist/src/shell/FrameView.d.ts +1 -2
- package/dist/src/shell/FrameView.js +4 -4
- package/dist/src/shell/HomePage.d.ts +78 -4
- package/dist/src/shell/HomePage.js +53 -14
- package/dist/src/shell/HomePieces.d.ts +40 -0
- package/dist/src/shell/HomePieces.js +29 -0
- package/dist/src/shell/InfoTip.d.ts +0 -1
- package/dist/src/shell/InfoTip.js +0 -1
- package/dist/src/shell/InteractionsTab.d.ts +0 -7
- package/dist/src/shell/InteractionsTab.js +3 -9
- package/dist/src/shell/LazyHost.d.ts +16 -0
- package/dist/src/shell/LazyHost.js +42 -0
- package/dist/src/shell/LazyPage.d.ts +24 -0
- package/dist/src/shell/LazyPage.js +9 -0
- package/dist/src/shell/LogicMark.d.ts +0 -1
- package/dist/src/shell/LogicMark.js +0 -1
- package/dist/src/shell/MatrixPicker.d.ts +0 -1
- package/dist/src/shell/MatrixPicker.js +0 -1
- package/dist/src/shell/NamedViews.d.ts +0 -1
- package/dist/src/shell/NamedViews.js +4 -5
- package/dist/src/shell/PackageHtml.d.ts +0 -1
- package/dist/src/shell/PackageHtml.js +0 -1
- package/dist/src/shell/PartsTab.d.ts +0 -7
- package/dist/src/shell/PartsTab.js +3 -13
- package/dist/src/shell/PinnedControl.d.ts +0 -1
- package/dist/src/shell/PinnedControl.js +2 -2
- package/dist/src/shell/PluginBlockHost.d.ts +46 -0
- package/dist/src/shell/PluginBlockHost.js +39 -0
- package/dist/src/shell/PluginTabHost.d.ts +32 -0
- package/dist/src/shell/PluginTabHost.js +25 -0
- package/dist/src/shell/PluginViewHost.d.ts +37 -0
- package/dist/src/shell/PluginViewHost.js +89 -0
- package/dist/src/shell/PropFields.d.ts +0 -1
- package/dist/src/shell/PropFields.js +0 -1
- package/dist/src/shell/PropRows.d.ts +42 -0
- package/dist/src/shell/PropRows.js +60 -0
- package/dist/src/shell/PropsTab.d.ts +24 -11
- package/dist/src/shell/PropsTab.js +31 -45
- package/dist/src/shell/RequiredFirstSwitch.d.ts +16 -0
- package/dist/src/shell/RequiredFirstSwitch.js +8 -0
- package/dist/src/shell/SearchPanel.d.ts +63 -0
- package/dist/src/shell/SearchPanel.js +209 -0
- package/dist/src/shell/Segmented.d.ts +0 -1
- package/dist/src/shell/Segmented.js +0 -1
- package/dist/src/shell/Shell.d.ts +34 -6
- package/dist/src/shell/Shell.js +271 -70
- package/dist/src/shell/Sidebar.d.ts +20 -5
- package/dist/src/shell/Sidebar.js +23 -56
- package/dist/src/shell/SidebarDocs.d.ts +38 -0
- package/dist/src/shell/SidebarDocs.js +30 -0
- package/dist/src/shell/SidebarEntries.d.ts +9 -1
- package/dist/src/shell/SidebarEntries.js +1 -2
- package/dist/src/shell/SidebarHandle.d.ts +0 -1
- package/dist/src/shell/SidebarHandle.js +0 -1
- package/dist/src/shell/SidebarSearch.d.ts +40 -0
- package/dist/src/shell/SidebarSearch.js +85 -0
- package/dist/src/shell/SignatureReference.d.ts +0 -1
- package/dist/src/shell/SignatureReference.js +1 -2
- package/dist/src/shell/Stage.d.ts +9 -4
- package/dist/src/shell/Stage.js +116 -75
- package/dist/src/shell/StageCompare.d.ts +14 -0
- package/dist/src/shell/StageCompare.js +11 -0
- package/dist/src/shell/StageTools.d.ts +0 -1
- package/dist/src/shell/StageTools.js +0 -1
- package/dist/src/shell/StageViewport.d.ts +7 -3
- package/dist/src/shell/StageViewport.js +4 -5
- package/dist/src/shell/StoryBar.d.ts +40 -0
- package/dist/src/shell/StoryBar.js +23 -0
- package/dist/src/shell/StoryCodeBlock.d.ts +1 -2
- package/dist/src/shell/StoryCodeBlock.js +0 -1
- package/dist/src/shell/StoryCoverage.d.ts +36 -0
- package/dist/src/shell/StoryCoverage.js +129 -0
- package/dist/src/shell/StoryPicker.d.ts +0 -1
- package/dist/src/shell/StoryPicker.js +0 -1
- package/dist/src/shell/Toolbar.d.ts +7 -3
- package/dist/src/shell/Toolbar.js +6 -6
- package/dist/src/shell/ToolbarControl.d.ts +6 -8
- package/dist/src/shell/ToolbarControl.js +28 -20
- package/dist/src/shell/UsedIn.d.ts +5 -6
- package/dist/src/shell/UsedIn.js +7 -20
- package/dist/src/shell/ViewMenu.d.ts +7 -7
- package/dist/src/shell/ViewMenu.js +61 -176
- package/dist/src/shell/ViewMenuPanel.d.ts +41 -0
- package/dist/src/shell/ViewMenuPanel.js +199 -0
- package/dist/src/shell/WidthField.d.ts +3 -2
- package/dist/src/shell/WidthField.js +2 -3
- package/dist/src/shell/asideStory.d.ts +34 -0
- package/dist/src/shell/asideStory.js +55 -0
- package/dist/src/shell/audienceLayout.d.ts +39 -0
- package/dist/src/shell/audienceLayout.js +33 -0
- package/dist/src/shell/audiencePage.d.ts +113 -0
- package/dist/src/shell/audiencePage.js +144 -0
- package/dist/src/shell/audienceSections.css +95 -0
- package/dist/src/shell/catalogueContext.d.ts +24 -2
- package/dist/src/shell/catalogueContext.js +12 -9
- package/dist/src/shell/codeTokens.d.ts +0 -1
- package/dist/src/shell/codeTokens.js +0 -1
- package/dist/src/shell/codeWriter.d.ts +0 -1
- package/dist/src/shell/codeWriter.js +0 -1
- package/dist/src/shell/compareVariants.d.ts +0 -1
- package/dist/src/shell/compareVariants.js +2 -2
- package/dist/src/shell/controlCycle.d.ts +0 -1
- package/dist/src/shell/controlCycle.js +13 -1
- package/dist/src/shell/controlLabel.d.ts +7 -0
- package/dist/src/shell/controlLabel.js +17 -0
- package/dist/src/shell/device/deviceFrame.css +42 -0
- package/dist/src/shell/device/deviceParts.d.ts +90 -0
- package/dist/src/shell/device/deviceParts.js +120 -0
- package/dist/src/shell/docPage.css +457 -0
- package/dist/src/shell/dockTabs.d.ts +20 -10
- package/dist/src/shell/dockTabs.js +42 -20
- package/dist/src/shell/embed.css +74 -0
- package/dist/src/shell/filesCode.d.ts +21 -0
- package/dist/src/shell/filesCode.js +37 -0
- package/dist/src/shell/forgebookMark.d.ts +15 -0
- package/dist/src/shell/forgebookMark.js +28 -0
- package/dist/src/shell/framesOrigin.d.ts +23 -0
- package/dist/src/shell/framesOrigin.js +69 -0
- package/dist/src/shell/icons.d.ts +3 -1
- package/dist/src/shell/icons.js +3 -1
- package/dist/src/shell/keyboard.d.ts +0 -1
- package/dist/src/shell/keyboard.js +0 -1
- package/dist/src/shell/laterStrings.d.ts +91 -0
- package/dist/src/shell/laterStrings.js +102 -0
- package/dist/src/shell/lazyModule.d.ts +49 -0
- package/dist/src/shell/lazyModule.js +72 -0
- package/dist/src/shell/lazyTab.d.ts +21 -0
- package/dist/src/shell/lazyTab.js +9 -0
- package/dist/src/shell/logicView.d.ts +0 -12
- package/dist/src/shell/logicView.js +2 -2
- package/dist/src/shell/mountShell.d.ts +5 -3
- package/dist/src/shell/mountShell.js +43 -12
- package/dist/src/shell/pageStrings.d.ts +24 -0
- package/dist/src/shell/pageStrings.js +26 -0
- package/dist/src/shell/pluginHosts.d.ts +9 -0
- package/dist/src/shell/pluginHosts.js +6 -0
- package/dist/src/shell/pluginHostsContext.d.ts +20 -0
- package/dist/src/shell/pluginHostsContext.js +16 -0
- package/dist/src/shell/pluginTabs.d.ts +63 -0
- package/dist/src/shell/pluginTabs.js +60 -0
- package/dist/src/shell/reportedPanel.d.ts +12 -0
- package/dist/src/shell/reportedPanel.js +19 -0
- package/dist/src/shell/search.css +172 -0
- package/dist/src/shell/searchStrings.d.ts +24 -0
- package/dist/src/shell/searchStrings.js +31 -0
- package/dist/src/shell/shell.css +341 -140
- package/dist/src/shell/shellScheme.d.ts +37 -0
- package/dist/src/shell/shellScheme.js +32 -0
- package/dist/src/shell/storyTouch.d.ts +19 -6
- package/dist/src/shell/storyTouch.js +26 -4
- package/dist/src/shell/strings.d.ts +58 -80
- package/dist/src/shell/strings.js +55 -78
- package/dist/src/shell/switchView.d.ts +0 -1
- package/dist/src/shell/switchView.js +0 -1
- package/dist/src/shell/tabSummaries.d.ts +31 -0
- package/dist/src/shell/tabSummaries.js +27 -0
- package/dist/src/shell/treeSearch.d.ts +39 -3
- package/dist/src/shell/treeSearch.js +27 -1
- package/dist/src/shell/useAddressArgs.d.ts +55 -0
- package/dist/src/shell/useAddressArgs.js +62 -0
- package/dist/src/shell/useAnchorScroll.d.ts +24 -0
- package/dist/src/shell/useAnchorScroll.js +90 -0
- package/dist/src/shell/useAppearance.d.ts +7 -2
- package/dist/src/shell/useAppearance.js +14 -5
- package/dist/src/shell/useComponentDocs.d.ts +0 -1
- package/dist/src/shell/useComponentDocs.js +0 -1
- package/dist/src/shell/useControlKeys.d.ts +2 -1
- package/dist/src/shell/useControlKeys.js +2 -3
- package/dist/src/shell/useCopy.d.ts +2 -1
- package/dist/src/shell/useCopy.js +11 -6
- package/dist/src/shell/useFold.d.ts +0 -1
- package/dist/src/shell/useFold.js +0 -1
- package/dist/src/shell/useFrameMessages.d.ts +19 -4
- package/dist/src/shell/useFrameMessages.js +23 -7
- package/dist/src/shell/useFrameQueue.d.ts +7 -3
- package/dist/src/shell/useFrameQueue.js +39 -22
- package/dist/src/shell/useFullPage.d.ts +0 -1
- package/dist/src/shell/useFullPage.js +0 -1
- package/dist/src/shell/useLiveView.d.ts +0 -1
- package/dist/src/shell/useLiveView.js +0 -1
- package/dist/src/shell/useLoaded.d.ts +1 -2
- package/dist/src/shell/useLoaded.js +28 -6
- package/dist/src/shell/usePageDoc.d.ts +0 -1
- package/dist/src/shell/usePageDoc.js +0 -1
- package/dist/src/shell/usePageFrames.d.ts +46 -0
- package/dist/src/shell/usePageFrames.js +50 -0
- package/dist/src/shell/usePanelDocs.d.ts +11 -0
- package/dist/src/shell/usePanelDocs.js +29 -0
- package/dist/src/shell/usePluginTabs.d.ts +18 -0
- package/dist/src/shell/usePluginTabs.js +45 -0
- package/dist/src/shell/usePopover.d.ts +0 -1
- package/dist/src/shell/usePopover.js +0 -1
- package/dist/src/shell/useProseLinks.d.ts +14 -0
- package/dist/src/shell/useProseLinks.js +30 -0
- package/dist/src/shell/useRecentPages.d.ts +3 -4
- package/dist/src/shell/useRecentPages.js +1 -2
- package/dist/src/shell/useRequiredFirst.d.ts +27 -0
- package/dist/src/shell/useRequiredFirst.js +67 -0
- package/dist/src/shell/useScrollMemory.d.ts +9 -1
- package/dist/src/shell/useScrollMemory.js +2 -3
- package/dist/src/shell/useSearchIndex.d.ts +24 -0
- package/dist/src/shell/useSearchIndex.js +51 -0
- package/dist/src/shell/useShownView.d.ts +3 -1
- package/dist/src/shell/useShownView.js +5 -5
- package/dist/src/shell/useSidebarLayout.d.ts +0 -1
- package/dist/src/shell/useSidebarLayout.js +0 -1
- package/dist/src/shell/useStored.d.ts +13 -1
- package/dist/src/shell/useStored.js +13 -5
- package/dist/src/shell/useStoryCheck.d.ts +20 -0
- package/dist/src/shell/useStoryCheck.js +33 -0
- package/dist/src/shell/useStoryCode.d.ts +0 -1
- package/dist/src/shell/useStoryCode.js +0 -1
- package/dist/src/shell/useStoryHeights.d.ts +0 -1
- package/dist/src/shell/useStoryHeights.js +0 -1
- package/dist/src/shell/useStoryIdsElement.d.ts +0 -1
- package/dist/src/shell/useStoryIdsElement.js +0 -1
- package/dist/src/shell/useStoryKeys.d.ts +0 -1
- package/dist/src/shell/useStoryKeys.js +0 -1
- package/dist/src/shell/useSyncedTab.d.ts +8 -0
- package/dist/src/shell/useSyncedTab.js +60 -0
- package/dist/src/shell/useSystemDark.d.ts +0 -1
- package/dist/src/shell/useSystemDark.js +0 -1
- package/dist/src/shell/useToolbarLayout.d.ts +0 -1
- package/dist/src/shell/useToolbarLayout.js +0 -1
- package/dist/src/shell/useToolbarOverflow.d.ts +0 -1
- package/dist/src/shell/useToolbarOverflow.js +0 -1
- package/dist/src/shell/useWorstCase.d.ts +0 -1
- package/dist/src/shell/useWorstCase.js +2 -2
- package/dist/src/shell/worstArgs.d.ts +0 -1
- package/dist/src/shell/worstArgs.js +0 -1
- package/dist/src/shellTheme.d.ts +64 -0
- package/dist/src/shellTheme.js +274 -0
- package/dist/src/shellTheme.types.d.ts +93 -0
- package/dist/src/shellTheme.types.js +10 -0
- package/dist/src/sourceFiles.d.ts +17 -3
- package/dist/src/sourceFiles.js +27 -1
- package/dist/src/spills.d.ts +0 -1
- package/dist/src/spills.js +0 -1
- package/dist/src/storyBackground.d.ts +0 -1
- package/dist/src/storyBackground.js +0 -1
- package/dist/src/storyCheck.d.ts +88 -2
- package/dist/src/storyCheck.js +14 -3
- package/dist/src/storyClock.d.ts +0 -1
- package/dist/src/storyClock.js +0 -1
- package/dist/src/storyGlobals.d.ts +0 -1
- package/dist/src/storyGlobals.js +2 -2
- package/dist/src/storyHeights.d.ts +0 -1
- package/dist/src/storyHeights.js +0 -1
- package/dist/src/storyIds.d.ts +36 -0
- package/dist/src/storyIds.js +52 -0
- package/dist/src/storyIdsElement.d.ts +0 -1
- package/dist/src/storyIdsElement.js +0 -1
- package/dist/src/storyTexts.d.ts +11 -5
- package/dist/src/storyTexts.js +16 -5
- package/dist/src/storyTree.d.ts +89 -25
- package/dist/src/storyTree.js +213 -127
- package/dist/src/switches.d.ts +0 -1
- package/dist/src/switches.js +6 -2
- package/dist/src/toolbarLayout.d.ts +0 -1
- package/dist/src/toolbarLayout.js +0 -1
- package/dist/src/treePlaces.d.ts +60 -0
- package/dist/src/treePlaces.js +89 -0
- package/dist/src/usedIn.d.ts +28 -1
- package/dist/src/usedIn.js +93 -3
- package/dist/src/viewState.d.ts +44 -9
- package/dist/src/viewState.js +80 -9
- package/dist/src/viewWords.d.ts +0 -13
- package/dist/src/viewWords.js +41 -3
- package/dist/src/vite/adapter.d.ts +62 -1
- package/dist/src/vite/adapter.js +20 -2
- package/dist/src/vite/agent.types.d.ts +291 -7
- package/dist/src/vite/agent.types.js +11 -1
- package/dist/src/vite/agentApi.d.ts +55 -2
- package/dist/src/vite/agentApi.js +136 -9
- package/dist/src/vite/agentIds.d.ts +25 -0
- package/dist/src/vite/agentIds.js +41 -0
- package/dist/src/vite/agentIndex.d.ts +63 -0
- package/dist/src/vite/agentIndex.js +91 -0
- package/dist/src/vite/agentIndexRoute.d.ts +10 -0
- package/dist/src/vite/agentIndexRoute.js +35 -0
- package/dist/src/vite/agentRoutes.d.ts +80 -19
- package/dist/src/vite/agentRoutes.js +184 -27
- package/dist/src/vite/autoTitle.d.ts +0 -1
- package/dist/src/vite/autoTitle.js +0 -1
- package/dist/src/vite/axeScript.d.ts +20 -0
- package/dist/src/vite/axeScript.js +60 -0
- package/dist/src/vite/builtTexts.d.ts +75 -0
- package/dist/src/vite/builtTexts.js +143 -0
- package/dist/src/vite/catalogueConfig.d.ts +10 -0
- package/dist/src/vite/catalogueConfig.js +64 -0
- package/dist/src/vite/checkCode.d.ts +67 -0
- package/dist/src/vite/checkCode.js +145 -0
- package/dist/src/vite/closeWatch.d.ts +96 -0
- package/dist/src/vite/closeWatch.js +219 -0
- package/dist/src/vite/codeFence.d.ts +78 -0
- package/dist/src/vite/codeFence.js +267 -0
- package/dist/src/vite/componentImport.d.ts +8 -0
- package/dist/src/vite/componentImport.js +35 -0
- package/dist/src/vite/componentPage.d.ts +15 -2
- package/dist/src/vite/componentPage.js +55 -16
- package/dist/src/vite/config.d.ts +51 -3
- package/dist/src/vite/config.js +0 -1
- package/dist/src/vite/configFile.d.ts +66 -9
- package/dist/src/vite/configFile.js +236 -33
- package/dist/src/vite/designTokens.d.ts +75 -0
- package/dist/src/vite/designTokens.js +382 -0
- package/dist/src/vite/diskCache.d.ts +51 -0
- package/dist/src/vite/diskCache.js +211 -0
- package/dist/src/vite/docDirectives.d.ts +116 -0
- package/dist/src/vite/docDirectives.js +425 -0
- package/dist/src/vite/docMarkdown.d.ts +76 -0
- package/dist/src/vite/docMarkdown.js +150 -0
- package/dist/src/vite/docPageBlocks.d.ts +64 -0
- package/dist/src/vite/docPageBlocks.js +322 -0
- package/dist/src/vite/docPageLinks.d.ts +72 -0
- package/dist/src/vite/docPageLinks.js +135 -0
- package/dist/src/vite/docPageMarkdown.d.ts +86 -0
- package/dist/src/vite/docPageMarkdown.js +133 -0
- package/dist/src/vite/docPageRender.d.ts +27 -0
- package/dist/src/vite/docPageRender.js +199 -0
- package/dist/src/vite/docPageTokens.d.ts +91 -0
- package/dist/src/vite/docPageTokens.js +186 -0
- package/dist/src/vite/docPagesModule.d.ts +53 -0
- package/dist/src/vite/docPagesModule.js +121 -0
- package/dist/src/vite/docPagesRoute.d.ts +38 -0
- package/dist/src/vite/docPagesRoute.js +154 -0
- package/dist/src/vite/docsDependencies.d.ts +6 -0
- package/dist/src/vite/docsDependencies.js +150 -0
- package/dist/src/vite/docsExtractor.d.ts +50 -3
- package/dist/src/vite/docsExtractor.js +173 -26
- package/dist/src/vite/docsProgram.d.ts +89 -9
- package/dist/src/vite/docsProgram.js +413 -50
- package/dist/src/vite/docsWorker.d.ts +0 -1
- package/dist/src/vite/docsWorker.js +49 -15
- package/dist/src/vite/figmaLink.d.ts +26 -0
- package/dist/src/vite/figmaLink.js +92 -0
- package/dist/src/vite/fileAccess.d.ts +51 -0
- package/dist/src/vite/fileAccess.js +109 -0
- package/dist/src/vite/findComponent.d.ts +32 -0
- package/dist/src/vite/findComponent.js +52 -0
- package/dist/src/vite/findRoute.d.ts +14 -0
- package/dist/src/vite/findRoute.js +62 -0
- package/dist/src/vite/forcedStates.d.ts +0 -1
- package/dist/src/vite/forcedStates.js +0 -1
- package/dist/src/vite/forgebookPlugin.d.ts +0 -1
- package/dist/src/vite/forgebookPlugin.js +305 -282
- package/dist/src/vite/framesConfig.d.ts +89 -0
- package/dist/src/vite/framesConfig.js +149 -0
- package/dist/src/vite/framesServer.d.ts +43 -0
- package/dist/src/vite/framesServer.js +342 -0
- package/dist/src/vite/functionComponentDocs.d.ts +26 -0
- package/dist/src/vite/functionComponentDocs.js +193 -0
- package/dist/src/vite/generatedModules.d.ts +23 -0
- package/dist/src/vite/generatedModules.js +58 -0
- package/dist/src/vite/gitChange.d.ts +56 -0
- package/dist/src/vite/gitChange.js +86 -0
- package/dist/src/vite/heightsRoute.d.ts +0 -1
- package/dist/src/vite/heightsRoute.js +0 -1
- package/dist/src/vite/highlightCode.d.ts +0 -1
- package/dist/src/vite/highlightCode.js +8 -27
- package/dist/src/vite/hotSnippets.d.ts +86 -0
- package/dist/src/vite/hotSnippets.js +172 -0
- package/dist/src/vite/indexFields.d.ts +61 -0
- package/dist/src/vite/indexFields.js +149 -0
- package/dist/src/vite/indexStoryFile.d.ts +19 -18
- package/dist/src/vite/indexStoryFile.js +165 -221
- package/dist/src/vite/indexedParameters.d.ts +10 -0
- package/dist/src/vite/indexedParameters.js +130 -0
- package/dist/src/vite/mcpProtocol.d.ts +36 -2
- package/dist/src/vite/mcpProtocol.js +100 -15
- package/dist/src/vite/moduleSummary.d.ts +17 -0
- package/dist/src/vite/moduleSummary.js +40 -0
- package/dist/src/vite/nearestToken.d.ts +50 -0
- package/dist/src/vite/nearestToken.js +295 -0
- package/dist/src/vite/originGuard.d.ts +97 -0
- package/dist/src/vite/originGuard.js +172 -0
- package/dist/src/vite/packedModule.d.ts +40 -0
- package/dist/src/vite/packedModule.js +74 -0
- package/dist/src/vite/pages.d.ts +64 -10
- package/dist/src/vite/pages.js +278 -40
- package/dist/src/vite/parsedFiles.d.ts +18 -0
- package/dist/src/vite/parsedFiles.js +91 -0
- package/dist/src/vite/plainGrammars.d.ts +20 -0
- package/dist/src/vite/plainGrammars.js +113 -0
- package/dist/src/vite/pluginConfig.d.ts +47 -0
- package/dist/src/vite/pluginConfig.js +220 -0
- package/dist/src/vite/pluginIds.d.ts +27 -0
- package/dist/src/vite/pluginIds.js +76 -0
- package/dist/src/vite/pluginModules.d.ts +169 -0
- package/dist/src/vite/pluginModules.js +221 -0
- package/dist/src/vite/prebundled.d.ts +18 -5
- package/dist/src/vite/prebundled.js +29 -18
- package/dist/src/vite/previewPages.d.ts +14 -0
- package/dist/src/vite/previewPages.js +81 -0
- package/dist/src/vite/previewRoute.d.ts +8 -0
- package/dist/src/vite/previewRoute.js +8 -0
- package/dist/src/vite/previewRunner.d.ts +56 -0
- package/dist/src/vite/previewRunner.js +207 -0
- package/dist/src/vite/propDocs.d.ts +60 -0
- package/dist/src/vite/propDocs.js +387 -0
- package/dist/src/vite/searchModule.d.ts +42 -0
- package/dist/src/vite/searchModule.js +213 -0
- package/dist/src/vite/searchRoute.d.ts +7 -0
- package/dist/src/vite/searchRoute.js +79 -0
- package/dist/src/vite/serverConditions.d.ts +31 -0
- package/dist/src/vite/serverConditions.js +69 -0
- package/dist/src/vite/signatureDocs.d.ts +18 -0
- package/dist/src/vite/signatureDocs.js +64 -0
- package/dist/src/vite/sourceTokens.d.ts +57 -0
- package/dist/src/vite/sourceTokens.js +164 -0
- package/dist/src/vite/storyCode.d.ts +0 -1
- package/dist/src/vite/storyCode.js +2 -3
- package/dist/src/vite/storyExports.d.ts +32 -0
- package/dist/src/vite/storyExports.js +27 -0
- package/dist/src/vite/storyFilesModule.d.ts +104 -20
- package/dist/src/vite/storyFilesModule.js +178 -60
- package/dist/src/vite/storyMeta.d.ts +20 -11
- package/dist/src/vite/storyMeta.js +74 -38
- package/dist/src/vite/storyParse.d.ts +18 -0
- package/dist/src/vite/storyParse.js +20 -0
- package/dist/src/vite/storyPatterns.d.ts +39 -0
- package/dist/src/vite/storyPatterns.js +100 -0
- package/dist/src/vite/storyPlay.d.ts +29 -0
- package/dist/src/vite/storyPlay.js +54 -0
- package/dist/src/vite/storyReach.d.ts +42 -0
- package/dist/src/vite/storyReach.js +43 -0
- package/dist/src/vite/storylessRoutes.d.ts +29 -0
- package/dist/src/vite/storylessRoutes.js +126 -0
- package/dist/src/vite/textModules.d.ts +63 -0
- package/dist/src/vite/textModules.js +132 -0
- package/dist/src/vite/textQueries.d.ts +26 -0
- package/dist/src/vite/textQueries.js +26 -0
- package/dist/src/vite/themeFromTokens.d.ts +35 -0
- package/dist/src/vite/themeFromTokens.js +73 -0
- package/dist/src/vite/tokenAnswers.d.ts +20 -0
- package/dist/src/vite/tokenAnswers.js +86 -0
- package/dist/src/vite/tokenClashes.d.ts +44 -0
- package/dist/src/vite/tokenClashes.js +45 -0
- package/dist/src/vite/touchMedia.d.ts +0 -1
- package/dist/src/vite/touchMedia.js +0 -1
- package/dist/src/vite/typeScriptPieces.d.ts +0 -1
- package/dist/src/vite/typeScriptPieces.js +2 -3
- package/dist/src/vite/usageGraph.d.ts +6 -1
- package/dist/src/vite/usageGraph.js +41 -7
- package/dist/src/vite/usageGuidance.d.ts +33 -0
- package/dist/src/vite/usageGuidance.js +45 -0
- package/dist/src/vite/usageModule.d.ts +0 -1
- package/dist/src/vite/usageModule.js +0 -1
- package/dist/src/vite/vitePaths.d.ts +53 -0
- package/dist/src/vite/vitePaths.js +53 -0
- package/dist/src/worstCase.d.ts +0 -1
- package/dist/src/worstCase.js +0 -1
- package/package.json +68 -5
- package/dist/bin/forgebook/agentClient.d.ts.map +0 -1
- package/dist/bin/forgebook/agentClient.js.map +0 -1
- package/dist/bin/forgebook/agentLoopCommands.d.mts.map +0 -1
- package/dist/bin/forgebook/agentLoopCommands.mjs.map +0 -1
- package/dist/bin/forgebook/agentText.d.ts.map +0 -1
- package/dist/bin/forgebook/agentText.js.map +0 -1
- package/dist/bin/forgebook/agentsText.d.ts.map +0 -1
- package/dist/bin/forgebook/agentsText.js.map +0 -1
- package/dist/bin/forgebook/catalogueCommands.d.ts.map +0 -1
- package/dist/bin/forgebook/catalogueCommands.js.map +0 -1
- package/dist/bin/forgebook/catalogueVite.d.ts.map +0 -1
- package/dist/bin/forgebook/catalogueVite.js.map +0 -1
- package/dist/bin/forgebook/errorsRun.d.ts.map +0 -1
- package/dist/bin/forgebook/errorsRun.js.map +0 -1
- package/dist/bin/forgebook/forgebook.d.mts.map +0 -1
- package/dist/bin/forgebook/forgebook.mjs.map +0 -1
- package/dist/bin/forgebook/importers/storybook.d.ts.map +0 -1
- package/dist/bin/forgebook/importers/storybook.js.map +0 -1
- package/dist/bin/forgebook/initCommands.d.mts.map +0 -1
- package/dist/bin/forgebook/initCommands.mjs.map +0 -1
- package/dist/bin/forgebook/initConfig.d.ts.map +0 -1
- package/dist/bin/forgebook/initConfig.js.map +0 -1
- package/dist/bin/forgebook/mcpTools.d.ts.map +0 -1
- package/dist/bin/forgebook/mcpTools.js.map +0 -1
- package/dist/bin/forgebook/newStories.d.ts.map +0 -1
- package/dist/bin/forgebook/newStories.js.map +0 -1
- package/dist/bin/forgebook/newStoriesFile.d.ts.map +0 -1
- package/dist/bin/forgebook/newStoriesFile.js.map +0 -1
- package/dist/bin/forgebook/storyCheckRun.d.ts.map +0 -1
- package/dist/bin/forgebook/storyCheckRun.js.map +0 -1
- package/dist/bin/forgebook/touchWindowRun.d.ts.map +0 -1
- package/dist/bin/forgebook/touchWindowRun.js.map +0 -1
- package/dist/bin/forgebook-docs/catalogueDocs.d.ts.map +0 -1
- package/dist/bin/forgebook-docs/catalogueDocs.js.map +0 -1
- package/dist/bin/forgebook-docs/catalogueDocs.types.d.ts.map +0 -1
- package/dist/bin/forgebook-docs/catalogueDocs.types.js.map +0 -1
- package/dist/bin/forgebook-docs/catalogueMarkdown.d.ts.map +0 -1
- package/dist/bin/forgebook-docs/catalogueMarkdown.js.map +0 -1
- package/dist/bin/forgebook-docs/catalogueOptions.d.ts.map +0 -1
- package/dist/bin/forgebook-docs/catalogueOptions.js.map +0 -1
- package/dist/bin/forgebook-docs/collectDocs.d.ts.map +0 -1
- package/dist/bin/forgebook-docs/collectDocs.js.map +0 -1
- package/dist/bin/forgebook-docs/forgebook-docs.d.mts.map +0 -1
- package/dist/bin/forgebook-docs/forgebook-docs.mjs.map +0 -1
- package/dist/bin/forgebook-docs/llmsText.d.ts.map +0 -1
- package/dist/bin/forgebook-docs/llmsText.js.map +0 -1
- package/dist/bin/forgebook-docs/moduleDocs.d.ts.map +0 -1
- package/dist/bin/forgebook-docs/moduleDocs.js.map +0 -1
- package/dist/bin/forgebook-docs/sassDocs.d.ts.map +0 -1
- package/dist/bin/forgebook-docs/sassDocs.js.map +0 -1
- package/dist/bin/forgebook-docs/sourceId.d.ts +0 -9
- package/dist/bin/forgebook-docs/sourceId.d.ts.map +0 -1
- package/dist/bin/forgebook-docs/sourceId.js +0 -45
- package/dist/bin/forgebook-docs/sourceId.js.map +0 -1
- package/dist/bin/forgebook-texts/forgebook-texts.d.mts.map +0 -1
- package/dist/bin/forgebook-texts/forgebook-texts.mjs.map +0 -1
- package/dist/bin/forgebook-texts/storyTextsReport.d.ts.map +0 -1
- package/dist/bin/forgebook-texts/storyTextsReport.js.map +0 -1
- package/dist/bin/forgebook-texts/storyTextsReport.types.d.ts.map +0 -1
- package/dist/bin/forgebook-texts/storyTextsReport.types.js.map +0 -1
- package/dist/bin/frameworkDocs.d.ts.map +0 -1
- package/dist/bin/frameworkDocs.js.map +0 -1
- package/dist/src/a11y.d.ts.map +0 -1
- package/dist/src/a11y.js.map +0 -1
- package/dist/src/argTypes.d.ts.map +0 -1
- package/dist/src/argTypes.js.map +0 -1
- package/dist/src/backdrops.d.ts.map +0 -1
- package/dist/src/backdrops.js.map +0 -1
- package/dist/src/catalogue.d.ts.map +0 -1
- package/dist/src/catalogue.js.map +0 -1
- package/dist/src/componentDocs.d.ts.map +0 -1
- package/dist/src/componentDocs.js.map +0 -1
- package/dist/src/controlKeys.d.ts.map +0 -1
- package/dist/src/controlKeys.js.map +0 -1
- package/dist/src/frame/checkStory.d.ts.map +0 -1
- package/dist/src/frame/checkStory.js.map +0 -1
- package/dist/src/frame/frameClock.d.ts.map +0 -1
- package/dist/src/frame/frameClock.js.map +0 -1
- package/dist/src/frame/frameStatus.d.ts.map +0 -1
- package/dist/src/frame/frameStatus.js.map +0 -1
- package/dist/src/frame/frameView.d.ts.map +0 -1
- package/dist/src/frame/frameView.js.map +0 -1
- package/dist/src/frame/matrixLayout.d.ts.map +0 -1
- package/dist/src/frame/matrixLayout.js.map +0 -1
- package/dist/src/frame/measureTools.d.ts.map +0 -1
- package/dist/src/frame/measureTools.js.map +0 -1
- package/dist/src/frame/mountFrame.d.ts.map +0 -1
- package/dist/src/frame/mountFrame.js.map +0 -1
- package/dist/src/frame/playStory.d.ts.map +0 -1
- package/dist/src/frame/playStory.js.map +0 -1
- package/dist/src/frame/renderer.d.ts.map +0 -1
- package/dist/src/frame/renderer.js.map +0 -1
- package/dist/src/frame/settle.d.ts.map +0 -1
- package/dist/src/frame/settle.js.map +0 -1
- package/dist/src/frame/spillOutline.d.ts.map +0 -1
- package/dist/src/frame/spillOutline.js.map +0 -1
- package/dist/src/frame/staleModule.d.ts.map +0 -1
- package/dist/src/frame/staleModule.js.map +0 -1
- package/dist/src/frame/storyCanvas.d.ts.map +0 -1
- package/dist/src/frame/storyCanvas.js.map +0 -1
- package/dist/src/frame/storyHooks.d.ts.map +0 -1
- package/dist/src/frame/storyHooks.js.map +0 -1
- package/dist/src/frame/storyModule.d.ts.map +0 -1
- package/dist/src/frame/storyModule.js.map +0 -1
- package/dist/src/frame/storyRun.d.ts.map +0 -1
- package/dist/src/frame/storyRun.js.map +0 -1
- package/dist/src/frame/touchDots.d.ts.map +0 -1
- package/dist/src/frame/touchDots.js.map +0 -1
- package/dist/src/frame/touchEvents.d.ts.map +0 -1
- package/dist/src/frame/touchEvents.js.map +0 -1
- package/dist/src/frame/touchGesture.d.ts.map +0 -1
- package/dist/src/frame/touchGesture.js.map +0 -1
- package/dist/src/frame/touchLayer.d.ts.map +0 -1
- package/dist/src/frame/touchLayer.js.map +0 -1
- package/dist/src/frame/touchScroll.d.ts.map +0 -1
- package/dist/src/frame/touchScroll.js.map +0 -1
- package/dist/src/languages.d.ts.map +0 -1
- package/dist/src/languages.js.map +0 -1
- package/dist/src/liveErrors.d.ts.map +0 -1
- package/dist/src/liveErrors.js.map +0 -1
- package/dist/src/matrix.d.ts.map +0 -1
- package/dist/src/matrix.js.map +0 -1
- package/dist/src/messages.d.ts.map +0 -1
- package/dist/src/messages.js.map +0 -1
- package/dist/src/namedValues.d.ts.map +0 -1
- package/dist/src/namedValues.js.map +0 -1
- package/dist/src/namedViews.d.ts.map +0 -1
- package/dist/src/namedViews.js.map +0 -1
- package/dist/src/pageConfig.d.ts.map +0 -1
- package/dist/src/pageConfig.js.map +0 -1
- package/dist/src/playTrace.d.ts.map +0 -1
- package/dist/src/playTrace.js.map +0 -1
- package/dist/src/realTouch.d.ts.map +0 -1
- package/dist/src/realTouch.js.map +0 -1
- package/dist/src/shell/A11yTab.d.ts.map +0 -1
- package/dist/src/shell/A11yTab.js.map +0 -1
- package/dist/src/shell/ApiReference.d.ts.map +0 -1
- package/dist/src/shell/ApiReference.js.map +0 -1
- package/dist/src/shell/AppearanceMenu.d.ts.map +0 -1
- package/dist/src/shell/AppearanceMenu.js.map +0 -1
- package/dist/src/shell/BoxWidth.d.ts.map +0 -1
- package/dist/src/shell/BoxWidth.js.map +0 -1
- package/dist/src/shell/ClockControls.d.ts.map +0 -1
- package/dist/src/shell/ClockControls.js.map +0 -1
- package/dist/src/shell/Code.d.ts.map +0 -1
- package/dist/src/shell/Code.js.map +0 -1
- package/dist/src/shell/CodeTab.d.ts.map +0 -1
- package/dist/src/shell/CodeTab.js.map +0 -1
- package/dist/src/shell/CodeText.d.ts.map +0 -1
- package/dist/src/shell/CodeText.js.map +0 -1
- package/dist/src/shell/ComponentPage.d.ts.map +0 -1
- package/dist/src/shell/ComponentPage.js.map +0 -1
- package/dist/src/shell/ControlKeyField.d.ts.map +0 -1
- package/dist/src/shell/ControlKeyField.js.map +0 -1
- package/dist/src/shell/ControlRow.d.ts.map +0 -1
- package/dist/src/shell/ControlRow.js.map +0 -1
- package/dist/src/shell/Dock.d.ts.map +0 -1
- package/dist/src/shell/Dock.js.map +0 -1
- package/dist/src/shell/EventsTab.d.ts.map +0 -1
- package/dist/src/shell/EventsTab.js.map +0 -1
- package/dist/src/shell/Example.d.ts.map +0 -1
- package/dist/src/shell/Example.js.map +0 -1
- package/dist/src/shell/FrameView.d.ts.map +0 -1
- package/dist/src/shell/FrameView.js.map +0 -1
- package/dist/src/shell/HomePage.d.ts.map +0 -1
- package/dist/src/shell/HomePage.js.map +0 -1
- package/dist/src/shell/InfoTip.d.ts.map +0 -1
- package/dist/src/shell/InfoTip.js.map +0 -1
- package/dist/src/shell/InteractionsTab.d.ts.map +0 -1
- package/dist/src/shell/InteractionsTab.js.map +0 -1
- package/dist/src/shell/LogicMark.d.ts.map +0 -1
- package/dist/src/shell/LogicMark.js.map +0 -1
- package/dist/src/shell/MatrixPicker.d.ts.map +0 -1
- package/dist/src/shell/MatrixPicker.js.map +0 -1
- package/dist/src/shell/NamedViews.d.ts.map +0 -1
- package/dist/src/shell/NamedViews.js.map +0 -1
- package/dist/src/shell/PackageHtml.d.ts.map +0 -1
- package/dist/src/shell/PackageHtml.js.map +0 -1
- package/dist/src/shell/PartsTab.d.ts.map +0 -1
- package/dist/src/shell/PartsTab.js.map +0 -1
- package/dist/src/shell/PinnedControl.d.ts.map +0 -1
- package/dist/src/shell/PinnedControl.js.map +0 -1
- package/dist/src/shell/PropFields.d.ts.map +0 -1
- package/dist/src/shell/PropFields.js.map +0 -1
- package/dist/src/shell/PropsTab.d.ts.map +0 -1
- package/dist/src/shell/PropsTab.js.map +0 -1
- package/dist/src/shell/Segmented.d.ts.map +0 -1
- package/dist/src/shell/Segmented.js.map +0 -1
- package/dist/src/shell/Shell.d.ts.map +0 -1
- package/dist/src/shell/Shell.js.map +0 -1
- package/dist/src/shell/Sidebar.d.ts.map +0 -1
- package/dist/src/shell/Sidebar.js.map +0 -1
- package/dist/src/shell/SidebarEntries.d.ts.map +0 -1
- package/dist/src/shell/SidebarEntries.js.map +0 -1
- package/dist/src/shell/SidebarHandle.d.ts.map +0 -1
- package/dist/src/shell/SidebarHandle.js.map +0 -1
- package/dist/src/shell/SignatureReference.d.ts.map +0 -1
- package/dist/src/shell/SignatureReference.js.map +0 -1
- package/dist/src/shell/Stage.d.ts.map +0 -1
- package/dist/src/shell/Stage.js.map +0 -1
- package/dist/src/shell/StageTools.d.ts.map +0 -1
- package/dist/src/shell/StageTools.js.map +0 -1
- package/dist/src/shell/StageViewport.d.ts.map +0 -1
- package/dist/src/shell/StageViewport.js.map +0 -1
- package/dist/src/shell/StoryCodeBlock.d.ts.map +0 -1
- package/dist/src/shell/StoryCodeBlock.js.map +0 -1
- package/dist/src/shell/StoryPicker.d.ts.map +0 -1
- package/dist/src/shell/StoryPicker.js.map +0 -1
- package/dist/src/shell/Toolbar.d.ts.map +0 -1
- package/dist/src/shell/Toolbar.js.map +0 -1
- package/dist/src/shell/ToolbarControl.d.ts.map +0 -1
- package/dist/src/shell/ToolbarControl.js.map +0 -1
- package/dist/src/shell/UsedIn.d.ts.map +0 -1
- package/dist/src/shell/UsedIn.js.map +0 -1
- package/dist/src/shell/ViewMenu.d.ts.map +0 -1
- package/dist/src/shell/ViewMenu.js.map +0 -1
- package/dist/src/shell/WidthField.d.ts.map +0 -1
- package/dist/src/shell/WidthField.js.map +0 -1
- package/dist/src/shell/catalogueContext.d.ts.map +0 -1
- package/dist/src/shell/catalogueContext.js.map +0 -1
- package/dist/src/shell/codeTokens.d.ts.map +0 -1
- package/dist/src/shell/codeTokens.js.map +0 -1
- package/dist/src/shell/codeWriter.d.ts.map +0 -1
- package/dist/src/shell/codeWriter.js.map +0 -1
- package/dist/src/shell/compareVariants.d.ts.map +0 -1
- package/dist/src/shell/compareVariants.js.map +0 -1
- package/dist/src/shell/controlCycle.d.ts.map +0 -1
- package/dist/src/shell/controlCycle.js.map +0 -1
- package/dist/src/shell/dockTabs.d.ts.map +0 -1
- package/dist/src/shell/dockTabs.js.map +0 -1
- package/dist/src/shell/icons.d.ts.map +0 -1
- package/dist/src/shell/icons.js.map +0 -1
- package/dist/src/shell/keyboard.d.ts.map +0 -1
- package/dist/src/shell/keyboard.js.map +0 -1
- package/dist/src/shell/logicView.d.ts.map +0 -1
- package/dist/src/shell/logicView.js.map +0 -1
- package/dist/src/shell/mountShell.d.ts.map +0 -1
- package/dist/src/shell/mountShell.js.map +0 -1
- package/dist/src/shell/storyTouch.d.ts.map +0 -1
- package/dist/src/shell/storyTouch.js.map +0 -1
- package/dist/src/shell/strings.d.ts.map +0 -1
- package/dist/src/shell/strings.js.map +0 -1
- package/dist/src/shell/switchView.d.ts.map +0 -1
- package/dist/src/shell/switchView.js.map +0 -1
- package/dist/src/shell/treeSearch.d.ts.map +0 -1
- package/dist/src/shell/treeSearch.js.map +0 -1
- package/dist/src/shell/useAppearance.d.ts.map +0 -1
- package/dist/src/shell/useAppearance.js.map +0 -1
- package/dist/src/shell/useComponentDocs.d.ts.map +0 -1
- package/dist/src/shell/useComponentDocs.js.map +0 -1
- package/dist/src/shell/useControlKeys.d.ts.map +0 -1
- package/dist/src/shell/useControlKeys.js.map +0 -1
- package/dist/src/shell/useCopy.d.ts.map +0 -1
- package/dist/src/shell/useCopy.js.map +0 -1
- package/dist/src/shell/useFold.d.ts.map +0 -1
- package/dist/src/shell/useFold.js.map +0 -1
- package/dist/src/shell/useFrameMessages.d.ts.map +0 -1
- package/dist/src/shell/useFrameMessages.js.map +0 -1
- package/dist/src/shell/useFrameQueue.d.ts.map +0 -1
- package/dist/src/shell/useFrameQueue.js.map +0 -1
- package/dist/src/shell/useFullPage.d.ts.map +0 -1
- package/dist/src/shell/useFullPage.js.map +0 -1
- package/dist/src/shell/useLiveView.d.ts.map +0 -1
- package/dist/src/shell/useLiveView.js.map +0 -1
- package/dist/src/shell/useLoaded.d.ts.map +0 -1
- package/dist/src/shell/useLoaded.js.map +0 -1
- package/dist/src/shell/usePageDoc.d.ts.map +0 -1
- package/dist/src/shell/usePageDoc.js.map +0 -1
- package/dist/src/shell/usePopover.d.ts.map +0 -1
- package/dist/src/shell/usePopover.js.map +0 -1
- package/dist/src/shell/useRecentPages.d.ts.map +0 -1
- package/dist/src/shell/useRecentPages.js.map +0 -1
- package/dist/src/shell/useScrollMemory.d.ts.map +0 -1
- package/dist/src/shell/useScrollMemory.js.map +0 -1
- package/dist/src/shell/useShownView.d.ts.map +0 -1
- package/dist/src/shell/useShownView.js.map +0 -1
- package/dist/src/shell/useSidebarLayout.d.ts.map +0 -1
- package/dist/src/shell/useSidebarLayout.js.map +0 -1
- package/dist/src/shell/useStored.d.ts.map +0 -1
- package/dist/src/shell/useStored.js.map +0 -1
- package/dist/src/shell/useStoryCode.d.ts.map +0 -1
- package/dist/src/shell/useStoryCode.js.map +0 -1
- package/dist/src/shell/useStoryHeights.d.ts.map +0 -1
- package/dist/src/shell/useStoryHeights.js.map +0 -1
- package/dist/src/shell/useStoryIdsElement.d.ts.map +0 -1
- package/dist/src/shell/useStoryIdsElement.js.map +0 -1
- package/dist/src/shell/useStoryKeys.d.ts.map +0 -1
- package/dist/src/shell/useStoryKeys.js.map +0 -1
- package/dist/src/shell/useSystemDark.d.ts.map +0 -1
- package/dist/src/shell/useSystemDark.js.map +0 -1
- package/dist/src/shell/useToolbarLayout.d.ts.map +0 -1
- package/dist/src/shell/useToolbarLayout.js.map +0 -1
- package/dist/src/shell/useToolbarOverflow.d.ts.map +0 -1
- package/dist/src/shell/useToolbarOverflow.js.map +0 -1
- package/dist/src/shell/useWorstCase.d.ts.map +0 -1
- package/dist/src/shell/useWorstCase.js.map +0 -1
- package/dist/src/shell/worstArgs.d.ts.map +0 -1
- package/dist/src/shell/worstArgs.js.map +0 -1
- package/dist/src/sourceFiles.d.ts.map +0 -1
- package/dist/src/sourceFiles.js.map +0 -1
- package/dist/src/spills.d.ts.map +0 -1
- package/dist/src/spills.js.map +0 -1
- package/dist/src/storyBackground.d.ts.map +0 -1
- package/dist/src/storyBackground.js.map +0 -1
- package/dist/src/storyCheck.d.ts.map +0 -1
- package/dist/src/storyCheck.js.map +0 -1
- package/dist/src/storyClock.d.ts.map +0 -1
- package/dist/src/storyClock.js.map +0 -1
- package/dist/src/storyGlobals.d.ts.map +0 -1
- package/dist/src/storyGlobals.js.map +0 -1
- package/dist/src/storyHeights.d.ts.map +0 -1
- package/dist/src/storyHeights.js.map +0 -1
- package/dist/src/storyIdsElement.d.ts.map +0 -1
- package/dist/src/storyIdsElement.js.map +0 -1
- package/dist/src/storyTexts.d.ts.map +0 -1
- package/dist/src/storyTexts.js.map +0 -1
- package/dist/src/storyTree.d.ts.map +0 -1
- package/dist/src/storyTree.js.map +0 -1
- package/dist/src/switches.d.ts.map +0 -1
- package/dist/src/switches.js.map +0 -1
- package/dist/src/toolbarLayout.d.ts.map +0 -1
- package/dist/src/toolbarLayout.js.map +0 -1
- package/dist/src/usedIn.d.ts.map +0 -1
- package/dist/src/usedIn.js.map +0 -1
- package/dist/src/viewState.d.ts.map +0 -1
- package/dist/src/viewState.js.map +0 -1
- package/dist/src/viewWords.d.ts.map +0 -1
- package/dist/src/viewWords.js.map +0 -1
- package/dist/src/vite/adapter.d.ts.map +0 -1
- package/dist/src/vite/adapter.js.map +0 -1
- package/dist/src/vite/agent.types.d.ts.map +0 -1
- package/dist/src/vite/agent.types.js.map +0 -1
- package/dist/src/vite/agentApi.d.ts.map +0 -1
- package/dist/src/vite/agentApi.js.map +0 -1
- package/dist/src/vite/agentRoutes.d.ts.map +0 -1
- package/dist/src/vite/agentRoutes.js.map +0 -1
- package/dist/src/vite/autoTitle.d.ts.map +0 -1
- package/dist/src/vite/autoTitle.js.map +0 -1
- package/dist/src/vite/componentPage.d.ts.map +0 -1
- package/dist/src/vite/componentPage.js.map +0 -1
- package/dist/src/vite/config.d.ts.map +0 -1
- package/dist/src/vite/config.js.map +0 -1
- package/dist/src/vite/configFile.d.ts.map +0 -1
- package/dist/src/vite/configFile.js.map +0 -1
- package/dist/src/vite/docsExtractor.d.ts.map +0 -1
- package/dist/src/vite/docsExtractor.js.map +0 -1
- package/dist/src/vite/docsProgram.d.ts.map +0 -1
- package/dist/src/vite/docsProgram.js.map +0 -1
- package/dist/src/vite/docsWorker.d.ts.map +0 -1
- package/dist/src/vite/docsWorker.js.map +0 -1
- package/dist/src/vite/forcedStates.d.ts.map +0 -1
- package/dist/src/vite/forcedStates.js.map +0 -1
- package/dist/src/vite/forgebookPlugin.d.ts.map +0 -1
- package/dist/src/vite/forgebookPlugin.js.map +0 -1
- package/dist/src/vite/heightsRoute.d.ts.map +0 -1
- package/dist/src/vite/heightsRoute.js.map +0 -1
- package/dist/src/vite/highlightCode.d.ts.map +0 -1
- package/dist/src/vite/highlightCode.js.map +0 -1
- package/dist/src/vite/indexStoryFile.d.ts.map +0 -1
- package/dist/src/vite/indexStoryFile.js.map +0 -1
- package/dist/src/vite/mcpProtocol.d.ts.map +0 -1
- package/dist/src/vite/mcpProtocol.js.map +0 -1
- package/dist/src/vite/pages.d.ts.map +0 -1
- package/dist/src/vite/pages.js.map +0 -1
- package/dist/src/vite/prebundled.d.ts.map +0 -1
- package/dist/src/vite/prebundled.js.map +0 -1
- package/dist/src/vite/storyCode.d.ts.map +0 -1
- package/dist/src/vite/storyCode.js.map +0 -1
- package/dist/src/vite/storyFilesModule.d.ts.map +0 -1
- package/dist/src/vite/storyFilesModule.js.map +0 -1
- package/dist/src/vite/storyMeta.d.ts.map +0 -1
- package/dist/src/vite/storyMeta.js.map +0 -1
- package/dist/src/vite/touchMedia.d.ts.map +0 -1
- package/dist/src/vite/touchMedia.js.map +0 -1
- package/dist/src/vite/typeScriptPieces.d.ts.map +0 -1
- package/dist/src/vite/typeScriptPieces.js.map +0 -1
- package/dist/src/vite/usageGraph.d.ts.map +0 -1
- package/dist/src/vite/usageGraph.js.map +0 -1
- package/dist/src/vite/usageModule.d.ts.map +0 -1
- package/dist/src/vite/usageModule.js.map +0 -1
- package/dist/src/worstCase.d.ts.map +0 -1
- package/dist/src/worstCase.js.map +0 -1
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `frames` option of a catalogue's configuration: where its stories' frames run, checked and resolved, and the
|
|
3
|
+
* placement the pages read from it on the dev server and in a build.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* The frames get an origin of their own by default: on the dev server a second port, so a story's code cannot reach
|
|
7
|
+
* the catalogue's page, the agent API or the project's files. A static build has one host unless the configuration
|
|
8
|
+
* names two (`origins`), so it keeps the catalogue's origin otherwise. `"same-origin"` runs them on the catalogue's
|
|
9
|
+
* origin everywhere, for a place that gives one port only (a container with one port open).
|
|
10
|
+
*
|
|
11
|
+
* @module
|
|
12
|
+
*/
|
|
13
|
+
import { type FramesPlacement, type PageOrigins } from "../frameOrigins.ts";
|
|
14
|
+
/** Where the stories' frames run, as `forgebook.config.ts` writes it. */
|
|
15
|
+
export type FramesOption = "same-origin" | {
|
|
16
|
+
/**
|
|
17
|
+
* The dev server's port for the frames: the catalogue's port + 1 by default, the next free one when that is
|
|
18
|
+
* taken. A port given here must be free.
|
|
19
|
+
*/
|
|
20
|
+
readonly port?: number;
|
|
21
|
+
/**
|
|
22
|
+
* The catalogue's origin and the frames', as the browser reaches them, when the frames' is not the catalogue's
|
|
23
|
+
* host on the frames' port: a static build served from two hosts (`https://frames.example.com`, a subdomain of
|
|
24
|
+
* the catalogue's site), or a dev server behind a proxy that gives each port a host of its own.
|
|
25
|
+
*/
|
|
26
|
+
readonly origins?: {
|
|
27
|
+
readonly catalogue: string;
|
|
28
|
+
readonly frames: string;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Paths the frames' port serves as the catalogue's does, for an API a Vite plugin answers (`["/api/"]`): the
|
|
32
|
+
* frames' port serves only the frame page, the public folder, the modules the stories import and Vite's proxy.
|
|
33
|
+
*/
|
|
34
|
+
readonly paths?: readonly string[];
|
|
35
|
+
};
|
|
36
|
+
/** The `frames` option, resolved. */
|
|
37
|
+
export type ResolvedFrames = {
|
|
38
|
+
/** On the catalogue's origin. */
|
|
39
|
+
readonly kind: "same-origin";
|
|
40
|
+
} | {
|
|
41
|
+
/** On an origin of their own. */
|
|
42
|
+
readonly kind: "isolated";
|
|
43
|
+
/** The dev server's port for the frames, when the configuration gives one. */
|
|
44
|
+
readonly port: number | undefined;
|
|
45
|
+
/** The two origins as the browser reaches them, when the configuration names them. */
|
|
46
|
+
readonly origins: PageOrigins | undefined;
|
|
47
|
+
/** The paths the frames' port serves as the catalogue's does. */
|
|
48
|
+
readonly paths: readonly string[];
|
|
49
|
+
};
|
|
50
|
+
/** The default: an origin of their own, on the next port. */
|
|
51
|
+
export declare const ISOLATED_FRAMES: ResolvedFrames;
|
|
52
|
+
/**
|
|
53
|
+
* Why a `frames` option cannot be used, or none.
|
|
54
|
+
*
|
|
55
|
+
* @param value - the option, as the configuration gives it.
|
|
56
|
+
*/
|
|
57
|
+
export declare const framesProblem: (value: unknown) => string | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* The `frames` option, resolved: the origins normalised as a browser writes them.
|
|
60
|
+
*
|
|
61
|
+
* @param option - the option, checked by `framesProblem`.
|
|
62
|
+
*/
|
|
63
|
+
export declare const resolvedFrames: (option: FramesOption | undefined) => ResolvedFrames;
|
|
64
|
+
/**
|
|
65
|
+
* Where a build's frames run: on the origins the configuration names, or on the catalogue's, the only host a build
|
|
66
|
+
* can count on.
|
|
67
|
+
*
|
|
68
|
+
* @param frames - the resolved option.
|
|
69
|
+
*/
|
|
70
|
+
export declare const builtPlacement: (frames: ResolvedFrames) => FramesPlacement;
|
|
71
|
+
/**
|
|
72
|
+
* Where the dev server's frames run, once both ports listen: on the origins the configuration names, or on the
|
|
73
|
+
* catalogue's host at the frames' port.
|
|
74
|
+
*
|
|
75
|
+
* @param frames - the resolved option.
|
|
76
|
+
* @param ports - the catalogue's port and the frames'.
|
|
77
|
+
*/
|
|
78
|
+
export declare const servedPlacement: (frames: ResolvedFrames, ports: {
|
|
79
|
+
readonly catalogue: number;
|
|
80
|
+
readonly frames: number;
|
|
81
|
+
}) => FramesPlacement;
|
|
82
|
+
/**
|
|
83
|
+
* The frames' origin for a catalogue reached at an address, for a line printed or an answer's link; none when they
|
|
84
|
+
* share the catalogue's.
|
|
85
|
+
*
|
|
86
|
+
* @param placement - where the frames run.
|
|
87
|
+
* @param catalogueUrl - the catalogue's address as it was reached (`http://localhost:5173/`); none when unknown.
|
|
88
|
+
*/
|
|
89
|
+
export declare const framesOriginOf: (placement: FramesPlacement, catalogueUrl: string | undefined) => string | undefined;
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `frames` option of a catalogue's configuration: where its stories' frames run, checked and resolved, and the
|
|
3
|
+
* placement the pages read from it on the dev server and in a build.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* The frames get an origin of their own by default: on the dev server a second port, so a story's code cannot reach
|
|
7
|
+
* the catalogue's page, the agent API or the project's files. A static build has one host unless the configuration
|
|
8
|
+
* names two (`origins`), so it keeps the catalogue's origin otherwise. `"same-origin"` runs them on the catalogue's
|
|
9
|
+
* origin everywhere, for a place that gives one port only (a container with one port open).
|
|
10
|
+
*
|
|
11
|
+
* @module
|
|
12
|
+
*/
|
|
13
|
+
import { pageOrigins, SAME_ORIGIN } from "../frameOrigins.js";
|
|
14
|
+
/** The default: an origin of their own, on the next port. */
|
|
15
|
+
export const ISOLATED_FRAMES = {
|
|
16
|
+
kind: "isolated",
|
|
17
|
+
port: undefined,
|
|
18
|
+
origins: undefined,
|
|
19
|
+
paths: []
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* The origin a value names, when it is one: `http:` or `https:`, a host and maybe a port, nothing after but a slash.
|
|
23
|
+
*
|
|
24
|
+
* @param value - the value.
|
|
25
|
+
*/
|
|
26
|
+
const originOf = (value) => {
|
|
27
|
+
if (typeof value !== "string")
|
|
28
|
+
return undefined;
|
|
29
|
+
try {
|
|
30
|
+
const url = new URL(value);
|
|
31
|
+
const isBare = url.pathname === "/" && url.search === "" && url.hash === "" && url.username === "";
|
|
32
|
+
return (url.protocol === "http:" || url.protocol === "https:") && isBare ? url.origin : undefined;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Why a `frames.port` cannot be used, or none.
|
|
40
|
+
*
|
|
41
|
+
* @param port - the port, as the configuration gives it; none when it gives none.
|
|
42
|
+
*/
|
|
43
|
+
const portProblem = (port) => port === undefined || (typeof port === "number" && Number.isInteger(port) && port >= 1 && port <= 65535)
|
|
44
|
+
? undefined
|
|
45
|
+
: "`frames.port` is a port number (1 to 65535)";
|
|
46
|
+
/**
|
|
47
|
+
* Why `frames.origins` cannot be used, or none.
|
|
48
|
+
*
|
|
49
|
+
* @param origins - the origins, as the configuration gives them; none when it gives none.
|
|
50
|
+
*/
|
|
51
|
+
const originsProblem = (origins) => {
|
|
52
|
+
if (origins === undefined)
|
|
53
|
+
return undefined;
|
|
54
|
+
if (typeof origins !== "object" || origins === null || !("catalogue" in origins) || !("frames" in origins))
|
|
55
|
+
return "`frames.origins` names both origins: `{ catalogue, frames }`";
|
|
56
|
+
const catalogue = originOf(origins.catalogue);
|
|
57
|
+
const frames = originOf(origins.frames);
|
|
58
|
+
if (catalogue === undefined || frames === undefined)
|
|
59
|
+
return "`frames.origins` are origins: a scheme, a host and a port (`https://frames.example.com`)";
|
|
60
|
+
return catalogue === frames ? "`frames.origins` are two different origins" : undefined;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Why `frames.paths` cannot be used, or none.
|
|
64
|
+
*
|
|
65
|
+
* @param paths - the paths, as the configuration gives them; none when it gives none.
|
|
66
|
+
*/
|
|
67
|
+
const pathsProblem = (paths) => {
|
|
68
|
+
if (paths === undefined)
|
|
69
|
+
return undefined;
|
|
70
|
+
const isPath = (path) => typeof path === "string" &&
|
|
71
|
+
path.startsWith("/") &&
|
|
72
|
+
path !== "/" &&
|
|
73
|
+
!path.startsWith("/__") &&
|
|
74
|
+
!path.startsWith("/@");
|
|
75
|
+
return Array.isArray(paths) && paths.every(isPath)
|
|
76
|
+
? undefined
|
|
77
|
+
: "`frames.paths` are paths of the server under the root (`/api/`), not Vite's or Forgebook's own (`/@…`, `/__…`)";
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Why a `frames` option cannot be used, or none.
|
|
81
|
+
*
|
|
82
|
+
* @param value - the option, as the configuration gives it.
|
|
83
|
+
*/
|
|
84
|
+
export const framesProblem = (value) => {
|
|
85
|
+
if (value === undefined || value === "same-origin")
|
|
86
|
+
return undefined;
|
|
87
|
+
if (typeof value !== "object" || value === null)
|
|
88
|
+
return '`frames` is "same-origin" or `{ port, origins }`';
|
|
89
|
+
return (portProblem("port" in value ? value.port : undefined) ??
|
|
90
|
+
originsProblem("origins" in value ? value.origins : undefined) ??
|
|
91
|
+
pathsProblem("paths" in value ? value.paths : undefined));
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* The `frames` option, resolved: the origins normalised as a browser writes them.
|
|
95
|
+
*
|
|
96
|
+
* @param option - the option, checked by `framesProblem`.
|
|
97
|
+
*/
|
|
98
|
+
export const resolvedFrames = (option) => {
|
|
99
|
+
if (option === "same-origin")
|
|
100
|
+
return { kind: "same-origin" };
|
|
101
|
+
if (option === undefined)
|
|
102
|
+
return ISOLATED_FRAMES;
|
|
103
|
+
const catalogue = originOf(option.origins?.catalogue);
|
|
104
|
+
const frames = originOf(option.origins?.frames);
|
|
105
|
+
return {
|
|
106
|
+
kind: "isolated",
|
|
107
|
+
port: option.port,
|
|
108
|
+
origins: catalogue === undefined || frames === undefined ? undefined : { catalogue, frames },
|
|
109
|
+
paths: option.paths ?? []
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* Where a build's frames run: on the origins the configuration names, or on the catalogue's, the only host a build
|
|
114
|
+
* can count on.
|
|
115
|
+
*
|
|
116
|
+
* @param frames - the resolved option.
|
|
117
|
+
*/
|
|
118
|
+
export const builtPlacement = (frames) => frames.kind === "isolated" && frames.origins !== undefined
|
|
119
|
+
? { kind: "origins", ...frames.origins }
|
|
120
|
+
: SAME_ORIGIN;
|
|
121
|
+
/**
|
|
122
|
+
* Where the dev server's frames run, once both ports listen: on the origins the configuration names, or on the
|
|
123
|
+
* catalogue's host at the frames' port.
|
|
124
|
+
*
|
|
125
|
+
* @param frames - the resolved option.
|
|
126
|
+
* @param ports - the catalogue's port and the frames'.
|
|
127
|
+
*/
|
|
128
|
+
export const servedPlacement = (frames, ports) => {
|
|
129
|
+
if (frames.kind === "same-origin")
|
|
130
|
+
return SAME_ORIGIN;
|
|
131
|
+
return frames.origins === undefined ? { kind: "ports", ...ports } : { kind: "origins", ...frames.origins };
|
|
132
|
+
};
|
|
133
|
+
/**
|
|
134
|
+
* The frames' origin for a catalogue reached at an address, for a line printed or an answer's link; none when they
|
|
135
|
+
* share the catalogue's.
|
|
136
|
+
*
|
|
137
|
+
* @param placement - where the frames run.
|
|
138
|
+
* @param catalogueUrl - the catalogue's address as it was reached (`http://localhost:5173/`); none when unknown.
|
|
139
|
+
*/
|
|
140
|
+
export const framesOriginOf = (placement, catalogueUrl) => {
|
|
141
|
+
if (placement.kind === "same-origin" || catalogueUrl === undefined)
|
|
142
|
+
return undefined;
|
|
143
|
+
try {
|
|
144
|
+
return pageOrigins(placement, new URL(catalogueUrl), "catalogue").frames;
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
return undefined;
|
|
148
|
+
}
|
|
149
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type IncomingMessage, type ServerResponse } from "node:http";
|
|
2
|
+
import type { ViteDevServer } from "vite";
|
|
3
|
+
import { type FramesPlacement } from "../frameOrigins.ts";
|
|
4
|
+
import type { ResolvedConfig } from "./configFile.ts";
|
|
5
|
+
import type { ResolvedFrames } from "./framesConfig.ts";
|
|
6
|
+
/** A Connect middleware. */
|
|
7
|
+
type Middleware = (request: IncomingMessage, response: ServerResponse, next: (error?: unknown) => void) => void;
|
|
8
|
+
/** The frames' side of a dev server. */
|
|
9
|
+
export type FramesServing = {
|
|
10
|
+
/** The catalogue origin's guard: installed before every other middleware. */
|
|
11
|
+
readonly catalogueGuard: Middleware;
|
|
12
|
+
/** Opens the frames' port once the catalogue's listens; where the frames run then. */
|
|
13
|
+
readonly start: () => Promise<FramesPlacement>;
|
|
14
|
+
/** Where the frames run, once `start` is over. */
|
|
15
|
+
readonly placement: () => Promise<FramesPlacement>;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* The host and port a request was sent to: `Host`, or `:authority` over HTTP/2, which has no `Host`.
|
|
19
|
+
*
|
|
20
|
+
* @param request - the request.
|
|
21
|
+
*/
|
|
22
|
+
export declare const hostOf: (request: IncomingMessage) => string | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* The frames' side of a dev server.
|
|
25
|
+
*
|
|
26
|
+
* @param server - the dev server.
|
|
27
|
+
* @param frames - where the configuration puts the frames.
|
|
28
|
+
* @param frameHtml - the frame page's HTML, before Vite transforms it.
|
|
29
|
+
* @param framedPages - the server's pages another origin's page may frame (`catalogueAnswer`).
|
|
30
|
+
*/
|
|
31
|
+
export declare const framesServing: (server: ViteDevServer, frames: ResolvedFrames, frameHtml: string, framedPages: ReadonlySet<string>) => FramesServing;
|
|
32
|
+
/**
|
|
33
|
+
* Gives the dev server's frames an origin of their own: the catalogue's guard first among the middlewares, the frames'
|
|
34
|
+
* port opened as the catalogue's listens (a port that cannot be had fails the start), and its address printed with
|
|
35
|
+
* the catalogue's.
|
|
36
|
+
*
|
|
37
|
+
* @param server - the dev server.
|
|
38
|
+
* @param config - the catalogue's configuration.
|
|
39
|
+
* @param place - receives where the frames run, for the pages' configuration.
|
|
40
|
+
* @param framedPages - the server's pages another origin's page may frame (a client's inline preview).
|
|
41
|
+
*/
|
|
42
|
+
export declare const serveFrames: (server: ViteDevServer, config: ResolvedConfig, place: (placement: () => Promise<FramesPlacement>) => void, framedPages: ReadonlySet<string>) => void;
|
|
43
|
+
export {};
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The dev server's second port, for the stories' frames: the same Vite server (its middlewares, its module graph, its
|
|
3
|
+
* WebSocket) on an origin of its own, and the guards that keep the two origins apart (`originGuard.ts`).
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* One Vite server, two `http.Server`s: no second module graph, no second watcher. The frames' port listens on the
|
|
7
|
+
* catalogue's address, over HTTPS when the catalogue does, and hands its WebSocket upgrades (the frames' HMR, the
|
|
8
|
+
* errors they report) to Vite's. Its port is the catalogue's + 1 by default, the next free one when that is taken; a
|
|
9
|
+
* port the configuration gives must be free.
|
|
10
|
+
*
|
|
11
|
+
* Vite in middleware mode has no server of its own to add a port beside: its frames stay on the catalogue's origin.
|
|
12
|
+
*
|
|
13
|
+
* @module
|
|
14
|
+
*/
|
|
15
|
+
import { existsSync, statSync } from "node:fs";
|
|
16
|
+
import { createServer as createHttpServer } from "node:http";
|
|
17
|
+
import { createServer as createHttpsServer } from "node:https";
|
|
18
|
+
import { resolve, sep } from "node:path";
|
|
19
|
+
import { SAME_ORIGIN } from "../frameOrigins.js";
|
|
20
|
+
import { framesOriginOf, servedPlacement } from "./framesConfig.js";
|
|
21
|
+
import { catalogueAnswer, FRAME_PAGE_PATH, framesAnswer, graphUrlOf, pageEntries } from "./originGuard.js";
|
|
22
|
+
import { pageHtml } from "./pages.js";
|
|
23
|
+
/** How many ports after the default one the frames try before taking any free port. */
|
|
24
|
+
const PORT_TRIES = 20;
|
|
25
|
+
/**
|
|
26
|
+
* A header's single value.
|
|
27
|
+
*
|
|
28
|
+
* @param request - the request.
|
|
29
|
+
* @param name - the header's name, in lower case.
|
|
30
|
+
*/
|
|
31
|
+
const headerOf = (request, name) => {
|
|
32
|
+
const value = request.headers[name];
|
|
33
|
+
return Array.isArray(value) ? value[0] : value;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* The host and port a request was sent to: `Host`, or `:authority` over HTTP/2, which has no `Host`.
|
|
37
|
+
*
|
|
38
|
+
* @param request - the request.
|
|
39
|
+
*/
|
|
40
|
+
export const hostOf = (request) => headerOf(request, "host") ?? headerOf(request, ":authority");
|
|
41
|
+
/**
|
|
42
|
+
* Whether a path goes to the project's own server through Vite's proxy (`server.proxy`), as a story's API call does.
|
|
43
|
+
*
|
|
44
|
+
* @param proxy - Vite's proxy, by its paths: a prefix, or a regular expression when it starts with `^`.
|
|
45
|
+
* @param url - the request's address.
|
|
46
|
+
*/
|
|
47
|
+
const isProxied = (proxy, url) => Object.keys(proxy ?? {}).some((key) => key.startsWith("^") ? new RegExp(key).test(url) : url.startsWith(key));
|
|
48
|
+
/**
|
|
49
|
+
* A request's path as an address parser reads it, which is how the routes behind the guards read it: a guard that read
|
|
50
|
+
* `//x/__forgebook/api/stories` as written would pass what the route answers as `/__forgebook/api/stories`.
|
|
51
|
+
*
|
|
52
|
+
* @param url - the request's address, as it was sent.
|
|
53
|
+
*/
|
|
54
|
+
const parsedPath = (url) => {
|
|
55
|
+
try {
|
|
56
|
+
return new URL(url, "http://parsed.invalid").pathname;
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return (url.split("?")[0] ?? url).split("#")[0] ?? "/";
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* What the browser says of a request.
|
|
64
|
+
*
|
|
65
|
+
* @param request - the request.
|
|
66
|
+
*/
|
|
67
|
+
const factsOf = (request) => {
|
|
68
|
+
const url = request.url ?? "/";
|
|
69
|
+
const queryAt = url.indexOf("?");
|
|
70
|
+
return {
|
|
71
|
+
path: parsedPath(url),
|
|
72
|
+
query: queryAt === -1 ? "" : (url.slice(queryAt).split("#")[0] ?? ""),
|
|
73
|
+
site: headerOf(request, "sec-fetch-site"),
|
|
74
|
+
mode: headerOf(request, "sec-fetch-mode"),
|
|
75
|
+
dest: headerOf(request, "sec-fetch-dest"),
|
|
76
|
+
origin: headerOf(request, "origin"),
|
|
77
|
+
host: hostOf(request)
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Whether a path names a file of the public folder.
|
|
82
|
+
*
|
|
83
|
+
* @param publicDir - the public folder's absolute path; empty when there is none.
|
|
84
|
+
* @param path - the request's path.
|
|
85
|
+
*/
|
|
86
|
+
const isPublicFile = (publicDir, path) => {
|
|
87
|
+
if (publicDir === "")
|
|
88
|
+
return false;
|
|
89
|
+
let decoded;
|
|
90
|
+
try {
|
|
91
|
+
decoded = decodeURIComponent(path);
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
const file = resolve(publicDir, `.${decoded}`);
|
|
97
|
+
return file.startsWith(`${publicDir}${sep}`) && existsSync(file) && statSync(file).isFile();
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* Whether a module the catalogue imports names an address in its code, as a whole string: how a worker's file
|
|
101
|
+
* (`?worker_file`) is started. Only an imported module counts, and only a whole string: an address asked for directly
|
|
102
|
+
* writes its own query into its module's code (its HMR context), and a story's script could plant any address there.
|
|
103
|
+
*
|
|
104
|
+
* @param modules - the graph's modules.
|
|
105
|
+
* @param url - the address, as the graph reads it; its `t=` left out.
|
|
106
|
+
*/
|
|
107
|
+
const isNamedInCode = (modules, url) => {
|
|
108
|
+
const named = JSON.stringify(url.replace(/[?&]t=\d+/, ""));
|
|
109
|
+
return modules.some((module) => module.importers.size > 0 && module.transformResult?.code.includes(named) === true);
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* Ends a request the guards turned down, with its status and nothing a page could use.
|
|
113
|
+
*
|
|
114
|
+
* @param response - the response.
|
|
115
|
+
* @param status - 403 or 404.
|
|
116
|
+
*/
|
|
117
|
+
const turnDown = (response, status) => {
|
|
118
|
+
response.statusCode = status;
|
|
119
|
+
response.setHeader("Content-Type", "text/plain");
|
|
120
|
+
response.end(status === 403 ? "Forbidden to the stories' frames\n" : "Not found\n");
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* Listens on a port, or tells why it could not.
|
|
124
|
+
*
|
|
125
|
+
* @param server - the server.
|
|
126
|
+
* @param port - the port; 0 for any free one.
|
|
127
|
+
* @param host - the address.
|
|
128
|
+
* @returns the port it listens on, or the error.
|
|
129
|
+
*/
|
|
130
|
+
const listenOn = (server, port, host) => new Promise((done) => {
|
|
131
|
+
const onError = (error) => done(error);
|
|
132
|
+
server.once("error", onError);
|
|
133
|
+
server.listen(port, host, () => {
|
|
134
|
+
server.off("error", onError);
|
|
135
|
+
const address = server.address();
|
|
136
|
+
done(address !== null && typeof address === "object" ? address.port : port);
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
/**
|
|
140
|
+
* Listens on the first free port of a list.
|
|
141
|
+
*
|
|
142
|
+
* @param server - the server.
|
|
143
|
+
* @param ports - the ports, in order; 0 for any free one.
|
|
144
|
+
* @param host - the address.
|
|
145
|
+
* @returns the port it listens on; none when every port is taken.
|
|
146
|
+
* @throws when listening fails for another reason than a port taken.
|
|
147
|
+
*/
|
|
148
|
+
const listenOnFirstFree = async (server, ports, host) => {
|
|
149
|
+
for (const port of ports.filter((each) => each <= 65535)) {
|
|
150
|
+
const listened = await listenOn(server, port, host);
|
|
151
|
+
if (typeof listened === "number")
|
|
152
|
+
return listened;
|
|
153
|
+
if (listened.code !== "EADDRINUSE")
|
|
154
|
+
throw listened;
|
|
155
|
+
}
|
|
156
|
+
return undefined;
|
|
157
|
+
};
|
|
158
|
+
/**
|
|
159
|
+
* The frames' `http.Server`, over HTTPS when the catalogue's is, its WebSocket upgrades handed to Vite's, closed with
|
|
160
|
+
* the catalogue's.
|
|
161
|
+
*
|
|
162
|
+
* @param server - the dev server.
|
|
163
|
+
* @param catalogue - the catalogue's own server.
|
|
164
|
+
* @param handle - answers a request.
|
|
165
|
+
*/
|
|
166
|
+
const framesHttpServer = (server, catalogue, handle) => {
|
|
167
|
+
const https = server.config.server.https;
|
|
168
|
+
const framesServer = https === undefined ? createHttpServer(handle) : createHttpsServer(https, handle);
|
|
169
|
+
framesServer.on("upgrade", (request, socket, head) => {
|
|
170
|
+
catalogue.emit("upgrade", request, socket, head);
|
|
171
|
+
});
|
|
172
|
+
catalogue.once("close", () => {
|
|
173
|
+
framesServer.closeAllConnections();
|
|
174
|
+
framesServer.close();
|
|
175
|
+
});
|
|
176
|
+
return framesServer;
|
|
177
|
+
};
|
|
178
|
+
/**
|
|
179
|
+
* The frames' side of a dev server.
|
|
180
|
+
*
|
|
181
|
+
* @param server - the dev server.
|
|
182
|
+
* @param frames - where the configuration puts the frames.
|
|
183
|
+
* @param frameHtml - the frame page's HTML, before Vite transforms it.
|
|
184
|
+
* @param framedPages - the server's pages another origin's page may frame (`catalogueAnswer`).
|
|
185
|
+
*/
|
|
186
|
+
export const framesServing = (server, frames, frameHtml, framedPages) => {
|
|
187
|
+
/** The requests that came in on the frames' port: the catalogue's guard leaves them to the frames'. */
|
|
188
|
+
const framesRequests = new WeakSet();
|
|
189
|
+
const sharedPaths = frames.kind === "isolated" ? frames.paths : [];
|
|
190
|
+
let framesPort;
|
|
191
|
+
let settle = () => undefined;
|
|
192
|
+
const placed = new Promise((resolvePlacement) => {
|
|
193
|
+
settle = resolvePlacement;
|
|
194
|
+
});
|
|
195
|
+
// the paths the frame page names, read once from the page as Vite serves it
|
|
196
|
+
let entries;
|
|
197
|
+
const pageEntriesOnce = () => {
|
|
198
|
+
entries ??= server.transformIndexHtml(FRAME_PAGE_PATH, frameHtml).then(pageEntries);
|
|
199
|
+
return entries;
|
|
200
|
+
};
|
|
201
|
+
const scheme = server.config.server.https === undefined ? "http:" : "https:";
|
|
202
|
+
/** The frames' origin for a request to the catalogue: the configured one, or its host on the frames' port. */
|
|
203
|
+
const framesOriginFor = (request) => {
|
|
204
|
+
if (frames.kind === "same-origin" || framesPort === undefined)
|
|
205
|
+
return undefined;
|
|
206
|
+
if (frames.origins !== undefined)
|
|
207
|
+
return frames.origins.frames;
|
|
208
|
+
const host = hostOf(request);
|
|
209
|
+
if (host === undefined)
|
|
210
|
+
return undefined;
|
|
211
|
+
try {
|
|
212
|
+
return new URL(`${scheme}//${new URL(`${scheme}//${host}`).hostname}:${framesPort}`).origin;
|
|
213
|
+
}
|
|
214
|
+
catch {
|
|
215
|
+
return undefined;
|
|
216
|
+
}
|
|
217
|
+
};
|
|
218
|
+
const catalogueGuard = (request, response, next) => {
|
|
219
|
+
if (framesRequests.has(request)) {
|
|
220
|
+
next();
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
const answer = catalogueAnswer(factsOf(request), framedPages, (path) => isPublicFile(server.config.publicDir, path));
|
|
224
|
+
if (answer === "refuse") {
|
|
225
|
+
turnDown(response, 403);
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
const framesOrigin = answer === "to-frames" ? framesOriginFor(request) : undefined;
|
|
229
|
+
if (framesOrigin === undefined) {
|
|
230
|
+
next();
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
response.statusCode = 307;
|
|
234
|
+
response.setHeader("Location", `${framesOrigin}${request.url ?? FRAME_PAGE_PATH}`);
|
|
235
|
+
response.end();
|
|
236
|
+
};
|
|
237
|
+
/** What the frames' port does with a request. */
|
|
238
|
+
const framesAnswerFor = async (request) => {
|
|
239
|
+
const facts = factsOf(request);
|
|
240
|
+
const answer = framesAnswer(facts, {
|
|
241
|
+
isPublic: isPublicFile(server.config.publicDir, facts.path),
|
|
242
|
+
isPageEntry: (await pageEntriesOnce()).has(facts.path),
|
|
243
|
+
isServedAlike: isProxied(server.config.server.proxy, request.url ?? "/") ||
|
|
244
|
+
sharedPaths.some((path) => facts.path.startsWith(path))
|
|
245
|
+
});
|
|
246
|
+
if (answer !== "ask-graph")
|
|
247
|
+
return answer;
|
|
248
|
+
const url = graphUrlOf(request.url ?? "/");
|
|
249
|
+
if (url === undefined)
|
|
250
|
+
return "refuse";
|
|
251
|
+
const graph = server.environments.client.moduleGraph;
|
|
252
|
+
const module = await graph.getModuleByUrl(url);
|
|
253
|
+
if (module !== undefined && module.importers.size > 0)
|
|
254
|
+
return "serve";
|
|
255
|
+
// a worker's own file, the file a `?url` import or `new URL(…, import.meta.url)` gives: no module imports them,
|
|
256
|
+
// the module that uses them names them in its code
|
|
257
|
+
return isNamedInCode([...graph.idToModuleMap.values()], url) ? "serve" : "refuse";
|
|
258
|
+
};
|
|
259
|
+
const handleFrames = (request, response) => {
|
|
260
|
+
framesRequests.add(request);
|
|
261
|
+
framesAnswerFor(request)
|
|
262
|
+
.then((answer) => {
|
|
263
|
+
if (answer === "serve")
|
|
264
|
+
server.middlewares(request, response);
|
|
265
|
+
else
|
|
266
|
+
turnDown(response, answer === "not-found" ? 404 : 403);
|
|
267
|
+
})
|
|
268
|
+
.catch((error) => {
|
|
269
|
+
server.config.logger.error(`Forgebook's frames: ${error instanceof Error ? error.message : String(error)}`);
|
|
270
|
+
turnDown(response, 403);
|
|
271
|
+
});
|
|
272
|
+
};
|
|
273
|
+
const start = async () => {
|
|
274
|
+
const catalogue = server.httpServer?.address();
|
|
275
|
+
if (frames.kind === "same-origin" || server.httpServer === null || typeof catalogue !== "object") {
|
|
276
|
+
if (frames.kind === "isolated")
|
|
277
|
+
server.config.logger.warn("Forgebook's frames share the catalogue's origin: Vite runs without a server of its own (middleware " +
|
|
278
|
+
"mode), so there is no port to give them, and a story's code can reach the catalogue");
|
|
279
|
+
settle(SAME_ORIGIN);
|
|
280
|
+
return SAME_ORIGIN;
|
|
281
|
+
}
|
|
282
|
+
if (catalogue === null)
|
|
283
|
+
throw new Error("Forgebook's frames start once the catalogue listens");
|
|
284
|
+
const framesServer = framesHttpServer(server, server.httpServer, handleFrames);
|
|
285
|
+
const wanted = frames.port ?? catalogue.port + 1;
|
|
286
|
+
// a port the configuration gives is that port; the default moves on, as Vite's own does
|
|
287
|
+
const tries = frames.port === undefined
|
|
288
|
+
? [...Array.from({ length: PORT_TRIES }, (_, index) => wanted + index), 0]
|
|
289
|
+
: [wanted];
|
|
290
|
+
const listened = await listenOnFirstFree(framesServer, tries, catalogue.address);
|
|
291
|
+
if (listened === undefined)
|
|
292
|
+
throw new Error(`Forgebook's frames: port ${wanted} is taken (frames.port, --frame-port)`);
|
|
293
|
+
framesPort = listened;
|
|
294
|
+
const placement = servedPlacement(frames, { catalogue: catalogue.port, frames: listened });
|
|
295
|
+
settle(placement);
|
|
296
|
+
return placement;
|
|
297
|
+
};
|
|
298
|
+
return { catalogueGuard, start, placement: () => placed };
|
|
299
|
+
};
|
|
300
|
+
/**
|
|
301
|
+
* Gives the dev server's frames an origin of their own: the catalogue's guard first among the middlewares, the frames'
|
|
302
|
+
* port opened as the catalogue's listens (a port that cannot be had fails the start), and its address printed with
|
|
303
|
+
* the catalogue's.
|
|
304
|
+
*
|
|
305
|
+
* @param server - the dev server.
|
|
306
|
+
* @param config - the catalogue's configuration.
|
|
307
|
+
* @param place - receives where the frames run, for the pages' configuration.
|
|
308
|
+
* @param framedPages - the server's pages another origin's page may frame (a client's inline preview).
|
|
309
|
+
*/
|
|
310
|
+
export const serveFrames = (server, config, place, framedPages) => {
|
|
311
|
+
// the placement only changes the guard's inline script, never the entries this page is read for
|
|
312
|
+
const frames = framesServing(server, config.frames, pageHtml("frame.html", config, SAME_ORIGIN), framedPages);
|
|
313
|
+
place(frames.placement);
|
|
314
|
+
server.middlewares.use(frames.catalogueGuard);
|
|
315
|
+
// in middleware mode nothing listens here: the frames stay on the catalogue's origin, known at once
|
|
316
|
+
if (server.httpServer === null) {
|
|
317
|
+
void frames.start();
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
320
|
+
const listen = server.listen;
|
|
321
|
+
server.listen = async (port, isRestart) => {
|
|
322
|
+
const listening = await listen(port, isRestart);
|
|
323
|
+
try {
|
|
324
|
+
await frames.start();
|
|
325
|
+
}
|
|
326
|
+
catch (error) {
|
|
327
|
+
// a catalogue whose frames cannot open must not keep serving pages that wait for them
|
|
328
|
+
await server.close();
|
|
329
|
+
throw error;
|
|
330
|
+
}
|
|
331
|
+
return listening;
|
|
332
|
+
};
|
|
333
|
+
const printUrls = server.printUrls;
|
|
334
|
+
server.printUrls = () => {
|
|
335
|
+
printUrls();
|
|
336
|
+
void frames.placement().then((placement) => {
|
|
337
|
+
const origin = framesOriginOf(placement, server.resolvedUrls?.local[0]);
|
|
338
|
+
if (origin !== undefined)
|
|
339
|
+
server.config.logger.info(` ➜ Frames: ${origin}/`);
|
|
340
|
+
});
|
|
341
|
+
};
|
|
342
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ComponentDocs, NoComponentDocs } from "../componentDocs.ts";
|
|
2
|
+
import type { ExtractFileComponent, ExtractStoryComponent } from "./adapter.ts";
|
|
3
|
+
/**
|
|
4
|
+
* A story file's component with the file that declares it.
|
|
5
|
+
*
|
|
6
|
+
* @param storyFile - the story file's absolute path.
|
|
7
|
+
* @returns the component, `{ docs: { name: null } }` when the meta names none, or a message saying why the file
|
|
8
|
+
* cannot be read.
|
|
9
|
+
*/
|
|
10
|
+
export declare const functionStoryComponent: ExtractStoryComponent;
|
|
11
|
+
/**
|
|
12
|
+
* The docs of a story file's component, without the files they come from.
|
|
13
|
+
*
|
|
14
|
+
* @param storyFile - the story file's absolute path.
|
|
15
|
+
* @returns the component's docs, `{ name: null }` when the meta names no component, or a message saying why the file
|
|
16
|
+
* cannot be read.
|
|
17
|
+
*/
|
|
18
|
+
export declare const functionComponentDocs: (storyFile: string) => ComponentDocs | NoComponentDocs | string;
|
|
19
|
+
/**
|
|
20
|
+
* A component a file exports, read from its types, for writing its first stories (`forgebook new`).
|
|
21
|
+
*
|
|
22
|
+
* @param file - the component's file, absolute.
|
|
23
|
+
* @param exportName - the export to read; the file's only component when none.
|
|
24
|
+
* @returns the component, or a message saying why it cannot be read (no component, several, a name not exported).
|
|
25
|
+
*/
|
|
26
|
+
export declare const functionFileComponent: ExtractFileComponent;
|