UNPKG

mira-consciousness

Version:

Memory & Intelligence Retention Archive - Preserving The Spark

392 lines 16.5 kB
/** * Language Configuration Manager * Handles language-specific patterns, detection, and analysis rules */ export class LanguageConfigManager { languageConfigs = new Map(); constructor() { this.initializeLanguageConfigs(); } getConfig(language) { return this.languageConfigs.get(language); } getLanguageFromExtension(ext) { for (const [key, config] of this.languageConfigs) { if (config.extensions.includes(ext.toLowerCase())) { return key; } } return null; } getLanguageKeyFromName(name) { for (const [key, config] of this.languageConfigs) { if (config.name.toLowerCase().includes(name.toLowerCase())) { return key; } } return null; } getAllLanguages() { return Array.from(this.languageConfigs.keys()); } initializeLanguageConfigs() { // JavaScript/TypeScript/Node.js this.languageConfigs.set('javascript', { name: 'JavaScript/TypeScript', extensions: ['js', 'jsx', 'ts', 'tsx', 'mjs', 'cjs'], entryPointPatterns: ['index.*', 'main.*', 'app.*', 'server.*', 'src/index.*'], packageFiles: ['package.json', 'yarn.lock', 'package-lock.json', 'pnpm-lock.yaml'], buildFiles: ['webpack.config.*', 'vite.config.*', 'rollup.config.*', 'tsconfig.json', '.babelrc*'], importPatterns: [ /import\s+.*?from\s+['"]([^'"]+)['"]/g, /require\s*\(\s*['"]([^'"]+)['"]\s*\)/g, /import\s*\(\s*['"]([^'"]+)['"]\s*\)/g ], exportPatterns: [ /export\s+(?:default\s+)?(?:const|let|var|function|class|interface|type)\s+(\w+)/g, /module\.exports\s*=\s*(\w+)/g ], functionPatterns: [ /(?:export\s+)?(?:async\s+)?function\s+(\w+)/g, /(?:export\s+)?const\s+(\w+)\s*=\s*(?:async\s+)?\(.*?\)\s*=>/g, /(\w+)\s*:\s*(?:async\s+)?function/g ], classPatterns: [/(?:export\s+)?class\s+(\w+)/g], commentPatterns: [/\/\/.*$/gm, /\/\*[\s\S]*?\*\//g], frameworkDetection: { 'React': ['react', '@types/react', 'react-dom'], 'Vue': ['vue', '@vue/core', 'nuxt'], 'Angular': ['@angular/core', '@angular/cli'], 'Express': ['express', 'fastify', 'koa'], 'Next.js': ['next', 'next/router'], 'Svelte': ['svelte', '@sveltejs/kit'], 'Solid': ['solid-js', '@solidjs/start'] } }); // Python this.languageConfigs.set('python', { name: 'Python', extensions: ['py', 'pyx', 'pyi', 'pyw'], entryPointPatterns: ['main.py', '__main__.py', 'app.py', 'server.py', 'manage.py'], packageFiles: ['requirements.txt', 'Pipfile', 'pyproject.toml', 'setup.py', 'poetry.lock', 'conda.yaml'], buildFiles: ['setup.cfg', 'tox.ini', 'Makefile', 'Dockerfile'], importPatterns: [ /^import\s+([^\s#]+)/gm, /^from\s+([^\s#]+)\s+import/gm ], exportPatterns: [ /__all__\s*=\s*\[(.*?)\]/gs, /^def\s+(\w+)/gm, /^class\s+(\w+)/gm ], functionPatterns: [ /^def\s+(\w+)/gm, /^\s+def\s+(\w+)/gm ], classPatterns: [/^class\s+(\w+)/gm], commentPatterns: [/#.*$/gm, /'''[\s\S]*?'''/g, /"""[\s\S]*?"""/g], frameworkDetection: { 'Django': ['django', 'Django'], 'Flask': ['flask', 'Flask'], 'FastAPI': ['fastapi', 'uvicorn'], 'Tornado': ['tornado'], 'Pyramid': ['pyramid'], 'Bottle': ['bottle'] } }); // Java this.languageConfigs.set('java', { name: 'Java', extensions: ['java', 'kt', 'scala'], entryPointPatterns: ['Main.java', 'Application.java', '*Application.java'], packageFiles: ['pom.xml', 'build.gradle', 'gradle.properties', 'ivy.xml'], buildFiles: ['build.xml', 'Makefile', 'Dockerfile'], importPatterns: [/^import\s+([^\s;]+);/gm], exportPatterns: [ /public\s+(?:static\s+)?(?:final\s+)?(?:class|interface|enum)\s+(\w+)/g, /public\s+(?:static\s+)?(?:final\s+)?(?:\w+\s+)?(\w+)\s*\(/g ], functionPatterns: [ /public\s+(?:static\s+)?(?:\w+\s+)?(\w+)\s*\(/g, /private\s+(?:static\s+)?(?:\w+\s+)?(\w+)\s*\(/g, /protected\s+(?:static\s+)?(?:\w+\s+)?(\w+)\s*\(/g ], classPatterns: [/(?:public\s+)?(?:final\s+)?class\s+(\w+)/g], commentPatterns: [/\/\/.*$/gm, /\/\*[\s\S]*?\*\//g], frameworkDetection: { 'Spring': ['spring-boot', 'spring-core', 'org.springframework'], 'Spring Boot': ['spring-boot-starter'], 'Android': ['android.app', 'androidx'], 'Hibernate': ['hibernate-core', 'org.hibernate'], 'Struts': ['struts2-core'], 'JSF': ['jsf-api', 'javax.faces'] } }); // C# this.languageConfigs.set('csharp', { name: 'C#', extensions: ['cs', 'csx', 'vb'], entryPointPatterns: ['Program.cs', 'Main.cs', 'Startup.cs'], packageFiles: ['*.csproj', '*.sln', 'packages.config', 'Directory.Build.props'], buildFiles: ['Directory.Build.targets', 'nuget.config', 'global.json'], importPatterns: [/^using\s+([^\s;]+);/gm], exportPatterns: [ /public\s+(?:static\s+)?(?:partial\s+)?class\s+(\w+)/g, /public\s+(?:static\s+)?(?:partial\s+)?interface\s+(\w+)/g ], functionPatterns: [ /public\s+(?:static\s+)?(?:async\s+)?(?:\w+\s+)?(\w+)\s*\(/g, /private\s+(?:static\s+)?(?:async\s+)?(?:\w+\s+)?(\w+)\s*\(/g, /protected\s+(?:static\s+)?(?:async\s+)?(?:\w+\s+)?(\w+)\s*\(/g ], classPatterns: [/(?:public\s+)?(?:partial\s+)?class\s+(\w+)/g], commentPatterns: [/\/\/.*$/gm, /\/\*[\s\S]*?\*\//g], frameworkDetection: { 'ASP.NET Core': ['Microsoft.AspNetCore', 'aspnetcore'], 'ASP.NET': ['System.Web', 'webforms'], 'Entity Framework': ['EntityFramework', 'Microsoft.EntityFrameworkCore'], 'Blazor': ['Microsoft.AspNetCore.Blazor'], 'WPF': ['System.Windows', 'Microsoft.WindowsDesktop.App'], 'WinForms': ['System.Windows.Forms'] } }); // Go this.languageConfigs.set('go', { name: 'Go', extensions: ['go'], entryPointPatterns: ['main.go', 'cmd/*/main.go'], packageFiles: ['go.mod', 'go.sum', 'Gopkg.toml', 'Gopkg.lock'], buildFiles: ['Makefile', 'Dockerfile', '.goreleaser.yml'], importPatterns: [ /^import\s+"([^"]+)"/gm, /^import\s+\(\s*\n([\s\S]*?)\n\s*\)/gm ], exportPatterns: [ /^func\s+([A-Z]\w*)/gm, /^type\s+([A-Z]\w*)/gm, /^var\s+([A-Z]\w*)/gm, /^const\s+([A-Z]\w*)/gm ], functionPatterns: [/^func\s+(?:\([^)]*\)\s+)?(\w+)/gm], classPatterns: [/^type\s+(\w+)\s+struct/gm], commentPatterns: [/\/\/.*$/gm, /\/\*[\s\S]*?\*\//g], frameworkDetection: { 'Gin': ['github.com/gin-gonic/gin'], 'Echo': ['github.com/labstack/echo'], 'Fiber': ['github.com/gofiber/fiber'], 'Chi': ['github.com/go-chi/chi'], 'Gorilla Mux': ['github.com/gorilla/mux'], 'gRPC': ['google.golang.org/grpc'] } }); // Rust this.languageConfigs.set('rust', { name: 'Rust', extensions: ['rs'], entryPointPatterns: ['main.rs', 'lib.rs', 'src/main.rs', 'src/lib.rs'], packageFiles: ['Cargo.toml', 'Cargo.lock'], buildFiles: ['build.rs', 'Makefile', 'Dockerfile'], importPatterns: [ /^use\s+([^;]+);/gm, /^extern\s+crate\s+(\w+);/gm ], exportPatterns: [ /^pub\s+fn\s+(\w+)/gm, /^pub\s+struct\s+(\w+)/gm, /^pub\s+enum\s+(\w+)/gm, /^pub\s+trait\s+(\w+)/gm ], functionPatterns: [ /^fn\s+(\w+)/gm, /^pub\s+fn\s+(\w+)/gm ], classPatterns: [ /^struct\s+(\w+)/gm, /^enum\s+(\w+)/gm, /^trait\s+(\w+)/gm ], commentPatterns: [/\/\/.*$/gm, /\/\*[\s\S]*?\*\//g], frameworkDetection: { 'Actix Web': ['actix-web'], 'Rocket': ['rocket'], 'Warp': ['warp'], 'Axum': ['axum'], 'Tokio': ['tokio'], 'Serde': ['serde'] } }); // PHP this.languageConfigs.set('php', { name: 'PHP', extensions: ['php', 'phtml', 'php3', 'php4', 'php5', 'php7', 'php8'], entryPointPatterns: ['index.php', 'app.php', 'public/index.php'], packageFiles: ['composer.json', 'composer.lock'], buildFiles: ['Makefile', 'Dockerfile', 'phpunit.xml'], importPatterns: [ /^require_once\s+['"]([^'"]+)['"]/gm, /^include_once\s+['"]([^'"]+)['"]/gm, /^use\s+([^;]+);/gm ], exportPatterns: [ /^class\s+(\w+)/gm, /^interface\s+(\w+)/gm, /^trait\s+(\w+)/gm, /^function\s+(\w+)/gm ], functionPatterns: [ /^function\s+(\w+)/gm, /public\s+function\s+(\w+)/gm, /private\s+function\s+(\w+)/gm, /protected\s+function\s+(\w+)/gm ], classPatterns: [/^class\s+(\w+)/gm], commentPatterns: [/\/\/.*$/gm, /\/\*[\s\S]*?\*\//g, /#.*$/gm], frameworkDetection: { 'Laravel': ['laravel/framework', 'illuminate/'], 'Symfony': ['symfony/symfony', 'symfony/'], 'CodeIgniter': ['codeigniter/framework'], 'CakePHP': ['cakephp/cakephp'], 'Zend': ['zendframework/'], 'Yii': ['yiisoft/yii2'] } }); // Ruby this.languageConfigs.set('ruby', { name: 'Ruby', extensions: ['rb', 'rbw', 'rake', 'gemspec'], entryPointPatterns: ['app.rb', 'main.rb', 'config/application.rb'], packageFiles: ['Gemfile', 'Gemfile.lock', '*.gemspec'], buildFiles: ['Rakefile', 'Makefile', 'Dockerfile'], importPatterns: [ /^require\s+['"]([^'"]+)['"]/gm, /^require_relative\s+['"]([^'"]+)['"]/gm, /^load\s+['"]([^'"]+)['"]/gm ], exportPatterns: [ /^class\s+(\w+)/gm, /^module\s+(\w+)/gm, /^def\s+(\w+)/gm ], functionPatterns: [ /^def\s+(\w+)/gm, /^\s+def\s+(\w+)/gm ], classPatterns: [ /^class\s+(\w+)/gm, /^module\s+(\w+)/gm ], commentPatterns: [/#.*$/gm, /^=begin[\s\S]*?^=end/gm], frameworkDetection: { 'Ruby on Rails': ['rails', 'actionpack'], 'Sinatra': ['sinatra'], 'Hanami': ['hanami'], 'Grape': ['grape'], 'Roda': ['roda'], 'Padrino': ['padrino'] } }); // Swift (iOS/macOS) this.languageConfigs.set('swift', { name: 'Swift', extensions: ['swift'], entryPointPatterns: ['main.swift', 'AppDelegate.swift', 'SceneDelegate.swift'], packageFiles: ['Package.swift', 'Podfile', 'Podfile.lock', '*.xcodeproj', '*.xcworkspace'], buildFiles: ['Makefile', 'Dockerfile', 'fastlane/Fastfile'], importPatterns: [/^import\s+(\w+)/gm], exportPatterns: [ /^public\s+(?:class|struct|enum|protocol)\s+(\w+)/gm, /^open\s+(?:class|struct|enum|protocol)\s+(\w+)/gm, /^public\s+func\s+(\w+)/gm ], functionPatterns: [ /^func\s+(\w+)/gm, /^\s+func\s+(\w+)/gm, /^public\s+func\s+(\w+)/gm, /^private\s+func\s+(\w+)/gm ], classPatterns: [ /^class\s+(\w+)/gm, /^struct\s+(\w+)/gm, /^enum\s+(\w+)/gm, /^protocol\s+(\w+)/gm ], commentPatterns: [/\/\/.*$/gm, /\/\*[\s\S]*?\*\//g], frameworkDetection: { 'SwiftUI': ['SwiftUI'], 'UIKit': ['UIKit'], 'Vapor': ['Vapor'], 'Perfect': ['PerfectHTTP'], 'Kitura': ['Kitura'], 'RxSwift': ['RxSwift'] } }); // C/C++ this.languageConfigs.set('cpp', { name: 'C/C++', extensions: ['c', 'cpp', 'cxx', 'cc', 'h', 'hpp', 'hxx'], entryPointPatterns: ['main.c', 'main.cpp', 'src/main.c', 'src/main.cpp'], packageFiles: ['CMakeLists.txt', 'Makefile', 'configure.ac', 'meson.build', 'conanfile.txt'], buildFiles: ['Makefile', 'CMakeCache.txt', 'build.ninja', 'Dockerfile'], importPatterns: [ /#include\s+<([^>]+)>/gm, /#include\s+"([^"]+)"/gm ], exportPatterns: [ /^(?:extern\s+)?(?:inline\s+)?(?:\w+\s+)?(\w+)\s*\(/gm, /^(?:extern\s+)?(?:inline\s+)?(?:class|struct)\s+(\w+)/gm ], functionPatterns: [ /^(?:static\s+)?(?:inline\s+)?(?:\w+\s+)?(\w+)\s*\(/gm, /^\w+\s+(\w+)\s*\(/gm ], classPatterns: [ /^(?:class|struct)\s+(\w+)/gm, /^enum\s+(?:class\s+)?(\w+)/gm ], commentPatterns: [/\/\/.*$/gm, /\/\*[\s\S]*?\*\//g], frameworkDetection: { 'Qt': ['#include <Q', 'find_package(Qt'], 'GTK': ['#include <gtk/', 'pkg-config.*gtk'], 'Boost': ['#include <boost/', 'find_package(Boost'], 'OpenCV': ['#include <opencv2/', 'find_package(OpenCV'], 'SFML': ['#include <SFML/', 'find_package(sfml'] } }); // Dart (Flutter) this.languageConfigs.set('dart', { name: 'Dart', extensions: ['dart'], entryPointPatterns: ['main.dart', 'lib/main.dart'], packageFiles: ['pubspec.yaml', 'pubspec.lock'], buildFiles: ['Makefile', 'Dockerfile', 'analysis_options.yaml'], importPatterns: [ /^import\s+'([^']+)'/gm, /^import\s+"([^"]+)"/gm, /^export\s+'([^']+)'/gm ], exportPatterns: [ /^class\s+(\w+)/gm, /^abstract\s+class\s+(\w+)/gm, /^enum\s+(\w+)/gm, /^mixin\s+(\w+)/gm ], functionPatterns: [ /^(?:\w+\s+)?(\w+)\s*\(/gm, /^\s+(?:\w+\s+)?(\w+)\s*\(/gm ], classPatterns: [ /^class\s+(\w+)/gm, /^abstract\s+class\s+(\w+)/gm, /^mixin\s+(\w+)/gm ], commentPatterns: [/\/\/.*$/gm, /\/\*[\s\S]*?\*\//g], frameworkDetection: { 'Flutter': ['flutter', 'package:flutter/'], 'Aqueduct': ['aqueduct'], 'Angel': ['angel_framework'], 'Shelf': ['package:shelf/'] } }); } } //# sourceMappingURL=LanguageConfigManager.js.map