vibe-coder-mcp
Version:
Production-ready MCP server with complete agent integration, multi-transport support, and comprehensive development automation tools for AI-assisted workflows.
140 lines (139 loc) • 6.59 kB
JavaScript
import { DefaultLanguageHandler } from './default.js';
import logger from '../../../logger.js';
import { JavaScriptHandler } from './javascript.js';
import { TypeScriptHandler } from './typescript.js';
import { PythonHandler } from './python.js';
import { JavaHandler } from './java.js';
import { CSharpHandler } from './csharp.js';
import { GoHandler } from './go.js';
import { RubyHandler } from './ruby.js';
import { RustHandler } from './rust.js';
import { PhpHandler } from './php.js';
import { SwiftHandler } from './swift.js';
import { KotlinHandler } from './kotlin.js';
import { CppHandler } from './cpp.js';
import { ScalaHandler } from './scala.js';
import { ObjectiveCHandler } from './objectivec.js';
import { ElixirHandler } from './elixir.js';
import { LuaHandler } from './lua.js';
import { BashHandler } from './bash.js';
import { DartHandler } from './dart.js';
import { RHandler } from './r.js';
import { YamlHandler } from './yaml.js';
import { GraphQLHandler } from './graphql.js';
import { JsonHandler } from './json.js';
import { HtmlHandler } from './html.js';
import { VueHandler } from './vue.js';
import { TomlHandler } from './toml.js';
export class LanguageHandlerRegistry {
handlers = new Map();
defaultHandler;
static instance;
static getInstance() {
if (!LanguageHandlerRegistry.instance) {
LanguageHandlerRegistry.instance = new LanguageHandlerRegistry();
}
return LanguageHandlerRegistry.instance;
}
static registerHandler(extension, handler) {
LanguageHandlerRegistry.getInstance().registerHandler(extension, handler);
}
static getHandler(extension) {
return LanguageHandlerRegistry.getInstance().getHandler(extension);
}
constructor() {
this.defaultHandler = new DefaultLanguageHandler();
this.registerDefaultHandlers();
}
registerDefaultHandlers() {
this.registerHandler('.js', new JavaScriptHandler());
this.registerHandler('.jsx', new JavaScriptHandler(true));
this.registerHandler('.mjs', new JavaScriptHandler());
this.registerHandler('.cjs', new JavaScriptHandler());
this.registerHandler('.ts', new TypeScriptHandler());
this.registerHandler('.tsx', new TypeScriptHandler(true));
this.registerHandler('.mts', new TypeScriptHandler());
this.registerHandler('.cts', new TypeScriptHandler());
this.registerHandler('.py', new PythonHandler());
this.registerHandler('.pyi', new PythonHandler());
this.registerHandler('.pyx', new PythonHandler());
this.registerHandler('.pyw', new PythonHandler());
this.registerHandler('.java', new JavaHandler());
this.registerHandler('.jsp', new JavaHandler());
this.registerHandler('.cs', new CSharpHandler());
this.registerHandler('.cshtml', new CSharpHandler());
this.registerHandler('.razor', new CSharpHandler());
this.registerHandler('.go', new GoHandler());
this.registerHandler('.rb', new RubyHandler());
this.registerHandler('.rake', new RubyHandler());
this.registerHandler('.gemspec', new RubyHandler());
this.registerHandler('.rs', new RustHandler());
this.registerHandler('.php', new PhpHandler());
this.registerHandler('.phtml', new PhpHandler());
this.registerHandler('.swift', new SwiftHandler());
this.registerHandler('.kt', new KotlinHandler());
this.registerHandler('.kts', new KotlinHandler());
this.registerHandler('.c', new CppHandler());
this.registerHandler('.h', new CppHandler());
this.registerHandler('.cpp', new CppHandler());
this.registerHandler('.hpp', new CppHandler());
this.registerHandler('.cc', new CppHandler());
this.registerHandler('.cxx', new CppHandler());
this.registerHandler('.scala', new ScalaHandler());
this.registerHandler('.sc', new ScalaHandler());
this.registerHandler('.m', new ObjectiveCHandler());
this.registerHandler('.mm', new ObjectiveCHandler());
this.registerHandler('.ex', new ElixirHandler());
this.registerHandler('.exs', new ElixirHandler());
this.registerHandler('.lua', new LuaHandler());
this.registerHandler('.sh', new BashHandler());
this.registerHandler('.bash', new BashHandler());
this.registerHandler('.zsh', new BashHandler());
this.registerHandler('.dart', new DartHandler());
this.registerHandler('.r', new RHandler());
this.registerHandler('.R', new RHandler());
this.registerHandler('.rmd', new RHandler());
this.registerHandler('.yaml', new YamlHandler());
this.registerHandler('.yml', new YamlHandler());
this.registerHandler('.ini', new YamlHandler());
this.registerHandler('.json', new JsonHandler());
this.registerHandler('.jsonc', new JsonHandler());
this.registerHandler('.json5', new JsonHandler());
this.registerHandler('.toml', new TomlHandler());
this.registerHandler('.html', new HtmlHandler());
this.registerHandler('.htm', new HtmlHandler());
this.registerHandler('.xhtml', new HtmlHandler());
this.registerHandler('.svg', new HtmlHandler());
this.registerHandler('.vue', new VueHandler());
this.registerHandler('.graphql', new GraphQLHandler());
this.registerHandler('.gql', new GraphQLHandler());
this.registerHandler('.graphqls', new GraphQLHandler());
logger.debug('Registered default language handlers');
}
registerHandler(extension, handler) {
this.handlers.set(extension.toLowerCase(), handler);
logger.debug(`Registered language handler for ${extension}`);
}
getHandler(extension) {
const handler = this.handlers.get(extension.toLowerCase());
if (handler) {
return handler;
}
logger.debug(`No specific handler found for ${extension}, using default handler`);
return this.defaultHandler;
}
hasHandler(extension) {
return this.handlers.has(extension.toLowerCase());
}
getRegisteredExtensions() {
return Array.from(this.handlers.keys());
}
}
const languageHandlerRegistry = new LanguageHandlerRegistry();
export default languageHandlerRegistry;
export function getLanguageHandler(extension) {
return languageHandlerRegistry.getHandler(extension);
}
export function registerLanguageHandler(extension, handler) {
languageHandlerRegistry.registerHandler(extension, handler);
}