LCOV - code coverage report
Current view: top level - dashql-app/src/shell_app - shell.tsx Coverage Total Hit
Test: DashQL d805a4b Lines: 94.0 % 50 47
Test Date: 2026-11-09 20:22:13

            Line data    Source code
       1              : import * as React from 'react';
       2              : import { createRoot } from 'react-dom/client';
       3              : import { BrowserRouter } from 'react-router-dom';
       4              : 
       5              : import { LoggerProvider } from '../platform/logger/logger_provider.js';
       6              : import { EmbeddedDatabaseProvider } from '../platform/database/embedded_database_provider.js';
       7              : import { GitHubTheme } from '../styles/github_theme.js';
       8              : import { LoggerToast } from '../ui/logger/logger_toast.js';
       9              : import { ShellErrorBoundary } from './shell_error_boundary.js';
      10              : import { ShellNavBar } from './shell_navbar.js';
      11              : import { ShellPage } from './shell_page.js';
      12              : import { ShellQueryHistoryProvider } from './shell_query_history.js';
      13              : import { ComputationRegistry } from '../compute/computation_registry.js';
      14              : import { ComputationScheduler } from '../compute/computation_scheduler.js';
      15              : import { DashQLCoreProvider } from '../runtime/core_provider.js';
      16              : import { ShellComputeQueryExecutionProvider } from './shell_compute_query_execution.js';
      17              : import { AppConfigProvider } from '../config/app_config.js';
      18              : import { PlatformEventListenerProvider } from '../platform/events/event_listener_provider.js';
      19              : import { HttpClientProvider } from '../platform/http/http_client_provider.js';
      20              : import { FlavorProvider } from '../config/flavor_provider.js';
      21              : import { getRequestedFlavor } from '../config/flavor_resolution.js';
      22              : import { DASHQL_FLAVOR } from '../config/flavors.js';
      23              : import * as styles from './shell.module.css';
      24              : 
      25              : import '@ankoh/dashql-ui/fonts/fonts.css';
      26              : import '@ankoh/dashql-ui/styles/colors.css';
      27              : import '@ankoh/dashql-ui/styles/tokens.css';
      28              : import '../styles/globals.css';
      29              : import '@ankoh/dashql-ui/styles/flavors/dbcom.css';
      30              : 
      31            1 : export const Shell: React.FC = () => {
      32            1 :     const [engineVersion, setEngineVersion] = React.useState<string | null>(null);
      33            1 :     const [shellGeneration, setShellGeneration] = React.useState(0);
      34            1 :     const resetShell = () => {
      35            1 :         setEngineVersion(null);
      36            1 :         setShellGeneration(generation => generation + 1);
      37            1 :     };
      38              : 
      39            1 :     return (
      40            1 :         <BrowserRouter>
      41            1 :             <LoggerProvider>
      42            1 :                 <ShellErrorBoundary>
      43            1 :                     <LoggerToast />
      44            1 :                     <AppConfigProvider>
      45            1 :                         <PlatformEventListenerProvider>
      46            1 :                             <HttpClientProvider>
      47            1 :                                 <EmbeddedDatabaseProvider>
      48            1 :                                     <GitHubTheme>
      49            1 :                                         <DashQLCoreProvider>
      50            1 :                                             <ComputationRegistry>
      51            1 :                                                 <ShellQueryHistoryProvider key={shellGeneration}>
      52            1 :                                                     <ShellComputeQueryExecutionProvider>
      53            1 :                                                         <ComputationScheduler />
      54            1 :                                                         <div className={styles.root}>
      55            1 :                                                             <ShellNavBar
      56            1 :                                                                 engineVersion={engineVersion}
      57            1 :                                                                 onReset={resetShell}
      58            1 :                                                             />
      59            1 :                                                             <ShellPage onEngineVersion={setEngineVersion} />
      60            1 :                                                         </div>
      61            1 :                                                     </ShellComputeQueryExecutionProvider>
      62            1 :                                                 </ShellQueryHistoryProvider>
      63            1 :                                             </ComputationRegistry>
      64            1 :                                         </DashQLCoreProvider>
      65            1 :                                     </GitHubTheme>
      66            1 :                                 </EmbeddedDatabaseProvider>
      67            1 :                             </HttpClientProvider>
      68            1 :                         </PlatformEventListenerProvider>
      69            1 :                     </AppConfigProvider>
      70            1 :                 </ShellErrorBoundary>
      71            1 :             </LoggerProvider>
      72            1 :         </BrowserRouter>
      73              :     );
      74            1 : };
      75              : 
      76              : // The shell is branded for Hyper, only a flavor other than the default one rebrands it
      77            1 : const requested = getRequestedFlavor();
      78            1 : const flavor = requested?.id === DASHQL_FLAVOR.id ? null : requested;
      79              : 
      80            1 : const element = document.getElementById('root');
      81            1 : createRoot(element!).render(flavor == null ? <Shell /> : (
      82            0 :     <FlavorProvider requested={flavor}>
      83            0 :         <Shell />
      84            0 :     </FlavorProvider>
      85            1 : ));
        

Generated by: LCOV version 2.0-1