Init
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
/**
|
||||
* Framework Resolver Registry
|
||||
*
|
||||
* Manages framework-specific resolvers.
|
||||
*/
|
||||
|
||||
import { FrameworkResolver, ResolutionContext } from '../types';
|
||||
import { laravelResolver } from './laravel';
|
||||
import { expressResolver } from './express';
|
||||
import { reactResolver } from './react';
|
||||
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,
|
||||
reactResolver,
|
||||
// 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;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 { reactResolver } from './react';
|
||||
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';
|
||||
Reference in New Issue
Block a user