From ac082bce2a938d0d5b6f4a75c1444df220e3c4aa Mon Sep 17 00:00:00 2001 From: root Date: Thu, 30 Oct 2025 19:13:57 +0000 Subject: [PATCH] Add config() Go to Definition support to VS Code extension Always include params in window.rsxapp to reduce state variations Add request params to window.rsxapp global Enhance module creation commands with clear nomenclature guidance Add module/submodule/feature nomenclature clarification to docs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../Commands/Rsx/Module_Create_Command.php | 4 +- .../Rsx/Module_Feature_Create_Command.php | 13 +- .../Commands/Rsx/Submodule_Create_Command.php | 11 +- .../Rsx/Submodule_Feature_Create_Command.php | 16 +- .../Submodule_Subfeature_Create_Command.php | 2 +- .../Core/Bundle/Rsx_Bundle_Abstract.php | 4 + app/RSpade/Core/Dispatch/Dispatcher.php | 4 +- app/RSpade/Core/Rsx.php | 21 +- app/RSpade/man/module_organization.txt | 234 ++++++++++++++++++ .../out/definition_provider.js | 104 ++++++++ .../out/definition_provider.js.map | 2 +- .../resource/vscode_extension/package.json | 2 +- .../vscode_extension/rspade-framework.vsix | Bin 103194 -> 104112 bytes .../src/definition_provider.ts | 130 ++++++++++ docs/CLAUDE.dist.md | 15 ++ 15 files changed, 546 insertions(+), 16 deletions(-) create mode 100755 app/RSpade/man/module_organization.txt mode change 100755 => 100644 app/RSpade/resource/vscode_extension/rspade-framework.vsix diff --git a/app/RSpade/Commands/Rsx/Module_Create_Command.php b/app/RSpade/Commands/Rsx/Module_Create_Command.php index 520b7548c..096dc20db 100755 --- a/app/RSpade/Commands/Rsx/Module_Create_Command.php +++ b/app/RSpade/Commands/Rsx/Module_Create_Command.php @@ -13,7 +13,7 @@ class Module_Create_Command extends Command * * @var string */ - protected $signature = 'rsx:app:module:create + protected $signature = 'rsx:app:module:create {name : Module name (lowercase with underscores)}'; /** @@ -21,7 +21,7 @@ class Module_Create_Command extends Command * * @var string */ - protected $description = 'Create a new RSX application module with default index feature'; + protected $description = 'Create a new module (top-level section with shared layout). Example: frontend, admin'; /** * Execute the console command. diff --git a/app/RSpade/Commands/Rsx/Module_Feature_Create_Command.php b/app/RSpade/Commands/Rsx/Module_Feature_Create_Command.php index 7f39f5660..d1e7dcb0f 100755 --- a/app/RSpade/Commands/Rsx/Module_Feature_Create_Command.php +++ b/app/RSpade/Commands/Rsx/Module_Feature_Create_Command.php @@ -12,7 +12,7 @@ class Module_Feature_Create_Command extends Command * * @var string */ - protected $signature = 'rsx:app:module:feature:create + protected $signature = 'rsx:app:module:feature:create {module : Module name (must exist)} {feature : Feature name (lowercase with underscores)}'; @@ -21,7 +21,7 @@ class Module_Feature_Create_Command extends Command * * @var string */ - protected $description = 'Create a new feature within an RSX module'; + protected $description = 'Create a feature (CRUD page group) within a module. Example: clients, tasks'; /** * Execute the console command. @@ -47,7 +47,14 @@ class Module_Feature_Create_Command extends Command // Check if module exists $module_path = base_path("rsx/app/{$module_name}"); if (!is_dir($module_path)) { - $this->error("Module '{$module_name}' does not exist. Create it first with: php artisan rsx:app:module:create {$module_name}"); + $this->error("Module '{$module_name}' does not exist."); + $this->line(''); + $this->line('NOMENCLATURE:'); + $this->line(' Module = Top-level section with shared layout (e.g., frontend, admin)'); + $this->line(' Feature = CRUD page group within a module (e.g., clients, tasks)'); + $this->line(''); + $this->line('Create the module first:'); + $this->info(" php artisan rsx:app:module:create {$module_name}"); return 1; } diff --git a/app/RSpade/Commands/Rsx/Submodule_Create_Command.php b/app/RSpade/Commands/Rsx/Submodule_Create_Command.php index a0dbf57e7..8a95d754c 100755 --- a/app/RSpade/Commands/Rsx/Submodule_Create_Command.php +++ b/app/RSpade/Commands/Rsx/Submodule_Create_Command.php @@ -21,7 +21,7 @@ class Submodule_Create_Command extends Command * * @var string */ - protected $description = 'Create a new submodule within an RSX module with embedded layout and default index feature'; + protected $description = 'Create a submodule (page group with own layout within a module). Example: settings within frontend'; /** * Execute the console command. @@ -47,7 +47,14 @@ class Submodule_Create_Command extends Command // Check if module exists $module_path = base_path("rsx/app/{$module_name}"); if (!is_dir($module_path)) { - $this->error("Module '{$module_name}' does not exist. Create it first with: php artisan rsx:app:module:create {$module_name}"); + $this->error("Module '{$module_name}' does not exist."); + $this->line(''); + $this->line('NOMENCLATURE:'); + $this->line(' Module = Top-level section with shared layout (e.g., frontend, admin)'); + $this->line(' Submodule = Page group with own layout within a module (e.g., settings within frontend)'); + $this->line(''); + $this->line('Create the module first:'); + $this->info(" php artisan rsx:app:module:create {$module_name}"); return 1; } diff --git a/app/RSpade/Commands/Rsx/Submodule_Feature_Create_Command.php b/app/RSpade/Commands/Rsx/Submodule_Feature_Create_Command.php index e3140d3f9..1caa93e98 100755 --- a/app/RSpade/Commands/Rsx/Submodule_Feature_Create_Command.php +++ b/app/RSpade/Commands/Rsx/Submodule_Feature_Create_Command.php @@ -22,7 +22,7 @@ class Submodule_Feature_Create_Command extends Command * * @var string */ - protected $description = 'Create a new feature within an RSX submodule'; + protected $description = 'Create a feature (CRUD page group) within a submodule'; /** * Execute the console command. @@ -54,14 +54,24 @@ class Submodule_Feature_Create_Command extends Command // Check if module exists $module_path = base_path("rsx/app/{$module_name}"); if (!is_dir($module_path)) { - $this->error("Module '{$module_name}' does not exist. Create it first with: php artisan rsx:app:module:create {$module_name}"); + $this->error("Module '{$module_name}' does not exist."); + $this->line(''); + $this->line('Create the module first:'); + $this->info(" php artisan rsx:app:module:create {$module_name}"); return 1; } // Check if submodule exists $submodule_path = "{$module_path}/{$submodule_name}"; if (!is_dir($submodule_path)) { - $this->error("Submodule '{$submodule_name}' does not exist. Create it first with: php artisan rsx:app:submodule:create {$module_name} {$submodule_name}"); + $this->error("Submodule '{$submodule_name}' does not exist in module '{$module_name}'."); + $this->line(''); + $this->line('NOMENCLATURE:'); + $this->line(' Submodule = Page group with own layout within a module'); + $this->line(' Feature = CRUD page group within a submodule'); + $this->line(''); + $this->line('Create the submodule first:'); + $this->info(" php artisan rsx:app:submodule:create {$module_name} {$submodule_name}"); return 1; } diff --git a/app/RSpade/Commands/Rsx/Submodule_Subfeature_Create_Command.php b/app/RSpade/Commands/Rsx/Submodule_Subfeature_Create_Command.php index d4df16a37..7b192f639 100755 --- a/app/RSpade/Commands/Rsx/Submodule_Subfeature_Create_Command.php +++ b/app/RSpade/Commands/Rsx/Submodule_Subfeature_Create_Command.php @@ -23,7 +23,7 @@ class Submodule_Subfeature_Create_Command extends Command * * @var string */ - protected $description = 'Create a new subfeature within an RSX submodule feature'; + protected $description = 'Create a subfeature (individual CRUD operation like edit, view) within a feature'; /** * Execute the console command. diff --git a/app/RSpade/Core/Bundle/Rsx_Bundle_Abstract.php b/app/RSpade/Core/Bundle/Rsx_Bundle_Abstract.php index 29071014c..86e979446 100755 --- a/app/RSpade/Core/Bundle/Rsx_Bundle_Abstract.php +++ b/app/RSpade/Core/Bundle/Rsx_Bundle_Abstract.php @@ -267,6 +267,10 @@ abstract class Rsx_Bundle_Abstract $rsxapp_data['is_auth'] = Session::is_logged_in(); $rsxapp_data['ajax_disable_batching'] = config('rsx.development.ajax_disable_batching', false); + // Add current params (always set to reduce state variations) + $current_params = \App\RSpade\Core\Rsx::get_current_params(); + $rsxapp_data['params'] = $current_params ?? []; + // Add user, site, and csrf data from session $rsxapp_data['user'] = Session::get_user(); $rsxapp_data['site'] = Session::get_site(); diff --git a/app/RSpade/Core/Dispatch/Dispatcher.php b/app/RSpade/Core/Dispatch/Dispatcher.php index a6a16ed8d..592292bdf 100755 --- a/app/RSpade/Core/Dispatch/Dispatcher.php +++ b/app/RSpade/Core/Dispatch/Dispatcher.php @@ -246,7 +246,7 @@ class Dispatcher Debugger::console_debug('DISPATCH', 'Matched route to ' . $handler_class . '::' . $handler_method . ' params: ' . json_encode($params)); // Set current controller and action in Rsx for tracking - \App\RSpade\Core\Rsx::_set_current_controller_action($handler_class, $handler_method); + \App\RSpade\Core\Rsx::_set_current_controller_action($handler_class, $handler_method, $params); // Load and validate handler class static::__load_handler_class($handler_class); @@ -574,7 +574,7 @@ class Dispatcher } // Set current controller and action for tracking - Rsx::_set_current_controller_action($class_name, $method_name); + Rsx::_set_current_controller_action($class_name, $method_name, $params); // Check if this is a controller (all methods are static) if (static::__is_controller($class_name)) { diff --git a/app/RSpade/Core/Rsx.php b/app/RSpade/Core/Rsx.php index 3613240fb..c1951ebbf 100755 --- a/app/RSpade/Core/Rsx.php +++ b/app/RSpade/Core/Rsx.php @@ -35,13 +35,20 @@ class Rsx */ protected static $current_action = null; + /** + * Current request params + * @var array|null + */ + protected static $current_params = null; + /** * Set the current controller and action being executed * * @param string $controller_class The controller class name * @param string $action_method The action method name + * @param array $params Optional request params to store */ - public static function _set_current_controller_action($controller_class, $action_method) + public static function _set_current_controller_action($controller_class, $action_method, array $params = []) { // Extract just the class name without namespace $parts = explode('\\', $controller_class); @@ -49,6 +56,7 @@ class Rsx static::$current_controller = $class_name; static::$current_action = $action_method; + static::$current_params = $params; } /** @@ -71,6 +79,16 @@ class Rsx return static::$current_action; } + /** + * Get the current request params + * + * @return array|null The current request params or null if not set + */ + public static function get_current_params() + { + return static::$current_params; + } + /** * Clear the current controller and action tracking */ @@ -78,6 +96,7 @@ class Rsx { static::$current_controller = null; static::$current_action = null; + static::$current_params = null; } /** diff --git a/app/RSpade/man/module_organization.txt b/app/RSpade/man/module_organization.txt new file mode 100755 index 000000000..b9d4ae9d4 --- /dev/null +++ b/app/RSpade/man/module_organization.txt @@ -0,0 +1,234 @@ +MODULE_ORGANIZATION(3) RSX Framework Manual MODULE_ORGANIZATION(3) + +NAME + Module Organization - RSX application structure and nomenclature + +SYNOPSIS + php artisan rsx:app:module:create + php artisan rsx:app:module:feature:create + php artisan rsx:app:submodule:create + php artisan rsx:app:submodule:feature:create + php artisan rsx:app:submodule:subfeature:create + +DESCRIPTION + RSX applications organize code into a hierarchical structure: + Module > Submodule > Feature > Subfeature + + This structure enforces clear separation of concerns and predictable + file organization for both developers and AI assistants. + +NOMENCLATURE + + Module + Top-level section with shared layout and common UI elements. + + Examples: frontend, admin, api + + Rule: If pages share a layout, they belong in the same module. + + Created with: rsx:app:module:create + + Structure: + rsx/app/frontend/ + frontend_bundle.php + frontend_layout.blade.php + frontend_index_controller.php + frontend_index.blade.php + ... + + Submodule + Group of pages within a module with its own embedded layout. + + Examples: settings within frontend, reports within admin + + Rule: If pages within a module need their own layout and common + navigation, create a submodule. + + Created with: rsx:app:submodule:create + + Structure: + rsx/app/frontend/settings/ + frontend_settings_layout.blade.php + frontend_settings.scss + frontend_settings_index_controller.php + ... + + Feature + CRUD page group for a specific entity or concept. + + Examples: clients, tasks, users, projects + + Rule: If pages perform CRUD operations on a single entity type, + they are a feature group. + + Created with: + rsx:app:module:feature:create + rsx:app:submodule:feature:create + + Structure: + rsx/app/frontend/clients/ + frontend_clients_controller.php + frontend_clients.blade.php + frontend_clients.js + frontend_clients.scss + + Subfeature + Individual CRUD operation within a feature. + + Examples: edit, view, delete, export + + Rule: Each distinct operation on an entity is a subfeature. + + Created with: + rsx:app:submodule:subfeature:create + + Structure: + rsx/app/frontend/settings/profile/edit/ + frontend_settings_profile_edit_controller.php + frontend_settings_profile_edit.blade.php + frontend_settings_profile_edit.js + frontend_settings_profile_edit.scss + +EXAMPLES + + Basic Module with Feature + Structure: frontend/clients/edit + Hierarchy: module, feature, subfeature + + Commands: + php artisan rsx:app:module:create frontend + php artisan rsx:app:module:feature:create frontend clients + (edit subfeature created automatically with clients feature) + + Module with Submodule + Structure: frontend/settings/profile/edit + Hierarchy: module, submodule, feature, subfeature + + Commands: + php artisan rsx:app:module:create frontend + php artisan rsx:app:submodule:create frontend settings + php artisan rsx:app:submodule:feature:create frontend settings profile + php artisan rsx:app:submodule:subfeature:create frontend settings profile edit + + Simple Admin Module + Structure: admin/sites + Hierarchy: module, feature + + Commands: + php artisan rsx:app:module:create admin + php artisan rsx:app:module:feature:create admin sites + +DIRECTORY STRUCTURE + + Module Level + rsx/app/{module}/ + {module}_bundle.php - Asset bundle definition + {module}_layout.blade.php - Shared layout for module + {module}_index_controller.php + {module}_index.blade.php + {module}_index.js + {module}_index.scss + + Feature Level + rsx/app/{module}/{feature}/ + {module}_{feature}_controller.php + {module}_{feature}.blade.php + {module}_{feature}.js + {module}_{feature}.scss + + Submodule Level + rsx/app/{module}/{submodule}/ + {module}_{submodule}_layout.blade.php - Embedded layout + {module}_{submodule}.scss + {module}_{submodule}_index_controller.php + ... + + Subfeature Level + rsx/app/{module}/{submodule}/{feature}/{subfeature}/ + {module}_{submodule}_{feature}_{subfeature}_controller.php + {module}_{submodule}_{feature}_{subfeature}.blade.php + {module}_{submodule}_{feature}_{subfeature}.js + {module}_{submodule}_{feature}_{subfeature}.scss + +ROUTING + + Routes are automatically generated from the hierarchy: + + Module index: /{module} + Module feature: /{module}/{feature} + Submodule index: /{module}/{submodule} + Submodule feature: /{module}/{submodule}/{feature} + Submodule subfeature: /{module}/{submodule}/{feature}/{subfeature} + + Controllers use #[Route] attributes to define routes: + + #[Route('/{module}/{feature}', name: 'module.feature.index')] + public static function index(Request $request, array $params = []) + +DECISION GUIDE + + When creating new pages, ask: + + 1. Does it share a layout with existing pages? + YES -> Add to existing module + NO -> Create new module + + 2. Does it need its own layout within a module? + YES -> Create submodule + NO -> Create feature in module + + 3. Is it a CRUD operation group? + YES -> Create feature + NO -> May need submodule or different organization + + 4. Is it a single CRUD operation? + YES -> Create subfeature + NO -> Create feature with multiple subfeatures + +COMMON MISTAKES + + Creating Module Instead of Feature + WRONG: php artisan rsx:app:module:create tasks + RIGHT: php artisan rsx:app:module:feature:create frontend tasks + + Reason: tasks shares the frontend layout, so it's a feature not a module. + + Creating Feature Before Module + WRONG: php artisan rsx:app:module:feature:create tasks edit + RIGHT: php artisan rsx:app:module:create frontend + php artisan rsx:app:module:feature:create frontend tasks + + Error: "Module 'tasks' does not exist" + + Solution: Create the module first, then add features to it. + + Confusing Submodule with Feature + Submodule: Has embedded layout, groups related features + Feature: CRUD page group, uses parent layout + + Use submodule for: Settings, Reports, Admin sections + Use feature for: Clients, Tasks, Users, Projects + +NAMING CONVENTIONS + + All names use lowercase with underscores only: [a-z_]+ + + Valid: frontend, client_portal, user_management + Invalid: Frontend, client-portal, userManagement, User_Management + +FILE NAMING + + All files follow predictable patterns: + + Controller: {prefix}_controller.php + View: {prefix}.blade.php + JavaScript: {prefix}.js + SCSS: {prefix}.scss + Layout: {prefix}_layout.blade.php + Bundle: {prefix}_bundle.php + + Where prefix is: {module}_{submodule}_{feature}_{subfeature} + (omitting parts not applicable) + +SEE ALSO + rsx_architecture(3), routing(3), bundle_api(3), controller(3) diff --git a/app/RSpade/resource/vscode_extension/out/definition_provider.js b/app/RSpade/resource/vscode_extension/out/definition_provider.js index 272bc106d..6b855f533 100644 --- a/app/RSpade/resource/vscode_extension/out/definition_provider.js +++ b/app/RSpade/resource/vscode_extension/out/definition_provider.js @@ -154,6 +154,15 @@ class RspadeDefinitionProvider { if (routeResult) { return routeResult; } + // Check for config() pattern - works in PHP and Blade files + if (['php', 'blade', 'html'].includes(languageId) || + fileName.endsWith('.php') || + fileName.endsWith('.blade.php')) { + const configResult = await this.handleConfigPattern(document, position); + if (configResult) { + return configResult; + } + } // Check for href="/" pattern in Blade/Jqhtml files if (fileName.endsWith('.blade.php') || fileName.endsWith('.jqhtml')) { const hrefResult = await this.handleHrefPattern(document, position); @@ -283,6 +292,101 @@ class RspadeDefinitionProvider { } return undefined; } + /** + * Handle config() pattern in PHP and Blade files + * Detects patterns like: + * - config('rsx.default_user.email') + * - config("app.name") + * + * Searches in both system/config/ and rsx/resource/config/ + * (rsx/resource/config/ takes precedence) + */ + async handleConfigPattern(document, position) { + const line = document.lineAt(position.line).text; + // Match config('key.path') or config("key.path") + const configPattern = /config\s*\(\s*(['"])([a-zA-Z0-9_.]+)\1\s*\)/g; + let match; + while ((match = configPattern.exec(line)) !== null) { + const fullMatch = match[0]; + const configKey = match[2]; // e.g., "rsx.default_user.email" + const keyStart = match.index + match[0].indexOf(configKey); + const keyEnd = keyStart + configKey.length; + // Check if cursor is on the config key + if (position.character >= keyStart && position.character < keyEnd) { + // Parse the config key + const keyParts = configKey.split('.'); + const configFile = keyParts[0]; // e.g., "rsx" + const nestedPath = keyParts.slice(1); // e.g., ["default_user", "email"] + // Get the RSpade project root + const rspade_root = this.find_rspade_root(); + if (!rspade_root) { + return undefined; + } + // Search for config file (prioritize rsx/resource/config/) + const rsxConfigPath = path.join(rspade_root, 'rsx', 'resource', 'config', `${configFile}.php`); + const systemConfigPath = path.join(rspade_root, 'system', 'config', `${configFile}.php`); + let configFilePath; + // Check rsx/resource/config first + if (fs.existsSync(rsxConfigPath)) { + configFilePath = rsxConfigPath; + } + else if (fs.existsSync(systemConfigPath)) { + configFilePath = systemConfigPath; + } + if (!configFilePath) { + return undefined; + } + // Read the config file + try { + const configContent = fs.readFileSync(configFilePath, 'utf8'); + // Find the line containing the nested key + const location = this.findConfigKeyInFile(configContent, nestedPath, configFilePath); + if (location) { + this.clear_status_bar(); + return location; + } + // If we can't find the specific key, just return the file + const fileUri = vscode.Uri.file(configFilePath); + const filePosition = new vscode.Position(0, 0); + this.clear_status_bar(); + return new vscode.Location(fileUri, filePosition); + } + catch (error) { + console.error('Error reading config file:', error); + return undefined; + } + } + } + return undefined; + } + /** + * Find a nested config key in a PHP config file + * Returns the location of the key definition if found + */ + findConfigKeyInFile(content, nestedPath, filePath) { + if (nestedPath.length === 0) { + // No nested path, return start of file + const fileUri = vscode.Uri.file(filePath); + return new vscode.Location(fileUri, new vscode.Position(0, 0)); + } + // Split content into lines + const lines = content.split('\n'); + // Search for the key in the file + // For nested keys like ["default_user", "email"], we need to find: + // 1. First, find 'default_user' => [ + // 2. Then find 'email' => value + // Simple approach: search for the last key in quotes + const targetKey = nestedPath[nestedPath.length - 1]; + const keyPattern = new RegExp(`['"]${targetKey}['"]\\s*=>`, 'i'); + for (let i = 0; i < lines.length; i++) { + if (keyPattern.test(lines[i])) { + const fileUri = vscode.Uri.file(filePath); + const position = new vscode.Position(i, 0); + return new vscode.Location(fileUri, position); + } + } + return undefined; + } /** * Handle href="/" pattern in Blade/Jqhtml files * Detects when cursor is on "/" within href attribute diff --git a/app/RSpade/resource/vscode_extension/out/definition_provider.js.map b/app/RSpade/resource/vscode_extension/out/definition_provider.js.map index 7ba8e27a6..d61292b31 100644 --- a/app/RSpade/resource/vscode_extension/out/definition_provider.js.map +++ b/app/RSpade/resource/vscode_extension/out/definition_provider.js.map @@ -1 +1 @@ -{"version":3,"file":"definition_provider.js","sourceRoot":"","sources":["../src/definition_provider.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwEG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,+CAAiC;AACjC,2CAA6B;AAC7B,uCAAyB;AACzB,2DAAsD;AAatD,MAAa,wBAAwB;IAKjC,YAAY,UAA0C;QAClD,8CAA8C;QAC9C,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;QAC7E,IAAI,CAAC,UAAU,GAAG,IAAI,mCAAe,CAAC,cAAc,CAAC,CAAC;QAEtD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED;;;OAGG;IACK,gBAAgB;QACpB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE;YACpC,OAAO,SAAS,CAAC;SACpB;QAED,qDAAqD;QACrD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE;YACpD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC3E,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;gBAC3B,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;aAC5B;SACJ;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,iBAAiB,CAAC,OAAe;QACrC,6CAA6C;QAC7C,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACvB,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC5F,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,sCAAsC,CAAC;YACtE,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,6BAA6B,CAAC;SAChE;QAED,8BAA8B;QAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,oBAAoB,OAAO,EAAE,CAAC;QAC1D,IAAI,CAAC,eAAe,CAAC,eAAe,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,+BAA+B,CAAC,CAAC;QAC9F,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QAE5B,4BAA4B;QAC5B,UAAU,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC5B,CAAC,EAAE,IAAI,CAAC,CAAC;IACb,CAAC;IAEM,gBAAgB;QACnB,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;SAC/B;IACL,CAAC;IAED,KAAK,CAAC,iBAAiB,CACnB,QAA6B,EAC7B,QAAyB,EACzB,KAA+B;QAE/B,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QACvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAEnC,4DAA4D;QAC5D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACtE,IAAI,WAAW,EAAE;YACb,OAAO,WAAW,CAAC;SACtB;QAED,mDAAmD;QACnD,IAAI,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YACjE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACpE,IAAI,UAAU,EAAE;gBACZ,OAAO,UAAU,CAAC;aACrB;SACJ;QAED,kCAAkC;QAClC,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YAC9B,0CAA0C;YAC1C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACzE,IAAI,aAAa,EAAE;gBACf,OAAO,aAAa,CAAC;aACxB;YAED,uEAAuE;YACvE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACxE,IAAI,UAAU,EAAE;gBACZ,OAAO,UAAU,CAAC;aACrB;YAED,uDAAuD;YACvD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACtE,IAAI,UAAU,EAAE;gBACZ,OAAO,UAAU,CAAC;aACrB;SACJ;QAED,+DAA+D;QAC/D,qFAAqF;QACrF,6DAA6D;QAC7D,IAAI,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,qCAAqC,EAAE;YACvE,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC7E,IAAI,eAAe,EAAE;gBACjB,OAAO,eAAe,CAAC;aAC1B;SACJ;QAED,2DAA2D;QAC3D,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;YACjD,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;YACxB,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YAC9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACzE,IAAI,MAAM,EAAE;gBACR,OAAO,MAAM,CAAC;aACjB;SACJ;QAED,wEAAwE;QACxE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC7C,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;YACzB,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;YACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACvE,IAAI,MAAM,EAAE;gBACR,OAAO,MAAM,CAAC;aACjB;SACJ;QAED,8EAA8E;QAC9E,OAAO,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;;;;;;OAUG;IACK,KAAK,CAAC,kBAAkB,CAC5B,QAA6B,EAC7B,QAAyB;QAEzB,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QAEjD,2CAA2C;QAC3C,mFAAmF;QACnF,MAAM,eAAe,GAAG,kGAAkG,CAAC;QAC3H,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAExC,IAAI,KAAK,EAAE;YACP,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;YAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;YAE/C,6CAA6C;YAC7C,IAAI,QAAQ,CAAC,SAAS,IAAI,UAAU,IAAI,QAAQ,CAAC,SAAS,IAAI,QAAQ,EAAE;gBACpE,4DAA4D;gBAC5D,2DAA2D;gBAC3D,IAAI;oBACA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;oBAC1E,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;iBAChD;gBAAC,OAAO,KAAK,EAAE;oBACZ,kDAAkD;oBAClD,IAAI;wBACA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;wBAC7E,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;qBAChD;oBAAC,OAAO,MAAM,EAAE;wBACb,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;qBAChE;iBACJ;aACJ;SACJ;QAED,qDAAqD;QACrD,+DAA+D;QAC/D,MAAM,eAAe,GAAG,oEAAoE,CAAC;QAC7F,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAEpC,IAAI,KAAK,EAAE;YACP,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC;YACtC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;YAE/C,6CAA6C;YAC7C,IAAI,QAAQ,CAAC,SAAS,IAAI,UAAU,IAAI,QAAQ,CAAC,SAAS,IAAI,QAAQ,EAAE;gBACpE,wEAAwE;gBACxE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBAC1B,wCAAwC;oBACxC,MAAM,MAAM,GAAG,OAAO,CAAC;oBACvB,IAAI;wBACA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;wBAC1E,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;qBAChD;oBAAC,OAAO,KAAK,EAAE;wBACZ,kDAAkD;wBAClD,IAAI;4BACA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;4BAC7E,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;yBAChD;wBAAC,OAAO,MAAM,EAAE;4BACb,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;yBAChE;qBACJ;iBACJ;aACJ;SACJ;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,iBAAiB,CAC3B,QAA6B,EAC7B,QAAyB;QAEzB,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QAEjD,6BAA6B;QAC7B,MAAM,WAAW,GAAG,wBAAwB,CAAC;QAC7C,IAAI,KAAK,CAAC;QAEV,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE;YAC9C,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,yBAAyB;YAE1D,gCAAgC;YAChC,IAAI,QAAQ,CAAC,SAAS,IAAI,UAAU,IAAI,QAAQ,CAAC,SAAS,IAAI,QAAQ,EAAE;gBACpE,IAAI;oBACA,+CAA+C;oBAC/C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAEnD,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE;wBAC9D,8DAA8D;wBAC9D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;wBAC3F,OAAO,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;qBACnD;iBACJ;gBAAC,OAAO,KAAK,EAAE;oBACZ,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;iBAC9D;aACJ;SACJ;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,mBAAmB,CAC7B,QAA6B,EAC7B,QAAyB;QAEzB,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QAEjD,mDAAmD;QACnD,MAAM,cAAc,GAAG,6CAA6C,CAAC;QACrE,IAAI,KAAK,CAAC;QAEV,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE;YACjD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC7D,MAAM,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;YAE/C,uCAAuC;YACvC,IAAI,QAAQ,CAAC,SAAS,IAAI,UAAU,IAAI,QAAQ,CAAC,SAAS,GAAG,QAAQ,EAAE;gBACnE,IAAI;oBACA,4CAA4C;oBAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,uBAAuB,CAAC,CAAC;oBACxF,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;iBAChD;gBAAC,OAAO,KAAK,EAAE;oBACZ,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;iBAC3D;aACJ;SACJ;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;;;;;;;OASG;IACK,KAAK,CAAC,qBAAqB,CAC/B,QAA6B,EAC7B,QAAyB;QAEzB,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QAEjD,8EAA8E;QAC9E,wCAAwC;QACxC,MAAM,WAAW,GAAG,mFAAmF,CAAC;QACxG,IAAI,KAAK,CAAC;QAEV,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE;YAC9C,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAE,iBAAiB;YAC9C,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAE,4BAA4B;YAE1D,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC7D,MAAM,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;YAE/C,uCAAuC;YACvC,IAAI,QAAQ,CAAC,SAAS,IAAI,UAAU,IAAI,QAAQ,CAAC,SAAS,GAAG,QAAQ,EAAE;gBACnE,IAAI,OAAO,EAAE;oBACT,uDAAuD;oBACvD,uCAAuC;oBACvC,IAAI,aAAiC,CAAC;oBACtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;oBACpC,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;oBAEnE,IAAI,WAAW,EAAE;wBACb,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;qBAClC;yBAAM;wBACH,4DAA4D;wBAC5D,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;wBACnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;wBACzE,IAAI,QAAQ,EAAE;4BACV,oDAAoD;4BACpD,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAC3C,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAC7D,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;yBACf;qBACJ;oBAED,IAAI,CAAC,aAAa,EAAE;wBAChB,OAAO,SAAS,CAAC;qBACpB;oBAED,IAAI;wBACA,+DAA+D;wBAC/D,sDAAsD;wBACtD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,SAAS,CAAC,WAAW,EAAE,EAAE,qBAAqB,CAAC,CAAC;wBACxG,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;qBAChD;oBAAC,OAAO,KAAK,EAAE;wBACZ,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;qBAClE;iBACJ;qBAAM;oBACH,2DAA2D;oBAC3D,IAAI;wBACA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAAC;wBACtF,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;qBAChD;oBAAC,OAAO,KAAK,EAAE;wBACZ,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;qBACnE;iBACJ;aACJ;SACJ;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,mBAAmB,CAC7B,QAA6B,EAC7B,QAAyB;QAEzB,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QACjD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAEnC,6CAA6C;QAC7C,kCAAkC;QAClC,MAAM,SAAS,GAAG,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QAC5D,IAAI,CAAC,SAAS,EAAE;YACZ,OAAO,SAAS,CAAC;SACpB;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEzC,4CAA4C;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAChE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YAC/B,OAAO,SAAS,CAAC;SACpB;QAED,uCAAuC;QACvC,IAAI,aAAiC,CAAC;QACtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAEnE,IAAI,WAAW,EAAE;YACb,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;SAClC;aAAM;YACH,4DAA4D;YAC5D,sCAAsC;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACpD,IAAI,QAAQ,EAAE;gBACV,oDAAoD;gBACpD,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAC3C,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAC7D,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACf;SACJ;QAED,IAAI,CAAC,aAAa,EAAE;YAChB,OAAO,SAAS,CAAC;SACpB;QAED,IAAI;YACA,8CAA8C;YAC9C,kDAAkD;YAClD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;YACrF,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE;gBACxB,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;aAChD;SACJ;QAAC,OAAO,KAAK,EAAE;YACZ,uCAAuC;YACvC,IAAI;gBACA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;gBACnF,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;aAChD;YAAC,OAAO,MAAM,EAAE;gBACb,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,MAAM,CAAC,CAAC;aAC1E;SACJ;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,qBAAqB,CAC/B,QAA6B,EAC7B,QAAyB;QAEzB,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;QAE9E,oCAAoC;QACpC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;YACtE,OAAO,SAAS,CAAC;SACpB;QACD,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QAEvD,8DAA8D;QAC9D,MAAM,UAAU,GAAG,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;QACnF,IAAI,CAAC,UAAU,EAAE;YACb,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;YACzE,OAAO,SAAS,CAAC;SACpB;QACD,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,0CAA0C,EAAE,cAAc,CAAC,CAAC;QAExE,+DAA+D;QAC/D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;YACvF,OAAO,SAAS,CAAC;SACpB;QACD,OAAO,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAC;QAE5F,yCAAyC;QACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,sCAAsC,EAAE,WAAW,CAAC,CAAC;QAEjE,0EAA0E;QAC1E,MAAM,iBAAiB,GACnB,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI;YACnC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;QAE1C,OAAO,CAAC,GAAG,CAAC,uCAAuC,EAAE,iBAAiB,CAAC,CAAC;QACxE,IAAI,CAAC,iBAAiB,EAAE;YACpB,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;YAChE,OAAO,SAAS,CAAC;SACpB;QAED,wCAAwC;QACxC,OAAO,CAAC,GAAG,CAAC,0DAA0D,EAAE,cAAc,CAAC,CAAC;QACxF,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,uCAAuC,EAAE,aAAa,CAAC,CAAC;QAEpE,IAAI,CAAC,aAAa,EAAE;YAChB,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;YACtE,OAAO,SAAS,CAAC;SACpB;QAED,yBAAyB;QACzB,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;QACvH,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC1E,CAAC;IAED;;;;;;;;;;;;OAYG;IACK,KAAK,CAAC,0BAA0B,CACpC,QAA6B,EAC7B,QAAyB;QAEzB,uCAAuC;QACvC,MAAM,SAAS,GAAG,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;QAClF,IAAI,CAAC,SAAS,EAAE;YACZ,OAAO,SAAS,CAAC;SACpB;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEzC,2FAA2F;QAC3F,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC7C,OAAO,SAAS,CAAC;SACpB;QAED,mFAAmF;QACnF,IAAI,WAA+B,CAAC;QACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QACjD,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;QAExC,+CAA+C;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5E,IAAI,WAAW,EAAE;YACb,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;SAChC;QAED,gCAAgC;QAChC,8EAA8E;QAC9E,IAAI;YACA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,oBAAoB,CAAC,CAAC;YAClF,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;SAChD;QAAC,OAAO,KAAK,EAAE;YACZ,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;SACtD;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,wBAAwB,CAClC,QAA6B,EAC7B,QAAyB;QAEzB,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QACjD,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC;QAExC,oEAAoE;QACpE,mCAAmC;QACnC,mDAAmD;QAEnD,yCAAyC;QACzC,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;QACrB,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;QACnB,IAAI,SAAS,GAAG,EAAE,CAAC;QAEnB,gDAAgD;QAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE;gBACrE,IAAI,CAAC,QAAQ,EAAE;oBACX,QAAQ,GAAG,IAAI,CAAC;oBAChB,WAAW,GAAG,CAAC,CAAC;oBAChB,SAAS,GAAG,IAAI,CAAC;iBACpB;qBAAM,IAAI,IAAI,KAAK,SAAS,EAAE;oBAC3B,SAAS,GAAG,CAAC,CAAC;oBACd,IAAI,YAAY,GAAG,WAAW,IAAI,YAAY,IAAI,SAAS,EAAE;wBACzD,+BAA+B;wBAC/B,MAAM;qBACT;oBACD,QAAQ,GAAG,KAAK,CAAC;oBACjB,WAAW,GAAG,CAAC,CAAC,CAAC;oBACjB,SAAS,GAAG,CAAC,CAAC,CAAC;iBAClB;aACJ;SACJ;QAED,mDAAmD;QACnD,IAAI,WAAW,IAAI,CAAC,EAAE;YAClB,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,CAAC,EAAE,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEhG,uCAAuC;YACvC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YAEpD,6CAA6C;YAC7C,0DAA0D;YAC1D,kDAAkD;YAClD,IAAI,eAAe,GAAG,KAAK,CAAC;YAE5B,uCAAuC;YACvC,IAAI,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACxC,eAAe,GAAG,IAAI,CAAC;aAC1B;iBAAM;gBACH,yDAAyD;gBACzD,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;oBAClE,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBACzC,IAAI,2BAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;wBAC5C,2CAA2C;wBAC3C,IAAI,YAAY,GAAG,CAAC,CAAC;wBACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;4BACrC,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;4BAC1C,YAAY,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;4BACtD,YAAY,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;yBACzD;wBACD,IAAI,YAAY,GAAG,CAAC,EAAE;4BAClB,eAAe,GAAG,IAAI,CAAC;4BACvB,MAAM;yBACT;qBACJ;iBACJ;aACJ;YAED,8EAA8E;YAC9E,IAAI,eAAe,IAAI,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;gBACtD,IAAI;oBACA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;oBACnF,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE;wBACxB,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;qBAChD;iBACJ;gBAAC,OAAO,KAAK,EAAE;oBACZ,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;iBACvE;aACJ;YAED,mDAAmD;YACnD,MAAM,WAAW,GAAG;gBAChB,uBAAuB;gBACvB,uBAAuB;gBACvB,sBAAsB;gBACtB,yBAAyB;gBACzB,mBAAmB;gBACnB,sBAAsB;aACzB,CAAC;YAEF,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE;gBAC/B,IAAI,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;oBAC5B,SAAS,GAAG,IAAI,CAAC;oBACjB,MAAM;iBACT;aACJ;YAED,IAAI,SAAS,IAAI,aAAa,EAAE;gBAC5B,kBAAkB;gBAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;gBAC3E,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;aAChD;SACJ;QAED,qEAAqE;QACrE,+CAA+C;QAC/C,MAAM,YAAY,GAAG,wCAAwC,CAAC;QAC9D,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,UAAU,CAAC;QAEf,OAAO,CAAC,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE;YACpD,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC;YACpC,MAAM,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACnD,IAAI,QAAQ,CAAC,SAAS,IAAI,UAAU,IAAI,QAAQ,CAAC,SAAS,IAAI,QAAQ,EAAE;gBACpE,SAAS,GAAG,IAAI,CAAC;gBACjB,MAAM;aACT;SACJ;QAED,IAAI,CAAC,SAAS,EAAE;YACZ,MAAM,SAAS,GAAG,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;YAClF,IAAI,SAAS,EAAE;gBACX,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAEzC,6CAA6C;gBAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC3C,IAAI;wBACA,2DAA2D;wBAC3D,kFAAkF;wBAClF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;wBACvE,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;qBAChD;oBAAC,OAAO,KAAK,EAAE;wBACZ,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;qBAChE;iBACJ;aACJ;SACJ;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,wBAAwB,CAAC,MAAW;QACxC,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE;YACxB,8BAA8B;YAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC5C,IAAI,CAAC,WAAW,EAAE;gBACd,OAAO,SAAS,CAAC;aACpB;YAED,+BAA+B;YAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACrD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAE1C,uCAAuC;YACvC,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,oCAAoC;YAE9F,kDAAkD;YAClD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAExB,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;SACjD;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,sBAAsB,CAChC,QAA6B,EAC7B,QAAyB;QAEzB,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QACjD,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC;QAExC,yCAAyC;QACzC,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;QACrB,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;QACnB,IAAI,SAAS,GAAG,EAAE,CAAC;QAEnB,gDAAgD;QAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE;gBACrE,IAAI,CAAC,QAAQ,EAAE;oBACX,QAAQ,GAAG,IAAI,CAAC;oBAChB,WAAW,GAAG,CAAC,CAAC;oBAChB,SAAS,GAAG,IAAI,CAAC;iBACpB;qBAAM,IAAI,IAAI,KAAK,SAAS,EAAE;oBAC3B,SAAS,GAAG,CAAC,CAAC;oBACd,IAAI,YAAY,GAAG,WAAW,IAAI,YAAY,IAAI,SAAS,EAAE;wBACzD,+BAA+B;wBAC/B,MAAM;qBACT;oBACD,QAAQ,GAAG,KAAK,CAAC;oBACjB,WAAW,GAAG,CAAC,CAAC,CAAC;oBACjB,SAAS,GAAG,CAAC,CAAC,CAAC;iBAClB;aACJ;SACJ;QAED,iDAAiD;QACjD,IAAI,WAAW,GAAG,CAAC,EAAE;YACjB,OAAO,SAAS,CAAC;SACpB;QAED,6BAA6B;QAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,CAAC,EAAE,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhG,gFAAgF;QAChF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC9D,OAAO,SAAS,CAAC;SACpB;QAED,8BAA8B;QAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC5C,IAAI,CAAC,WAAW,EAAE;YACd,OAAO,SAAS,CAAC;SACpB;QAED,oDAAoD;QACpD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QAE3D,2BAA2B;QAC3B,IAAI;YACA,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvC,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;gBACf,iCAAiC;gBACjC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC9C,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,sBAAsB;gBAClE,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;aACjD;SACJ;QAAC,OAAO,KAAK,EAAE;YACZ,wDAAwD;SAC3D;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,UAAkB,EAAE,UAAmB,EAAE,IAAa;QAC/E,MAAM,MAAM,GAAQ,EAAE,UAAU,EAAE,CAAC;QACnC,IAAI,UAAU,EAAE;YACZ,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;SAC9B;QACD,IAAI,IAAI,EAAE;YACN,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;SACtB;QAED,IAAI;YACA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAC;YACpF,OAAO,MAAM,CAAC;SACjB;QAAC,OAAO,KAAU,EAAE;YACjB,IAAI,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,CAAC;YACpD,MAAM,KAAK,CAAC;SACf;IACL,CAAC;CACJ;AA1zBD,4DA0zBC"} \ No newline at end of file +{"version":3,"file":"definition_provider.js","sourceRoot":"","sources":["../src/definition_provider.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/app/RSpade/resource/vscode_extension/package.json b/app/RSpade/resource/vscode_extension/package.json index 60ee12511..3749a7a2b 100755 --- a/app/RSpade/resource/vscode_extension/package.json +++ b/app/RSpade/resource/vscode_extension/package.json @@ -2,7 +2,7 @@ "name": "rspade-framework", "displayName": "RSpade Framework Support", "description": "VS Code extension for RSpade framework with code folding, formatting, and namespace management", - "version": "0.1.212", + "version": "0.1.214", "publisher": "rspade", "engines": { "vscode": "^1.74.0" diff --git a/app/RSpade/resource/vscode_extension/rspade-framework.vsix b/app/RSpade/resource/vscode_extension/rspade-framework.vsix old mode 100755 new mode 100644 index dd084943680efb8f07bed14e5a6492ed373a39f4..e0958ebc5183c6d979d23762d29e53621cd9ae04 GIT binary patch delta 10603 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 delta 9665 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 diff --git a/app/RSpade/resource/vscode_extension/src/definition_provider.ts b/app/RSpade/resource/vscode_extension/src/definition_provider.ts index 09ef9b3dd..58176876c 100755 --- a/app/RSpade/resource/vscode_extension/src/definition_provider.ts +++ b/app/RSpade/resource/vscode_extension/src/definition_provider.ts @@ -160,6 +160,16 @@ export class RspadeDefinitionProvider implements vscode.DefinitionProvider { return routeResult; } + // Check for config() pattern - works in PHP and Blade files + if (['php', 'blade', 'html'].includes(languageId) || + fileName.endsWith('.php') || + fileName.endsWith('.blade.php')) { + const configResult = await this.handleConfigPattern(document, position); + if (configResult) { + return configResult; + } + } + // Check for href="/" pattern in Blade/Jqhtml files if (fileName.endsWith('.blade.php') || fileName.endsWith('.jqhtml')) { const hrefResult = await this.handleHrefPattern(document, position); @@ -304,6 +314,126 @@ export class RspadeDefinitionProvider implements vscode.DefinitionProvider { return undefined; } + /** + * Handle config() pattern in PHP and Blade files + * Detects patterns like: + * - config('rsx.default_user.email') + * - config("app.name") + * + * Searches in both system/config/ and rsx/resource/config/ + * (rsx/resource/config/ takes precedence) + */ + private async handleConfigPattern( + document: vscode.TextDocument, + position: vscode.Position + ): Promise { + const line = document.lineAt(position.line).text; + + // Match config('key.path') or config("key.path") + const configPattern = /config\s*\(\s*(['"])([a-zA-Z0-9_.]+)\1\s*\)/g; + let match; + + while ((match = configPattern.exec(line)) !== null) { + const fullMatch = match[0]; + const configKey = match[2]; // e.g., "rsx.default_user.email" + const keyStart = match.index + match[0].indexOf(configKey); + const keyEnd = keyStart + configKey.length; + + // Check if cursor is on the config key + if (position.character >= keyStart && position.character < keyEnd) { + // Parse the config key + const keyParts = configKey.split('.'); + const configFile = keyParts[0]; // e.g., "rsx" + const nestedPath = keyParts.slice(1); // e.g., ["default_user", "email"] + + // Get the RSpade project root + const rspade_root = this.find_rspade_root(); + if (!rspade_root) { + return undefined; + } + + // Search for config file (prioritize rsx/resource/config/) + const rsxConfigPath = path.join(rspade_root, 'rsx', 'resource', 'config', `${configFile}.php`); + const systemConfigPath = path.join(rspade_root, 'system', 'config', `${configFile}.php`); + + let configFilePath: string | undefined; + + // Check rsx/resource/config first + if (fs.existsSync(rsxConfigPath)) { + configFilePath = rsxConfigPath; + } else if (fs.existsSync(systemConfigPath)) { + configFilePath = systemConfigPath; + } + + if (!configFilePath) { + return undefined; + } + + // Read the config file + try { + const configContent = fs.readFileSync(configFilePath, 'utf8'); + + // Find the line containing the nested key + const location = this.findConfigKeyInFile(configContent, nestedPath, configFilePath); + if (location) { + this.clear_status_bar(); + return location; + } + + // If we can't find the specific key, just return the file + const fileUri = vscode.Uri.file(configFilePath); + const filePosition = new vscode.Position(0, 0); + this.clear_status_bar(); + return new vscode.Location(fileUri, filePosition); + + } catch (error) { + console.error('Error reading config file:', error); + return undefined; + } + } + } + + return undefined; + } + + /** + * Find a nested config key in a PHP config file + * Returns the location of the key definition if found + */ + private findConfigKeyInFile( + content: string, + nestedPath: string[], + filePath: string + ): vscode.Location | undefined { + if (nestedPath.length === 0) { + // No nested path, return start of file + const fileUri = vscode.Uri.file(filePath); + return new vscode.Location(fileUri, new vscode.Position(0, 0)); + } + + // Split content into lines + const lines = content.split('\n'); + + // Search for the key in the file + // For nested keys like ["default_user", "email"], we need to find: + // 1. First, find 'default_user' => [ + // 2. Then find 'email' => value + + // Simple approach: search for the last key in quotes + const targetKey = nestedPath[nestedPath.length - 1]; + const keyPattern = new RegExp(`['"]${targetKey}['"]\\s*=>`, 'i'); + + for (let i = 0; i < lines.length; i++) { + if (keyPattern.test(lines[i])) { + const fileUri = vscode.Uri.file(filePath); + const position = new vscode.Position(i, 0); + return new vscode.Location(fileUri, position); + } + } + + return undefined; + } + /** * Handle href="/" pattern in Blade/Jqhtml files * Detects when cursor is on "/" within href attribute diff --git a/docs/CLAUDE.dist.md b/docs/CLAUDE.dist.md index 35246e15d..57a57c6e5 100644 --- a/docs/CLAUDE.dist.md +++ b/docs/CLAUDE.dist.md @@ -663,6 +663,8 @@ rsx:app:module:feature:create # /m/f rsx:app:component:create --name=x # Component ``` +**Nomenclature**: Module (top-level section with shared layout), Submodule (page group within module), Feature (CRUD group), Subfeature (individual CRUD operation). Example: `frontend/clients/edit` = module, feature, subfeature. + ### Development ```bash @@ -1085,6 +1087,19 @@ class DataService { | rsx:app:submodule:create | Submodule + layout | /m/s | | rsx:app:component:create --name=x | jqhtml component | N/A | +**Nomenclature**: +- **Module**: Top-level section sharing layout and common UI (frontend, admin) +- **Submodule**: Group of pages within a module (settings within frontend) +- **Feature**: CRUD page group (clients, tasks, users) +- **Subfeature**: Individual CRUD operation (edit, view, delete) + +**Examples**: +- `frontend/clients/edit` = module, feature, subfeature +- `frontend/settings/profile/edit` = module, submodule, feature, subfeature +- `admin/sites` = module, feature + +**Rule of thumb**: If it shares a layout, it's a module. If it's a group of pages within a module, it's a submodule. If it's CRUD operations, it's feature + subfeatures. + ### Migration Commands ```bash