| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- /**
- * Framework Resolver Registry
- *
- * Manages framework-specific resolvers.
- */
- import { FrameworkResolver, ResolutionContext } from '../types';
- import type { Language } from '../../types';
- import { laravelResolver } from './laravel';
- import { expressResolver } from './express';
- import { nestjsResolver } from './nestjs';
- import { reactResolver } from './react';
- import { svelteResolver } from './svelte';
- import { vueResolver } from './vue';
- import { djangoResolver, flaskResolver, fastapiResolver } from './python';
- import { railsResolver } from './ruby';
- import { springResolver } from './java';
- import { goResolver } from './go';
- import { rustResolver } from './rust';
- import { aspnetResolver } from './csharp';
- import { swiftUIResolver, uikitResolver, vaporResolver } from './swift';
- /**
- * All registered framework resolvers
- */
- const FRAMEWORK_RESOLVERS: FrameworkResolver[] = [
- // PHP
- laravelResolver,
- // JavaScript/TypeScript
- expressResolver,
- nestjsResolver,
- reactResolver,
- svelteResolver,
- vueResolver,
- // Python
- djangoResolver,
- flaskResolver,
- fastapiResolver,
- // Ruby
- railsResolver,
- // Java
- springResolver,
- // Go
- goResolver,
- // Rust
- rustResolver,
- // C#
- aspnetResolver,
- // Swift
- swiftUIResolver,
- uikitResolver,
- vaporResolver,
- ];
- /**
- * Get all framework resolvers
- */
- export function getAllFrameworkResolvers(): FrameworkResolver[] {
- return FRAMEWORK_RESOLVERS;
- }
- /**
- * Get a resolver by name
- */
- export function getFrameworkResolver(name: string): FrameworkResolver | undefined {
- return FRAMEWORK_RESOLVERS.find((r) => r.name === name);
- }
- /**
- * Detect which frameworks are used in a project
- */
- export function detectFrameworks(context: ResolutionContext): FrameworkResolver[] {
- return FRAMEWORK_RESOLVERS.filter((resolver) => {
- try {
- return resolver.detect(context);
- } catch {
- return false;
- }
- });
- }
- /**
- * Filter a list of detected frameworks down to ones that apply to a given language.
- * Frameworks without an explicit `languages` list are treated as universal.
- */
- export function getApplicableFrameworks(
- detected: FrameworkResolver[],
- language: Language
- ): FrameworkResolver[] {
- return detected.filter(
- (fw) => !fw.languages || fw.languages.includes(language)
- );
- }
- /**
- * Register a custom framework resolver
- */
- export function registerFrameworkResolver(resolver: FrameworkResolver): void {
- // Remove existing resolver with same name
- const index = FRAMEWORK_RESOLVERS.findIndex((r) => r.name === resolver.name);
- if (index !== -1) {
- FRAMEWORK_RESOLVERS.splice(index, 1);
- }
- FRAMEWORK_RESOLVERS.push(resolver);
- }
- // Re-export framework resolvers
- export { laravelResolver, FACADE_MAPPINGS } from './laravel';
- export { expressResolver } from './express';
- export { nestjsResolver } from './nestjs';
- export { reactResolver } from './react';
- export { svelteResolver } from './svelte';
- export { vueResolver } from './vue';
- export { djangoResolver, flaskResolver, fastapiResolver } from './python';
- export { railsResolver } from './ruby';
- export { springResolver } from './java';
- export { goResolver } from './go';
- export { rustResolver } from './rust';
- export { aspnetResolver } from './csharp';
- export { swiftUIResolver, uikitResolver, vaporResolver } from './swift';
|