From e54b7e2c5f3a736f248353317007f922771ab0c7 Mon Sep 17 00:00:00 2001 From: xXJSONDeruloXx Date: Mon, 21 Jul 2025 23:04:08 -0400 Subject: refactor: remove unused backend files and improve configuration handling in TypeScript --- generate_ts_config.py | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100755 generate_ts_config.py (limited to 'generate_ts_config.py') diff --git a/generate_ts_config.py b/generate_ts_config.py new file mode 100755 index 0000000..7585ec6 --- /dev/null +++ b/generate_ts_config.py @@ -0,0 +1,132 @@ +#!/usr/bin/env python3 +""" +Generate TypeScript configuration constants from shared Python config. +This script is run during development to sync the schemas. +""" + +import sys +from pathlib import Path + +# Add the parent directory to Python path to import shared_config +sys.path.insert(0, str(Path(__file__).parent)) + +from shared_config import CONFIG_SCHEMA_DEF, ConfigFieldType, get_field_names, get_defaults, get_field_types + + +def generate_typescript_config(): + """Generate TypeScript configuration constants""" + + ts_content = '''/** + * Auto-generated TypeScript configuration schema. + * DO NOT EDIT MANUALLY - Generated from shared_config.py + * + * To update this file, run: python3 generate_ts_config.py > src/config/generatedConfigSchema.ts + */ + +// Configuration field type enum - matches Python +export enum ConfigFieldType { + BOOLEAN = "boolean", + INTEGER = "integer", + FLOAT = "float", + STRING = "string" +} + +// Configuration field definition +export interface ConfigField { + name: string; + fieldType: ConfigFieldType; + default: boolean | number | string; + description: string; +} + +// Configuration schema - auto-generated from Python +export const CONFIG_SCHEMA: Record = { +''' + + # Generate each field + for field_name, field_def in CONFIG_SCHEMA_DEF.items(): + field_type = field_def["fieldType"] + default_value = field_def["default"] + + # Format default value for TypeScript + if field_type == "string": + default_str = f'"{default_value}"' + elif field_type == "boolean": + default_str = "true" if default_value else "false" + else: + default_str = str(default_value) + + ts_content += f''' {field_name}: {{ + name: "{field_def["name"]}", + fieldType: ConfigFieldType.{field_type.upper()}, + default: {default_str}, + description: "{field_def["description"]}" + }}, +''' + + ts_content += '''}; + +// Type-safe configuration data structure +export interface ConfigurationData { +''' + + # Generate interface fields + for field_name, field_def in CONFIG_SCHEMA_DEF.items(): + field_type = field_def["fieldType"] + + # Map Python types to TypeScript types + ts_type_map = { + "string": "string", + "boolean": "boolean", + "integer": "number", + "float": "number" + } + + ts_type = ts_type_map[field_type] + ts_content += f' {field_name}: {ts_type};\n' + + ts_content += '''} + +// Helper functions +export function getFieldNames(): string[] { + return Object.keys(CONFIG_SCHEMA); +} + +export function getDefaults(): ConfigurationData { + return { +''' + + # Generate defaults object + for field_name, field_def in CONFIG_SCHEMA_DEF.items(): + default_value = field_def["default"] + field_type = field_def["fieldType"] + + if field_type == "string": + default_str = f'"{default_value}"' + elif field_type == "boolean": + default_str = "true" if default_value else "false" + else: + default_str = str(default_value) + + ts_content += f' {field_name}: {default_str},\n' + + ts_content += ''' }; +} + +export function getFieldTypes(): Record { + return { +''' + + # Generate field types object + for field_name, field_def in CONFIG_SCHEMA_DEF.items(): + ts_content += f' {field_name}: "{field_def["fieldType"]}",\n' + + ts_content += ''' }; +} +''' + + return ts_content + + +if __name__ == "__main__": + print(generate_typescript_config()) -- cgit v1.2.3 From 4112393b17d25e54f1b8822734210b045da97613 Mon Sep 17 00:00:00 2001 From: xXJSONDeruloXx Date: Mon, 21 Jul 2025 23:15:29 -0400 Subject: dry up with py generators for ts backends --- generate_ts_config.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'generate_ts_config.py') diff --git a/generate_ts_config.py b/generate_ts_config.py index 7585ec6..4164c37 100755 --- a/generate_ts_config.py +++ b/generate_ts_config.py @@ -113,13 +113,13 @@ export function getDefaults(): ConfigurationData { ts_content += ''' }; } -export function getFieldTypes(): Record { +export function getFieldTypes(): Record { return { ''' # Generate field types object for field_name, field_def in CONFIG_SCHEMA_DEF.items(): - ts_content += f' {field_name}: "{field_def["fieldType"]}",\n' + ts_content += f' {field_name}: ConfigFieldType.{field_def["fieldType"].upper()},\n' ts_content += ''' }; } -- cgit v1.2.3