LCOV - code coverage report
Current view: top level - dashql-app/src/shell_app - shell.tsx Coverage Total Hit
Test: DashQL 6e74948 Lines: 94.0 % 50 47
Test Date: 2026-11-06 17:46:50

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

Generated by: LCOV version 2.0-1