Source code for litestar_vite.config._spa

"""SPA and logging configuration."""

import os
from dataclasses import dataclass, field
from typing import Literal

__all__ = ("LoggingConfig", "SPAConfig")


[docs] @dataclass class SPAConfig: """Configuration for SPA HTML transformations. This configuration controls how the SPA HTML is transformed before serving, including CSRF token injection. Note: Route metadata is now generated as TypeScript (routes.ts) at build time instead of runtime injection. Use TypeGenConfig.generate_routes to enable. For Inertia-specific settings like ``use_script_element``, see ``InertiaConfig``. Attributes: inject_csrf: Whether to inject CSRF token into HTML (as window.__LITESTAR_CSRF__). csrf_var_name: Global variable name for CSRF token (e.g., window.__LITESTAR_CSRF__). app_selector: CSS selector for the app root element (used for data attributes). cache_transformed_html: Cache transformed HTML in production; disabled when inject_csrf=True because CSRF tokens are per-request. """ inject_csrf: bool = True csrf_var_name: str = "__LITESTAR_CSRF__" app_selector: str = "#app" cache_transformed_html: bool = True
def get_default_log_level() -> "Literal['quiet', 'normal', 'verbose']": """Get default log level from environment variable. Checks LITESTAR_VITE_LOG_LEVEL environment variable. Falls back to "normal" if not set or invalid. Returns: The log level from environment or "normal" default. """ env_level = os.getenv("LITESTAR_VITE_LOG_LEVEL", "").lower() match env_level: case "quiet" | "normal" | "verbose": return env_level case _: return "normal"
[docs] @dataclass class LoggingConfig: """Logging configuration for console output. Controls the verbosity and style of console output from both Python and TypeScript (via .litestar.json bridge). Attributes: level: Logging verbosity level. - "quiet": Minimal output (errors only) - "normal": Standard operational messages (default) - "verbose": Detailed debugging information Can also be set via LITESTAR_VITE_LOG_LEVEL environment variable. Precedence: explicit config > env var > default ("normal") show_paths_absolute: Show absolute paths instead of relative paths. Default False shows cleaner relative paths in output. suppress_npm_output: Suppress npm/yarn/pnpm script echo lines. When True, hides lines like "> dev" / "> vite" from output. suppress_vite_banner: Suppress the Vite startup banner. When True, only the LITESTAR banner is shown. timestamps: Include timestamps in log messages. Example: Quiet mode for CI/CD:: ViteConfig(logging=LoggingConfig(level="quiet")) Verbose debugging:: ViteConfig(logging=LoggingConfig(level="verbose", show_paths_absolute=True)) Environment variable:: export LITESTAR_VITE_LOG_LEVEL=quiet """ level: "Literal['quiet', 'normal', 'verbose']" = field(default_factory=get_default_log_level) show_paths_absolute: bool = False suppress_npm_output: bool = False suppress_vite_banner: bool = False timestamps: bool = False