@mks2508/mks-ui 0.3.2 → 0.5.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/dist/react-ui/blocks/Terminal/ResttyAdapter.d.ts +146 -0
- package/dist/react-ui/blocks/Terminal/ResttyAdapter.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/ResttyAdapter.js +213 -0
- package/dist/react-ui/blocks/Terminal/Terminal.adapter.d.ts +55 -0
- package/dist/react-ui/blocks/Terminal/Terminal.adapter.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/Terminal.adapter.js +68 -0
- package/dist/react-ui/blocks/Terminal/Terminal.theme.d.ts +43 -0
- package/dist/react-ui/blocks/Terminal/Terminal.theme.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/Terminal.theme.js +59 -0
- package/dist/react-ui/blocks/Terminal/Terminal.theme.restty.d.ts +63 -0
- package/dist/react-ui/blocks/Terminal/Terminal.theme.restty.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/Terminal.theme.restty.js +109 -0
- package/dist/react-ui/blocks/Terminal/Terminal.types.d.ts +351 -0
- package/dist/react-ui/blocks/Terminal/Terminal.types.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/TerminalDisplay.d.ts +46 -0
- package/dist/react-ui/blocks/Terminal/TerminalDisplay.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/TerminalDisplay.js +168 -0
- package/dist/react-ui/blocks/Terminal/TerminalDisplay.styles.d.ts +21 -0
- package/dist/react-ui/blocks/Terminal/TerminalDisplay.styles.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/TerminalDisplay.styles.js +31 -0
- package/dist/react-ui/blocks/Terminal/TerminalDisplay.types.d.ts +56 -0
- package/dist/react-ui/blocks/Terminal/TerminalDisplay.types.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/TerminalPanel.d.ts +60 -0
- package/dist/react-ui/blocks/Terminal/TerminalPanel.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/TerminalPanel.js +183 -0
- package/dist/react-ui/blocks/Terminal/TerminalRestty.d.ts +111 -0
- package/dist/react-ui/blocks/Terminal/TerminalRestty.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/TerminalRestty.js +185 -0
- package/dist/react-ui/blocks/Terminal/TerminalXterm.d.ts +58 -0
- package/dist/react-ui/blocks/Terminal/TerminalXterm.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/TerminalXterm.js +143 -0
- package/dist/react-ui/blocks/Terminal/XTermAdapter.d.ts +87 -0
- package/dist/react-ui/blocks/Terminal/XTermAdapter.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/XTermAdapter.js +135 -0
- package/dist/react-ui/blocks/Terminal/chrome.d.ts +14 -0
- package/dist/react-ui/blocks/Terminal/chrome.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/chrome.js +6 -0
- package/dist/react-ui/blocks/Terminal/components/LogLineBadges.d.ts +160 -0
- package/dist/react-ui/blocks/Terminal/components/LogLineBadges.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/components/LogLineBadges.js +185 -0
- package/dist/react-ui/blocks/Terminal/components/SpecializedSyntaxHighlighter.d.ts +48 -0
- package/dist/react-ui/blocks/Terminal/components/SpecializedSyntaxHighlighter.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/components/SpecializedSyntaxHighlighter.js +139 -0
- package/dist/react-ui/blocks/Terminal/components/SyntaxHighlight.d.ts +60 -0
- package/dist/react-ui/blocks/Terminal/components/SyntaxHighlight.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/components/SyntaxHighlight.js +352 -0
- package/dist/react-ui/blocks/Terminal/components/TerminalLogBadge.d.ts +36 -0
- package/dist/react-ui/blocks/Terminal/components/TerminalLogBadge.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/components/TerminalLogBadge.js +52 -0
- package/dist/react-ui/blocks/Terminal/components/index.d.ts +10 -0
- package/dist/react-ui/blocks/Terminal/components/index.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/components/index.js +4 -0
- package/dist/react-ui/blocks/Terminal/display.d.ts +20 -0
- package/dist/react-ui/blocks/Terminal/display.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/display.js +9 -0
- package/dist/react-ui/blocks/Terminal/hooks/index.d.ts +11 -0
- package/dist/react-ui/blocks/Terminal/hooks/index.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/hooks/index.js +2 -0
- package/dist/react-ui/blocks/Terminal/hooks/useTerminalSettings.d.ts +69 -0
- package/dist/react-ui/blocks/Terminal/hooks/useTerminalSettings.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/hooks/useTerminalSettings.js +162 -0
- package/dist/react-ui/blocks/Terminal/hooks/useTerminalWebSocket.d.ts +104 -0
- package/dist/react-ui/blocks/Terminal/hooks/useTerminalWebSocket.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/hooks/useTerminalWebSocket.js +180 -0
- package/dist/react-ui/blocks/Terminal/index.d.ts +43 -0
- package/dist/react-ui/blocks/Terminal/index.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/index.js +41 -0
- package/dist/react-ui/blocks/Terminal/panel/LogLinesViewer.d.ts +58 -0
- package/dist/react-ui/blocks/Terminal/panel/LogLinesViewer.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/panel/LogLinesViewer.js +222 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalDebugPanel.d.ts +74 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalDebugPanel.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalDebugPanel.js +168 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalFilterDropdown.d.ts +42 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalFilterDropdown.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalFilterDropdown.js +175 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalFilterTabs.d.ts +43 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalFilterTabs.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.d.ts +38 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.js +62 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.types.d.ts +67 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.types.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanelRestty.d.ts +32 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanelRestty.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanelRestty.js +326 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanelXterm.d.ts +36 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanelXterm.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalInteractivePanelXterm.js +371 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalLogsPanel.d.ts +67 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalLogsPanel.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalLogsPanel.js +417 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalLogsPanel.types.d.ts +197 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalLogsPanel.types.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.d.ts +55 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.js +214 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.styles.d.ts +35 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.styles.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.styles.js +57 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.types.d.ts +62 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.types.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalPanelFooter.d.ts +30 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalPanelFooter.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalPanelFooter.js +126 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalPanelHeader.d.ts +31 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalPanelHeader.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalPanelHeader.js +149 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalPanelToolbar.d.ts +35 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalPanelToolbar.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalSessionControl.d.ts +58 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalSessionControl.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalSessionTabs.d.ts +63 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalSessionTabs.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalSessionTabs.js +245 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalSettingsPopover.d.ts +24 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalSettingsPopover.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalSettingsPopover.js +225 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalThemeSelector.d.ts +35 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalThemeSelector.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/panel/TerminalThemeSelector.js +187 -0
- package/dist/react-ui/blocks/Terminal/panel/index.d.ts +30 -0
- package/dist/react-ui/blocks/Terminal/panel/index.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/panel/terminal-filter-dropdown.module-CNVWCefU.css +60 -0
- package/dist/react-ui/blocks/Terminal/panel/terminal-filter-dropdown.module.js +5 -0
- package/dist/react-ui/blocks/Terminal/panel/terminal-session-tabs.module-cmyJ11jP.css +60 -0
- package/dist/react-ui/blocks/Terminal/panel/terminal-session-tabs.module.js +5 -0
- package/dist/react-ui/blocks/Terminal/parsing/BadgeFormatter.d.ts +73 -0
- package/dist/react-ui/blocks/Terminal/parsing/BadgeFormatter.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/parsing/BadgeFormatter.js +136 -0
- package/dist/react-ui/blocks/Terminal/parsing/HttpLogParser.d.ts +117 -0
- package/dist/react-ui/blocks/Terminal/parsing/HttpLogParser.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/parsing/HttpLogParser.js +174 -0
- package/dist/react-ui/blocks/Terminal/parsing/LogParser.types.d.ts +221 -0
- package/dist/react-ui/blocks/Terminal/parsing/LogParser.types.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/parsing/LogParserService.d.ts +184 -0
- package/dist/react-ui/blocks/Terminal/parsing/LogParserService.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/parsing/LogParserService.js +478 -0
- package/dist/react-ui/blocks/Terminal/parsing/MultilineAggregator.d.ts +173 -0
- package/dist/react-ui/blocks/Terminal/parsing/MultilineAggregator.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/parsing/MultilineAggregator.js +313 -0
- package/dist/react-ui/blocks/Terminal/parsing/PersistentLogBuffer.d.ts +181 -0
- package/dist/react-ui/blocks/Terminal/parsing/PersistentLogBuffer.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/parsing/PersistentLogBuffer.js +221 -0
- package/dist/react-ui/blocks/Terminal/parsing/SyntaxHighlighter.d.ts +69 -0
- package/dist/react-ui/blocks/Terminal/parsing/SyntaxHighlighter.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/parsing/SyntaxHighlighter.js +142 -0
- package/dist/react-ui/blocks/Terminal/parsing/TableParser.d.ts +125 -0
- package/dist/react-ui/blocks/Terminal/parsing/TableParser.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/parsing/TableParser.js +245 -0
- package/dist/react-ui/blocks/Terminal/parsing/ansi/AnsiColorMapper.d.ts +165 -0
- package/dist/react-ui/blocks/Terminal/parsing/ansi/AnsiColorMapper.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/parsing/ansi/AnsiColorMapper.js +225 -0
- package/dist/react-ui/blocks/Terminal/parsing/ansi/AnsiParser.d.ts +164 -0
- package/dist/react-ui/blocks/Terminal/parsing/ansi/AnsiParser.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/parsing/ansi/AnsiParser.js +285 -0
- package/dist/react-ui/blocks/Terminal/parsing/ansi/ansi.constants.d.ts +188 -0
- package/dist/react-ui/blocks/Terminal/parsing/ansi/ansi.constants.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/parsing/ansi/ansi.constants.js +178 -0
- package/dist/react-ui/blocks/Terminal/parsing/ansi/index.d.ts +12 -0
- package/dist/react-ui/blocks/Terminal/parsing/ansi/index.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/parsing/index.d.ts +24 -0
- package/dist/react-ui/blocks/Terminal/parsing/index.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/parsing/levels/LogLevel.types.d.ts +56 -0
- package/dist/react-ui/blocks/Terminal/parsing/levels/LogLevel.types.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/parsing/levels/LogLevelDetector.d.ts +140 -0
- package/dist/react-ui/blocks/Terminal/parsing/levels/LogLevelDetector.d.ts.map +1 -0
- package/dist/react-ui/blocks/Terminal/parsing/levels/LogLevelDetector.js +325 -0
- package/dist/react-ui/blocks/Terminal/parsing/levels/index.d.ts +10 -0
- package/dist/react-ui/blocks/Terminal/parsing/levels/index.d.ts.map +1 -0
- package/dist/react-ui/blocks/index.d.ts +11 -0
- package/dist/react-ui/blocks/index.d.ts.map +1 -0
- package/dist/react-ui/icons/lucide-animated/activity.js +1 -1
- package/dist/react-ui/icons/lucide-animated/bell-electric.js +1 -1
- package/dist/react-ui/icons/lucide-animated/bell.js +1 -1
- package/dist/react-ui/icons/lucide-animated/bot.js +1 -1
- package/dist/react-ui/icons/lucide-animated/box.js +1 -1
- package/dist/react-ui/icons/lucide-animated/circle-check.js +1 -1
- package/dist/react-ui/icons/lucide-animated/delete.js +1 -1
- package/dist/react-ui/icons/lucide-animated/download.js +1 -1
- package/dist/react-ui/icons/lucide-animated/home.js +1 -1
- package/dist/react-ui/icons/lucide-animated/layout-panel-top.js +1 -1
- package/dist/react-ui/icons/lucide-animated/plus.js +1 -1
- package/dist/react-ui/icons/lucide-animated/search.js +1 -1
- package/dist/react-ui/icons/lucide-animated/settings.js +1 -1
- package/dist/react-ui/icons/lucide-animated/trending-down.js +1 -1
- package/dist/react-ui/icons/lucide-animated/trending-up.js +1 -1
- package/dist/react-ui/icons/lucide-animated/x.js +1 -1
- package/dist/react-ui/index.js +3 -1
- package/dist/react-ui/lib/icon-wrapper.d.ts +37 -0
- package/dist/react-ui/lib/icon-wrapper.d.ts.map +1 -0
- package/dist/react-ui/lib/icon-wrapper.js +55 -0
- package/dist/react-ui/lib/index.d.ts +1 -0
- package/dist/react-ui/lib/index.d.ts.map +1 -1
- package/dist/react-ui/lib/index.js +1 -0
- package/dist/react-ui/primitives/waapi/Morph/techniques/useCSSGridMorph.d.ts.map +1 -1
- package/dist/react-ui/primitives/waapi/Morph/techniques/useCSSGridMorph.js +2 -0
- package/dist/react-ui/primitives/waapi/Morph/techniques/useFLIPClipPath.d.ts.map +1 -1
- package/dist/react-ui/primitives/waapi/Morph/techniques/useFLIPClipPath.js +2 -0
- package/dist/react-ui/primitives/waapi/Morph/techniques/useViewTransitions.d.ts.map +1 -1
- package/dist/react-ui/primitives/waapi/Morph/techniques/useViewTransitions.js +2 -0
- package/dist/react-ui/primitives/waapi/Morph/useMorph.d.ts.map +1 -1
- package/dist/react-ui/primitives/waapi/Morph/useMorph.js +2 -0
- package/dist/react-ui/primitives/waapi/Reorder/useReorder.d.ts.map +1 -1
- package/dist/react-ui/primitives/waapi/Reorder/useReorder.js +2 -0
- package/dist/react-ui/primitives/waapi/Reorder/useReorderPresence.d.ts.map +1 -1
- package/dist/react-ui/primitives/waapi/Reorder/useReorderPresence.js +2 -0
- package/dist/react-ui/primitives/waapi/core/useAnimationOrchestrator.d.ts.map +1 -1
- package/dist/react-ui/primitives/waapi/core/useAnimationOrchestrator.js +2 -0
- package/dist/react-ui/primitives/waapi/core/useElementRegistry.d.ts.map +1 -1
- package/dist/react-ui/primitives/waapi/core/useElementRegistry.js +2 -0
- package/dist/react-ui/primitives/waapi/core/useFLIPAnimation.d.ts.map +1 -1
- package/dist/react-ui/primitives/waapi/core/useFLIPAnimation.js +2 -0
- package/dist/react-ui/primitives/waapi/core/usePositionCapture.d.ts.map +1 -1
- package/dist/react-ui/primitives/waapi/core/usePositionCapture.js +2 -0
- package/dist/react-ui/ui/Button/Button.styles.d.ts +1 -1
- package/dist/react-ui/ui/CornerBracket/CornerBracket.styles.d.ts +1 -1
- package/dist/react-ui/ui/CornerBracket/CornerBracket.styles.js +1 -1
- package/dist/react-ui/ui/InputGroup/index.d.ts.map +1 -1
- package/dist/react-ui/ui/InputGroup/index.js +2 -0
- package/dist/react-ui/ui/Tabs/Tabs.styles.d.ts +43 -25
- package/dist/react-ui/ui/Tabs/Tabs.styles.d.ts.map +1 -1
- package/dist/react-ui/ui/Tabs/Tabs.styles.js +105 -13
- package/dist/react-ui/ui/Tabs/Tabs.types.d.ts +6 -3
- package/dist/react-ui/ui/Tabs/Tabs.types.d.ts.map +1 -1
- package/dist/react-ui/ui/Tabs/index.d.ts +18 -9
- package/dist/react-ui/ui/Tabs/index.d.ts.map +1 -1
- package/dist/react-ui/ui/Tabs/index.js +99 -27
- package/dist/react-ui/ui/index.js +1 -0
- package/package.json +84 -29
- package/src/css.d.ts +6 -0
- package/src/react-ui/blocks/Terminal/ResttyAdapter.ts +278 -0
- package/src/react-ui/blocks/Terminal/Terminal.adapter.ts +97 -0
- package/src/react-ui/blocks/Terminal/Terminal.theme.restty.ts +155 -0
- package/src/react-ui/blocks/Terminal/Terminal.theme.ts +80 -0
- package/src/react-ui/blocks/Terminal/Terminal.types.ts +438 -0
- package/src/react-ui/blocks/Terminal/TerminalDisplay.styles.ts +38 -0
- package/src/react-ui/blocks/Terminal/TerminalDisplay.tsx +243 -0
- package/src/react-ui/blocks/Terminal/TerminalDisplay.types.ts +73 -0
- package/src/react-ui/blocks/Terminal/TerminalPanel.tsx +269 -0
- package/src/react-ui/blocks/Terminal/TerminalRestty.tsx +326 -0
- package/src/react-ui/blocks/Terminal/TerminalXterm.tsx +230 -0
- package/src/react-ui/blocks/Terminal/XTermAdapter.ts +163 -0
- package/src/react-ui/blocks/Terminal/chrome.ts +25 -0
- package/src/react-ui/blocks/Terminal/components/LogLineBadges.tsx +316 -0
- package/src/react-ui/blocks/Terminal/components/SpecializedSyntaxHighlighter.tsx +218 -0
- package/src/react-ui/blocks/Terminal/components/SyntaxHighlight.tsx +386 -0
- package/src/react-ui/blocks/Terminal/components/TerminalLogBadge.tsx +67 -0
- package/src/react-ui/blocks/Terminal/components/index.ts +10 -0
- package/src/react-ui/blocks/Terminal/display.ts +46 -0
- package/src/react-ui/blocks/Terminal/hooks/index.ts +22 -0
- package/src/react-ui/blocks/Terminal/hooks/useTerminalSettings.ts +229 -0
- package/src/react-ui/blocks/Terminal/hooks/useTerminalWebSocket.ts +292 -0
- package/src/react-ui/blocks/Terminal/index.ts +111 -0
- package/src/react-ui/blocks/Terminal/panel/LogLinesViewer.tsx +330 -0
- package/src/react-ui/blocks/Terminal/panel/TerminalDebugPanel.tsx +242 -0
- package/src/react-ui/blocks/Terminal/panel/TerminalFilterDropdown.tsx +202 -0
- package/src/react-ui/blocks/Terminal/panel/TerminalFilterTabs.tsx +140 -0
- package/src/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.tsx +68 -0
- package/src/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.types.ts +85 -0
- package/src/react-ui/blocks/Terminal/panel/TerminalInteractivePanelRestty.tsx +383 -0
- package/src/react-ui/blocks/Terminal/panel/TerminalInteractivePanelXterm.tsx +439 -0
- package/src/react-ui/blocks/Terminal/panel/TerminalLogsPanel.tsx +550 -0
- package/src/react-ui/blocks/Terminal/panel/TerminalLogsPanel.types.ts +259 -0
- package/src/react-ui/blocks/Terminal/panel/TerminalPanelChrome.styles.ts +75 -0
- package/src/react-ui/blocks/Terminal/panel/TerminalPanelChrome.tsx +266 -0
- package/src/react-ui/blocks/Terminal/panel/TerminalPanelChrome.types.ts +82 -0
- package/src/react-ui/blocks/Terminal/panel/TerminalPanelFooter.tsx +112 -0
- package/src/react-ui/blocks/Terminal/panel/TerminalPanelHeader.tsx +178 -0
- package/src/react-ui/blocks/Terminal/panel/TerminalPanelToolbar.tsx +203 -0
- package/src/react-ui/blocks/Terminal/panel/TerminalSessionControl.tsx +252 -0
- package/src/react-ui/blocks/Terminal/panel/TerminalSessionTabs.tsx +334 -0
- package/src/react-ui/blocks/Terminal/panel/TerminalSettingsPopover.tsx +261 -0
- package/src/react-ui/blocks/Terminal/panel/TerminalThemeSelector.tsx +248 -0
- package/src/react-ui/blocks/Terminal/panel/index.ts +72 -0
- package/src/react-ui/blocks/Terminal/panel/terminal-filter-dropdown.module.css +59 -0
- package/src/react-ui/blocks/Terminal/panel/terminal-session-tabs.module.css +59 -0
- package/src/react-ui/blocks/Terminal/parsing/BadgeFormatter.ts +180 -0
- package/src/react-ui/blocks/Terminal/parsing/HttpLogParser.ts +248 -0
- package/src/react-ui/blocks/Terminal/parsing/LogParser.types.ts +283 -0
- package/src/react-ui/blocks/Terminal/parsing/LogParserService.ts +686 -0
- package/src/react-ui/blocks/Terminal/parsing/MultilineAggregator.ts +466 -0
- package/src/react-ui/blocks/Terminal/parsing/PersistentLogBuffer.ts +343 -0
- package/src/react-ui/blocks/Terminal/parsing/SyntaxHighlighter.ts +167 -0
- package/src/react-ui/blocks/Terminal/parsing/TableParser.ts +348 -0
- package/src/react-ui/blocks/Terminal/parsing/ansi/AnsiColorMapper.ts +251 -0
- package/src/react-ui/blocks/Terminal/parsing/ansi/AnsiParser.ts +390 -0
- package/src/react-ui/blocks/Terminal/parsing/ansi/ansi.constants.ts +320 -0
- package/src/react-ui/blocks/Terminal/parsing/ansi/index.ts +20 -0
- package/src/react-ui/blocks/Terminal/parsing/index.ts +69 -0
- package/src/react-ui/blocks/Terminal/parsing/levels/LogLevel.types.ts +68 -0
- package/src/react-ui/blocks/Terminal/parsing/levels/LogLevelDetector.ts +436 -0
- package/src/react-ui/blocks/Terminal/parsing/levels/index.ts +14 -0
- package/src/react-ui/blocks/index.ts +11 -0
- package/src/react-ui/icons/lucide-animated/activity.tsx +2 -2
- package/src/react-ui/icons/lucide-animated/bell-electric.tsx +1 -1
- package/src/react-ui/icons/lucide-animated/bell.tsx +2 -2
- package/src/react-ui/icons/lucide-animated/bot.tsx +1 -1
- package/src/react-ui/icons/lucide-animated/box.tsx +2 -2
- package/src/react-ui/icons/lucide-animated/circle-check.tsx +2 -2
- package/src/react-ui/icons/lucide-animated/delete.tsx +2 -2
- package/src/react-ui/icons/lucide-animated/download.tsx +2 -2
- package/src/react-ui/icons/lucide-animated/home.tsx +2 -2
- package/src/react-ui/icons/lucide-animated/layout-panel-top.tsx +1 -1
- package/src/react-ui/icons/lucide-animated/plus.tsx +1 -1
- package/src/react-ui/icons/lucide-animated/search.tsx +1 -1
- package/src/react-ui/icons/lucide-animated/settings.tsx +1 -1
- package/src/react-ui/icons/lucide-animated/trending-down.tsx +2 -2
- package/src/react-ui/icons/lucide-animated/trending-up.tsx +2 -2
- package/src/react-ui/icons/lucide-animated/x.tsx +2 -2
- package/src/react-ui/lib/icon-wrapper.tsx +70 -0
- package/src/react-ui/lib/index.ts +1 -0
- package/src/react-ui/primitives/waapi/Morph/techniques/useCSSGridMorph.ts +1 -0
- package/src/react-ui/primitives/waapi/Morph/techniques/useFLIPClipPath.ts +1 -0
- package/src/react-ui/primitives/waapi/Morph/techniques/useViewTransitions.ts +1 -0
- package/src/react-ui/primitives/waapi/Morph/useMorph.ts +1 -0
- package/src/react-ui/primitives/waapi/Reorder/useReorder.ts +1 -0
- package/src/react-ui/primitives/waapi/Reorder/useReorderPresence.ts +1 -0
- package/src/react-ui/primitives/waapi/core/useAnimationOrchestrator.ts +1 -0
- package/src/react-ui/primitives/waapi/core/useElementRegistry.ts +1 -0
- package/src/react-ui/primitives/waapi/core/useFLIPAnimation.ts +1 -0
- package/src/react-ui/primitives/waapi/core/usePositionCapture.ts +1 -0
- package/src/react-ui/ui/Accordion/index.tsx +3 -3
- package/src/react-ui/ui/CornerBracket/CornerBracket.styles.ts +1 -1
- package/src/react-ui/ui/InputGroup/index.tsx +2 -0
- package/src/react-ui/ui/Tabs/Tabs.css +39 -0
- package/src/react-ui/ui/Tabs/Tabs.styles.ts +119 -31
- package/src/react-ui/ui/Tabs/Tabs.types.ts +8 -3
- package/src/react-ui/ui/Tabs/index.tsx +135 -27
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
//#region src/react-ui/blocks/Terminal/parsing/PersistentLogBuffer.ts
|
|
2
|
+
/**
|
|
3
|
+
* Persistent circular buffer for log entries.
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Circular buffer with automatic cleanup
|
|
7
|
+
* - Pagination support for large datasets
|
|
8
|
+
* - Search by pattern
|
|
9
|
+
* - Memory-efficient storage
|
|
10
|
+
* - Periodic cleanup to prevent memory leaks
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* const buffer = new PersistentLogBuffer({ maxSize: 50000 });
|
|
15
|
+
* buffer.append(entries);
|
|
16
|
+
* const page1 = buffer.getEntries({ offset: 0, limit: 100 });
|
|
17
|
+
* const results = buffer.search(/error/i);
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
var PersistentLogBuffer = class {
|
|
21
|
+
/** Internal storage for entries */
|
|
22
|
+
buffer = [];
|
|
23
|
+
/** Buffer configuration */
|
|
24
|
+
config;
|
|
25
|
+
/** Cleanup timer reference */
|
|
26
|
+
cleanupTimer;
|
|
27
|
+
/** Cleanup scheduled flag */
|
|
28
|
+
cleanupScheduled = false;
|
|
29
|
+
/**
|
|
30
|
+
* Create a new persistent log buffer.
|
|
31
|
+
*
|
|
32
|
+
* @param config - Buffer configuration
|
|
33
|
+
*/
|
|
34
|
+
constructor(config = {}) {
|
|
35
|
+
this.config = {
|
|
36
|
+
maxSize: 5e4,
|
|
37
|
+
softLimit: 4e4,
|
|
38
|
+
cleanupBatch: 5e3,
|
|
39
|
+
cleanupInterval: 3e4,
|
|
40
|
+
...config
|
|
41
|
+
};
|
|
42
|
+
this.startCleanupTimer();
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Append entries to the buffer.
|
|
46
|
+
*
|
|
47
|
+
* If the buffer exceeds the soft limit, schedules a cleanup.
|
|
48
|
+
*
|
|
49
|
+
* @param entries - Entries to append
|
|
50
|
+
*/
|
|
51
|
+
append(entries) {
|
|
52
|
+
if (entries.length === 0) return;
|
|
53
|
+
this.buffer.push(...entries);
|
|
54
|
+
if (this.buffer.length > this.config.softLimit && !this.cleanupScheduled) this.scheduleCleanup();
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Prepend entries to the buffer (for loading historical logs).
|
|
58
|
+
*
|
|
59
|
+
* @param entries - Entries to prepend
|
|
60
|
+
*/
|
|
61
|
+
prepend(entries) {
|
|
62
|
+
if (entries.length === 0) return;
|
|
63
|
+
this.buffer = [...entries, ...this.buffer];
|
|
64
|
+
if (this.buffer.length > this.config.maxSize) this.buffer = this.buffer.slice(0, this.config.maxSize);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Get entries from the buffer with pagination.
|
|
68
|
+
*
|
|
69
|
+
* @param options - Query options
|
|
70
|
+
* @returns Array of entries
|
|
71
|
+
*/
|
|
72
|
+
getEntries(options = {}) {
|
|
73
|
+
let { offset = 0, limit, fromLine, toLine } = options;
|
|
74
|
+
let start = offset;
|
|
75
|
+
let end;
|
|
76
|
+
if (fromLine !== void 0) {
|
|
77
|
+
start = this.buffer.findIndex((e) => e.line_number >= fromLine);
|
|
78
|
+
if (start === -1) start = this.buffer.length;
|
|
79
|
+
}
|
|
80
|
+
if (toLine !== void 0) {
|
|
81
|
+
end = this.buffer.findIndex((e) => e.line_number > toLine);
|
|
82
|
+
if (end === -1) end = this.buffer.length;
|
|
83
|
+
}
|
|
84
|
+
if (limit !== void 0 && end === void 0) end = start + limit;
|
|
85
|
+
return this.buffer.slice(start, end);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Get all entries in the buffer.
|
|
89
|
+
*
|
|
90
|
+
* @returns All entries
|
|
91
|
+
*/
|
|
92
|
+
getAllEntries() {
|
|
93
|
+
return this.buffer;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Get the total number of entries.
|
|
97
|
+
*
|
|
98
|
+
* @returns Entry count
|
|
99
|
+
*/
|
|
100
|
+
getSize() {
|
|
101
|
+
return this.buffer.length;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Search entries by pattern.
|
|
105
|
+
*
|
|
106
|
+
* @param pattern - RegExp pattern or string to search
|
|
107
|
+
* @param options - Search options
|
|
108
|
+
* @returns Matching entries
|
|
109
|
+
*/
|
|
110
|
+
search(pattern, options = {}) {
|
|
111
|
+
const { fromLine, limit = 100, caseInsensitive = true } = options;
|
|
112
|
+
const regex = typeof pattern === "string" ? new RegExp(pattern, caseInsensitive ? "i" : void 0) : pattern;
|
|
113
|
+
const results = [];
|
|
114
|
+
const start = fromLine !== void 0 ? this.buffer.findIndex((e) => e.line_number >= fromLine) : 0;
|
|
115
|
+
for (let i = start; i < this.buffer.length && results.length < limit; i++) {
|
|
116
|
+
const entry = this.buffer[i];
|
|
117
|
+
if (regex.test(entry.raw) || regex.test(entry.message ?? "")) results.push(entry);
|
|
118
|
+
}
|
|
119
|
+
return results;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Find entries by line number.
|
|
123
|
+
*
|
|
124
|
+
* @param lineNumbers - Array of line numbers to find
|
|
125
|
+
* @returns Matching entries
|
|
126
|
+
*/
|
|
127
|
+
findByLineNumbers(lineNumbers) {
|
|
128
|
+
const lineSet = new Set(lineNumbers);
|
|
129
|
+
return this.buffer.filter((e) => lineSet.has(e.line_number));
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Get entries filtered by log level.
|
|
133
|
+
*
|
|
134
|
+
* @param level - Log level to filter by
|
|
135
|
+
* @returns Filtered entries
|
|
136
|
+
*/
|
|
137
|
+
getByLevel(level) {
|
|
138
|
+
return this.buffer.filter((e) => e.level === level);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Clear all entries from the buffer.
|
|
142
|
+
*/
|
|
143
|
+
clear() {
|
|
144
|
+
this.buffer = [];
|
|
145
|
+
this.cleanupScheduled = false;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Get buffer statistics.
|
|
149
|
+
*
|
|
150
|
+
* @returns Buffer statistics
|
|
151
|
+
*/
|
|
152
|
+
getStats() {
|
|
153
|
+
const size = this.buffer.length;
|
|
154
|
+
let memoryUsage = 0;
|
|
155
|
+
for (const entry of this.buffer) {
|
|
156
|
+
memoryUsage += entry.raw.length * 2;
|
|
157
|
+
if (entry.message) memoryUsage += entry.message.length * 2;
|
|
158
|
+
if (entry.formatted) memoryUsage += entry.formatted.length * 2;
|
|
159
|
+
}
|
|
160
|
+
return {
|
|
161
|
+
size,
|
|
162
|
+
maxSize: this.config.maxSize,
|
|
163
|
+
usage: size / this.config.maxSize,
|
|
164
|
+
firstLine: this.buffer[0]?.line_number,
|
|
165
|
+
lastLine: this.buffer[size - 1]?.line_number,
|
|
166
|
+
memoryUsage
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Schedule a cleanup operation.
|
|
171
|
+
*/
|
|
172
|
+
scheduleCleanup() {
|
|
173
|
+
if (this.cleanupScheduled) return;
|
|
174
|
+
this.cleanupScheduled = true;
|
|
175
|
+
setTimeout(() => this.cleanup(), 0);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Perform cleanup of old entries.
|
|
179
|
+
*
|
|
180
|
+
* Removes the oldest entries to keep the buffer within limits.
|
|
181
|
+
*/
|
|
182
|
+
cleanup() {
|
|
183
|
+
if (this.buffer.length <= this.config.softLimit) {
|
|
184
|
+
this.cleanupScheduled = false;
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
const toRemove = Math.min(this.buffer.length - this.config.softLimit, this.config.cleanupBatch);
|
|
188
|
+
this.buffer = this.buffer.slice(toRemove);
|
|
189
|
+
this.cleanupScheduled = false;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Start the periodic cleanup timer.
|
|
193
|
+
*/
|
|
194
|
+
startCleanupTimer() {
|
|
195
|
+
this.cleanupTimer = setInterval(() => {
|
|
196
|
+
this.cleanup();
|
|
197
|
+
}, this.config.cleanupInterval);
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Stop the cleanup timer and clear resources.
|
|
201
|
+
*/
|
|
202
|
+
destroy() {
|
|
203
|
+
if (this.cleanupTimer) {
|
|
204
|
+
clearInterval(this.cleanupTimer);
|
|
205
|
+
this.cleanupTimer = void 0;
|
|
206
|
+
}
|
|
207
|
+
this.clear();
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
/**
|
|
211
|
+
* Create a new persistent log buffer with default configuration.
|
|
212
|
+
*
|
|
213
|
+
* @param config - Optional configuration overrides
|
|
214
|
+
* @returns New buffer instance
|
|
215
|
+
*/
|
|
216
|
+
function createPersistentLogBuffer(config) {
|
|
217
|
+
return new PersistentLogBuffer(config);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
//#endregion
|
|
221
|
+
export { PersistentLogBuffer, createPersistentLogBuffer };
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Syntax highlighter for log messages.
|
|
3
|
+
*
|
|
4
|
+
* Applies color highlighting to specific elements within log messages.
|
|
5
|
+
* Uses standard ANSI SGR codes compatible with xterm.js.
|
|
6
|
+
*
|
|
7
|
+
* IMPORTANT: Only highlights plain text - skips lines with existing ANSI codes
|
|
8
|
+
* to prevent mixing codes and creating visual artifacts.
|
|
9
|
+
*
|
|
10
|
+
* @module components/devenv/terminal/parsing/syntax
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Syntax highlighter class.
|
|
14
|
+
*
|
|
15
|
+
* Applies syntax highlighting to plain text messages.
|
|
16
|
+
* Skips messages that already contain ANSI codes to prevent
|
|
17
|
+
* visual artifacts from mixed escape sequences.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* const highlighter = new SyntaxHighlighter();
|
|
22
|
+
* const highlighted = highlighter.highlight('GET /api/workspaces { filter: {} }');
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export declare class SyntaxHighlighter {
|
|
26
|
+
/**
|
|
27
|
+
* Apply syntax highlighting to a message.
|
|
28
|
+
*
|
|
29
|
+
* Only processes plain text - messages with existing ANSI codes
|
|
30
|
+
* are returned unchanged to prevent visual artifacts.
|
|
31
|
+
*
|
|
32
|
+
* @param message - Message to highlight
|
|
33
|
+
* @returns Message with ANSI color codes applied, or original if already colored
|
|
34
|
+
*/
|
|
35
|
+
highlight(message: string): string;
|
|
36
|
+
/**
|
|
37
|
+
* Highlight HTTP methods.
|
|
38
|
+
*/
|
|
39
|
+
private highlightHttpMethods;
|
|
40
|
+
/**
|
|
41
|
+
* Highlight URL paths.
|
|
42
|
+
*/
|
|
43
|
+
private highlightPaths;
|
|
44
|
+
/**
|
|
45
|
+
* Highlight braces and brackets.
|
|
46
|
+
*/
|
|
47
|
+
private highlightBraces;
|
|
48
|
+
/**
|
|
49
|
+
* Highlight property keys.
|
|
50
|
+
*/
|
|
51
|
+
private highlightKeys;
|
|
52
|
+
/**
|
|
53
|
+
* Highlight string values.
|
|
54
|
+
*/
|
|
55
|
+
private highlightStrings;
|
|
56
|
+
/**
|
|
57
|
+
* Highlight numeric values.
|
|
58
|
+
*/
|
|
59
|
+
private highlightNumbers;
|
|
60
|
+
/**
|
|
61
|
+
* Highlight boolean values.
|
|
62
|
+
*/
|
|
63
|
+
private highlightBooleans;
|
|
64
|
+
/**
|
|
65
|
+
* Highlight null and undefined.
|
|
66
|
+
*/
|
|
67
|
+
private highlightNullish;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=SyntaxHighlighter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SyntaxHighlighter.d.ts","sourceRoot":"","sources":["../../../../../src/react-ui/blocks/Terminal/parsing/SyntaxHighlighter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA6CH;;;;;;;;;;;;GAYG;AACH,qBAAa,iBAAiB;IAC5B;;;;;;;;OAQG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAyBlC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAK5B;;OAEG;IACH,OAAO,CAAC,cAAc;IAKtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAMrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAKzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAIzB"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
//#region src/react-ui/blocks/Terminal/parsing/SyntaxHighlighter.ts
|
|
2
|
+
/**
|
|
3
|
+
* Syntax highlighter for log messages.
|
|
4
|
+
*
|
|
5
|
+
* Applies color highlighting to specific elements within log messages.
|
|
6
|
+
* Uses standard ANSI SGR codes compatible with xterm.js.
|
|
7
|
+
*
|
|
8
|
+
* IMPORTANT: Only highlights plain text - skips lines with existing ANSI codes
|
|
9
|
+
* to prevent mixing codes and creating visual artifacts.
|
|
10
|
+
*
|
|
11
|
+
* @module components/devenv/terminal/parsing/syntax
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* ANSI color codes for syntax highlighting.
|
|
15
|
+
*
|
|
16
|
+
* Uses standard SGR (Select Graphic Rendition) codes for compatibility.
|
|
17
|
+
*/
|
|
18
|
+
const SYNTAX_COLORS = {
|
|
19
|
+
httpMethod: "\x1B[35m",
|
|
20
|
+
path: "\x1B[36m",
|
|
21
|
+
brace: "\x1B[33m",
|
|
22
|
+
key: "\x1B[32m",
|
|
23
|
+
string: "\x1B[92m",
|
|
24
|
+
number: "\x1B[93m",
|
|
25
|
+
boolean: "\x1B[34m",
|
|
26
|
+
nullish: "\x1B[90m",
|
|
27
|
+
reset: "\x1B[0m"
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* HTTP method patterns.
|
|
31
|
+
*/
|
|
32
|
+
const HTTP_METHODS = [
|
|
33
|
+
"GET",
|
|
34
|
+
"POST",
|
|
35
|
+
"PUT",
|
|
36
|
+
"DELETE",
|
|
37
|
+
"PATCH",
|
|
38
|
+
"HEAD",
|
|
39
|
+
"OPTIONS",
|
|
40
|
+
"CONNECT",
|
|
41
|
+
"TRACE"
|
|
42
|
+
];
|
|
43
|
+
/**
|
|
44
|
+
* Pattern to detect existing ANSI escape codes.
|
|
45
|
+
*/
|
|
46
|
+
const ANSI_PATTERN = /\x1b\[[0-9;]*m/g;
|
|
47
|
+
/**
|
|
48
|
+
* Check if text contains ANSI escape codes.
|
|
49
|
+
*/
|
|
50
|
+
function hasAnsiCodes(text) {
|
|
51
|
+
return ANSI_PATTERN.test(text);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Syntax highlighter class.
|
|
55
|
+
*
|
|
56
|
+
* Applies syntax highlighting to plain text messages.
|
|
57
|
+
* Skips messages that already contain ANSI codes to prevent
|
|
58
|
+
* visual artifacts from mixed escape sequences.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```ts
|
|
62
|
+
* const highlighter = new SyntaxHighlighter();
|
|
63
|
+
* const highlighted = highlighter.highlight('GET /api/workspaces { filter: {} }');
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
var SyntaxHighlighter = class {
|
|
67
|
+
/**
|
|
68
|
+
* Apply syntax highlighting to a message.
|
|
69
|
+
*
|
|
70
|
+
* Only processes plain text - messages with existing ANSI codes
|
|
71
|
+
* are returned unchanged to prevent visual artifacts.
|
|
72
|
+
*
|
|
73
|
+
* @param message - Message to highlight
|
|
74
|
+
* @returns Message with ANSI color codes applied, or original if already colored
|
|
75
|
+
*/
|
|
76
|
+
highlight(message) {
|
|
77
|
+
if (!message || message.length === 0) return message;
|
|
78
|
+
if (hasAnsiCodes(message)) return message;
|
|
79
|
+
let result = message;
|
|
80
|
+
result = this.highlightStrings(result);
|
|
81
|
+
result = this.highlightNumbers(result);
|
|
82
|
+
result = this.highlightBooleans(result);
|
|
83
|
+
result = this.highlightNullish(result);
|
|
84
|
+
result = this.highlightKeys(result);
|
|
85
|
+
result = this.highlightPaths(result);
|
|
86
|
+
result = this.highlightHttpMethods(result);
|
|
87
|
+
result = this.highlightBraces(result);
|
|
88
|
+
return result;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Highlight HTTP methods.
|
|
92
|
+
*/
|
|
93
|
+
highlightHttpMethods(text) {
|
|
94
|
+
const methodPattern = new RegExp(`\\b(${HTTP_METHODS.join("|")})\\b`, "g");
|
|
95
|
+
return text.replace(methodPattern, `${SYNTAX_COLORS.httpMethod}$1${SYNTAX_COLORS.reset}`);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Highlight URL paths.
|
|
99
|
+
*/
|
|
100
|
+
highlightPaths(text) {
|
|
101
|
+
return text.replace(/(^|[\s(])\/[a-zA-Z0-9_/-]+/g, `$1${SYNTAX_COLORS.path}$2${SYNTAX_COLORS.reset}`);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Highlight braces and brackets.
|
|
105
|
+
*/
|
|
106
|
+
highlightBraces(text) {
|
|
107
|
+
return text.replace(/([{}[\]])/g, `${SYNTAX_COLORS.brace}$1${SYNTAX_COLORS.reset}`);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Highlight property keys.
|
|
111
|
+
*/
|
|
112
|
+
highlightKeys(text) {
|
|
113
|
+
return text.replace(/(^|[\s])([a-zA-Z_][a-zA-Z0-9_]*)(\s*:)/g, `$1${SYNTAX_COLORS.key}$2${SYNTAX_COLORS.reset}$3`);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Highlight string values.
|
|
117
|
+
*/
|
|
118
|
+
highlightStrings(text) {
|
|
119
|
+
return text.replace(/([:=,]\s*)(['"])(.*?)\2/g, `$1${SYNTAX_COLORS.string}$2$3$2${SYNTAX_COLORS.reset}`);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Highlight numeric values.
|
|
123
|
+
*/
|
|
124
|
+
highlightNumbers(text) {
|
|
125
|
+
return text.replace(/(?<!\w)(-?\d+(?:\.\d+)?)(?!\w)/g, `${SYNTAX_COLORS.number}$1${SYNTAX_COLORS.reset}`);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Highlight boolean values.
|
|
129
|
+
*/
|
|
130
|
+
highlightBooleans(text) {
|
|
131
|
+
return text.replace(/\b(true|false)\b/g, `${SYNTAX_COLORS.boolean}$1${SYNTAX_COLORS.reset}`);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Highlight null and undefined.
|
|
135
|
+
*/
|
|
136
|
+
highlightNullish(text) {
|
|
137
|
+
return text.replace(/\b(null|undefined)\b/g, `${SYNTAX_COLORS.nullish}$1${SYNTAX_COLORS.reset}`);
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
//#endregion
|
|
142
|
+
export { SyntaxHighlighter };
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Table parser for box-drawing character tables.
|
|
3
|
+
*
|
|
4
|
+
* Detects and parses tables created with box-drawing characters
|
|
5
|
+
* (├─│└┌) commonly found in CLI output.
|
|
6
|
+
*
|
|
7
|
+
* @module components/devenv/terminal/parsing/TableParser
|
|
8
|
+
*/
|
|
9
|
+
import type { IParsedLogEntry } from './LogParser.types';
|
|
10
|
+
/**
|
|
11
|
+
* Box-drawing characters used for table borders.
|
|
12
|
+
* Unicode range: U+2500-U+257F
|
|
13
|
+
*/
|
|
14
|
+
export declare const TABLE_CHARS: readonly ["─", "│", "┌", "┐", "└", "┘", "├", "┤", "┬", "┴", "┼", "═", "║", "╔", "╗", "╚", "╝", "╠", "╣", "╦", "╩", "╬", "╒", "╓", "╕", "╖", "╘", "╙", "╛", "╜", "╢", "╡", "╤", "╧", "╟", "╞", "╡", "╢", "╪", "╫"];
|
|
15
|
+
/**
|
|
16
|
+
* Table row type.
|
|
17
|
+
*/
|
|
18
|
+
export type TTableRowType = 'top' | 'header' | 'separator' | 'data' | 'bottom' | 'unknown';
|
|
19
|
+
/**
|
|
20
|
+
* Parsed table row.
|
|
21
|
+
*/
|
|
22
|
+
export interface ITableRow {
|
|
23
|
+
/** Raw line */
|
|
24
|
+
raw: string;
|
|
25
|
+
/** Row type */
|
|
26
|
+
type: TTableRowType;
|
|
27
|
+
/** Cells extracted from the row (for data rows) */
|
|
28
|
+
cells?: string[];
|
|
29
|
+
/** Line number */
|
|
30
|
+
lineNumber: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Parsed table data.
|
|
34
|
+
*/
|
|
35
|
+
export interface ITableData {
|
|
36
|
+
/** All rows in the table */
|
|
37
|
+
rows: ITableRow[];
|
|
38
|
+
/** Number of columns */
|
|
39
|
+
columnCount: number;
|
|
40
|
+
/** Header row if present */
|
|
41
|
+
headers?: string[];
|
|
42
|
+
/** Data rows (excluding borders) */
|
|
43
|
+
dataRows: string[][];
|
|
44
|
+
/** Line number of first row */
|
|
45
|
+
startLine: number;
|
|
46
|
+
/** Line number of last row */
|
|
47
|
+
endLine: number;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Table parser class.
|
|
51
|
+
*
|
|
52
|
+
* Detects and parses tables created with box-drawing characters.
|
|
53
|
+
* Groups consecutive table lines and extracts cell data.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```ts
|
|
57
|
+
* const parser = new TableParser();
|
|
58
|
+
* const isTable = parser.isTableLine('├──────────┼──────────┤');
|
|
59
|
+
* const table = parser.parseTable(lines);
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export declare class TableParser {
|
|
63
|
+
/** Minimum box-drawing characters to consider a line a table */
|
|
64
|
+
private readonly MIN_TABLE_CHARS;
|
|
65
|
+
/**
|
|
66
|
+
* Check if a line is a table line.
|
|
67
|
+
*
|
|
68
|
+
* A line is considered a table line if it contains multiple
|
|
69
|
+
* box-drawing characters.
|
|
70
|
+
*
|
|
71
|
+
* @param line - Line to check
|
|
72
|
+
* @returns true if line is part of a table
|
|
73
|
+
*/
|
|
74
|
+
isTableLine(line: string): boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Determine the type of a table row.
|
|
77
|
+
*
|
|
78
|
+
* @param line - Table row line
|
|
79
|
+
* @returns Row type
|
|
80
|
+
*/
|
|
81
|
+
getRowType(line: string): TTableRowType;
|
|
82
|
+
/**
|
|
83
|
+
* Extract cells from a table row.
|
|
84
|
+
*
|
|
85
|
+
* Splits the row by │ characters and trims each cell.
|
|
86
|
+
*
|
|
87
|
+
* @param line - Table row line
|
|
88
|
+
* @returns Array of cell contents
|
|
89
|
+
*/
|
|
90
|
+
extractCells(line: string): string[];
|
|
91
|
+
/**
|
|
92
|
+
* Parse a complete table from an array of lines.
|
|
93
|
+
*
|
|
94
|
+
* Groups consecutive table lines and extracts structured data.
|
|
95
|
+
*
|
|
96
|
+
* @param lines - Array of table lines
|
|
97
|
+
* @param startLine - Starting line number
|
|
98
|
+
* @returns Parsed table data
|
|
99
|
+
*/
|
|
100
|
+
parseTable(lines: string[], startLine: number): ITableData;
|
|
101
|
+
/**
|
|
102
|
+
* Parse table entries from a log stream.
|
|
103
|
+
*
|
|
104
|
+
* Scans through lines, grouping table lines into entries.
|
|
105
|
+
*
|
|
106
|
+
* @param lines - Array of log lines
|
|
107
|
+
* @param startLine - Starting line number
|
|
108
|
+
* @returns Array of parsed log entries
|
|
109
|
+
*/
|
|
110
|
+
parseTableEntries(lines: string[], startLine: number): IParsedLogEntry[];
|
|
111
|
+
/**
|
|
112
|
+
* Get CSS class for a table row type.
|
|
113
|
+
*
|
|
114
|
+
* @param type - Row type
|
|
115
|
+
* @returns CSS class string
|
|
116
|
+
*/
|
|
117
|
+
getRowClass(type: TTableRowType): string;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Create a new table parser instance.
|
|
121
|
+
*
|
|
122
|
+
* @returns New TableParser instance
|
|
123
|
+
*/
|
|
124
|
+
export declare function createTableParser(): TableParser;
|
|
125
|
+
//# sourceMappingURL=TableParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableParser.d.ts","sourceRoot":"","sources":["../../../../../src/react-ui/blocks/Terminal/parsing/TableParser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;GAGG;AACH,eAAO,MAAM,WAAW,mNAQd,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE3F;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,eAAe;IACf,GAAG,EAAE,MAAM,CAAC;IAEZ,eAAe;IACf,IAAI,EAAE,aAAa,CAAC;IAEpB,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAEjB,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,4BAA4B;IAC5B,IAAI,EAAE,SAAS,EAAE,CAAC;IAElB,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IAEpB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,oCAAoC;IACpC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC;IAErB,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAElB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAW;IACtB,gEAAgE;IAChE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAK;IAErC;;;;;;;;OAQG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAelC;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;IAoCvC;;;;;;;OAOG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAQpC;;;;;;;;OAQG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU;IAwC1D;;;;;;;;OAQG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe,EAAE;IA0FxE;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM;CAezC;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,CAE/C"}
|