From e678b987c29218189a2ca5ff1e04eee526f2161c Mon Sep 17 00:00:00 2001 From: root Date: Wed, 22 Oct 2025 15:59:42 +0000 Subject: [PATCH] Fix unimplemented login route with # prefix Fix IDE service routing and path normalization Refactor IDE services and add session rotation 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 --- app/RSpade/Core/Debug/Debugger.php | 5 + .../Core/Providers/Rsx_Framework_Provider.php | 8 + app/RSpade/Ide/Services/auth.php | 193 +++ app/RSpade/Ide/Services/handler.php | 1088 +++++++++++------ app/RSpade/Ide/Services/laravel_handler.php | 192 +++ .../out/auto_rename_provider.js | 23 +- .../out/auto_rename_provider.js.map | 2 +- .../out/definition_provider.js | 221 +++- .../out/definition_provider.js.map | 2 +- .../vscode_extension/out/ide_bridge_client.js | 64 +- .../out/ide_bridge_client.js.map | 2 +- .../out/jqhtml_lifecycle_provider.js | 39 +- .../out/jqhtml_lifecycle_provider.js.map | 2 +- .../resource/vscode_extension/package.json | 2 +- .../vscode_extension/rspade-framework.vsix | Bin 93164 -> 95687 bytes .../src/auto_rename_provider.ts | 24 +- .../src/definition_provider.ts | 241 +++- .../vscode_extension/src/ide_bridge_client.ts | 66 +- .../src/jqhtml_lifecycle_provider.ts | 40 +- node_modules/.package-lock.json | 34 +- node_modules/@jqhtml/core/dist/index.cjs | 2 +- node_modules/@jqhtml/core/dist/index.js | 2 +- .../@jqhtml/core/dist/jqhtml-core.esm.js | 4 +- node_modules/@jqhtml/core/package.json | 2 +- node_modules/@jqhtml/parser/dist/codegen.js | 2 +- node_modules/@jqhtml/parser/package.json | 2 +- .../@jqhtml/router/dist/jqhtml-router.esm.js | 2 +- node_modules/@jqhtml/router/package.json | 2 +- .../@jqhtml/vscode-extension/.version | 2 +- .../jqhtml-vscode-extension-2.2.137.vsix | Bin 39285 -> 0 bytes .../jqhtml-vscode-extension-2.2.142.vsix | Bin 0 -> 42347 bytes .../vscode-extension/out/componentIndex.js | 10 +- .../out/componentIndex.js.map | 2 +- .../out/definitionProvider.js | 183 ++- .../out/definitionProvider.js.map | 2 +- .../@jqhtml/vscode-extension/package.json | 2 +- .../@jqhtml/webpack-loader/package.json | 4 +- package-lock.json | 34 +- public/index.php | 45 +- 39 files changed, 2028 insertions(+), 522 deletions(-) create mode 100755 app/RSpade/Ide/Services/auth.php create mode 100755 app/RSpade/Ide/Services/laravel_handler.php delete mode 100755 node_modules/@jqhtml/vscode-extension/jqhtml-vscode-extension-2.2.137.vsix create mode 100755 node_modules/@jqhtml/vscode-extension/jqhtml-vscode-extension-2.2.142.vsix diff --git a/app/RSpade/Core/Debug/Debugger.php b/app/RSpade/Core/Debug/Debugger.php index 200784886..8f4c58cac 100755 --- a/app/RSpade/Core/Debug/Debugger.php +++ b/app/RSpade/Core/Debug/Debugger.php @@ -997,6 +997,11 @@ class Debugger return; } + // Don't output if suppressed (e.g., for IDE service requests) + if (defined('SUPPRESS_CONSOLE_DEBUG_OUTPUT') && SUPPRESS_CONSOLE_DEBUG_OUTPUT) { + return; + } + // Don't output if console HTML is disabled (e.g., for AJAX requests) if (static::$console_html_disabled) { return; diff --git a/app/RSpade/Core/Providers/Rsx_Framework_Provider.php b/app/RSpade/Core/Providers/Rsx_Framework_Provider.php index 3cfde7c6f..038d8976a 100755 --- a/app/RSpade/Core/Providers/Rsx_Framework_Provider.php +++ b/app/RSpade/Core/Providers/Rsx_Framework_Provider.php @@ -8,6 +8,7 @@ namespace App\RSpade\Core\Providers; use Blade; +use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Route; use Illuminate\Support\ServiceProvider; use Log; @@ -297,6 +298,13 @@ class Rsx_Framework_Provider extends ServiceProvider }); } + // Register Request helper macros + if (!Request::hasMacro('is_post')) { + Request::macro('is_post', function () { + return $this->isMethod('post'); + }); + } + // Handle IDE integration domain auto-discovery $this->handle_ide_domain_discovery(); } diff --git a/app/RSpade/Ide/Services/auth.php b/app/RSpade/Ide/Services/auth.php new file mode 100755 index 000000000..b53160724 --- /dev/null +++ b/app/RSpade/Ide/Services/auth.php @@ -0,0 +1,193 @@ + false, 'error' => $message], $code); +} + +// Check if IDE services are enabled +$env_file = IDE_AUTH_BASE_PATH . '/.env'; +if (file_exists($env_file)) { + $env_content = file_get_contents($env_file); + // Check if production + if (preg_match('/^APP_ENV=production$/m', $env_content)) { + // Check if explicitly enabled in production + if (!preg_match('/^RSX_IDE_SERVICES_ENABLED=true$/m', $env_content)) { + ide_auth_error_response('IDE services disabled in production', 403); + } + } +} + +// Parse request URI to get service +$request_uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); +$service_path = str_replace('/_ide/service', '', $request_uri); +$service_path = trim($service_path, '/'); + +// Get request body for signature verification +$request_body = file_get_contents('php://input'); + +// Handle authentication +$auth_data = []; +$session_header = $_SERVER['HTTP_X_SESSION'] ?? null; +$signature_header = $_SERVER['HTTP_X_SIGNATURE'] ?? null; + +// Check if this is auth/create request (no auth required for session creation) +if ($service_path === 'auth/create' && $_SERVER['REQUEST_METHOD'] === 'POST') { + // Generate new auth session + $session = bin2hex(random_bytes(20)); + $client_key = bin2hex(random_bytes(20)); + $server_key = bin2hex(random_bytes(20)); + + $auth_data_new = [ + 'session' => $session, + 'client_key' => $client_key, + 'server_key' => $server_key, + 'created' => time() + ]; + + // Save auth file + $bridge_dir = ide_auth_framework_path('storage/rsx-ide-bridge'); + if (!is_dir($bridge_dir)) { + mkdir($bridge_dir, 0755, true); + } + + // Rotate old sessions - keep max 100 auth files + $auth_files = glob($bridge_dir . '/auth-*.json'); + if (count($auth_files) >= 100) { + // Sort by modification time (oldest first) + usort($auth_files, function($a, $b) { + return filemtime($a) - filemtime($b); + }); + + // Delete oldest files to get down to 99 (so we can add the new one) + $files_to_delete = count($auth_files) - 99; + for ($i = 0; $i < $files_to_delete; $i++) { + unlink($auth_files[$i]); + } + } + + $auth_file = $bridge_dir . '/auth-' . $session . '.json'; + file_put_contents($auth_file, json_encode($auth_data_new, JSON_PRETTY_PRINT)); + + // Return auth data (unsigned response since client doesn't have keys yet) + http_response_code(200); + header('Content-Type: application/json'); + echo json_encode([ + 'success' => true, + 'session' => $session, + 'client_key' => $client_key, + 'server_key' => $server_key + ]); + exit; +} + +// Authentication required for all other requests +// Handle authentication with localhost bypass + +// Localhost bypass for IDE integration +$is_localhost_bypass = false; +$request_host = $_SERVER['HTTP_HOST'] ?? ''; +$request_scheme = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https' : 'http'; +$remote_addr = $_SERVER['REMOTE_ADDR'] ?? ''; + +// Check for proxy headers +$has_proxy_headers = false; +foreach ($_SERVER as $key => $value) { + if (str_starts_with($key, 'HTTP_X_')) { + if ($key === 'HTTP_X_SESSION' || $key === 'HTTP_X_SIGNATURE') { + continue; + } + $has_proxy_headers = true; + break; + } +} + +// Check if request is from loopback +$is_loopback_ip = ( + !$has_proxy_headers && + ($remote_addr === '127.0.0.1' || + $remote_addr === '::1' || + str_starts_with($remote_addr, '127.')) +); + +// Check if not in production +$is_not_production = true; +if (file_exists($env_file)) { + $env_content = file_get_contents($env_file); + if (preg_match('/^APP_ENV=production$/m', $env_content)) { + $is_not_production = false; + } +} + +// All conditions must be true for bypass +if ( + $request_host === 'localhost' && + $request_scheme === 'http' && + $is_loopback_ip && + $is_not_production +) { + $is_localhost_bypass = true; + $auth_data = [ + 'session' => 'localhost-bypass', + 'client_key' => '', + 'server_key' => '' + ]; +} + +if (!$is_localhost_bypass) { + // Require authentication for non-localhost + if (!$session_header || !$signature_header) { + ide_auth_error_response('Authentication required', 401); + } + + // Load and validate session + $auth_file = ide_auth_framework_path('storage/rsx-ide-bridge/auth-' . $session_header . '.json'); + if (!file_exists($auth_file)) { + ide_auth_error_response('Session not found', 401); + } + + $auth_data = json_decode(file_get_contents($auth_file), true); + $expected_signature = sha1($request_body . $auth_data['client_key']); + if ($signature_header !== $expected_signature) { + ide_auth_error_response('Invalid signature', 401); + } +} + +// Authentication passed - store auth data for handlers to use if needed +define('IDE_AUTH_PASSED', true); +define('IDE_AUTH_DATA', json_encode($auth_data)); +define('IDE_AUTH_IS_LOCALHOST_BYPASS', $is_localhost_bypass); + +// Suppress console_debug output for IDE service requests +// These are programmatic API calls, not user-facing pages +define('SUPPRESS_CONSOLE_DEBUG_OUTPUT', true); diff --git a/app/RSpade/Ide/Services/handler.php b/app/RSpade/Ide/Services/handler.php index 1e0191784..0e4352a79 100755 --- a/app/RSpade/Ide/Services/handler.php +++ b/app/RSpade/Ide/Services/handler.php @@ -11,6 +11,18 @@ * 3. Server validates client signature * 4. Server signs response with SHA1(body + server_key) * 5. Client validates server signature + * + * Localhost Bypass: + * Authentication can be bypassed when ALL of the following conditions are met: + * 1. Request is to hostname 'localhost' (not 127.0.0.1, not any other domain) + * 2. Request is NOT HTTPS (must be http://) + * 3. Request comes from a loopback IP address (127.x.x.x or ::1) + * 4. No X-* proxy headers present (except X-Session/X-Signature) + * 5. Laravel is NOT in production mode + * + * This allows the VS Code extension to make unauthenticated requests when running + * on the same machine as the dev server, eliminating session management overhead + * for local development while maintaining security for remote connections. */ // Error reporting for development @@ -39,8 +51,34 @@ function storage_path($path = '') { // Load exec_safe() function require_once ide_framework_path('app/RSpade/helpers.php'); +// Helper to normalize file paths for IDE consumption +// Framework files (not starting with rsx/) need system/ prefix +function normalize_ide_path($path) { + if (!$path || str_starts_with($path, 'rsx/')) { + return $path; + } + return 'system/' . $path; +} + +// Helper to recursively normalize all 'file' keys in response data +function normalize_response_paths($data) { + if (is_array($data)) { + foreach ($data as $key => $value) { + if ($key === 'file' && is_string($value)) { + $data[$key] = normalize_ide_path($value); + } elseif (is_array($value)) { + $data[$key] = normalize_response_paths($value); + } + } + } + return $data; +} + // JSON response helper function json_response($data, $code = 200) { + // Normalize all file paths in response for IDE consumption + $data = normalize_response_paths($data); + http_response_code($code); header('Content-Type: application/json'); $json = json_encode($data); @@ -61,19 +99,14 @@ function error_response($message, $code = 400) { json_response(['success' => false, 'error' => $message], $code); } -// Check if IDE services are enabled -$env_file = IDE_BASE_PATH . '/.env'; -if (file_exists($env_file)) { - $env_content = file_get_contents($env_file); - // Check if production - if (preg_match('/^APP_ENV=production$/m', $env_content)) { - // Check if explicitly enabled in production - if (!preg_match('/^RSX_IDE_SERVICES_ENABLED=true$/m', $env_content)) { - error_response('IDE services disabled in production', 403); - } - } +// Authentication already handled by auth.php before this file is loaded +// Retrieve auth data from constants set by auth.php +if (!defined('IDE_AUTH_PASSED')) { + error_response('Authentication check did not run - this should never happen', 500); } +$auth_data = json_decode(IDE_AUTH_DATA, true); + // Parse request URI to get service $request_uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); $service_path = str_replace('/_ide/service', '', $request_uri); @@ -88,75 +121,10 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') { $request_data = array_merge($request_data ?? [], $_GET); } -// Handle authentication -$auth_data = []; -$session_header = $_SERVER['HTTP_X_SESSION'] ?? null; -$signature_header = $_SERVER['HTTP_X_SIGNATURE'] ?? null; - -if ($session_header && $signature_header) { - // Load auth data for session - $auth_file = ide_framework_path('storage/rsx-ide-bridge/auth-' . $session_header . '.json'); - - if (file_exists($auth_file)) { - $auth_data = json_decode(file_get_contents($auth_file), true); - - // Validate signature - $expected_signature = sha1($request_body . $auth_data['client_key']); - if ($signature_header !== $expected_signature) { - error_response('Invalid signature', 401); - } - } else { - // Session not found - provide recovery hint - http_response_code(401); - header('Content-Type: application/json'); - echo json_encode([ - 'error' => 'Session not found', - 'code' => 401, - 'recoverable' => true, - 'recovery' => 'Create new session via POST /_ide/service/auth/create' - ]); - exit; - } -} else { - // No auth provided - check if this is an auth creation request - if ($service_path === 'auth/create' && $_SERVER['REQUEST_METHOD'] === 'POST') { - // Generate new auth session - $session = bin2hex(random_bytes(20)); - $client_key = bin2hex(random_bytes(20)); - $server_key = bin2hex(random_bytes(20)); - - $auth_data = [ - 'session' => $session, - 'client_key' => $client_key, - 'server_key' => $server_key, - 'created' => time() - ]; - - // Save auth file - $bridge_dir = ide_framework_path('storage/rsx-ide-bridge'); - if (!is_dir($bridge_dir)) { - mkdir($bridge_dir, 0755, true); - } - - $auth_file = $bridge_dir . '/auth-' . $session . '.json'; - file_put_contents($auth_file, json_encode($auth_data, JSON_PRETTY_PRINT)); - - // Return auth data (unsigned response since client doesn't have keys yet) - http_response_code(200); - header('Content-Type: application/json'); - echo json_encode([ - 'success' => true, - 'session' => $session, - 'client_key' => $client_key, - 'server_key' => $server_key - ]); - exit; - } else { - error_response('Authentication required', 401); - } -} - // Route to appropriate service handler +// This handler handles lightweight services that don't need Laravel bootstrap +// All services requiring Manifest/Laravel are handled by laravel_handler.php +// Note: auth/create is handled in auth.php before routing switch ($service_path) { case 'format': handle_format_service($request_data); @@ -171,9 +139,14 @@ switch ($service_path) { break; case 'exec': + case 'command': handle_exec_service($request_data); break; + case 'resolve_class': + handle_resolve_class_service($request_data); + break; + case 'git': handle_git_service($request_data); break; @@ -182,28 +155,12 @@ switch ($service_path) { handle_git_diff_service($request_data); break; - case 'command': - handle_command_service($request_data); - break; - case 'health': - json_response(['success' => true, 'service' => 'ide', 'version' => '1.0.0']); - break; - - case 'resolve_class': - handle_resolve_class_service($request_data); - break; - - case 'js_lineage': - handle_js_lineage_service($request_data); - break; - - case 'resolve_url': - handle_resolve_url_service($request_data); + json_response(['success' => true, 'service' => 'ide-standalone', 'version' => '1.0.0']); break; default: - error_response('Unknown service: ' . $service_path, 404); + error_response('Unknown service: ' . $service_path . ' (standalone handler supports: format, definition, complete, exec, command, resolve_class, git, git/diff)', 404); } /** @@ -784,9 +741,448 @@ function handle_command_service($data) { ]); } +/** + * Try to resolve identifier as a PHP class + */ +function try_resolve_php_class($identifier, $method_name, $find_php_class) { + $class_data = $find_php_class($identifier); + + if (!$class_data) { + return null; + } + + $file_path = $class_data['file']; + $line_number = 1; + $absolute_path = IDE_BASE_PATH . '/' . $file_path; + + if (file_exists($absolute_path)) { + $content = file_get_contents($absolute_path); + $lines = explode("\n", $content); + + if ($method_name) { + // Check if method metadata exists + if (isset($class_data['public_static_methods'][$method_name])) { + $method_metadata = $class_data['public_static_methods'][$method_name]; + if (isset($method_metadata['line'])) { + $line_number = $method_metadata['line']; + } + } else if (isset($class_data['public_instance_methods'][$method_name])) { + $method_metadata = $class_data['public_instance_methods'][$method_name]; + if (isset($method_metadata['line'])) { + $line_number = $method_metadata['line']; + } + } + + // If we don't have line number from metadata, search manually + if ($line_number === 1 && !empty($lines)) { + $in_class_or_trait = false; + $brace_count = 0; + + foreach ($lines as $index => $line) { + if (preg_match('/^\s*(class|trait)\s+\w+(\s|$)/', $line)) { + $in_class_or_trait = true; + } + + if ($in_class_or_trait) { + $brace_count += substr_count($line, '{'); + $brace_count -= substr_count($line, '}'); + + if (preg_match('/^\s*(public|protected|private)?\s*(static\s+)?function\s+' . preg_quote($method_name, '/') . '\s*\(/', $line)) { + $line_number = $index + 1; + break; + } + + if ($brace_count === 0 && strpos($line, '}') !== false) { + break; + } + } + } + } + } else { + // Find the line with the class definition + foreach ($lines as $index => $line) { + if (preg_match('/^\s*class\s+' . preg_quote($identifier, '/') . '(\s|$)/', $line)) { + $line_number = $index + 1; + break; + } + } + } + } + + $response_data = [ + 'found' => true, + 'type' => 'php_class', + 'file' => $file_path, + 'line' => $line_number, + 'metadata' => [ + 'namespace' => $class_data['namespace'] ?? null, + 'extends' => $class_data['extends'] ?? null, + 'fqcn' => $class_data['fqcn'] ?? null, + ], + ]; + + if ($method_name) { + $response_data['method'] = $method_name; + } + + return $response_data; +} + +/** + * Try to resolve identifier as a JavaScript class + */ +function try_resolve_js_class($identifier, $method_name, $files) { + foreach ($files as $file_path => $file_data) { + // Only check .js files (not .jqhtml) + if (str_ends_with($file_path, '.js') && !str_ends_with($file_path, '.jqhtml')) { + $absolute_path = IDE_BASE_PATH . '/' . $file_path; + + if (file_exists($absolute_path)) { + $content = file_get_contents($absolute_path); + + // Check for JavaScript class (not specifically Jqhtml_Component) + if (preg_match('/class\s+' . preg_quote($identifier, '/') . '\s+extends\s+([A-Za-z_][A-Za-z0-9_]*)/', $content, $matches)) { + $lines = explode("\n", $content); + $line_number = 1; + + foreach ($lines as $index => $line) { + if (preg_match('/class\s+' . preg_quote($identifier, '/') . '\s+extends/', $line)) { + $line_number = $index + 1; + break; + } + } + + return [ + 'found' => true, + 'type' => 'js_class', + 'file' => $file_path, + 'line' => $line_number, + 'identifier' => $identifier, + 'extends' => $matches[1] ?? null, + ]; + } + } + } + } + return null; +} + +/** + * Try to resolve identifier as a jqhtml component class + * + * Note: This resolver does NOT check inheritance chains. It's a simple file lookup. + * VS Code extension should use js_is_subclass_of() RPC to determine if a class + * is actually a Jqhtml_Component before choosing this resolver type. + */ +function try_resolve_jqhtml_class($identifier, $method_name, $files) { + // Load manifest to get js_classes index + $manifest_file = ide_framework_path('storage/rsx-build/manifest_data.php'); + if (!file_exists($manifest_file)) { + return null; + } + + $manifest_raw = include $manifest_file; + $manifest_data = $manifest_raw['data'] ?? $manifest_raw; + $js_classes = $manifest_data['js_classes'] ?? []; + + // Check if this class exists in js_classes + if (!isset($js_classes[$identifier])) { + return null; + } + + // Get the file path + $file_path = $js_classes[$identifier]; + + // Find the line number + $absolute_path = IDE_BASE_PATH . '/' . $file_path; + $line_number = 1; + + if (file_exists($absolute_path)) { + $content = file_get_contents($absolute_path); + $lines = explode("\n", $content); + + foreach ($lines as $index => $line) { + if (preg_match('/class\s+' . preg_quote($identifier, '/') . '\s+extends/', $line)) { + $line_number = $index + 1; + break; + } + } + } + + return [ + 'found' => true, + 'type' => 'jqhtml_class', + 'file' => $file_path, + 'line' => $line_number, + 'identifier' => $identifier, + ]; +} + +/** + * Try to resolve identifier as a view + */ +function try_resolve_view($identifier, $find_view) { + $view_data = $find_view($identifier); + + if (!$view_data) { + return null; + } + + $file_path = $view_data['file']; + $line_number = 1; + $absolute_path = IDE_BASE_PATH . '/' . $file_path; + + if (file_exists($absolute_path)) { + $content = file_get_contents($absolute_path); + $lines = explode("\n", $content); + + // Look for @rsx_id('identifier') + foreach ($lines as $index => $line) { + if (preg_match('/@rsx_id\s*\(\s*[\'"]' . preg_quote($identifier, '/') . '[\'"]\s*\)/', $line)) { + $line_number = $index + 1; + break; + } + } + } + + return [ + 'found' => true, + 'type' => 'view', + 'file' => $file_path, + 'line' => $line_number, + 'identifier' => $identifier, + ]; +} + +/** + * Try to resolve identifier as a bundle alias + */ +function try_resolve_bundle_alias($identifier, $find_php_class) { + $config_path = IDE_SYSTEM_PATH . '/config/rsx.php'; + if (!file_exists($config_path)) { + return null; + } + + $config = include $config_path; + if (!isset($config['bundle_aliases'][$identifier])) { + return null; + } + + $bundle_class = $config['bundle_aliases'][$identifier]; + $class_parts = explode('\\', $bundle_class); + $class_name = end($class_parts); + + $class_data = $find_php_class($class_name); + if (!$class_data) { + return null; + } + + $file_path = $class_data['file']; + $line_number = 1; + $absolute_path = IDE_BASE_PATH . '/' . $file_path; + + if (file_exists($absolute_path)) { + $content = file_get_contents($absolute_path); + $lines = explode("\n", $content); + + foreach ($lines as $index => $line) { + if (preg_match('/^\s*class\s+' . preg_quote($class_name, '/') . '(\s|$)/', $line)) { + $line_number = $index + 1; + break; + } + } + } + + return [ + 'found' => true, + 'type' => 'bundle_alias', + 'file' => $file_path, + 'line' => $line_number, + 'identifier' => $identifier, + 'resolved_class' => $bundle_class, + ]; +} + +/** + * Try to resolve identifier as a jqhtml template + */ +function try_resolve_jqhtml_template($identifier, $files, $camel_to_snake, $snake_to_pascal) { + $component_snake = $camel_to_snake($identifier); + + foreach ($files as $file_path => $file_data) { + if (str_ends_with($file_path, '.jqhtml')) { + $basename = basename($file_path, '.jqhtml'); + + if ($basename === $component_snake || $snake_to_pascal($basename) === $identifier) { + $line_number = 1; + $absolute_path = IDE_BASE_PATH . '/' . $file_path; + + if (file_exists($absolute_path)) { + $content = file_get_contents($absolute_path); + $lines = explode("\n", $content); + + foreach ($lines as $index => $line) { + if (preg_match('/ true, + 'type' => 'jqhtml_template', + 'file' => $file_path, + 'line' => $line_number, + 'identifier' => $identifier, + ]; + } + } + } + return null; +} + +/** + * Try to resolve method in jqhtml component + */ +function try_resolve_jqhtml_method($identifier, $method_name, $files) { + $search_method = ($method_name === 'data') ? 'on_load' : $method_name; + + foreach ($files as $file_path => $file_data) { + if (str_ends_with($file_path, '.js')) { + $absolute_path = IDE_BASE_PATH . '/' . $file_path; + + if (file_exists($absolute_path)) { + $content = file_get_contents($absolute_path); + + if (preg_match('/class\s+' . preg_quote($identifier, '/') . '\s+extends\s+[A-Za-z_]*Jqhtml_Component/', $content)) { + $lines = explode("\n", $content); + $line_number = 1; + $in_class = false; + $brace_count = 0; + + foreach ($lines as $index => $line) { + if (preg_match('/class\s+' . preg_quote($identifier, '/') . '\s+extends/', $line)) { + $in_class = true; + } + + if ($in_class) { + $brace_count += substr_count($line, '{'); + $brace_count -= substr_count($line, '}'); + + if (preg_match('/(?:async\s+)?' . preg_quote($search_method, '/') . '\s*\(/', $line)) { + $line_number = $index + 1; + break; + } + + if ($brace_count === 0 && strpos($line, '}') !== false) { + break; + } + } + } + + return [ + 'found' => true, + 'type' => 'jqhtml_class_method', + 'file' => $file_path, + 'line' => $line_number, + 'identifier' => $identifier, + 'method' => $method_name, + ]; + } + } + } + } + return null; +} + /** * Handle resolve_class service - resolve class/view/component definitions - * This is a port of the Ide_Helper_Controller::resolve_class() method + * + * RESOLUTION TYPE SYSTEM + * ====================== + * + * This endpoint resolves identifiers to file locations based on type priority. + * It supports CSV type lists for priority-based resolution. + * + * AVAILABLE TYPES: + * + * 1. php_class - PHP class files (*.php) + * - Searches manifest for PHP classes + * - Supports method lookup with fallback to class + * - Returns: file path, line number, namespace, extends, fqcn + * + * 2. js_class - JavaScript class files (*.js, not .jqhtml) + * - Searches for JS classes with extends clause + * - Does NOT require extending Jqhtml_Component + * - Returns: file path, line number, extends + * + * 3. jqhtml_class - jqhtml component JavaScript files (*.js) + * - Searches for classes extending Jqhtml_Component + * - Returns: file path, line number + * + * 4. view - Blade view templates (*.blade.php) + * - Searches for @rsx_id directives + * - Returns: file path, line number + * + * 5. bundle_alias - Bundle configuration aliases + * - Resolves bundle aliases from config/rsx.php + * - Returns: bundle class file location + * + * 6. jqhtml_template - jqhtml template files (*.jqhtml) + * - Searches for tags + * - Returns: template file path, line number + * + * 7. jqhtml_class_method - Methods in jqhtml component classes + * - Requires both identifier and method parameters + * - Searches within Jqhtml_Component subclasses + * - Returns: file path, method line number + * + * CSV TYPE LISTS: + * =============== + * + * The type parameter accepts comma-separated lists for priority-based resolution. + * The server tries each type in order and returns the first match found. + * + * Examples: + * - type=php_class,js_class + * Try PHP classes first, then JavaScript classes + * Use case: From PHP files (always want PHP), fallback to JS + * + * - type=js_class,php_class + * Try JavaScript classes first, then PHP classes + * Use case: From JS files (component inheritance), fallback to PHP controllers + * + * - type=jqhtml_class,js_class + * Try jqhtml components first, then general JS classes + * Use case: jqhtml extends="" attribute resolution + * + * METHOD RESOLUTION: + * ================== + * + * When the method parameter is provided, the resolver attempts to find the specific + * method within the class. If the method exists, returns its line number. If the + * method doesn't exist but the class does, returns the class line number as fallback. + * + * This allows graceful degradation: clicking on Controller.missing_method() will + * navigate to the Controller class even if missing_method() doesn't exist. + * + * USAGE FROM VS CODE: + * =================== + * + * The VS Code extension determines which types to use based on context: + * + * - Route patterns → php_class (routes are always PHP) + * - PHP class references → php_class (PHP files only reference PHP) + * - JS class references → js_class,php_class (try JS first, then PHP controllers) + * - jqhtml extends="" → jqhtml_class,js_class (component inheritance) + * - jqhtml $xxx=Class.method → js_class,php_class (components or controllers) + * - jqhtml $xxx=this.method → jqhtml_class_method (current component only) + * + * PARAMETERS: + * - identifier/class (required): The class/view/component name to resolve + * - method (optional): Method name within the class + * - type (optional): Single type or CSV list of types to try in order */ function handle_resolve_class_service($data) { $identifier = $data['class'] ?? $data['identifier'] ?? null; @@ -800,6 +1196,12 @@ function handle_resolve_class_service($data) { ], 400); } + // Support CSV type list for priority ordering + $type_list = []; + if ($type) { + $type_list = array_map('trim', explode(',', $type)); + } + // Load manifest data $manifest_file = ide_framework_path('storage/rsx-build/manifest_data.php'); if (!file_exists($manifest_file)) { @@ -813,8 +1215,14 @@ function handle_resolve_class_service($data) { // Helper function to find PHP class in manifest $find_php_class = function($class_name) use ($files) { foreach ($files as $file_path => $file_data) { + // Only match PHP files - check file extension and presence of PHP-specific metadata if (isset($file_data['class']) && $file_data['class'] === $class_name) { - return $file_data; + // Must be a PHP file (not .js, not .jqhtml) + if (str_ends_with($file_path, '.php')) { + // Add file path to the data so caller knows which file it came from + $file_data['file'] = $file_path; + return $file_data; + } } } return null; @@ -842,292 +1250,82 @@ function handle_resolve_class_service($data) { return implode('_', array_map('ucfirst', $parts)); }; - // Priority 1: Try as PHP class - if (!$type || $type === 'class' || preg_match('/^[A-Z][A-Za-z0-9_]*$/', $identifier)) { - $class_data = $find_php_class($identifier); + // If no type list specified, try auto-detection with legacy 'class' type + if (empty($type_list)) { + if (!$type || $type === 'class' || preg_match('/^[A-Z][A-Za-z0-9_]*$/', $identifier)) { + // Legacy: Try PHP class with auto-detection fallback + $type_list = ['php_class', 'view', 'bundle_alias', 'jqhtml_template', 'jqhtml_class']; + } + } - if ($class_data) { - $file_path = $class_data['file']; - $line_number = 1; - $absolute_path = IDE_BASE_PATH . '/' . $file_path; + // Try each type in priority order + foreach ($type_list as $current_type) { + $result = null; - if (file_exists($absolute_path)) { - $content = file_get_contents($absolute_path); - $lines = explode("\n", $content); + switch ($current_type) { + case 'php_class': + $result = try_resolve_php_class($identifier, $method_name, $find_php_class); + break; + case 'js_class': + $result = try_resolve_js_class($identifier, $method_name, $files); + break; + + case 'jqhtml_class': + $result = try_resolve_jqhtml_class($identifier, $method_name, $files); + break; + + case 'view': + $result = try_resolve_view($identifier, $find_view); + break; + + case 'bundle_alias': + $result = try_resolve_bundle_alias($identifier, $find_php_class); + break; + + case 'jqhtml_template': + $result = try_resolve_jqhtml_template($identifier, $files, $camel_to_snake, $snake_to_pascal); + break; + + case 'jqhtml_class_method': if ($method_name) { - // Check if method metadata exists - if (isset($class_data['public_static_methods'][$method_name])) { - $method_metadata = $class_data['public_static_methods'][$method_name]; - if (isset($method_metadata['line'])) { - $line_number = $method_metadata['line']; - } - } else if (isset($class_data['public_instance_methods'][$method_name])) { - $method_metadata = $class_data['public_instance_methods'][$method_name]; - if (isset($method_metadata['line'])) { - $line_number = $method_metadata['line']; - } - } - - // If we don't have line number from metadata, search manually - if ($line_number === 1 && !empty($lines)) { - $in_class_or_trait = false; - $brace_count = 0; - - foreach ($lines as $index => $line) { - if (preg_match('/^\s*(class|trait)\s+\w+(\s|$)/', $line)) { - $in_class_or_trait = true; - } - - if ($in_class_or_trait) { - $brace_count += substr_count($line, '{'); - $brace_count -= substr_count($line, '}'); - - if (preg_match('/^\s*(public|protected|private)?\s*(static\s+)?function\s+' . preg_quote($method_name, '/') . '\s*\(/', $line)) { - $line_number = $index + 1; - break; - } - - if ($brace_count === 0 && strpos($line, '}') !== false) { - break; - } - } - } - } - } else { - // Find the line with the class definition - foreach ($lines as $index => $line) { - if (preg_match('/^\s*class\s+' . preg_quote($identifier, '/') . '(\s|$)/', $line)) { - $line_number = $index + 1; - break; - } - } + $result = try_resolve_jqhtml_method($identifier, $method_name, $files); } - } + break; + } - $response_data = [ - 'found' => true, - 'type' => 'class', - 'file' => $file_path, - 'line' => $line_number, - 'metadata' => [ - 'namespace' => $class_data['namespace'] ?? null, - 'extends' => $class_data['extends'] ?? null, - 'fqcn' => $class_data['fqcn'] ?? null, - ], - ]; - - if ($method_name) { - $response_data['method'] = $method_name; - } - - json_response($response_data); + // If we found a result, return it immediately + if ($result && ($result['found'] ?? false)) { + json_response($result); } } - // Priority 2: Try as RSX blade view - if (!$type || $type === 'view' || !preg_match('/Controller$/', $identifier)) { - $view_data = $find_view($identifier); - - if ($view_data) { - $file_path = $view_data['file']; - $line_number = 1; - $absolute_path = IDE_BASE_PATH . '/' . $file_path; - - if (file_exists($absolute_path)) { - $content = file_get_contents($absolute_path); - $lines = explode("\n", $content); - - // Look for @rsx_id('identifier') - foreach ($lines as $index => $line) { - if (preg_match('/@rsx_id\s*\(\s*[\'"]' . preg_quote($identifier, '/') . '[\'"]\s*\)/', $line)) { - $line_number = $index + 1; - break; - } - } - } - - json_response([ - 'found' => true, - 'type' => 'view', - 'file' => $file_path, - 'line' => $line_number, - 'identifier' => $identifier, - ]); - } - } - - // Priority 3: Try as bundle alias - if (!$type || $type === 'bundle_alias' || preg_match('/^[a-z0-9]+$/', $identifier)) { - $config_path = IDE_SYSTEM_PATH . '/config/rsx.php'; - if (file_exists($config_path)) { - $config = include $config_path; - if (isset($config['bundle_aliases'][$identifier])) { - $bundle_class = $config['bundle_aliases'][$identifier]; - - $class_parts = explode('\\', $bundle_class); - $class_name = end($class_parts); - - $class_data = $find_php_class($class_name); - if ($class_data) { - $file_path = $class_data['file']; - $line_number = 1; - $absolute_path = IDE_BASE_PATH . '/' . $file_path; - - if (file_exists($absolute_path)) { - $content = file_get_contents($absolute_path); - $lines = explode("\n", $content); - - foreach ($lines as $index => $line) { - if (preg_match('/^\s*class\s+' . preg_quote($class_name, '/') . '(\s|$)/', $line)) { - $line_number = $index + 1; - break; - } - } - } - - json_response([ - 'found' => true, - 'type' => 'bundle_alias', - 'file' => $file_path, - 'line' => $line_number, - 'identifier' => $identifier, - 'resolved_class' => $bundle_class, - ]); - } - } - } - } - - // Priority 4: jqhtml template files - if ($type === 'jqhtml_template') { - $component_snake = $camel_to_snake($identifier); - - foreach ($files as $file_path => $file_data) { - if (str_ends_with($file_path, '.jqhtml')) { - $basename = basename($file_path, '.jqhtml'); - - if ($basename === $component_snake || $snake_to_pascal($basename) === $identifier) { - $line_number = 1; - $absolute_path = IDE_BASE_PATH . '/' . $file_path; - - if (file_exists($absolute_path)) { - $content = file_get_contents($absolute_path); - $lines = explode("\n", $content); - - foreach ($lines as $index => $line) { - if (preg_match('/ true, - 'type' => 'jqhtml_template', - 'file' => $file_path, - 'line' => $line_number, - 'identifier' => $identifier, - ]); - } - } - } - } - - // Priority 5: jqhtml JavaScript classes - if ($type === 'jqhtml_class') { - foreach ($files as $file_path => $file_data) { - if (str_ends_with($file_path, '.js')) { - $absolute_path = IDE_BASE_PATH . '/' . $file_path; - - if (file_exists($absolute_path)) { - $content = file_get_contents($absolute_path); - - if (preg_match('/class\s+' . preg_quote($identifier, '/') . '\s+extends\s+[A-Za-z_]*Jqhtml_Component/', $content)) { - $lines = explode("\n", $content); - $line_number = 1; - - foreach ($lines as $index => $line) { - if (preg_match('/class\s+' . preg_quote($identifier, '/') . '\s+extends/', $line)) { - $line_number = $index + 1; - break; - } - } - - json_response([ - 'found' => true, - 'type' => 'jqhtml_class', - 'file' => $file_path, - 'line' => $line_number, - 'identifier' => $identifier, - ]); - } - } - } - } - } - - // Priority 6: jqhtml class methods - if ($type === 'jqhtml_class_method' && $method_name) { - $search_method = ($method_name === 'data') ? 'on_load' : $method_name; - - foreach ($files as $file_path => $file_data) { - if (str_ends_with($file_path, '.js')) { - $absolute_path = IDE_BASE_PATH . '/' . $file_path; - - if (file_exists($absolute_path)) { - $content = file_get_contents($absolute_path); - - if (preg_match('/class\s+' . preg_quote($identifier, '/') . '\s+extends\s+[A-Za-z_]*Jqhtml_Component/', $content)) { - $lines = explode("\n", $content); - $line_number = 1; - $in_class = false; - $brace_count = 0; - - foreach ($lines as $index => $line) { - if (preg_match('/class\s+' . preg_quote($identifier, '/') . '\s+extends/', $line)) { - $in_class = true; - } - - if ($in_class) { - $brace_count += substr_count($line, '{'); - $brace_count -= substr_count($line, '}'); - - if (preg_match('/(?:async\s+)?' . preg_quote($search_method, '/') . '\s*\(/', $line)) { - $line_number = $index + 1; - break; - } - - if ($brace_count === 0 && strpos($line, '}') !== false) { - break; - } - } - } - - json_response([ - 'found' => true, - 'type' => 'jqhtml_class_method', - 'file' => $file_path, - 'line' => $line_number, - 'identifier' => $identifier, - 'method' => $method_name, - ]); - } - } - } - } - } - - // Nothing found + // Nothing found after trying all types json_response([ 'found' => false, 'error' => 'Identifier not found in manifest', 'identifier' => $identifier, - 'searched_types' => ['class', 'view', 'bundle_alias', 'jqhtml_template', 'jqhtml_class', 'jqhtml_class_method'], + 'searched_types' => $type_list, ]); } +/** + * OBSOLETE LEGACY CODE REMOVED + * ============================= + * The code below (approximately lines 1410-1685) was the old resolution system + * that tried each type individually without CSV support. It has been replaced + * by the new CSV type list system above with dedicated resolver functions. + * + * Removed sections: + * - Legacy PHP class fallback (duplicate of try_resolve_php_class) + * - Legacy view resolution (duplicate of try_resolve_view) + * - Legacy bundle alias resolution (duplicate of try_resolve_bundle_alias) + * - Legacy jqhtml template resolution (duplicate of try_resolve_jqhtml_template) + * - Legacy jqhtml class resolution (duplicate of try_resolve_jqhtml_class) + * - Legacy jqhtml method resolution (duplicate of try_resolve_jqhtml_method) + */ + + /** * Handle js_lineage service - get JavaScript class inheritance chain * This is a port of the Ide_Helper_Controller::js_lineage() method @@ -1201,6 +1399,155 @@ function handle_js_lineage_service($data) { ]); } +/** + * Handle js_is_subclass_of service - check if JS class extends another + * + * This is a direct RPC wrapper around Manifest::js_is_subclass_of() + * + * PARAMETERS: + * - subclass (required): The potential subclass name + * - superclass (required): The potential superclass name + * + * RETURNS: + * - is_subclass: boolean - true if subclass extends superclass anywhere in chain + */ +function handle_js_is_subclass_of_service($data) { + $subclass = $data['subclass'] ?? null; + $superclass = $data['superclass'] ?? null; + + if (!$subclass || !$superclass) { + json_response([ + 'error' => 'Missing required parameters: subclass and superclass', + ], 400); + } + + // Load manifest + $manifest_file = ide_framework_path('storage/rsx-build/manifest_data.php'); + if (!file_exists($manifest_file)) { + error_response('Manifest not found - run php artisan rsx:manifest:build', 500); + } + + $manifest_raw = include $manifest_file; + $manifest_data = $manifest_raw['data'] ?? $manifest_raw; + $js_classes = $manifest_data['js_classes'] ?? []; + $files = $manifest_data['files'] ?? []; + + // Implement same logic as Manifest::js_is_subclass_of + $current_class = $subclass; + $visited = []; + + while ($current_class) { + // Prevent infinite loops + if (in_array($current_class, $visited)) { + json_response(['is_subclass' => false]); + } + + $visited[] = $current_class; + + // Find the current class in the manifest + if (!isset($js_classes[$current_class])) { + json_response(['is_subclass' => false]); + } + + // Get file metadata + $file_path = $js_classes[$current_class]; + $metadata = $files[$file_path] ?? null; + + if (!$metadata || empty($metadata['extends'])) { + json_response(['is_subclass' => false]); + } + + if ($metadata['extends'] == $superclass) { + json_response(['is_subclass' => true]); + } + + // Move up the chain to the parent class + $current_class = $metadata['extends']; + } + + json_response(['is_subclass' => false]); +} + +/** + * Handle php_is_subclass_of service - check if PHP class extends another + * + * This is a direct RPC wrapper around Manifest::php_is_subclass_of() + * + * PARAMETERS: + * - subclass (required): The potential subclass name + * - superclass (required): The potential superclass name + * + * RETURNS: + * - is_subclass: boolean - true if subclass extends superclass anywhere in chain + */ +function handle_php_is_subclass_of_service($data) { + $subclass = $data['subclass'] ?? null; + $superclass = $data['superclass'] ?? null; + + if (!$subclass || !$superclass) { + json_response([ + 'error' => 'Missing required parameters: subclass and superclass', + ], 400); + } + + // Load manifest + $manifest_file = ide_framework_path('storage/rsx-build/manifest_data.php'); + if (!file_exists($manifest_file)) { + error_response('Manifest not found - run php artisan rsx:manifest:build', 500); + } + + $manifest_raw = include $manifest_file; + $manifest_data = $manifest_raw['data'] ?? $manifest_raw; + $files = $manifest_data['files'] ?? []; + + // Implement same logic as Manifest::php_is_subclass_of + $current_class = $subclass; + $visited = []; + + while ($current_class) { + // Prevent infinite loops + if (in_array($current_class, $visited)) { + json_response(['is_subclass' => false]); + } + + $visited[] = $current_class; + + // Find the current class in files + $found = false; + foreach ($files as $file_path => $file_data) { + if (isset($file_data['class']) && $file_data['class'] === $current_class) { + // Must be a PHP file + if (str_ends_with($file_path, '.php')) { + $extends = $file_data['extends'] ?? null; + + if (!$extends) { + json_response(['is_subclass' => false]); + } + + // Normalize the extends class name (strip namespace) + $extends_parts = explode('\\', $extends); + $extends_simple = end($extends_parts); + + if ($extends_simple == $superclass) { + json_response(['is_subclass' => true]); + } + + // Move up the chain + $current_class = $extends_simple; + $found = true; + break; + } + } + } + + if (!$found) { + json_response(['is_subclass' => false]); + } + } + + json_response(['is_subclass' => false]); +} + /** * Handle resolve_url service - resolve URL to controller/method * Takes a URL path and returns the controller and method that handles it @@ -1250,4 +1597,5 @@ function handle_resolve_url_service($data) { 'found' => false, 'url' => $url, ]); -} \ No newline at end of file +} + diff --git a/app/RSpade/Ide/Services/laravel_handler.php b/app/RSpade/Ide/Services/laravel_handler.php new file mode 100755 index 000000000..e265383b2 --- /dev/null +++ b/app/RSpade/Ide/Services/laravel_handler.php @@ -0,0 +1,192 @@ +make('Illuminate\Contracts\Console\Kernel')->bootstrap(); + +// JSON response helper +function json_response($data, $code = 200) { + http_response_code($code); + header('Content-Type: application/json'); + echo json_encode($data); + exit; +} + +// Error response helper +function error_response($message, $code = 400) { + json_response(['success' => false, 'error' => $message], $code); +} + +// Authentication already handled by auth.php before this file is loaded +// Retrieve auth data from constants set by auth.php +if (!defined('IDE_AUTH_PASSED')) { + error_response('Authentication check did not run - this should never happen', 500); +} + +$auth_data = json_decode(IDE_AUTH_DATA, true); + +// Parse request URI to get service +$request_uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); +$service_path = str_replace('/_ide/service', '', $request_uri); +$service_path = trim($service_path, '/'); + +// Get request body +$request_body = file_get_contents('php://input'); +$request_data = json_decode($request_body, true); + +// Merge GET parameters (for backward compatibility) +if ($_SERVER['REQUEST_METHOD'] === 'GET') { + $request_data = array_merge($request_data ?? [], $_GET); +} + +// Route to appropriate service handler +// This handler provides Laravel-based services (can access Manifest, models, etc.) +// Format service is handled by handler.php (standalone, no Laravel) +switch ($service_path) { + case 'manifest_build': + handle_manifest_build_service($request_data); + break; + + case 'js_is_subclass_of': + handle_js_is_subclass_of_service($request_data); + break; + + case 'php_is_subclass_of': + handle_php_is_subclass_of_service($request_data); + break; + + case 'resolve_class': + // TODO: Migrate from handler.php and refactor to use Manifest directly + error_response('Service not yet migrated to Laravel handler', 501); + break; + + case 'definition': + // TODO: Migrate from handler.php and refactor to use Manifest directly + error_response('Service not yet migrated to Laravel handler', 501); + break; + + case 'complete': + // TODO: Migrate from handler.php and refactor to use Manifest directly + error_response('Service not yet migrated to Laravel handler', 501); + break; + + case 'exec': + case 'command': + // TODO: Migrate from handler.php + error_response('Service not yet migrated to Laravel handler', 501); + break; + + // git and git/diff services are handled by handler.php (standalone, no Laravel needed) + + case 'js_lineage': + // TODO: Migrate from handler.php - or remove if js_is_subclass_of replaces it + error_response('Service not yet migrated to Laravel handler', 501); + break; + + case 'resolve_url': + // TODO: Migrate from handler.php and refactor to use Manifest directly + error_response('Service not yet migrated to Laravel handler', 501); + break; + + case 'health': + json_response(['success' => true, 'service' => 'ide-laravel', 'version' => '1.0.0']); + break; + + default: + error_response('Unknown service: ' . $service_path, 404); +} + +/** + * Handle manifest_build service - trigger incremental manifest update + * + * Calls Manifest::init() which performs incremental update if needed. + * Does NOT clear the manifest, just updates changed files. + */ +function handle_manifest_build_service($data) { + try { + // Manifest::init() will do incremental update if needed + \App\RSpade\Core\Manifest\Manifest::init(); + json_response(['success' => true]); + } catch (\Exception $e) { + // Return error but VS Code extension will suppress user notification + json_response(['success' => false, 'error' => $e->getMessage()], 500); + } +} + +/** + * Handle js_is_subclass_of service - check if JS class extends another + * + * Direct RPC wrapper around Manifest::js_is_subclass_of() + */ +function handle_js_is_subclass_of_service($data) { + $subclass = $data['subclass'] ?? null; + $superclass = $data['superclass'] ?? null; + + if (!$subclass || !$superclass) { + json_response([ + 'error' => 'Missing required parameters: subclass and superclass', + ], 400); + } + + try { + $is_subclass = \App\RSpade\Core\Manifest\Manifest::js_is_subclass_of($subclass, $superclass); + json_response(['is_subclass' => $is_subclass]); + } catch (\Exception $e) { + error_response('Manifest error: ' . $e->getMessage(), 500); + } +} + +/** + * Handle php_is_subclass_of service - check if PHP class extends another + * + * Direct RPC wrapper around Manifest::php_is_subclass_of() + */ +function handle_php_is_subclass_of_service($data) { + $subclass = $data['subclass'] ?? null; + $superclass = $data['superclass'] ?? null; + + if (!$subclass || !$superclass) { + json_response([ + 'error' => 'Missing required parameters: subclass and superclass', + ], 400); + } + + try { + $is_subclass = \App\RSpade\Core\Manifest\Manifest::php_is_subclass_of($subclass, $superclass); + json_response(['is_subclass' => $is_subclass]); + } catch (\Exception $e) { + error_response('Manifest error: ' . $e->getMessage(), 500); + } +} diff --git a/app/RSpade/resource/vscode_extension/out/auto_rename_provider.js b/app/RSpade/resource/vscode_extension/out/auto_rename_provider.js index d066baeec..f4573898b 100644 --- a/app/RSpade/resource/vscode_extension/out/auto_rename_provider.js +++ b/app/RSpade/resource/vscode_extension/out/auto_rename_provider.js @@ -27,6 +27,7 @@ exports.AutoRenameProvider = void 0; const vscode = __importStar(require("vscode")); const path = __importStar(require("path")); const fs = __importStar(require("fs")); +const ide_bridge_client_1 = require("./ide_bridge_client"); /** * Provides automatic file renaming based on RSX naming conventions * @@ -43,6 +44,7 @@ class AutoRenameProvider { this.config_enabled = false; this.workspace_root = ''; this.is_checking = false; + this.ide_bridge_client = null; this.init(); } find_rspade_root() { @@ -327,9 +329,24 @@ class AutoRenameProvider { return class_name.toLowerCase() + '.php'; } async get_suggested_js_filename(file_path, class_name, content) { - // Check if this extends Jqhtml_Component - const is_jqhtml = content.includes('extends Jqhtml_Component') || - content.match(/extends\s+[A-Za-z0-9_]+\s+extends Jqhtml_Component/); + // Check if this extends Jqhtml_Component (directly or via inheritance) + let is_jqhtml = content.includes('extends Jqhtml_Component'); + // If not directly extending, check via API + if (!is_jqhtml && content.includes('extends ')) { + // Initialize IDE bridge client if needed + if (!this.ide_bridge_client) { + const output_channel = vscode.window.createOutputChannel('RSpade Auto Rename'); + this.ide_bridge_client = new ide_bridge_client_1.IdeBridgeClient(output_channel); + } + try { + const response = await this.ide_bridge_client.js_is_subclass_of(class_name, 'Jqhtml_Component'); + is_jqhtml = response.is_subclass || false; + } + catch (error) { + // If API call fails, fall back to direct check only + console.log('[AutoRename] JS - Failed to check inheritance:', error); + } + } console.log('[AutoRename] JS - Is Jqhtml_Component:', is_jqhtml); const dir = path.dirname(file_path); const relative_dir = path.relative(this.workspace_root, dir); diff --git a/app/RSpade/resource/vscode_extension/out/auto_rename_provider.js.map b/app/RSpade/resource/vscode_extension/out/auto_rename_provider.js.map index 350f482dc..2bbadb9fc 100644 --- a/app/RSpade/resource/vscode_extension/out/auto_rename_provider.js.map +++ b/app/RSpade/resource/vscode_extension/out/auto_rename_provider.js.map @@ -1 +1 @@ -{"version":3,"file":"auto_rename_provider.js","sourceRoot":"","sources":["../src/auto_rename_provider.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"auto_rename_provider.js","sourceRoot":"","sources":["../src/auto_rename_provider.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/app/RSpade/resource/vscode_extension/out/definition_provider.js b/app/RSpade/resource/vscode_extension/out/definition_provider.js index c752d3a0f..272bc106d 100644 --- a/app/RSpade/resource/vscode_extension/out/definition_provider.js +++ b/app/RSpade/resource/vscode_extension/out/definition_provider.js @@ -1,4 +1,77 @@ "use strict"; +/** + * RSpade Definition Provider - "Go to Definition" for RSX Classes, Routes, and Components + * + * RESOLUTION TYPE PRIORITY MATRIX + * ================================ + * + * This provider determines what to navigate to when you click "Go to Definition" on various + * identifiers across different file types. The resolution logic uses CSV type lists sent to + * the server endpoint `/_ide/service/resolve_class?type=X,Y,Z` which tries each type in order. + * + * FILE TYPE HANDLERS & RESOLUTION RULES: + * + * 1. ROUTE PATTERNS (all files) + * Pattern: Rsx::Route('Controller') or Rsx.Route('Controller', 'method') + * Type: 'php_class' + * Reason: Routes always point to PHP controllers (server-side) + * + * 2. HREF PATTERNS (Blade, jqhtml) + * Pattern: href="/" + * Type: 'php_class' + * Reason: Resolves URL to controller, always PHP + * + * 3. JQHTML EXTENDS ATTRIBUTE (jqhtml only) + * Pattern: + * Type: 'jqhtml_class,js_class' + * Reason: Component inheritance - try jqhtml component first, then JS class + * + * 4. JQHTML $xxx ATTRIBUTES (jqhtml only) + * Pattern: $data_source=Frontend_Controller.fetch_data + * Type: 'js_class,php_class' + * Reason: Try JS class first (for components), then PHP (for controllers/models) + * + * Pattern: $handler=this.on_click + * Type: 'jqhtml_class_method' + * Special: Resolves to current component's method + * + * 5. THIS REFERENCES (jqhtml only) + * Pattern: <%= this.data.users %> + * Type: 'jqhtml_class_method' + * Reason: Always current component's method/property + * + * 6. JAVASCRIPT CLASS REFERENCES (JS, jqhtml) + * Pattern: class My_Component extends DataGrid_Abstract + * Pattern: User_Controller.fetch_all() + * Type: 'js_class,php_class' + * Reason: Try JS first (component inheritance), then PHP (controllers/models) + * Note: JS stub files (auto-generated from PHP) are client-side only, not in manifest + * + * 7. PHP CLASS REFERENCES (PHP, Blade) + * Pattern: class Contacts_DataGrid extends DataGrid_Abstract + * Pattern: use Rsx\Lib\DataGrid_QueryBuilder; + * Type: 'php_class' + * Reason: In PHP files, class references are always PHP (not JavaScript) + * + * 8. BUNDLE ALIASES (PHP only) + * Pattern: 'include' => ['jqhtml', 'frontend'] + * Type: 'bundle_alias' + * Reason: Resolves to bundle class definition + * + * 9. VIEW REFERENCES (PHP, Blade) + * Pattern: @rsx_extends('frontend.layout') + * Pattern: rsx_view('frontend.dashboard') + * Type: 'view' + * Reason: Resolves to Blade view template files + * + * METHOD RESOLUTION: + * When a pattern includes a method (e.g., Controller.method), the server attempts to find + * the specific method in the class. If the method isn't found but the class is, it returns + * the class location as a fallback. + * + * IMPORTANT: The server endpoint supports CSV type lists for priority ordering. + * Example: type='php_class,js_class' tries PHP first, then JavaScript. + */ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); @@ -88,8 +161,19 @@ class RspadeDefinitionProvider { return hrefResult; } } - // Handle "this.xxx" references in .jqhtml files (highest priority for jqhtml files) + // Handle jqhtml-specific patterns if (fileName.endsWith('.jqhtml')) { + // Check for extends="ClassName" attribute + const extendsResult = await this.handleJqhtmlExtends(document, position); + if (extendsResult) { + return extendsResult; + } + // Check for $xxx=... attributes (must come before handleThisReference) + const attrResult = await this.handleJqhtmlAttribute(document, position); + if (attrResult) { + return attrResult; + } + // Handle "this.xxx" references in template expressions const thisResult = await this.handleThisReference(document, position); if (thisResult) { return thisResult; @@ -132,6 +216,9 @@ class RspadeDefinitionProvider { * - Rsx::Route('Controller', 'method') (PHP) * - Rsx.Route('Controller') (JavaScript, defaults to 'index') * - Rsx.Route('Controller', 'method') (JavaScript) + * + * Resolution: Routes always point to PHP controllers (server-side) + * Type: 'php_class' */ async handleRoutePattern(document, position) { const line = document.lineAt(position.line).text; @@ -148,13 +235,13 @@ class RspadeDefinitionProvider { // Always go to the method when clicking anywhere in Route() // This takes precedence over individual class name lookups try { - const result = await this.queryIdeHelper(controller, method, 'class'); + const result = await this.queryIdeHelper(controller, method, 'php_class'); return this.createLocationFromResult(result); } catch (error) { // If method lookup fails, try just the controller try { - const result = await this.queryIdeHelper(controller, undefined, 'class'); + const result = await this.queryIdeHelper(controller, undefined, 'php_class'); return this.createLocationFromResult(result); } catch (error2) { @@ -178,13 +265,13 @@ class RspadeDefinitionProvider { // Single parameter - default to 'index' const method = 'index'; try { - const result = await this.queryIdeHelper(controller, method, 'class'); + const result = await this.queryIdeHelper(controller, method, 'php_class'); return this.createLocationFromResult(result); } catch (error) { // If method lookup fails, try just the controller try { - const result = await this.queryIdeHelper(controller, undefined, 'class'); + const result = await this.queryIdeHelper(controller, undefined, 'php_class'); return this.createLocationFromResult(result); } catch (error2) { @@ -215,8 +302,8 @@ class RspadeDefinitionProvider { // Query IDE bridge to resolve "/" URL to route const result = await this.ide_bridge.queryUrl('/'); if (result && result.found && result.controller && result.method) { - // Resolved to controller/method - navigate to it - const phpResult = await this.queryIdeHelper(result.controller, result.method, 'class'); + // Resolved to controller/method - navigate to it (always PHP) + const phpResult = await this.queryIdeHelper(result.controller, result.method, 'php_class'); return this.createLocationFromResult(phpResult); } } @@ -227,6 +314,106 @@ class RspadeDefinitionProvider { } return undefined; } + /** + * Handle jqhtml extends="" attribute + * Detects patterns like: + * - + * + * Resolution: Try jqhtml component first, then JS class + * Type: 'jqhtml_class,js_class' + */ + async handleJqhtmlExtends(document, position) { + const line = document.lineAt(position.line).text; + // Match extends="ClassName" or extends='ClassName' + const extendsPattern = /extends\s*=\s*(['"])([A-Z][A-Za-z0-9_]*)\1/g; + let match; + while ((match = extendsPattern.exec(line)) !== null) { + const className = match[2]; + const classStart = match.index + match[0].indexOf(className); + const classEnd = classStart + className.length; + // Check if cursor is on the class name + if (position.character >= classStart && position.character < classEnd) { + try { + // Try jqhtml component first, then JS class + const result = await this.queryIdeHelper(className, undefined, 'jqhtml_class,js_class'); + return this.createLocationFromResult(result); + } + catch (error) { + console.error('Error resolving jqhtml extends:', error); + } + } + } + return undefined; + } + /** + * Handle jqhtml $xxx=... attributes + * Detects patterns like: + * - $data_source=Frontend_Controller.fetch_data + * - $on_click=this.handle_click + * + * Resolution logic: + * - If starts with "this.", resolve to current component's jqhtml class methods + * - Otherwise, resolve like JS class references: 'js_class,php_class' + */ + async handleJqhtmlAttribute(document, position) { + const line = document.lineAt(position.line).text; + // Match $attribute=Value or $attribute=this.method or $attribute=Class.method + // Pattern: $word=(this.)?(Word)(.word)? + const attrPattern = /\$[a-z_][a-z0-9_]*\s*=\s*(this\.)?([A-Z][A-Za-z0-9_]*)(?:\.([a-z_][a-z0-9_]*))?/gi; + let match; + while ((match = attrPattern.exec(line)) !== null) { + const hasThis = !!match[1]; // "this." prefix + const className = match[2]; + const methodName = match[3]; // Optional method after dot + const classStart = match.index + match[0].indexOf(className); + const classEnd = classStart + className.length; + // Check if cursor is on the class name + if (position.character >= classStart && position.character < classEnd) { + if (hasThis) { + // this.method - resolve to current component's methods + // Get the component name from the file + let componentName; + const fullText = document.getText(); + const defineMatch = fullText.match(/ part.charAt(0).toUpperCase() + part.slice(1).toLowerCase()).join('_'); + } + } + if (!componentName) { + return undefined; + } + try { + // The className here is actually the method name after "this." + // We need to use the component name as the identifier + const result = await this.queryIdeHelper(componentName, className.toLowerCase(), 'jqhtml_class_method'); + return this.createLocationFromResult(result); + } + catch (error) { + console.error('Error resolving jqhtml this reference:', error); + } + } + else { + // Class.method or Class - resolve like JS class references + try { + const result = await this.queryIdeHelper(className, methodName, 'js_class,php_class'); + return this.createLocationFromResult(result); + } + catch (error) { + console.error('Error resolving jqhtml attribute class:', error); + } + } + } + } + return undefined; + } /** * Handle "this.xxx" references in .jqhtml files * Only handles patterns where cursor is on a word after "this." @@ -340,6 +527,19 @@ class RspadeDefinitionProvider { console.log('[JQHTML Component] Returning location:', component_def.uri.fsPath, 'at position', component_def.position); return new vscode.Location(component_def.uri, component_def.position); } + /** + * Handle JavaScript class references in .js and .jqhtml files + * Detects patterns like: + * - class My_Component extends DataGrid_Abstract + * - User_Controller.fetch_all() + * - await Product_Model.fetch(123) + * + * Resolution: Try JS classes first (for component inheritance), then PHP classes (for controllers/models) + * Type: 'js_class,php_class' + * + * Note: JS stub files (auto-generated from PHP) are client-side only and not in the manifest, + * so there's no conflict - the server will correctly return PHP classes when they exist. + */ async handleJavaScriptDefinition(document, position) { // Get the word at the current position const wordRange = document.getWordRangeAtPosition(position, /[A-Z][A-Za-z0-9_]*/); @@ -361,8 +561,9 @@ class RspadeDefinitionProvider { method_name = methodMatch[1]; } // Query the IDE helper endpoint + // Try JS classes first (component inheritance), then PHP (controllers/models) try { - const result = await this.queryIdeHelper(word, method_name, 'class'); + const result = await this.queryIdeHelper(word, method_name, 'js_class,php_class'); return this.createLocationFromResult(result); } catch (error) { @@ -488,7 +689,9 @@ class RspadeDefinitionProvider { // Check if this looks like an RSX class name if (word.includes('_') && /^[A-Z]/.test(word)) { try { - const result = await this.queryIdeHelper(word, undefined, 'class'); + // When resolving from PHP files, only look for PHP classes + // This prevents jumping to JavaScript files when clicking on PHP class references + const result = await this.queryIdeHelper(word, undefined, 'php_class'); return this.createLocationFromResult(result); } catch (error) { 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 22fcc73fd..7ba8e27a6 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":"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"} \ 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/out/ide_bridge_client.js b/app/RSpade/resource/vscode_extension/out/ide_bridge_client.js index d5aff7258..c5aaa4b19 100644 --- a/app/RSpade/resource/vscode_extension/out/ide_bridge_client.js +++ b/app/RSpade/resource/vscode_extension/out/ide_bridge_client.js @@ -5,7 +5,7 @@ * Centralized client for communicating with RSpade framework IDE helper endpoints. * * AUTO-DISCOVERY SYSTEM: - * 1. Server creates storage/rsx-ide-bridge/domain.txt on first web request + * 1. Server creates system/storage/rsx-ide-bridge/domain.txt on first web request * 2. Client reads domain.txt to discover server URL * 3. Falls back to VS Code setting: rspade.serverUrl * 4. Auto-retries with refreshed URL on connection failure @@ -128,6 +128,44 @@ class IdeBridgeClient { async queryUrl(url) { return this.request('/_ide/service/resolve_url', { url }, 'GET'); } + /** + * Check if a JavaScript class extends another class (anywhere in the inheritance chain) + * + * @param subclass The potential subclass name + * @param superclass The potential superclass name + * @returns Promise with { is_subclass: boolean } + */ + async js_is_subclass_of(subclass, superclass) { + return this.request('/_ide/service/js_is_subclass_of', { subclass, superclass }, 'GET'); + } + /** + * Check if a PHP class extends another class (anywhere in the inheritance chain) + * + * @param subclass The potential subclass name + * @param superclass The potential superclass name + * @returns Promise with { is_subclass: boolean } + */ + async php_is_subclass_of(subclass, superclass) { + return this.request('/_ide/service/php_is_subclass_of', { subclass, superclass }, 'GET'); + } + /** + * Trigger incremental manifest build + * + * Calls Manifest::init() on the server to update the manifest cache. + * Does NOT clear the manifest, just performs incremental update of changed files. + * + * @returns Promise with { success: boolean } + */ + async manifest_build() { + try { + return await this.request('/_ide/service/manifest_build', {}, 'GET'); + } + catch (error) { + // Log to console but don't throw - errors are silent to user + console.warn('[IdeBridge] Manifest build failed:', error.message); + return { success: false }; + } + } async make_request_with_retry(endpoint, data, method, retry_count) { if (retry_count > 0) { this.output_channel.appendLine(`\n--- RETRY ATTEMPT ${retry_count} ---`); @@ -146,9 +184,14 @@ class IdeBridgeClient { // Only retry once if (retry_count === 0) { const error_msg = error.message || ''; - // Session expired or signature invalid - recreate session - if (error_msg.includes('Session not found') || error_msg.includes('Invalid signature')) { - this.output_channel.appendLine('Session/signature error, recreating session...'); + // Authentication failure - recreate session + // Handles: "Session not found", "Invalid signature", "Authentication required" + // or any HTTP 401 response + if (error_msg.includes('Session not found') || + error_msg.includes('Invalid signature') || + error_msg.includes('Authentication required') || + error_msg.includes('HTTP 401')) { + this.output_channel.appendLine('Authentication failed, recreating session...'); this.auth_data = null; return this.make_request_with_retry(endpoint, data, method, retry_count + 1); } @@ -327,7 +370,7 @@ class IdeBridgeClient { this.show_detailed_error(); throw new Error('RSpade project root not found'); } - const domain_file = path.join(rspade_root, 'storage', 'rsx-ide-bridge', 'domain.txt'); + const domain_file = path.join(rspade_root, 'system', 'storage', 'rsx-ide-bridge', 'domain.txt'); this.output_channel.appendLine(`Checking for domain file: ${domain_file}`); if (await exists(domain_file)) { const domain = (await read_file(domain_file, 'utf8')).trim(); @@ -338,7 +381,7 @@ class IdeBridgeClient { // domain.txt doesn't exist yet - schedule retry this.schedule_retry(); this.show_detailed_error(); - throw new Error('RSpade: storage/rsx-ide-bridge/domain.txt not found. Please load site in browser or configure server URL.'); + throw new Error('RSpade: system/storage/rsx-ide-bridge/domain.txt not found. Please load site in browser or configure server URL.'); } async negotiate_protocol(url_or_hostname) { // Parse the input to extract hostname @@ -427,7 +470,7 @@ class IdeBridgeClient { if (!rspade_root) { return; } - const domain_file = path.join(rspade_root, 'storage', 'rsx-ide-bridge', 'domain.txt'); + const domain_file = path.join(rspade_root, 'system', 'storage', 'rsx-ide-bridge', 'domain.txt'); const domain_dir = path.dirname(domain_file); // Watch the directory (file might not exist yet) if (fs.existsSync(domain_dir)) { @@ -469,10 +512,11 @@ class IdeBridgeClient { return undefined; } for (const folder of vscode.workspace.workspaceFolders) { - // Try new structure first + // Try new structure first - check for system/app/RSpade const system_app_rspade = path.join(folder.uri.fsPath, 'system', 'app', 'RSpade'); if (fs.existsSync(system_app_rspade)) { - return path.join(folder.uri.fsPath, 'system'); + // Return project root (not system directory) + return folder.uri.fsPath; } // Fall back to legacy structure const app_rspade = path.join(folder.uri.fsPath, 'app', 'RSpade'); @@ -507,7 +551,7 @@ class IdeBridgeClient { this.output_channel.appendLine('\nThe extension needs to know your development server URL.'); this.output_channel.appendLine('\nPlease do ONE of the following:\n'); this.output_channel.appendLine('1. Load your site in a web browser'); - this.output_channel.appendLine(' This will auto-create: storage/rsx-ide-bridge/domain.txt\n'); + this.output_channel.appendLine(' This will auto-create: system/storage/rsx-ide-bridge/domain.txt\n'); this.output_channel.appendLine('2. Set VS Code setting: rspade.serverUrl'); this.output_channel.appendLine(' File → Preferences → Settings → Search "rspade"'); this.output_channel.appendLine(' Set to your development URL (e.g., https://myapp.test)\n'); diff --git a/app/RSpade/resource/vscode_extension/out/ide_bridge_client.js.map b/app/RSpade/resource/vscode_extension/out/ide_bridge_client.js.map index 107acb8b8..d3c16106e 100644 --- a/app/RSpade/resource/vscode_extension/out/ide_bridge_client.js.map +++ b/app/RSpade/resource/vscode_extension/out/ide_bridge_client.js.map @@ -1 +1 @@ -{"version":3,"file":"ide_bridge_client.js","sourceRoot":"","sources":["../src/ide_bridge_client.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ide_bridge_client.js","sourceRoot":"","sources":["../src/ide_bridge_client.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/app/RSpade/resource/vscode_extension/out/jqhtml_lifecycle_provider.js b/app/RSpade/resource/vscode_extension/out/jqhtml_lifecycle_provider.js index a15ab3cfc..152f7c65e 100644 --- a/app/RSpade/resource/vscode_extension/out/jqhtml_lifecycle_provider.js +++ b/app/RSpade/resource/vscode_extension/out/jqhtml_lifecycle_provider.js @@ -56,20 +56,21 @@ const LIFECYCLE_DOCS = { on_destroy: 'Component destruction phase - cleanup resources. Called before component is removed. MUST be synchronous.', }; /** - * Cache for lineage lookups + * Cache for subclass checks */ -const lineage_cache = new Map(); +const subclass_cache = new Map(); /** * IDE Bridge client instance (shared across all providers) */ let ide_bridge_client = null; /** - * Get JavaScript class lineage from backend via IDE bridge + * Check if a JavaScript class extends another class (anywhere in inheritance chain) */ -async function get_js_lineage(class_name) { +async function is_subclass_of_jqhtml_component(class_name) { + const cache_key = `${class_name}:Jqhtml_Component`; // Check cache first - if (lineage_cache.has(class_name)) { - return lineage_cache.get(class_name); + if (subclass_cache.has(cache_key)) { + return subclass_cache.get(cache_key); } // Initialize IDE bridge client if needed if (!ide_bridge_client) { @@ -77,15 +78,15 @@ async function get_js_lineage(class_name) { ide_bridge_client = new ide_bridge_client_1.IdeBridgeClient(output_channel); } try { - const response = await ide_bridge_client.request('/_ide/service/js_lineage', { class: class_name }); - const lineage = response.lineage || []; + const response = await ide_bridge_client.js_is_subclass_of(class_name, 'Jqhtml_Component'); + const is_subclass = response.is_subclass || false; // Cache the result - lineage_cache.set(class_name, lineage); - return lineage; + subclass_cache.set(cache_key, is_subclass); + return is_subclass; } catch (error) { // Re-throw error to fail loud - no silent fallbacks - throw new Error(`Failed to get JS lineage for ${class_name}: ${error.message}`); + throw new Error(`Failed to check if ${class_name} extends Jqhtml_Component: ${error.message}`); } } /** @@ -169,16 +170,14 @@ class JqhtmlLifecycleSemanticTokensProvider { // Check if directly extends Jqhtml_Component const is_jqhtml = directly_extends_jqhtml(text); console.log(`[JQHTML] Directly extends Jqhtml_Component: ${is_jqhtml}`); - // If not directly extending, check lineage + // If not directly extending, check inheritance chain let extends_jqhtml = is_jqhtml; if (!is_jqhtml && has_extends_clause(text)) { const class_name = extract_class_name(text); - console.log(`[JQHTML] Checking lineage for class: ${class_name}`); + console.log(`[JQHTML] Checking inheritance for class: ${class_name}`); if (class_name) { - const lineage = await get_js_lineage(class_name); - console.log(`[JQHTML] Lineage: ${JSON.stringify(lineage)}`); - extends_jqhtml = lineage.includes('Jqhtml_Component'); - console.log(`[JQHTML] Extends Jqhtml_Component via lineage: ${extends_jqhtml}`); + extends_jqhtml = await is_subclass_of_jqhtml_component(class_name); + console.log(`[JQHTML] Extends Jqhtml_Component via inheritance: ${extends_jqhtml}`); } } // Highlight lifecycle methods (only if extends Jqhtml_Component) @@ -271,8 +270,7 @@ class JqhtmlLifecycleHoverProvider { if (!is_jqhtml) { const class_name = extract_class_name(text); if (class_name) { - const lineage = await get_js_lineage(class_name); - extends_jqhtml = lineage.includes('Jqhtml_Component'); + extends_jqhtml = await is_subclass_of_jqhtml_component(class_name); } } if (!extends_jqhtml) { @@ -346,8 +344,7 @@ class JqhtmlLifecycleDiagnosticProvider { if (!is_jqhtml) { const class_name = extract_class_name(text); if (class_name) { - const lineage = await get_js_lineage(class_name); - extends_jqhtml = lineage.includes('Jqhtml_Component'); + extends_jqhtml = await is_subclass_of_jqhtml_component(class_name); } } this.document_cache.set(cache_key, extends_jqhtml); diff --git a/app/RSpade/resource/vscode_extension/out/jqhtml_lifecycle_provider.js.map b/app/RSpade/resource/vscode_extension/out/jqhtml_lifecycle_provider.js.map index 0b4a7af2d..e899d14a9 100644 --- a/app/RSpade/resource/vscode_extension/out/jqhtml_lifecycle_provider.js.map +++ b/app/RSpade/resource/vscode_extension/out/jqhtml_lifecycle_provider.js.map @@ -1 +1 @@ -{"version":3,"file":"jqhtml_lifecycle_provider.js","sourceRoot":"","sources":["../src/jqhtml_lifecycle_provider.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"jqhtml_lifecycle_provider.js","sourceRoot":"","sources":["../src/jqhtml_lifecycle_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 c31d3989c..da51742fe 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.182", + "version": "0.1.186", "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 index 72e56f17e5372631bf94860ec78dcbcc40fd5f54..e1cb322b23ee25b5856dbda4c1ddd29742eb972a 100755 GIT binary patch delta 27703 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 V|7H1&I=IFbzymvJ{r(j~{2z$i{Ez?u delta 25099 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 Y{P%Q_9`8ng8VuqM5JWpO2R!2c4-ZD>Q~&?~ diff --git a/app/RSpade/resource/vscode_extension/src/auto_rename_provider.ts b/app/RSpade/resource/vscode_extension/src/auto_rename_provider.ts index b4226d9f7..6a8e13401 100755 --- a/app/RSpade/resource/vscode_extension/src/auto_rename_provider.ts +++ b/app/RSpade/resource/vscode_extension/src/auto_rename_provider.ts @@ -1,6 +1,7 @@ import * as vscode from 'vscode'; import * as path from 'path'; import * as fs from 'fs'; +import { IdeBridgeClient } from './ide_bridge_client'; /** * Provides automatic file renaming based on RSX naming conventions @@ -17,6 +18,7 @@ export class AutoRenameProvider { private config_enabled: boolean = false; private workspace_root: string = ''; private is_checking = false; + private ide_bridge_client: IdeBridgeClient | null = null; constructor() { this.init(); @@ -354,9 +356,25 @@ export class AutoRenameProvider { } private async get_suggested_js_filename(file_path: string, class_name: string, content: string): Promise { - // Check if this extends Jqhtml_Component - const is_jqhtml = content.includes('extends Jqhtml_Component') || - content.match(/extends\s+[A-Za-z0-9_]+\s+extends Jqhtml_Component/); + // Check if this extends Jqhtml_Component (directly or via inheritance) + let is_jqhtml = content.includes('extends Jqhtml_Component'); + + // If not directly extending, check via API + if (!is_jqhtml && content.includes('extends ')) { + // Initialize IDE bridge client if needed + if (!this.ide_bridge_client) { + const output_channel = vscode.window.createOutputChannel('RSpade Auto Rename'); + this.ide_bridge_client = new IdeBridgeClient(output_channel); + } + + try { + const response = await this.ide_bridge_client.js_is_subclass_of(class_name, 'Jqhtml_Component'); + is_jqhtml = response.is_subclass || false; + } catch (error) { + // If API call fails, fall back to direct check only + console.log('[AutoRename] JS - Failed to check inheritance:', error); + } + } console.log('[AutoRename] JS - Is Jqhtml_Component:', is_jqhtml); diff --git a/app/RSpade/resource/vscode_extension/src/definition_provider.ts b/app/RSpade/resource/vscode_extension/src/definition_provider.ts index 200285f66..09ef9b3dd 100755 --- a/app/RSpade/resource/vscode_extension/src/definition_provider.ts +++ b/app/RSpade/resource/vscode_extension/src/definition_provider.ts @@ -1,3 +1,77 @@ +/** + * RSpade Definition Provider - "Go to Definition" for RSX Classes, Routes, and Components + * + * RESOLUTION TYPE PRIORITY MATRIX + * ================================ + * + * This provider determines what to navigate to when you click "Go to Definition" on various + * identifiers across different file types. The resolution logic uses CSV type lists sent to + * the server endpoint `/_ide/service/resolve_class?type=X,Y,Z` which tries each type in order. + * + * FILE TYPE HANDLERS & RESOLUTION RULES: + * + * 1. ROUTE PATTERNS (all files) + * Pattern: Rsx::Route('Controller') or Rsx.Route('Controller', 'method') + * Type: 'php_class' + * Reason: Routes always point to PHP controllers (server-side) + * + * 2. HREF PATTERNS (Blade, jqhtml) + * Pattern: href="/" + * Type: 'php_class' + * Reason: Resolves URL to controller, always PHP + * + * 3. JQHTML EXTENDS ATTRIBUTE (jqhtml only) + * Pattern: + * Type: 'jqhtml_class,js_class' + * Reason: Component inheritance - try jqhtml component first, then JS class + * + * 4. JQHTML $xxx ATTRIBUTES (jqhtml only) + * Pattern: $data_source=Frontend_Controller.fetch_data + * Type: 'js_class,php_class' + * Reason: Try JS class first (for components), then PHP (for controllers/models) + * + * Pattern: $handler=this.on_click + * Type: 'jqhtml_class_method' + * Special: Resolves to current component's method + * + * 5. THIS REFERENCES (jqhtml only) + * Pattern: <%= this.data.users %> + * Type: 'jqhtml_class_method' + * Reason: Always current component's method/property + * + * 6. JAVASCRIPT CLASS REFERENCES (JS, jqhtml) + * Pattern: class My_Component extends DataGrid_Abstract + * Pattern: User_Controller.fetch_all() + * Type: 'js_class,php_class' + * Reason: Try JS first (component inheritance), then PHP (controllers/models) + * Note: JS stub files (auto-generated from PHP) are client-side only, not in manifest + * + * 7. PHP CLASS REFERENCES (PHP, Blade) + * Pattern: class Contacts_DataGrid extends DataGrid_Abstract + * Pattern: use Rsx\Lib\DataGrid_QueryBuilder; + * Type: 'php_class' + * Reason: In PHP files, class references are always PHP (not JavaScript) + * + * 8. BUNDLE ALIASES (PHP only) + * Pattern: 'include' => ['jqhtml', 'frontend'] + * Type: 'bundle_alias' + * Reason: Resolves to bundle class definition + * + * 9. VIEW REFERENCES (PHP, Blade) + * Pattern: @rsx_extends('frontend.layout') + * Pattern: rsx_view('frontend.dashboard') + * Type: 'view' + * Reason: Resolves to Blade view template files + * + * METHOD RESOLUTION: + * When a pattern includes a method (e.g., Controller.method), the server attempts to find + * the specific method in the class. If the method isn't found but the class is, it returns + * the class location as a fallback. + * + * IMPORTANT: The server endpoint supports CSV type lists for priority ordering. + * Example: type='php_class,js_class' tries PHP first, then JavaScript. + */ + import * as vscode from 'vscode'; import * as path from 'path'; import * as fs from 'fs'; @@ -94,8 +168,21 @@ export class RspadeDefinitionProvider implements vscode.DefinitionProvider { } } - // Handle "this.xxx" references in .jqhtml files (highest priority for jqhtml files) + // Handle jqhtml-specific patterns if (fileName.endsWith('.jqhtml')) { + // Check for extends="ClassName" attribute + const extendsResult = await this.handleJqhtmlExtends(document, position); + if (extendsResult) { + return extendsResult; + } + + // Check for $xxx=... attributes (must come before handleThisReference) + const attrResult = await this.handleJqhtmlAttribute(document, position); + if (attrResult) { + return attrResult; + } + + // Handle "this.xxx" references in template expressions const thisResult = await this.handleThisReference(document, position); if (thisResult) { return thisResult; @@ -143,6 +230,9 @@ export class RspadeDefinitionProvider implements vscode.DefinitionProvider { * - Rsx::Route('Controller', 'method') (PHP) * - Rsx.Route('Controller') (JavaScript, defaults to 'index') * - Rsx.Route('Controller', 'method') (JavaScript) + * + * Resolution: Routes always point to PHP controllers (server-side) + * Type: 'php_class' */ private async handleRoutePattern( document: vscode.TextDocument, @@ -165,12 +255,12 @@ export class RspadeDefinitionProvider implements vscode.DefinitionProvider { // Always go to the method when clicking anywhere in Route() // This takes precedence over individual class name lookups try { - const result = await this.queryIdeHelper(controller, method, 'class'); + const result = await this.queryIdeHelper(controller, method, 'php_class'); return this.createLocationFromResult(result); } catch (error) { // If method lookup fails, try just the controller try { - const result = await this.queryIdeHelper(controller, undefined, 'class'); + const result = await this.queryIdeHelper(controller, undefined, 'php_class'); return this.createLocationFromResult(result); } catch (error2) { console.error('Error querying IDE helper for route:', error); @@ -196,12 +286,12 @@ export class RspadeDefinitionProvider implements vscode.DefinitionProvider { // Single parameter - default to 'index' const method = 'index'; try { - const result = await this.queryIdeHelper(controller, method, 'class'); + const result = await this.queryIdeHelper(controller, method, 'php_class'); return this.createLocationFromResult(result); } catch (error) { // If method lookup fails, try just the controller try { - const result = await this.queryIdeHelper(controller, undefined, 'class'); + const result = await this.queryIdeHelper(controller, undefined, 'php_class'); return this.createLocationFromResult(result); } catch (error2) { console.error('Error querying IDE helper for route:', error); @@ -240,8 +330,8 @@ export class RspadeDefinitionProvider implements vscode.DefinitionProvider { const result = await this.ide_bridge.queryUrl('/'); if (result && result.found && result.controller && result.method) { - // Resolved to controller/method - navigate to it - const phpResult = await this.queryIdeHelper(result.controller, result.method, 'class'); + // Resolved to controller/method - navigate to it (always PHP) + const phpResult = await this.queryIdeHelper(result.controller, result.method, 'php_class'); return this.createLocationFromResult(phpResult); } } catch (error) { @@ -253,6 +343,123 @@ export class RspadeDefinitionProvider implements vscode.DefinitionProvider { return undefined; } + /** + * Handle jqhtml extends="" attribute + * Detects patterns like: + * - + * + * Resolution: Try jqhtml component first, then JS class + * Type: 'jqhtml_class,js_class' + */ + private async handleJqhtmlExtends( + document: vscode.TextDocument, + position: vscode.Position + ): Promise { + const line = document.lineAt(position.line).text; + + // Match extends="ClassName" or extends='ClassName' + const extendsPattern = /extends\s*=\s*(['"])([A-Z][A-Za-z0-9_]*)\1/g; + let match; + + while ((match = extendsPattern.exec(line)) !== null) { + const className = match[2]; + const classStart = match.index + match[0].indexOf(className); + const classEnd = classStart + className.length; + + // Check if cursor is on the class name + if (position.character >= classStart && position.character < classEnd) { + try { + // Try jqhtml component first, then JS class + const result = await this.queryIdeHelper(className, undefined, 'jqhtml_class,js_class'); + return this.createLocationFromResult(result); + } catch (error) { + console.error('Error resolving jqhtml extends:', error); + } + } + } + + return undefined; + } + + /** + * Handle jqhtml $xxx=... attributes + * Detects patterns like: + * - $data_source=Frontend_Controller.fetch_data + * - $on_click=this.handle_click + * + * Resolution logic: + * - If starts with "this.", resolve to current component's jqhtml class methods + * - Otherwise, resolve like JS class references: 'js_class,php_class' + */ + private async handleJqhtmlAttribute( + document: vscode.TextDocument, + position: vscode.Position + ): Promise { + const line = document.lineAt(position.line).text; + + // Match $attribute=Value or $attribute=this.method or $attribute=Class.method + // Pattern: $word=(this.)?(Word)(.word)? + const attrPattern = /\$[a-z_][a-z0-9_]*\s*=\s*(this\.)?([A-Z][A-Za-z0-9_]*)(?:\.([a-z_][a-z0-9_]*))?/gi; + let match; + + while ((match = attrPattern.exec(line)) !== null) { + const hasThis = !!match[1]; // "this." prefix + const className = match[2]; + const methodName = match[3]; // Optional method after dot + + const classStart = match.index + match[0].indexOf(className); + const classEnd = classStart + className.length; + + // Check if cursor is on the class name + if (position.character >= classStart && position.character < classEnd) { + if (hasThis) { + // this.method - resolve to current component's methods + // Get the component name from the file + let componentName: string | undefined; + const fullText = document.getText(); + const defineMatch = fullText.match(/ + part.charAt(0).toUpperCase() + part.slice(1).toLowerCase() + ).join('_'); + } + } + + if (!componentName) { + return undefined; + } + + try { + // The className here is actually the method name after "this." + // We need to use the component name as the identifier + const result = await this.queryIdeHelper(componentName, className.toLowerCase(), 'jqhtml_class_method'); + return this.createLocationFromResult(result); + } catch (error) { + console.error('Error resolving jqhtml this reference:', error); + } + } else { + // Class.method or Class - resolve like JS class references + try { + const result = await this.queryIdeHelper(className, methodName, 'js_class,php_class'); + return this.createLocationFromResult(result); + } catch (error) { + console.error('Error resolving jqhtml attribute class:', error); + } + } + } + } + + return undefined; + } + /** * Handle "this.xxx" references in .jqhtml files * Only handles patterns where cursor is on a word after "this." @@ -391,6 +598,19 @@ export class RspadeDefinitionProvider implements vscode.DefinitionProvider { return new vscode.Location(component_def.uri, component_def.position); } + /** + * Handle JavaScript class references in .js and .jqhtml files + * Detects patterns like: + * - class My_Component extends DataGrid_Abstract + * - User_Controller.fetch_all() + * - await Product_Model.fetch(123) + * + * Resolution: Try JS classes first (for component inheritance), then PHP classes (for controllers/models) + * Type: 'js_class,php_class' + * + * Note: JS stub files (auto-generated from PHP) are client-side only and not in the manifest, + * so there's no conflict - the server will correctly return PHP classes when they exist. + */ private async handleJavaScriptDefinition( document: vscode.TextDocument, position: vscode.Position @@ -420,8 +640,9 @@ export class RspadeDefinitionProvider implements vscode.DefinitionProvider { } // Query the IDE helper endpoint + // Try JS classes first (component inheritance), then PHP (controllers/models) try { - const result = await this.queryIdeHelper(word, method_name, 'class'); + const result = await this.queryIdeHelper(word, method_name, 'js_class,php_class'); return this.createLocationFromResult(result); } catch (error) { console.error('Error querying IDE helper:', error); @@ -563,7 +784,9 @@ export class RspadeDefinitionProvider implements vscode.DefinitionProvider { // Check if this looks like an RSX class name if (word.includes('_') && /^[A-Z]/.test(word)) { try { - const result = await this.queryIdeHelper(word, undefined, 'class'); + // When resolving from PHP files, only look for PHP classes + // This prevents jumping to JavaScript files when clicking on PHP class references + const result = await this.queryIdeHelper(word, undefined, 'php_class'); return this.createLocationFromResult(result); } catch (error) { console.error('Error querying IDE helper for class:', error); diff --git a/app/RSpade/resource/vscode_extension/src/ide_bridge_client.ts b/app/RSpade/resource/vscode_extension/src/ide_bridge_client.ts index 1b642eab8..55f72611f 100755 --- a/app/RSpade/resource/vscode_extension/src/ide_bridge_client.ts +++ b/app/RSpade/resource/vscode_extension/src/ide_bridge_client.ts @@ -4,7 +4,7 @@ * Centralized client for communicating with RSpade framework IDE helper endpoints. * * AUTO-DISCOVERY SYSTEM: - * 1. Server creates storage/rsx-ide-bridge/domain.txt on first web request + * 1. Server creates system/storage/rsx-ide-bridge/domain.txt on first web request * 2. Client reads domain.txt to discover server URL * 3. Falls back to VS Code setting: rspade.serverUrl * 4. Auto-retries with refreshed URL on connection failure @@ -119,6 +119,46 @@ export class IdeBridgeClient { return this.request('/_ide/service/resolve_url', { url }, 'GET'); } + /** + * Check if a JavaScript class extends another class (anywhere in the inheritance chain) + * + * @param subclass The potential subclass name + * @param superclass The potential superclass name + * @returns Promise with { is_subclass: boolean } + */ + public async js_is_subclass_of(subclass: string, superclass: string): Promise<{ is_subclass: boolean }> { + return this.request('/_ide/service/js_is_subclass_of', { subclass, superclass }, 'GET'); + } + + /** + * Check if a PHP class extends another class (anywhere in the inheritance chain) + * + * @param subclass The potential subclass name + * @param superclass The potential superclass name + * @returns Promise with { is_subclass: boolean } + */ + public async php_is_subclass_of(subclass: string, superclass: string): Promise<{ is_subclass: boolean }> { + return this.request('/_ide/service/php_is_subclass_of', { subclass, superclass }, 'GET'); + } + + /** + * Trigger incremental manifest build + * + * Calls Manifest::init() on the server to update the manifest cache. + * Does NOT clear the manifest, just performs incremental update of changed files. + * + * @returns Promise with { success: boolean } + */ + public async manifest_build(): Promise<{ success: boolean }> { + try { + return await this.request('/_ide/service/manifest_build', {}, 'GET'); + } catch (error: any) { + // Log to console but don't throw - errors are silent to user + console.warn('[IdeBridge] Manifest build failed:', error.message); + return { success: false }; + } + } + private async make_request_with_retry( endpoint: string, data: any, @@ -145,9 +185,14 @@ export class IdeBridgeClient { if (retry_count === 0) { const error_msg = error.message || ''; - // Session expired or signature invalid - recreate session - if (error_msg.includes('Session not found') || error_msg.includes('Invalid signature')) { - this.output_channel.appendLine('Session/signature error, recreating session...'); + // Authentication failure - recreate session + // Handles: "Session not found", "Invalid signature", "Authentication required" + // or any HTTP 401 response + if (error_msg.includes('Session not found') || + error_msg.includes('Invalid signature') || + error_msg.includes('Authentication required') || + error_msg.includes('HTTP 401')) { + this.output_channel.appendLine('Authentication failed, recreating session...'); this.auth_data = null; return this.make_request_with_retry(endpoint, data, method, retry_count + 1); } @@ -367,7 +412,7 @@ export class IdeBridgeClient { throw new Error('RSpade project root not found'); } - const domain_file = path.join(rspade_root, 'storage', 'rsx-ide-bridge', 'domain.txt'); + const domain_file = path.join(rspade_root, 'system', 'storage', 'rsx-ide-bridge', 'domain.txt'); this.output_channel.appendLine(`Checking for domain file: ${domain_file}`); if (await exists(domain_file)) { @@ -380,7 +425,7 @@ export class IdeBridgeClient { // domain.txt doesn't exist yet - schedule retry this.schedule_retry(); this.show_detailed_error(); - throw new Error('RSpade: storage/rsx-ide-bridge/domain.txt not found. Please load site in browser or configure server URL.'); + throw new Error('RSpade: system/storage/rsx-ide-bridge/domain.txt not found. Please load site in browser or configure server URL.'); } private async negotiate_protocol(url_or_hostname: string): Promise { @@ -483,7 +528,7 @@ export class IdeBridgeClient { return; } - const domain_file = path.join(rspade_root, 'storage', 'rsx-ide-bridge', 'domain.txt'); + const domain_file = path.join(rspade_root, 'system', 'storage', 'rsx-ide-bridge', 'domain.txt'); const domain_dir = path.dirname(domain_file); // Watch the directory (file might not exist yet) @@ -531,10 +576,11 @@ export class IdeBridgeClient { } for (const folder of vscode.workspace.workspaceFolders) { - // Try new structure first + // Try new structure first - check for system/app/RSpade const system_app_rspade = path.join(folder.uri.fsPath, 'system', 'app', 'RSpade'); if (fs.existsSync(system_app_rspade)) { - return path.join(folder.uri.fsPath, 'system'); + // Return project root (not system directory) + return folder.uri.fsPath; } // Fall back to legacy structure @@ -576,7 +622,7 @@ export class IdeBridgeClient { this.output_channel.appendLine('\nThe extension needs to know your development server URL.'); this.output_channel.appendLine('\nPlease do ONE of the following:\n'); this.output_channel.appendLine('1. Load your site in a web browser'); - this.output_channel.appendLine(' This will auto-create: storage/rsx-ide-bridge/domain.txt\n'); + this.output_channel.appendLine(' This will auto-create: system/storage/rsx-ide-bridge/domain.txt\n'); this.output_channel.appendLine('2. Set VS Code setting: rspade.serverUrl'); this.output_channel.appendLine(' File → Preferences → Settings → Search "rspade"'); this.output_channel.appendLine(' Set to your development URL (e.g., https://myapp.test)\n'); diff --git a/app/RSpade/resource/vscode_extension/src/jqhtml_lifecycle_provider.ts b/app/RSpade/resource/vscode_extension/src/jqhtml_lifecycle_provider.ts index 89b4c74c5..1f408c4de 100755 --- a/app/RSpade/resource/vscode_extension/src/jqhtml_lifecycle_provider.ts +++ b/app/RSpade/resource/vscode_extension/src/jqhtml_lifecycle_provider.ts @@ -34,9 +34,9 @@ const LIFECYCLE_DOCS: { [key: string]: string } = { }; /** - * Cache for lineage lookups + * Cache for subclass checks */ -const lineage_cache = new Map(); +const subclass_cache = new Map(); /** * IDE Bridge client instance (shared across all providers) @@ -44,12 +44,14 @@ const lineage_cache = new Map(); let ide_bridge_client: IdeBridgeClient | null = null; /** - * Get JavaScript class lineage from backend via IDE bridge + * Check if a JavaScript class extends another class (anywhere in inheritance chain) */ -async function get_js_lineage(class_name: string): Promise { +async function is_subclass_of_jqhtml_component(class_name: string): Promise { + const cache_key = `${class_name}:Jqhtml_Component`; + // Check cache first - if (lineage_cache.has(class_name)) { - return lineage_cache.get(class_name)!; + if (subclass_cache.has(cache_key)) { + return subclass_cache.get(cache_key)!; } // Initialize IDE bridge client if needed @@ -59,16 +61,16 @@ async function get_js_lineage(class_name: string): Promise { } try { - const response = await ide_bridge_client.request('/_ide/service/js_lineage', { class: class_name }); - const lineage = response.lineage || []; + const response = await ide_bridge_client.js_is_subclass_of(class_name, 'Jqhtml_Component'); + const is_subclass = response.is_subclass || false; // Cache the result - lineage_cache.set(class_name, lineage); + subclass_cache.set(cache_key, is_subclass); - return lineage; + return is_subclass; } catch (error: any) { // Re-throw error to fail loud - no silent fallbacks - throw new Error(`Failed to get JS lineage for ${class_name}: ${error.message}`); + throw new Error(`Failed to check if ${class_name} extends Jqhtml_Component: ${error.message}`); } } @@ -164,17 +166,15 @@ export class JqhtmlLifecycleSemanticTokensProvider implements vscode.DocumentSem const is_jqhtml = directly_extends_jqhtml(text); console.log(`[JQHTML] Directly extends Jqhtml_Component: ${is_jqhtml}`); - // If not directly extending, check lineage + // If not directly extending, check inheritance chain let extends_jqhtml = is_jqhtml; if (!is_jqhtml && has_extends_clause(text)) { const class_name = extract_class_name(text); - console.log(`[JQHTML] Checking lineage for class: ${class_name}`); + console.log(`[JQHTML] Checking inheritance for class: ${class_name}`); if (class_name) { - const lineage = await get_js_lineage(class_name); - console.log(`[JQHTML] Lineage: ${JSON.stringify(lineage)}`); - extends_jqhtml = lineage.includes('Jqhtml_Component'); - console.log(`[JQHTML] Extends Jqhtml_Component via lineage: ${extends_jqhtml}`); + extends_jqhtml = await is_subclass_of_jqhtml_component(class_name); + console.log(`[JQHTML] Extends Jqhtml_Component via inheritance: ${extends_jqhtml}`); } } @@ -286,8 +286,7 @@ export class JqhtmlLifecycleHoverProvider implements vscode.HoverProvider { if (!is_jqhtml) { const class_name = extract_class_name(text); if (class_name) { - const lineage = await get_js_lineage(class_name); - extends_jqhtml = lineage.includes('Jqhtml_Component'); + extends_jqhtml = await is_subclass_of_jqhtml_component(class_name); } } @@ -385,8 +384,7 @@ export class JqhtmlLifecycleDiagnosticProvider { if (!is_jqhtml) { const class_name = extract_class_name(text); if (class_name) { - const lineage = await get_js_lineage(class_name); - extends_jqhtml = lineage.includes('Jqhtml_Component'); + extends_jqhtml = await is_subclass_of_jqhtml_component(class_name); } } diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json index 9b9e274b7..fa4a44fd4 100755 --- a/node_modules/.package-lock.json +++ b/node_modules/.package-lock.json @@ -1,5 +1,5 @@ { - "name": "html", + "name": "system", "lockfileVersion": 3, "requires": true, "packages": { @@ -2227,9 +2227,9 @@ } }, "node_modules/@jqhtml/core": { - "version": "2.2.137", - "resolved": "http://privatenpm.hanson.xyz/@jqhtml/core/-/core-2.2.137.tgz", - "integrity": "sha512-GViirzsF3VfYe7boTyeP35VxhrWSkerbghnzrPwdag+9LrDKqjc76tDCP8XtO7ddgVlm/VDZpvUQQUXEd57eDA==", + "version": "2.2.142", + "resolved": "http://privatenpm.hanson.xyz/@jqhtml/core/-/core-2.2.142.tgz", + "integrity": "sha512-8X1p+z82Y1sRm6pp7tfuakfN43xx0BgIEXf2Wz/C6mTSn8pygmOREE8Leodwdy9EQtZXif8N8Qmtz50s7X4wjA==", "license": "MIT", "dependencies": { "@rollup/plugin-node-resolve": "^16.0.1", @@ -2253,9 +2253,9 @@ } }, "node_modules/@jqhtml/parser": { - "version": "2.2.137", - "resolved": "http://privatenpm.hanson.xyz/@jqhtml/parser/-/parser-2.2.137.tgz", - "integrity": "sha512-DC1GlzZvMhlqxJDNjJ184r+h21W+HhS6GRcG2W/Eo75LnmehakMG9yO4WHeZ9809isl/7+fEwZbk2jM+FD3KVA==", + "version": "2.2.142", + "resolved": "http://privatenpm.hanson.xyz/@jqhtml/parser/-/parser-2.2.142.tgz", + "integrity": "sha512-ATn7qrZPWNi/G2WkDUchicGyCTqDLKFYjfE69ckie5S+zRS8zTAUJSS60N+LzUdwgM5N9v8V7C//6P85fggYuw==", "license": "MIT", "dependencies": { "@types/jest": "^29.5.11", @@ -2273,9 +2273,9 @@ } }, "node_modules/@jqhtml/router": { - "version": "2.2.137", - "resolved": "http://privatenpm.hanson.xyz/@jqhtml/router/-/router-2.2.137.tgz", - "integrity": "sha512-ybiQ6SRZxbYDPwrOML99T9gWJqNM2w43QnptJwWMg+E2zvAr48KpVJhcNJlsOlqGykME5PJOvxioMdMlfaEG5A==", + "version": "2.2.142", + "resolved": "http://privatenpm.hanson.xyz/@jqhtml/router/-/router-2.2.142.tgz", + "integrity": "sha512-x9gCid0jvkMWFKSbFEcFl6iygFGiDtYbZBai5LOBipUMXUlQw13rJv+ZBe1W+SM2PorUTuJXoTY6O+OxDJS/1g==", "license": "MIT", "dependencies": { "@rollup/plugin-node-resolve": "^16.0.1", @@ -2293,21 +2293,21 @@ } }, "node_modules/@jqhtml/vscode-extension": { - "version": "2.2.137", - "resolved": "http://privatenpm.hanson.xyz/@jqhtml/vscode-extension/-/vscode-extension-2.2.137.tgz", - "integrity": "sha512-9xM9/JqXKestgeivCCWfr49RD0D279ZG/K/PxU2u4kc+mE1kEwpkmVnN4QGGw4rzXUjPFdIoG3ogaMY2gRjFew==", + "version": "2.2.142", + "resolved": "http://privatenpm.hanson.xyz/@jqhtml/vscode-extension/-/vscode-extension-2.2.142.tgz", + "integrity": "sha512-3A8dOjpK01SgxMC3rTjgHNgRvQLKHdBnGFlWCu2Qk1f70DqTHGGwPUbWHNEQcpQw3LhjINYF8WQ8yu/Dkl9Qnw==", "license": "MIT", "engines": { "vscode": "^1.74.0" } }, "node_modules/@jqhtml/webpack-loader": { - "version": "2.2.137", - "resolved": "http://privatenpm.hanson.xyz/@jqhtml/webpack-loader/-/webpack-loader-2.2.137.tgz", - "integrity": "sha512-kSWsTnGa5USX8HKFYdAhfdAD5l/UiIwBJXmUZeLYaLSZvCePBEMfrk9rKbPtfkpNrbTnHhipF6DZmSOElmoPAg==", + "version": "2.2.142", + "resolved": "http://privatenpm.hanson.xyz/@jqhtml/webpack-loader/-/webpack-loader-2.2.142.tgz", + "integrity": "sha512-SUTREV2M1bUJb5s9h4b4q6cTDAl6EBtbPk7J2hMFpy7XwKpv68DVI2lCAOVOwjM1xQXDiTGOM+0gwWqwzEqE+w==", "license": "MIT", "dependencies": { - "@jqhtml/parser": "2.2.137", + "@jqhtml/parser": "2.2.142", "@types/loader-utils": "^2.0.6", "@types/node": "^20.0.0", "@types/webpack": "^5.28.5", diff --git a/node_modules/@jqhtml/core/dist/index.cjs b/node_modules/@jqhtml/core/dist/index.cjs index 95d009a26..50225fe15 100755 --- a/node_modules/@jqhtml/core/dist/index.cjs +++ b/node_modules/@jqhtml/core/dist/index.cjs @@ -2728,7 +2728,7 @@ function init(jQuery) { } } // Version - will be replaced during build with actual version from package.json -const version = '2.2.137'; +const version = '2.2.142'; // Default export with all functionality const jqhtml = { // Core diff --git a/node_modules/@jqhtml/core/dist/index.js b/node_modules/@jqhtml/core/dist/index.js index e4c49fedd..f2a3715de 100755 --- a/node_modules/@jqhtml/core/dist/index.js +++ b/node_modules/@jqhtml/core/dist/index.js @@ -2724,7 +2724,7 @@ function init(jQuery) { } } // Version - will be replaced during build with actual version from package.json -const version = '2.2.137'; +const version = '2.2.142'; // Default export with all functionality const jqhtml = { // Core diff --git a/node_modules/@jqhtml/core/dist/jqhtml-core.esm.js b/node_modules/@jqhtml/core/dist/jqhtml-core.esm.js index df5be8d3c..a72b6fbe5 100755 --- a/node_modules/@jqhtml/core/dist/jqhtml-core.esm.js +++ b/node_modules/@jqhtml/core/dist/jqhtml-core.esm.js @@ -1,5 +1,5 @@ /** - * JQHTML Core v2.2.137 + * JQHTML Core v2.2.142 * (c) 2025 JQHTML Team * Released under the MIT License */ @@ -2729,7 +2729,7 @@ function init(jQuery) { } } // Version - will be replaced during build with actual version from package.json -const version = '2.2.137'; +const version = '2.2.142'; // Default export with all functionality const jqhtml = { // Core diff --git a/node_modules/@jqhtml/core/package.json b/node_modules/@jqhtml/core/package.json index b35a13a6a..a938b1a59 100755 --- a/node_modules/@jqhtml/core/package.json +++ b/node_modules/@jqhtml/core/package.json @@ -1,6 +1,6 @@ { "name": "@jqhtml/core", - "version": "2.2.137", + "version": "2.2.142", "description": "Core runtime library for JQHTML", "type": "module", "main": "./dist/index.js", diff --git a/node_modules/@jqhtml/parser/dist/codegen.js b/node_modules/@jqhtml/parser/dist/codegen.js index ae8314865..aaed7e3e6 100755 --- a/node_modules/@jqhtml/parser/dist/codegen.js +++ b/node_modules/@jqhtml/parser/dist/codegen.js @@ -1201,7 +1201,7 @@ export class CodeGenerator { for (const [name, component] of this.components) { code += `// Component: ${name}\n`; code += `jqhtml_components.set('${name}', {\n`; - code += ` _jqhtml_version: '2.2.137',\n`; // Version will be replaced during build + code += ` _jqhtml_version: '2.2.142',\n`; // Version will be replaced during build code += ` name: '${name}',\n`; code += ` tag: '${component.tagName}',\n`; code += ` defaultAttributes: ${this.serializeAttributeObject(component.defaultAttributes)},\n`; diff --git a/node_modules/@jqhtml/parser/package.json b/node_modules/@jqhtml/parser/package.json index 942c85a35..7049268da 100755 --- a/node_modules/@jqhtml/parser/package.json +++ b/node_modules/@jqhtml/parser/package.json @@ -1,6 +1,6 @@ { "name": "@jqhtml/parser", - "version": "2.2.137", + "version": "2.2.142", "description": "JQHTML template parser - converts templates to JavaScript", "type": "module", "main": "dist/index.js", diff --git a/node_modules/@jqhtml/router/dist/jqhtml-router.esm.js b/node_modules/@jqhtml/router/dist/jqhtml-router.esm.js index e789aaeb2..e7d6942f9 100755 --- a/node_modules/@jqhtml/router/dist/jqhtml-router.esm.js +++ b/node_modules/@jqhtml/router/dist/jqhtml-router.esm.js @@ -1,5 +1,5 @@ /** - * JQHTML Router v2.2.137 + * JQHTML Router v2.2.142 * (c) 2025 JQHTML Team * Released under the MIT License */ diff --git a/node_modules/@jqhtml/router/package.json b/node_modules/@jqhtml/router/package.json index a037c8f36..1ba464e76 100755 --- a/node_modules/@jqhtml/router/package.json +++ b/node_modules/@jqhtml/router/package.json @@ -1,6 +1,6 @@ { "name": "@jqhtml/router", - "version": "2.2.137", + "version": "2.2.142", "description": "Client-side routing for JQHTML applications", "type": "module", "main": "dist/index.js", diff --git a/node_modules/@jqhtml/vscode-extension/.version b/node_modules/@jqhtml/vscode-extension/.version index 2a526afe1..c303fe247 100755 --- a/node_modules/@jqhtml/vscode-extension/.version +++ b/node_modules/@jqhtml/vscode-extension/.version @@ -1 +1 @@ -2.2.137 +2.2.142 diff --git a/node_modules/@jqhtml/vscode-extension/jqhtml-vscode-extension-2.2.137.vsix b/node_modules/@jqhtml/vscode-extension/jqhtml-vscode-extension-2.2.137.vsix deleted file mode 100755 index b1a767a8adc815d73318c2038ad938e75f2ad53c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39285 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%0DqGefbdnBDU{ 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 Ku#ytcpZ*0?z*(LE diff --git a/node_modules/@jqhtml/vscode-extension/jqhtml-vscode-extension-2.2.142.vsix b/node_modules/@jqhtml/vscode-extension/jqhtml-vscode-extension-2.2.142.vsix new file mode 100755 index 0000000000000000000000000000000000000000..ff23fde28424a839d9687e321972bdc45803ed5a GIT binary patch literal 42347 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 LO3c(gErTip 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�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 literal 0 HcmV?d00001 diff --git a/node_modules/@jqhtml/vscode-extension/out/componentIndex.js b/node_modules/@jqhtml/vscode-extension/out/componentIndex.js index a3885a4c8..0bd4ab6a7 100755 --- a/node_modules/@jqhtml/vscode-extension/out/componentIndex.js +++ b/node_modules/@jqhtml/vscode-extension/out/componentIndex.js @@ -44,6 +44,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge Object.defineProperty(exports, "__esModule", { value: true }); exports.JqhtmlComponentIndex = void 0; const vscode = __importStar(require("vscode")); +const path = __importStar(require("path")); /** * JQHTML Component Indexer * @@ -97,6 +98,11 @@ class JqhtmlComponentIndex { const files = yield vscode.workspace.findFiles(new vscode.RelativePattern(folder, '**/*.jqhtml'), new vscode.RelativePattern(folder, '**/node_modules/**')); allFiles.push(...files); } + // Debug: Log all discovered files + console.log(`JQHTML: Found ${allFiles.length} .jqhtml files to index:`); + allFiles.forEach(uri => { + console.log(` - ${uri.fsPath}`); + }); // Index each file const promises = allFiles.map(uri => this.indexFile(uri)); yield Promise.all(promises); @@ -155,8 +161,8 @@ class JqhtmlComponentIndex { position: new vscode.Position(lineNum, charPos), line: line.trim() }); - // Debug: Log each component as it's indexed (commented out - too verbose) - // console.log(`JQHTML Index: Indexed "${componentName}" from ${path.basename(uri.fsPath)}:${lineNum + 1}`); + // Debug: Log each component as it's indexed + console.log(`JQHTML Index: Indexed "${componentName}" from ${path.basename(uri.fsPath)}:${lineNum + 1}`); } } } diff --git a/node_modules/@jqhtml/vscode-extension/out/componentIndex.js.map b/node_modules/@jqhtml/vscode-extension/out/componentIndex.js.map index 581ca6013..15e8f457e 100755 --- a/node_modules/@jqhtml/vscode-extension/out/componentIndex.js.map +++ b/node_modules/@jqhtml/vscode-extension/out/componentIndex.js.map @@ -1 +1 @@ -{"version":3,"file":"componentIndex.js","sourceRoot":"","sources":["../src/componentIndex.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"componentIndex.js","sourceRoot":"","sources":["../src/componentIndex.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@jqhtml/vscode-extension/out/definitionProvider.js b/node_modules/@jqhtml/vscode-extension/out/definitionProvider.js index 6da477dfe..62854087d 100755 --- a/node_modules/@jqhtml/vscode-extension/out/definitionProvider.js +++ b/node_modules/@jqhtml/vscode-extension/out/definitionProvider.js @@ -69,6 +69,19 @@ class JqhtmlDefinitionProvider { console.log(`JQHTML: In $ attribute context:`, dollarAttrResult); return yield this.handleDollarAttributeDefinition(document, position, dollarAttrResult); } + // IMPORTANT: Check for slot syntax BEFORE extracting word + // This prevents slot names from being treated as component names + // Check if we're in a slot tag by looking for <# or or - if (beforeWord.match(/<#\s*$/) || beforeWord.match(/<\/#\s*$/)) { - // This is a slot, not a component - return undefined; - } if (!isInTagContext) { // Also check if cursor is inside the tag name (not in attributes) const afterWord = line.substring(wordRange.end.character); @@ -483,6 +491,171 @@ class JqhtmlDefinitionProvider { } return undefined; } + /** + * Handle goto definition for slot tags (<#SlotName>) + * + * IMPLEMENTATION SCOPE (Narrow, for now): + * - Handles direct extends="ComponentName" on tags + * - Handles direct invocation tags + * - Does NOT traverse full inheritance chain (TODO: add later) + * - Just looks for direct parent component + * + * LOGIC: + * 1. Extract slot name from cursor position + * 2. Find parent component: + * - If inside , use Parent + * - If inside invocation, use Parent + * 3. Find Parent.jqhtml file + * 4. Search for <%= content('SlotName') %> + * 5. Navigate to that line + */ + handleSlotDefinition(document, position, slotName) { + return __awaiter(this, void 0, void 0, function* () { + console.log(`JQHTML: Handling slot definition for: ${slotName}`); + // Find the parent component that defines this slot + const parentComponentName = this.findParentComponentForSlot(document, position); + if (!parentComponentName) { + console.log(`JQHTML: Could not determine parent component for slot`); + return undefined; + } + console.log(`JQHTML: Parent component for slot: ${parentComponentName}`); + // Debug: Show what's in the index + const allComponents = this.componentIndex.getAllComponentNames(); + console.log(`JQHTML: Index currently contains ${allComponents.length} components:`, allComponents.join(', ')); + // Find the parent component definition file + const parentComponent = this.componentIndex.findComponent(parentComponentName); + if (!parentComponent) { + console.log(`JQHTML: Parent component '${parentComponentName}' not found in index`); + return undefined; + } + console.log(`JQHTML: Found parent component file: ${parentComponent.uri.fsPath}`); + // Search for content('SlotName') in the parent component file + const slotUsageLocation = yield this.findSlotUsageInTemplate(parentComponent.uri, slotName); + if (!slotUsageLocation) { + console.log(`JQHTML: Slot usage content('${slotName}') not found in ${parentComponent.uri.fsPath}`); + return undefined; + } + console.log(`JQHTML: Found slot usage at line ${slotUsageLocation.range.start.line + 1}`); + return slotUsageLocation; + }); + } + /** + * Find the parent component that should define this slot + * + * Looks for either: + * 1. - check if slots are top-level + * 2. - find enclosing component invocation tag + */ + findParentComponentForSlot(document, position) { + const currentLine = position.line; + // Strategy 1: Look for where slots are at top level + // Scan upward to find the Define tag + let defineTagStartLine = -1; + for (let i = currentLine; i >= 0; i--) { + const lineText = document.lineAt(i).text; + // Check if we found a = 0) { + // Collect all lines from Define tag start until we find the closing > + let tagContent = ''; + for (let i = defineTagStartLine; i < document.lineCount; i++) { + const lineText = document.lineAt(i).text; + tagContent += lineText + ' '; + // Stop when we find the closing > of the opening tag + if (lineText.includes('>')) { + break; + } + } + // Now check if this multi-line tag has extends attribute + const extendsMatch = tagContent.match(/\bextends\s*=\s*["']([A-Z][A-Za-z0-9_]*)["']/); + if (extendsMatch) { + const parentComponentName = extendsMatch[1]; + console.log(`JQHTML: Found extends="${parentComponentName}" in Define tag`); + // TODO: Verify that the slot is at top level (not nested inside other tags) + // For now, we assume if we found a Define with extends, that's the parent + return parentComponentName; + } + else { + console.log(`JQHTML: Define tag found but no extends attribute`); + } + } + // Strategy 2: Look for enclosing invocation tag + // Scan upward to find opening tag + let tagStack = []; + for (let i = currentLine; i >= 0; i--) { + const lineText = document.lineAt(i).text; + // Find all component tags on this line (both opening and closing) + // Component tags: or + const tagRegex = /<\/?([A-Z][A-Za-z0-9_]*)[^>]*>/g; + let match; + // Collect all tags on this line + const tagsOnLine = []; + while ((match = tagRegex.exec(lineText)) !== null) { + const fullMatch = match[0]; + const componentName = match[1]; + const isClosing = fullMatch.startsWith('= 0; j--) { + const { tag, isClosing } = tagsOnLine[j]; + if (isClosing) { + // Closing tag - add to stack + tagStack.push(tag); + } + else { + // Opening tag + if (tagStack.length > 0 && tagStack[tagStack.length - 1] === tag) { + // This opening tag matches the last closing tag on stack - they cancel out + tagStack.pop(); + } + else { + // This is an unclosed opening tag - this is our parent! + console.log(`JQHTML: Found enclosing component invocation: <${tag}>`); + return tag; + } + } + } + } + console.log(`JQHTML: No parent component found for slot`); + return undefined; + } + /** + * Search for <%= content('SlotName') %> in a template file + */ + findSlotUsageInTemplate(templateUri, slotName) { + return __awaiter(this, void 0, void 0, function* () { + try { + const templateDoc = yield vscode.workspace.openTextDocument(templateUri); + const templateText = templateDoc.getText(); + // Search for content('SlotName') or content("SlotName") + // Also handle optional whitespace + const contentRegex = new RegExp(`<%=\\s*content\\s*\\(\\s*['"]${slotName}['"]\\s*\\)`, 'g'); + const match = contentRegex.exec(templateText); + if (match) { + const matchPosition = templateDoc.positionAt(match.index); + console.log(`JQHTML: Found content('${slotName}') at line ${matchPosition.line + 1}`); + // Return location pointing to the slot name within content('SlotName') + const slotNameStartIndex = match.index + match[0].indexOf(slotName); + const slotNamePosition = templateDoc.positionAt(slotNameStartIndex); + const slotNameRange = new vscode.Range(slotNamePosition, new vscode.Position(slotNamePosition.line, slotNamePosition.character + slotName.length)); + return new vscode.Location(templateUri, slotNameRange); + } + console.log(`JQHTML: No content('${slotName}') found in template`); + return undefined; + } + catch (error) { + console.error(`JQHTML: Error reading template file:`, error); + return undefined; + } + }); + } } exports.JqhtmlDefinitionProvider = JqhtmlDefinitionProvider; /** diff --git a/node_modules/@jqhtml/vscode-extension/out/definitionProvider.js.map b/node_modules/@jqhtml/vscode-extension/out/definitionProvider.js.map index 576dd596d..a2672e34a 100755 --- a/node_modules/@jqhtml/vscode-extension/out/definitionProvider.js.map +++ b/node_modules/@jqhtml/vscode-extension/out/definitionProvider.js.map @@ -1 +1 @@ -{"version":3,"file":"definitionProvider.js","sourceRoot":"","sources":["../src/definitionProvider.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"definitionProvider.js","sourceRoot":"","sources":["../src/definitionProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiC;AACjC,qDAAwD;AAExD;;;;;;GAMG;AACH,MAAa,wBAAwB;IACjC,YAAoB,cAAoC;QAApC,mBAAc,GAAd,cAAc,CAAsB;IAAG,CAAC;IAE/C,iBAAiB,CAC1B,QAA6B,EAC7B,QAAyB,EACzB,KAA+B;;YAE/B,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,kBAAkB,QAAQ,CAAC,IAAI,GAAG,CAAC,eAAe,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;YAEpF,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,GAAG,CAAC,CAAC;YAE5C,sDAAsD;YACtD,MAAM,gBAAgB,GAAG,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YACpF,IAAI,gBAAgB,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,gBAAgB,CAAC,CAAC;gBACjE,OAAO,MAAM,IAAI,CAAC,+BAA+B,CAAC,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YAC5F,CAAC;YAED,0DAA0D;YAC1D,iEAAiE;YACjE,sEAAsE;YACtE,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC3D,IAAI,YAAY,CAAC,KAAK,CAAC,6BAA6B,CAAC,EAAE,CAAC;gBACpD,iEAAiE;gBACjE,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;gBACjE,IAAI,aAAa,EAAE,CAAC;oBAChB,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;oBAClC,OAAO,CAAC,GAAG,CAAC,8CAA8C,QAAQ,EAAE,CAAC,CAAC;oBACtE,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACzE,CAAC;YACL,CAAC;YAED,sCAAsC;YACtC,MAAM,SAAS,GAAG,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;YAClF,IAAI,CAAC,SAAS,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;gBACvD,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,GAAG,CAAC,CAAC;YAEjD,iDAAiD;YACjD,IAAI,CAAC,qCAAoB,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnD,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,6DAA6D,CAAC,CAAC;gBAC3F,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,2CAA2C;YAC3C,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;gBAC9C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAEpD,6DAA6D;YAC7D,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC9D,IAAI,UAAU,CAAC,KAAK,CAAC,yBAAyB,CAAC,EAAE,CAAC;gBAC9C,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,4DAA4D,CAAC,CAAC;gBAC1F,mEAAmE;gBACnE,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBAC7D,IAAI,CAAC,YAAY,EAAE,CAAC;oBAChB,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,sBAAsB,CAAC,CAAC;oBAC9D,OAAO,SAAS,CAAC;gBACrB,CAAC;gBAED,+BAA+B;gBAC/B,IAAI,CAAC;oBACD,MAAM,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBACrD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,oCAAoC,CAAC,CAAC;oBAC5E,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;oBACvC,OAAO,SAAS,CAAC;gBACrB,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,iCAAiC,IAAI,QAAQ,YAAY,CAAC,GAAG,CAAC,MAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;gBACtH,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;YACxE,CAAC;YAED,yCAAyC;YACzC,uEAAuE;YACvE,IAAI,cAAc,GAAG,KAAK,CAAC;YAE3B,iEAAiE;YACjE,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC1D,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;gBAChE,cAAc,GAAG,IAAI,CAAC;YAC1B,CAAC;YAED,mEAAmE;YACnE,IAAI,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACpE,cAAc,GAAG,IAAI,CAAC;YAC1B,CAAC;YAED,IAAI,CAAC,cAAc,EAAE,CAAC;gBAClB,kEAAkE;gBAClE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAE1D,oEAAoE;gBACpE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACpF,yCAAyC;oBACzC,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;oBACjD,MAAM,eAAe,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;oBAEpD,IAAI,YAAY,GAAG,eAAe,EAAE,CAAC;wBACjC,cAAc,GAAG,IAAI,CAAC;oBAC1B,CAAC;gBACL,CAAC;YACL,CAAC;YAED,IAAI,CAAC,cAAc,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,gCAAgC,CAAC,CAAC;gBAC9D,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,6CAA6C,CAAC,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC,MAAM,aAAa,CAAC,CAAC;YAC3G,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEhG,qCAAqC;YACrC,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC7D,IAAI,CAAC,YAAY,EAAE,CAAC;gBAChB,+BAA+B;gBAC/B,EAAE;gBACF,sBAAsB;gBACtB,yEAAyE;gBACzE,wEAAwE;gBACxE,2CAA2C;gBAC3C,kDAAkD;gBAClD,6DAA6D;gBAC7D,EAAE;gBACF,oBAAoB;gBACpB,uEAAuE;gBACvE,yEAAyE;gBACzE,+DAA+D;gBAC/D,qDAAqD;gBACrD,EAAE;gBACF,+BAA+B;gBAC/B,uEAAuE;gBACvE,sEAAsE;gBACtE,6BAA6B;gBAC7B,EAAE;gBACF,yBAAyB;gBACzB,wDAAwD;gBACxD,qDAAqD;gBACrD,0EAA0E;gBAC1E,6DAA6D;gBAC7D,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,sBAAsB,CAAC,CAAC;gBAC9D,OAAO,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC;gBAClG,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,6DAA6D;YAC7D,IAAI,CAAC;gBACD,MAAM,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACrD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,+DAA+D;gBAC/D,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,uCAAuC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;gBACxG,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;gBACvD,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC,CAAC,sBAAsB;gBAC9D,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,iCAAiC,IAAI,QAAQ,YAAY,CAAC,GAAG,CAAC,MAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;YACtH,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;YAC5E,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;YAEtE,kDAAkD;YAClD,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;QACxE,CAAC;KAAA;IAED;;;OAGG;IACK,2BAA2B,CAAC,QAA6B,EAAE,QAAyB,EAAE,IAAY;;QAGtG,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEzC,8DAA8D;QAC9D,uDAAuD;QACvD,MAAM,eAAe,GAAG,YAAY,CAAC,KAAK,CAAC,wEAAwE,CAAC,CAAC;QACrH,IAAI,CAAC,eAAe,EAAE,CAAC;YACnB,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,6DAA6D;QAC7D,MAAM,sBAAsB,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,qBAAqB,GAAG,CAAA,MAAA,WAAW,CAAC,KAAK,CAAC,mBAAmB,CAAC,0CAAG,CAAC,CAAC,KAAI,EAAE,CAAC;QAChF,MAAM,cAAc,GAAG,sBAAsB,GAAG,qBAAqB,CAAC;QAEtE,OAAO,CAAC,GAAG,CAAC,yCAAyC,cAAc,GAAG,CAAC,CAAC;QAExE,gBAAgB;QAChB,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE3C,4DAA4D;QAC5D,MAAM,mBAAmB,GAAG,IAAI,GAAG,sBAAsB,CAAC,MAAM,CAAC;QACjE,MAAM,wBAAwB,GAAG,IAAI,GAAG,mBAAmB,CAAC;QAE5D,IAAI,mBAAmB,GAAG,CAAC,CAAC;QAC5B,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACzC,IAAI,wBAAwB,IAAI,SAAS,GAAG,aAAa,EAAE,CAAC;gBACxD,mBAAmB,GAAG,CAAC,CAAC;gBACxB,MAAM;YACV,CAAC;YACD,SAAS,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC,iBAAiB;QACrD,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,6BAA6B,mBAAmB,MAAM,QAAQ,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAEpG,iEAAiE;QACjE,IAAI,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACvB,MAAM,mBAAmB,GAAG,IAAI,CAAC,6BAA6B,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YACxF,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;gBAC5E,OAAO,SAAS,CAAC;YACrB,CAAC;YACD,SAAS,GAAG,mBAAmB,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,yCAAyC,SAAS,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,mBAAmB,KAAK,CAAC,EAAE,CAAC;YAC5B,sCAAsC;YACtC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;QAC/C,CAAC;aAAM,CAAC;YACJ,2CAA2C;YAC3C,OAAO;gBACH,SAAS;gBACT,UAAU,EAAE,QAAQ,CAAC,mBAAmB,CAAC;gBACzC,cAAc,EAAE,KAAK;aACxB,CAAC;QACN,CAAC;IACL,CAAC;IAED;;OAEG;IACK,6BAA6B,CAAC,QAA6B,EAAE,WAAmB;QACpF,oEAAoE;QACpE,KAAK,IAAI,CAAC,GAAG,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACzC,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;YACnE,IAAI,WAAW,EAAE,CAAC;gBACd,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC;QACL,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACW,+BAA+B,CACzC,QAA6B,EAC7B,QAAyB,EACzB,OAA4E;;YAG5E,OAAO,CAAC,GAAG,CAAC,8BAA8B,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAE/H,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,KAAK,MAAM,CAAC;YAEnD,kEAAkE;YAClE,IAAI,CAAC,aAAa,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBAC1D,IAAI,SAAS,EAAE,CAAC;oBACZ,OAAO,SAAS,CAAC;gBACrB,CAAC;YACL,CAAC;YAED,wCAAwC;YACxC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;YAClE,IAAI,aAAa,EAAE,CAAC;gBAChB,OAAO,aAAa,CAAC;YACzB,CAAC;YAED,mFAAmF;YACnF,IAAI,OAAO,CAAC,cAAc,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,aAAa,EAAE,CAAC;gBAClE,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAClF,IAAI,gBAAgB,EAAE,CAAC;oBACnB,OAAO,gBAAgB,CAAC;gBAC5B,CAAC;YACL,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,oCAAoC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3H,OAAO,SAAS,CAAC;QACrB,CAAC;KAAA;IAED;;;;;;;;;;;;;;OAcG;IACW,mBAAmB,CAC7B,OAA4E;;YAG5E,IAAI,CAAC;gBACD,qCAAqC;gBACrC,MAAM,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,qCAAqC,CAAC,CAAC;gBAC9F,IAAI,CAAC,eAAe,EAAE,CAAC;oBACnB,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;oBACjF,OAAO,SAAS,CAAC;gBACrB,CAAC;gBAED,6BAA6B;gBAC7B,OAAO,CAAC,GAAG,CAAC,sDAAsD,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;gBACvF,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,cAAc,CACrD,uCAAuC,EACvC,OAAO,CAAC,SAAS,CACpB,CAAC;gBAEF,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC7C,OAAO,CAAC,GAAG,CAAC,iDAAiD,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;oBAClF,OAAO,SAAS,CAAC;gBACrB,CAAC;gBAED,8BAA8B;gBAC9B,MAAM,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACzC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,SAAS;oBAC5B,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,UAAU,CAAC,KAAK;oBAClC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CACzC,CAAC;gBAEF,IAAI,CAAC,cAAc,EAAE,CAAC;oBAClB,OAAO,CAAC,GAAG,CAAC,0CAA0C,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;oBAC3E,OAAO,SAAS,CAAC;gBACrB,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,2BAA2B,OAAO,CAAC,SAAS,OAAO,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;gBAErG,mEAAmE;gBACnE,IAAI,OAAO,CAAC,cAAc,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;oBAChD,OAAO,cAAc,CAAC,QAAQ,CAAC;gBACnC,CAAC;gBAED,iDAAiD;gBACjD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;oBACrB,OAAO,CAAC,GAAG,CAAC,iCAAiC,OAAO,CAAC,UAAU,aAAa,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;oBAEjG,kDAAkD;oBAClD,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,cAAc,CACtD,uCAAuC,EACvC,OAAO,CAAC,UAAU,CACrB,CAAC;oBAEF,sDAAsD;oBACtD,MAAM,eAAe,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAC5C,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,UAAU;wBAC7B,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,UAAU,CAAC,MAAM;wBACnC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CACvE,CAAC;oBAEF,IAAI,eAAe,EAAE,CAAC;wBAClB,OAAO,CAAC,GAAG,CAAC,4BAA4B,OAAO,CAAC,UAAU,OAAO,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;wBACxG,OAAO,eAAe,CAAC,QAAQ,CAAC;oBACpC,CAAC;oBAED,mDAAmD;oBACnD,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,UAAU,8CAA8C,CAAC,CAAC;oBAChG,OAAO,cAAc,CAAC,QAAQ,CAAC;gBACnC,CAAC;gBAED,OAAO,cAAc,CAAC,QAAQ,CAAC;YAEnC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAC;gBACvE,OAAO,SAAS,CAAC;YACrB,CAAC;QACL,CAAC;KAAA;IAED;;OAEG;IACW,uBAAuB,CACjC,OAA4E;;YAG5E,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;YAElF,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;gBAEnC,6CAA6C;gBAC7C,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,gCAAgC,OAAO,CAAC,SAAS,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC3F,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAE7C,IAAI,UAAU,EAAE,CAAC;oBACb,OAAO,CAAC,GAAG,CAAC,0BAA0B,OAAO,CAAC,SAAS,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;oBAEhF,4DAA4D;oBAC5D,IAAI,OAAO,CAAC,cAAc,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;wBAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;wBACjG,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;oBAClD,CAAC;oBAED,4EAA4E;oBAC5E,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;wBACrB,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;wBACvG,IAAI,cAAc,EAAE,CAAC;4BACjB,OAAO,CAAC,GAAG,CAAC,2BAA2B,OAAO,CAAC,UAAU,aAAa,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;4BAC3F,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;wBACxD,CAAC;wBAED,2EAA2E;wBAC3E,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,UAAU,iDAAiD,CAAC,CAAC;wBACtG,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;wBACjG,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;oBAClD,CAAC;gBACL,CAAC;YACL,CAAC;YAED,OAAO,SAAS,CAAC;QACrB,CAAC;KAAA;IAED;;;OAGG;IACW,0BAA0B,CAAC,YAAoB;;YACzD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;YAElF,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;gBAEnC,uDAAuD;gBACvD,2CAA2C;gBAC3C,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,iDAAiD,YAAY,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC1G,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAEnD,IAAI,aAAa,EAAE,CAAC;oBAChB,OAAO,CAAC,GAAG,CAAC,wCAAwC,YAAY,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;oBACzF,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;oBACrG,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;gBACrD,CAAC;gBAED,2CAA2C;gBAC3C,MAAM,kBAAkB,GAAG,IAAI,MAAM,CAAC,4CAA4C,YAAY,OAAO,EAAE,GAAG,CAAC,CAAC;gBAC5G,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAErD,IAAI,UAAU,EAAE,CAAC;oBACb,OAAO,CAAC,GAAG,CAAC,wCAAwC,YAAY,uBAAuB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;oBACzG,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;oBAC/F,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;gBACrD,CAAC;YACL,CAAC;YAED,OAAO,SAAS,CAAC;QACrB,CAAC;KAAA;IAED;;OAEG;IACK,iBAAiB,CAAC,QAA6B,EAAE,QAAgB,EAAE,eAAuB,EAAE,UAAkB;QAClH,4DAA4D;QAC5D,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;QAC9D,IAAI,cAAc,KAAK,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QAE5C,8BAA8B;QAC9B,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,YAAY,GAAG,cAAc,GAAG,CAAC,CAAC;QACtC,OAAO,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACtD,IAAI,QAAQ,CAAC,YAAY,CAAC,KAAK,GAAG;gBAAE,UAAU,EAAE,CAAC;YACjD,IAAI,QAAQ,CAAC,YAAY,CAAC,KAAK,GAAG;gBAAE,UAAU,EAAE,CAAC;YACjD,YAAY,EAAE,CAAC;QACnB,CAAC;QAED,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QAEnE,4DAA4D;QAC5D,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,sBAAsB,UAAU,UAAU,EAAE,GAAG,CAAC,CAAC;QAChF,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEhD,IAAI,WAAW,EAAE,CAAC;YACd,MAAM,aAAa,GAAG,cAAc,GAAG,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC9F,OAAO,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACW,oBAAoB,CAC9B,QAA6B,EAC7B,QAAyB,EACzB,QAAgB;;YAEhB,OAAO,CAAC,GAAG,CAAC,yCAAyC,QAAQ,EAAE,CAAC,CAAC;YAEjE,mDAAmD;YACnD,MAAM,mBAAmB,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAChF,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;gBACrE,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,sCAAsC,mBAAmB,EAAE,CAAC,CAAC;YAEzE,kCAAkC;YAClC,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,oCAAoC,aAAa,CAAC,MAAM,cAAc,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAE9G,4CAA4C;YAC5C,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;YAC/E,IAAI,CAAC,eAAe,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,6BAA6B,mBAAmB,sBAAsB,CAAC,CAAC;gBACpF,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,wCAAwC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAElF,8DAA8D;YAC9D,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC5F,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACrB,OAAO,CAAC,GAAG,CAAC,+BAA+B,QAAQ,mBAAmB,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;gBACpG,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,oCAAoC,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;YAC1F,OAAO,iBAAiB,CAAC;QAC7B,CAAC;KAAA;IAED;;;;;;OAMG;IACK,0BAA0B,CAC9B,QAA6B,EAC7B,QAAyB;QAEzB,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;QAElC,uFAAuF;QACvF,qCAAqC;QACrC,IAAI,kBAAkB,GAAG,CAAC,CAAC,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAEzC,4CAA4C;YAC5C,IAAI,QAAQ,CAAC,KAAK,CAAC,8BAA8B,CAAC,EAAE,CAAC;gBACjD,kBAAkB,GAAG,CAAC,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC3D,MAAM;YACV,CAAC;QACL,CAAC;QAED,sFAAsF;QACtF,IAAI,kBAAkB,IAAI,CAAC,EAAE,CAAC;YAC1B,sEAAsE;YACtE,IAAI,UAAU,GAAG,EAAE,CAAC;YACpB,KAAK,IAAI,CAAC,GAAG,kBAAkB,EAAE,CAAC,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3D,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACzC,UAAU,IAAI,QAAQ,GAAG,GAAG,CAAC;gBAE7B,qDAAqD;gBACrD,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACzB,MAAM;gBACV,CAAC;YACL,CAAC;YAED,yDAAyD;YACzD,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;YACtF,IAAI,YAAY,EAAE,CAAC;gBACf,MAAM,mBAAmB,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,0BAA0B,mBAAmB,iBAAiB,CAAC,CAAC;gBAE5E,4EAA4E;gBAC5E,0EAA0E;gBAC1E,OAAO,mBAAmB,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;YACrE,CAAC;QACL,CAAC;QAED,kEAAkE;QAClE,kCAAkC;QAClC,IAAI,QAAQ,GAAa,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAEzC,kEAAkE;YAClE,sDAAsD;YACtD,MAAM,QAAQ,GAAG,iCAAiC,CAAC;YACnD,IAAI,KAAK,CAAC;YAEV,gCAAgC;YAChC,MAAM,UAAU,GAA0C,EAAE,CAAC;YAC7D,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAChD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC3B,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/B,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC7C,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC;YACvD,CAAC;YAED,4DAA4D;YAC5D,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9C,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAEzC,IAAI,SAAS,EAAE,CAAC;oBACZ,6BAA6B;oBAC7B,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACJ,cAAc;oBACd,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;wBAC/D,2EAA2E;wBAC3E,QAAQ,CAAC,GAAG,EAAE,CAAC;oBACnB,CAAC;yBAAM,CAAC;wBACJ,wDAAwD;wBACxD,OAAO,CAAC,GAAG,CAAC,kDAAkD,GAAG,GAAG,CAAC,CAAC;wBACtE,OAAO,GAAG,CAAC;oBACf,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;OAEG;IACW,uBAAuB,CACjC,WAAuB,EACvB,QAAgB;;YAEhB,IAAI,CAAC;gBACD,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;gBACzE,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;gBAE3C,wDAAwD;gBACxD,kCAAkC;gBAClC,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,gCAAgC,QAAQ,aAAa,EAAE,GAAG,CAAC,CAAC;gBAC5F,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAE9C,IAAI,KAAK,EAAE,CAAC;oBACR,MAAM,aAAa,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC1D,OAAO,CAAC,GAAG,CAAC,0BAA0B,QAAQ,cAAc,aAAa,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;oBAEtF,uEAAuE;oBACvE,MAAM,kBAAkB,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBACpE,MAAM,gBAAgB,GAAG,WAAW,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;oBACpE,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,KAAK,CAClC,gBAAgB,EAChB,IAAI,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAC3F,CAAC;oBAEF,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;gBAC3D,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,uBAAuB,QAAQ,sBAAsB,CAAC,CAAC;gBACnE,OAAO,SAAS,CAAC;YAErB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;gBAC7D,OAAO,SAAS,CAAC;YACrB,CAAC;QACL,CAAC;KAAA;CAEJ;AAhtBD,4DAgtBC;AAED;;;;;GAKG;AACH,MAAa,mBAAmB;IAC5B,YAAoB,cAAoC;QAApC,mBAAc,GAAd,cAAc,CAAsB;IAAG,CAAC;IAE/C,YAAY,CACrB,QAA6B,EAC7B,QAAyB,EACzB,KAA+B;;YAE/B,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;YACjD,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC;YAEhC,kCAAkC;YAClC,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC9D,IAAI,eAAe,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;gBACvH,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC7C,QAAQ,CAAC,cAAc,CAAC,mCAAmC,CAAC,CAAC;gBAC7D,QAAQ,CAAC,cAAc,CAAC,+FAA+F,CAAC,CAAC;gBACzH,QAAQ,CAAC,cAAc,CAAC,2EAA2E,CAAC,CAAC;gBACrG,QAAQ,CAAC,cAAc,CAAC,uIAAuI,CAAC,CAAC;gBAEjK,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,KAAK,CAC9B,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,EAC/D,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,CACzF,CAAC;gBACF,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACjD,CAAC;YAED,kFAAkF;YAClF,oEAAoE;YACpE,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAEzC,iEAAiE;YACjE,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,6EAA6E,CAAC,CAAC;YACvH,IAAI,YAAY,EAAE,CAAC;gBACf,mCAAmC;gBACnC,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC7C,QAAQ,CAAC,cAAc,CAAC,2BAA2B,CAAC,CAAC;gBACrD,QAAQ,CAAC,cAAc,CAAC,oDAAoD,CAAC,CAAC;gBAC9E,QAAQ,CAAC,cAAc,CAAC,0BAA0B,CAAC,CAAC;gBACpD,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;gBAC3C,QAAQ,CAAC,cAAc,CAAC,uDAAuD,CAAC,CAAC;gBACjF,QAAQ,CAAC,cAAc,CAAC,mDAAmD,CAAC,CAAC;gBAC7E,QAAQ,CAAC,cAAc,CAAC,gDAAgD,CAAC,CAAC;gBAC1E,QAAQ,CAAC,cAAc,CAAC,kGAAkG,CAAC,CAAC;gBAE5H,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACtC,CAAC;YAED,iCAAiC;YACjC,sCAAsC;YACtC,MAAM,SAAS,GAAG,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;YAClF,IAAI,CAAC,SAAS,EAAE,CAAC;gBACb,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAEzC,iDAAiD;YACjD,IAAI,CAAC,qCAAoB,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnD,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,sEAAsE;YACtE,2CAA2C;YAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAEhE,IAAI,cAAc,GAAG,KAAK,CAAC;YAC3B,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC;gBAC7D,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACpE,cAAc,GAAG,IAAI,CAAC;YAC1B,CAAC;YAED,IAAI,CAAC,cAAc,EAAE,CAAC;gBAClB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC1D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACpF,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;oBACjD,MAAM,eAAe,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;oBACpD,IAAI,YAAY,GAAG,eAAe,EAAE,CAAC;wBACjC,cAAc,GAAG,IAAI,CAAC;oBAC1B,CAAC;gBACL,CAAC;YACL,CAAC;YAED,IAAI,CAAC,cAAc,EAAE,CAAC;gBAClB,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,qCAAqC;YACrC,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC7D,IAAI,CAAC,YAAY,EAAE,CAAC;gBAChB,qCAAqC;gBACrC,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC7C,QAAQ,CAAC,cAAc,CAAC,2BAA2B,IAAI,QAAQ,CAAC,CAAC;gBACjE,QAAQ,CAAC,cAAc,CAAC,kDAAkD,CAAC,CAAC;gBAE5E,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACjD,CAAC;YAED,uBAAuB;YACvB,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC7C,QAAQ,CAAC,cAAc,CAAC,2BAA2B,IAAI,QAAQ,CAAC,CAAC;YAEjE,qBAAqB;YACrB,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACvE,QAAQ,CAAC,cAAc,CAAC,wBAAwB,YAAY,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;YAExG,2BAA2B;YAC3B,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC;gBACpB,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC1D,CAAC;YAED,+BAA+B;YAC/B,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;YAE1B,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACjD,CAAC;KAAA;CACJ;AArHD,kDAqHC"} \ No newline at end of file diff --git a/node_modules/@jqhtml/vscode-extension/package.json b/node_modules/@jqhtml/vscode-extension/package.json index e9e0418f9..49c441c03 100755 --- a/node_modules/@jqhtml/vscode-extension/package.json +++ b/node_modules/@jqhtml/vscode-extension/package.json @@ -2,7 +2,7 @@ "name": "@jqhtml/vscode-extension", "displayName": "JQHTML", "description": "Syntax highlighting and language support for JQHTML template files", - "version": "2.2.137", + "version": "2.2.142", "publisher": "jqhtml", "license": "MIT", "publishConfig": { diff --git a/node_modules/@jqhtml/webpack-loader/package.json b/node_modules/@jqhtml/webpack-loader/package.json index 299fc94a6..5abe930fc 100755 --- a/node_modules/@jqhtml/webpack-loader/package.json +++ b/node_modules/@jqhtml/webpack-loader/package.json @@ -1,6 +1,6 @@ { "name": "@jqhtml/webpack-loader", - "version": "2.2.137", + "version": "2.2.142", "description": "Webpack loader for JQHTML templates", "type": "module", "main": "dist/index.js", @@ -30,7 +30,7 @@ "template" ], "dependencies": { - "@jqhtml/parser": "2.2.137", + "@jqhtml/parser": "2.2.142", "@types/loader-utils": "^2.0.6", "@types/node": "^20.0.0", "@types/webpack": "^5.28.5", diff --git a/package-lock.json b/package-lock.json index 19de32646..8a607c791 100755 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "html", + "name": "system", "lockfileVersion": 3, "requires": true, "packages": { @@ -2658,9 +2658,9 @@ } }, "node_modules/@jqhtml/core": { - "version": "2.2.137", - "resolved": "http://privatenpm.hanson.xyz/@jqhtml/core/-/core-2.2.137.tgz", - "integrity": "sha512-GViirzsF3VfYe7boTyeP35VxhrWSkerbghnzrPwdag+9LrDKqjc76tDCP8XtO7ddgVlm/VDZpvUQQUXEd57eDA==", + "version": "2.2.142", + "resolved": "http://privatenpm.hanson.xyz/@jqhtml/core/-/core-2.2.142.tgz", + "integrity": "sha512-8X1p+z82Y1sRm6pp7tfuakfN43xx0BgIEXf2Wz/C6mTSn8pygmOREE8Leodwdy9EQtZXif8N8Qmtz50s7X4wjA==", "license": "MIT", "dependencies": { "@rollup/plugin-node-resolve": "^16.0.1", @@ -2684,9 +2684,9 @@ } }, "node_modules/@jqhtml/parser": { - "version": "2.2.137", - "resolved": "http://privatenpm.hanson.xyz/@jqhtml/parser/-/parser-2.2.137.tgz", - "integrity": "sha512-DC1GlzZvMhlqxJDNjJ184r+h21W+HhS6GRcG2W/Eo75LnmehakMG9yO4WHeZ9809isl/7+fEwZbk2jM+FD3KVA==", + "version": "2.2.142", + "resolved": "http://privatenpm.hanson.xyz/@jqhtml/parser/-/parser-2.2.142.tgz", + "integrity": "sha512-ATn7qrZPWNi/G2WkDUchicGyCTqDLKFYjfE69ckie5S+zRS8zTAUJSS60N+LzUdwgM5N9v8V7C//6P85fggYuw==", "license": "MIT", "dependencies": { "@types/jest": "^29.5.11", @@ -2704,9 +2704,9 @@ } }, "node_modules/@jqhtml/router": { - "version": "2.2.137", - "resolved": "http://privatenpm.hanson.xyz/@jqhtml/router/-/router-2.2.137.tgz", - "integrity": "sha512-ybiQ6SRZxbYDPwrOML99T9gWJqNM2w43QnptJwWMg+E2zvAr48KpVJhcNJlsOlqGykME5PJOvxioMdMlfaEG5A==", + "version": "2.2.142", + "resolved": "http://privatenpm.hanson.xyz/@jqhtml/router/-/router-2.2.142.tgz", + "integrity": "sha512-x9gCid0jvkMWFKSbFEcFl6iygFGiDtYbZBai5LOBipUMXUlQw13rJv+ZBe1W+SM2PorUTuJXoTY6O+OxDJS/1g==", "license": "MIT", "dependencies": { "@rollup/plugin-node-resolve": "^16.0.1", @@ -2724,21 +2724,21 @@ } }, "node_modules/@jqhtml/vscode-extension": { - "version": "2.2.137", - "resolved": "http://privatenpm.hanson.xyz/@jqhtml/vscode-extension/-/vscode-extension-2.2.137.tgz", - "integrity": "sha512-9xM9/JqXKestgeivCCWfr49RD0D279ZG/K/PxU2u4kc+mE1kEwpkmVnN4QGGw4rzXUjPFdIoG3ogaMY2gRjFew==", + "version": "2.2.142", + "resolved": "http://privatenpm.hanson.xyz/@jqhtml/vscode-extension/-/vscode-extension-2.2.142.tgz", + "integrity": "sha512-3A8dOjpK01SgxMC3rTjgHNgRvQLKHdBnGFlWCu2Qk1f70DqTHGGwPUbWHNEQcpQw3LhjINYF8WQ8yu/Dkl9Qnw==", "license": "MIT", "engines": { "vscode": "^1.74.0" } }, "node_modules/@jqhtml/webpack-loader": { - "version": "2.2.137", - "resolved": "http://privatenpm.hanson.xyz/@jqhtml/webpack-loader/-/webpack-loader-2.2.137.tgz", - "integrity": "sha512-kSWsTnGa5USX8HKFYdAhfdAD5l/UiIwBJXmUZeLYaLSZvCePBEMfrk9rKbPtfkpNrbTnHhipF6DZmSOElmoPAg==", + "version": "2.2.142", + "resolved": "http://privatenpm.hanson.xyz/@jqhtml/webpack-loader/-/webpack-loader-2.2.142.tgz", + "integrity": "sha512-SUTREV2M1bUJb5s9h4b4q6cTDAl6EBtbPk7J2hMFpy7XwKpv68DVI2lCAOVOwjM1xQXDiTGOM+0gwWqwzEqE+w==", "license": "MIT", "dependencies": { - "@jqhtml/parser": "2.2.137", + "@jqhtml/parser": "2.2.142", "@types/loader-utils": "^2.0.6", "@types/node": "^20.0.0", "@types/webpack": "^5.28.5", diff --git a/public/index.php b/public/index.php index 9940431af..98e8f3934 100755 --- a/public/index.php +++ b/public/index.php @@ -17,12 +17,47 @@ define('LARAVEL_START', microtime(true)); $request_path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); -// Handle new IDE service endpoints (not the legacy _idehelper which uses Laravel) +// Handle IDE service endpoints if (str_starts_with($request_path, '/_ide/service')) { - // Handle IDE services with authentication - $service_handler = __DIR__ . '/../app/RSpade/Ide/Services/handler.php'; - if (file_exists($service_handler)) { - require_once $service_handler; + // SECURITY-CRITICAL: Authenticate FIRST before any service logic + // This checks session auth OR localhost bypass before proceeding + require_once __DIR__ . '/../app/RSpade/Ide/Services/auth.php'; + + // If we reach here, authentication passed (auth.php exits on failure) + + // SECURITY: Explicit whitelist only - handlers must be explicitly defined here. + // User input (service name) determines WHICH handler, but cannot inject arbitrary paths. + // TODO: Improve the design of this subsystem invocation later. + + // Extract service name + $service_name = str_replace('/_ide/service', '', $request_path); + $service_name = trim($service_name, '/'); + + // Whitelist of allowed handlers + $allowed_handlers = [ + 'format' => __DIR__ . '/../app/RSpade/Ide/Services/handler.php', + 'definition' => __DIR__ . '/../app/RSpade/Ide/Services/handler.php', + 'complete' => __DIR__ . '/../app/RSpade/Ide/Services/handler.php', + 'exec' => __DIR__ . '/../app/RSpade/Ide/Services/handler.php', + 'command' => __DIR__ . '/../app/RSpade/Ide/Services/handler.php', + 'resolve_class' => __DIR__ . '/../app/RSpade/Ide/Services/handler.php', + 'git' => __DIR__ . '/../app/RSpade/Ide/Services/handler.php', + 'git/diff' => __DIR__ . '/../app/RSpade/Ide/Services/handler.php', + // All other services use the Laravel handler + 'default' => __DIR__ . '/../app/RSpade/Ide/Services/laravel_handler.php', + ]; + + // Determine which handler to use + if (isset($allowed_handlers[$service_name])) { + $handler_path = $allowed_handlers[$service_name]; + } else { + // Services not explicitly listed use the Laravel handler + $handler_path = $allowed_handlers['default']; + } + + // Execute the whitelisted handler + if (file_exists($handler_path)) { + require_once $handler_path; exit; } }