entkapp 5.1.0 → 5.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -20
- package/index.js +38 -2241
- package/package.json +1 -1
- package/src/EngineContext.js +1 -1
- package/src/Initializer.js +82 -0
- package/src/analyzers/CodeSmellAnalyzer.js +106 -0
- package/src/ast/OxcAnalyzer.js +33 -415
- package/src/index.js +70 -3
- package/src/performance/WorkerTaskRunner.js +7 -7
- package/src/plugins/BasePlugin.js +171 -2
- package/src/plugins/PluginRegistry.js +193 -81
- package/src/plugins/ecosystems/BackendServices.js +168 -32
- package/src/plugins/ecosystems/GenericPlugins.js +51 -34
- package/src/plugins/ecosystems/ModernFrameworks.js +97 -94
- package/src/plugins/ecosystems/MorePlugins.js +429 -51
- package/src/plugins/ecosystems/NewPlugins.js +526 -0
- package/src/plugins/ecosystems/NextJsPlugin.js +18 -6
- package/src/plugins/ecosystems/PluginLoader.js +190 -17
- package/src/plugins/ecosystems/TypeScriptPlugin.js +10 -10
- package/src/plugins/ecosystems/UltimateBundle.js +168 -0
- package/src/resolution/BuildOrchestrator.js +46 -0
- package/src/resolution/ConfigGenerator.js +83 -0
- package/src/resolution/DependencyFixer.js +88 -0
- package/src/resolution/EntryPointDetector.js +4 -4
- package/src/resolution/GraphAnalyzer.js +80 -0
- package/src/resolution/MigrationAnalyzer.js +60 -0
- package/src/resolution/PathMapper.js +5 -5
|
@@ -1,20 +1,193 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* ============================================================================
|
|
3
|
+
* Plugin Loader for entkapp v5.0.0
|
|
4
|
+
* ============================================================================
|
|
5
|
+
* Registers all built-in plugins from all ecosystem bundles.
|
|
6
|
+
* v5.0.0: Added 40+ new plugins with full dependency detection support.
|
|
7
|
+
*/
|
|
8
|
+
import {
|
|
9
|
+
TailwindPlugin, PostcssPlugin, UnoCSSPlugin, StylelintPlugin,
|
|
10
|
+
JestPlugin, VitestPlugin, PlaywrightPlugin, CypressPlugin, StorybookPlugin, MswPlugin,
|
|
11
|
+
EslintPlugin, PrettierPlugin, BiomePlugin, OxlintPlugin,
|
|
12
|
+
HuskyPlugin, LintStagedPlugin, CommitlintPlugin, ChangesetPlugin,
|
|
13
|
+
BabelPlugin, SWCPlugin,
|
|
14
|
+
VitePlugin, EsbuildPlugin, RollupPlugin, WebpackPlugin, ParcelPlugin,
|
|
15
|
+
TurboPlugin, NxPlugin,
|
|
16
|
+
GithubActionsPlugin, DockerPlugin, TerraformPlugin,
|
|
17
|
+
EditorConfigPlugin, NvmPlugin, VoltaPlugin, DotenvPlugin,
|
|
18
|
+
PnpmPlugin, YarnPlugin, BunPlugin,
|
|
19
|
+
SwiperPlugin, QuillPlugin, EnvelopPlugin,
|
|
20
|
+
} from './MorePlugins.js';
|
|
21
|
+
|
|
22
|
+
import {
|
|
23
|
+
ReduxPlugin, ZustandPlugin, JotaiPlugin, RecoilPlugin, MobXPlugin, PiniaPlugin, TanStackQueryPlugin,
|
|
24
|
+
ReactRouterPlugin, TanStackRouterPlugin, VueRouterPlugin,
|
|
25
|
+
AntdPlugin, MuiPlugin, ShadcnPlugin, RadixUIPlugin, ChakraUIPlugin,
|
|
26
|
+
FramerMotionPlugin, GSAPPlugin,
|
|
27
|
+
ZodPlugin, YupPlugin, ValibotPlugin,
|
|
28
|
+
I18nextPlugin, VueI18nPlugin,
|
|
29
|
+
SentryPlugin, OpenTelemetryPlugin,
|
|
30
|
+
ExpressPlugin, FastifyPlugin, NestJsPlugin, HonoPlugin, KoaPlugin, ElysiaPlugin,
|
|
31
|
+
SocketIoPlugin,
|
|
32
|
+
} from './NewPlugins.js';
|
|
33
|
+
|
|
34
|
+
import {
|
|
35
|
+
GraphQLPlugin, ApolloPlugin, DatabasePlugin, PrismaPlugin, DrizzlePlugin, MongoosePlugin,
|
|
36
|
+
SupabasePlugin, FirebasePlugin, ClerkPlugin, TRPCPlugin,
|
|
37
|
+
} from './BackendServices.js';
|
|
38
|
+
|
|
39
|
+
import {
|
|
40
|
+
NuxtPlugin, RemixPlugin, SvelteKitPlugin, AstroPlugin, VitepressPlugin, GatsbyPlugin, RedwoodPlugin,
|
|
41
|
+
} from './GenericPlugins.js';
|
|
42
|
+
|
|
43
|
+
import {
|
|
44
|
+
ReactPlugin, VuePlugin, SveltePlugin, AngularPlugin, PreactPlugin, SolidPlugin, QwikPlugin, LitPlugin,
|
|
45
|
+
} from './ModernFrameworks.js';
|
|
2
46
|
|
|
3
47
|
export function loadAdditionalPlugins(registry) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
registry.register(new
|
|
8
|
-
registry.register(new
|
|
9
|
-
registry.register(new
|
|
10
|
-
registry.register(new
|
|
11
|
-
registry.register(new
|
|
12
|
-
registry.register(new
|
|
13
|
-
registry.register(new
|
|
14
|
-
registry.register(new
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
registry.register(new
|
|
18
|
-
registry.register(new
|
|
19
|
-
registry.register(new
|
|
48
|
+
const ctx = registry.context;
|
|
49
|
+
|
|
50
|
+
// ── Frontend Frameworks ──────────────────────────────────────────────────
|
|
51
|
+
registry.register(new ReactPlugin(ctx));
|
|
52
|
+
registry.register(new VuePlugin(ctx));
|
|
53
|
+
registry.register(new SveltePlugin(ctx));
|
|
54
|
+
registry.register(new AngularPlugin(ctx));
|
|
55
|
+
registry.register(new PreactPlugin(ctx));
|
|
56
|
+
registry.register(new SolidPlugin(ctx));
|
|
57
|
+
registry.register(new QwikPlugin(ctx));
|
|
58
|
+
registry.register(new LitPlugin(ctx));
|
|
59
|
+
|
|
60
|
+
// ── Meta-Frameworks ──────────────────────────────────────────────────────
|
|
61
|
+
registry.register(new NuxtPlugin(ctx));
|
|
62
|
+
registry.register(new RemixPlugin(ctx));
|
|
63
|
+
registry.register(new SvelteKitPlugin(ctx));
|
|
64
|
+
registry.register(new AstroPlugin(ctx));
|
|
65
|
+
registry.register(new VitepressPlugin(ctx));
|
|
66
|
+
registry.register(new GatsbyPlugin(ctx));
|
|
67
|
+
registry.register(new RedwoodPlugin(ctx));
|
|
68
|
+
|
|
69
|
+
// ── Backend Frameworks ───────────────────────────────────────────────────
|
|
70
|
+
registry.register(new ExpressPlugin(ctx));
|
|
71
|
+
registry.register(new FastifyPlugin(ctx));
|
|
72
|
+
registry.register(new NestJsPlugin(ctx));
|
|
73
|
+
registry.register(new HonoPlugin(ctx));
|
|
74
|
+
registry.register(new KoaPlugin(ctx));
|
|
75
|
+
registry.register(new ElysiaPlugin(ctx));
|
|
76
|
+
|
|
77
|
+
// ── Data / API ───────────────────────────────────────────────────────────
|
|
78
|
+
registry.register(new GraphQLPlugin(ctx));
|
|
79
|
+
registry.register(new ApolloPlugin(ctx));
|
|
80
|
+
registry.register(new TRPCPlugin(ctx));
|
|
81
|
+
registry.register(new DatabasePlugin(ctx));
|
|
82
|
+
registry.register(new PrismaPlugin(ctx));
|
|
83
|
+
registry.register(new DrizzlePlugin(ctx));
|
|
84
|
+
registry.register(new MongoosePlugin(ctx));
|
|
85
|
+
|
|
86
|
+
// ── BaaS / Auth ──────────────────────────────────────────────────────────
|
|
87
|
+
registry.register(new SupabasePlugin(ctx));
|
|
88
|
+
registry.register(new FirebasePlugin(ctx));
|
|
89
|
+
registry.register(new ClerkPlugin(ctx));
|
|
90
|
+
|
|
91
|
+
// ── State Management ─────────────────────────────────────────────────────
|
|
92
|
+
registry.register(new ReduxPlugin(ctx));
|
|
93
|
+
registry.register(new ZustandPlugin(ctx));
|
|
94
|
+
registry.register(new JotaiPlugin(ctx));
|
|
95
|
+
registry.register(new RecoilPlugin(ctx));
|
|
96
|
+
registry.register(new MobXPlugin(ctx));
|
|
97
|
+
registry.register(new PiniaPlugin(ctx));
|
|
98
|
+
registry.register(new TanStackQueryPlugin(ctx));
|
|
99
|
+
|
|
100
|
+
// ── Routing ──────────────────────────────────────────────────────────────
|
|
101
|
+
registry.register(new ReactRouterPlugin(ctx));
|
|
102
|
+
registry.register(new TanStackRouterPlugin(ctx));
|
|
103
|
+
registry.register(new VueRouterPlugin(ctx));
|
|
104
|
+
|
|
105
|
+
// ── UI Components ────────────────────────────────────────────────────────
|
|
106
|
+
registry.register(new AntdPlugin(ctx));
|
|
107
|
+
registry.register(new MuiPlugin(ctx));
|
|
108
|
+
registry.register(new ShadcnPlugin(ctx));
|
|
109
|
+
registry.register(new RadixUIPlugin(ctx));
|
|
110
|
+
registry.register(new ChakraUIPlugin(ctx));
|
|
111
|
+
|
|
112
|
+
// ── Animation ────────────────────────────────────────────────────────────
|
|
113
|
+
registry.register(new FramerMotionPlugin(ctx));
|
|
114
|
+
registry.register(new GSAPPlugin(ctx));
|
|
115
|
+
|
|
116
|
+
// ── Validation ───────────────────────────────────────────────────────────
|
|
117
|
+
registry.register(new ZodPlugin(ctx));
|
|
118
|
+
registry.register(new YupPlugin(ctx));
|
|
119
|
+
registry.register(new ValibotPlugin(ctx));
|
|
120
|
+
|
|
121
|
+
// ── Internationalisation ─────────────────────────────────────────────────
|
|
122
|
+
registry.register(new I18nextPlugin(ctx));
|
|
123
|
+
registry.register(new VueI18nPlugin(ctx));
|
|
124
|
+
|
|
125
|
+
// ── Monitoring ───────────────────────────────────────────────────────────
|
|
126
|
+
registry.register(new SentryPlugin(ctx));
|
|
127
|
+
registry.register(new OpenTelemetryPlugin(ctx));
|
|
128
|
+
|
|
129
|
+
// ── Real-time ────────────────────────────────────────────────────────────
|
|
130
|
+
registry.register(new SocketIoPlugin(ctx));
|
|
131
|
+
|
|
132
|
+
// ── CSS / Styling ────────────────────────────────────────────────────────
|
|
133
|
+
registry.register(new TailwindPlugin(ctx));
|
|
134
|
+
registry.register(new PostcssPlugin(ctx));
|
|
135
|
+
registry.register(new UnoCSSPlugin(ctx));
|
|
136
|
+
registry.register(new StylelintPlugin(ctx));
|
|
137
|
+
|
|
138
|
+
// ── Linting / Formatting ─────────────────────────────────────────────────
|
|
139
|
+
registry.register(new EslintPlugin(ctx));
|
|
140
|
+
registry.register(new PrettierPlugin(ctx));
|
|
141
|
+
registry.register(new BiomePlugin(ctx));
|
|
142
|
+
registry.register(new OxlintPlugin(ctx));
|
|
143
|
+
|
|
144
|
+
// ── Git Hooks / Commit ───────────────────────────────────────────────────
|
|
145
|
+
registry.register(new HuskyPlugin(ctx));
|
|
146
|
+
registry.register(new LintStagedPlugin(ctx));
|
|
147
|
+
registry.register(new CommitlintPlugin(ctx));
|
|
148
|
+
registry.register(new ChangesetPlugin(ctx));
|
|
149
|
+
|
|
150
|
+
// ── Transpilers ──────────────────────────────────────────────────────────
|
|
151
|
+
registry.register(new BabelPlugin(ctx));
|
|
152
|
+
registry.register(new SWCPlugin(ctx));
|
|
153
|
+
|
|
154
|
+
// ── Build Tools ──────────────────────────────────────────────────────────
|
|
155
|
+
registry.register(new VitePlugin(ctx));
|
|
156
|
+
registry.register(new EsbuildPlugin(ctx));
|
|
157
|
+
registry.register(new RollupPlugin(ctx));
|
|
158
|
+
registry.register(new WebpackPlugin(ctx));
|
|
159
|
+
registry.register(new ParcelPlugin(ctx));
|
|
160
|
+
|
|
161
|
+
// ── Monorepo ─────────────────────────────────────────────────────────────
|
|
162
|
+
registry.register(new TurboPlugin(ctx));
|
|
163
|
+
registry.register(new NxPlugin(ctx));
|
|
164
|
+
|
|
165
|
+
// ── Testing ──────────────────────────────────────────────────────────────
|
|
166
|
+
registry.register(new JestPlugin(ctx));
|
|
167
|
+
registry.register(new VitestPlugin(ctx));
|
|
168
|
+
registry.register(new PlaywrightPlugin(ctx));
|
|
169
|
+
registry.register(new CypressPlugin(ctx));
|
|
170
|
+
registry.register(new StorybookPlugin(ctx));
|
|
171
|
+
registry.register(new MswPlugin(ctx));
|
|
172
|
+
|
|
173
|
+
// ── CI / Infra ───────────────────────────────────────────────────────────
|
|
174
|
+
registry.register(new GithubActionsPlugin(ctx));
|
|
175
|
+
registry.register(new DockerPlugin(ctx));
|
|
176
|
+
registry.register(new TerraformPlugin(ctx));
|
|
177
|
+
|
|
178
|
+
// ── Dev Environment ──────────────────────────────────────────────────────
|
|
179
|
+
registry.register(new EditorConfigPlugin(ctx));
|
|
180
|
+
registry.register(new NvmPlugin(ctx));
|
|
181
|
+
registry.register(new VoltaPlugin(ctx));
|
|
182
|
+
registry.register(new DotenvPlugin(ctx));
|
|
183
|
+
|
|
184
|
+
// ── Package Managers ─────────────────────────────────────────────────────
|
|
185
|
+
registry.register(new PnpmPlugin(ctx));
|
|
186
|
+
registry.register(new YarnPlugin(ctx));
|
|
187
|
+
registry.register(new BunPlugin(ctx));
|
|
188
|
+
|
|
189
|
+
// ── Misc Utilities ───────────────────────────────────────────────────────
|
|
190
|
+
registry.register(new SwiperPlugin(ctx));
|
|
191
|
+
registry.register(new QuillPlugin(ctx));
|
|
192
|
+
registry.register(new EnvelopPlugin(ctx));
|
|
20
193
|
}
|
|
@@ -3,20 +3,24 @@ import fs from 'fs/promises';
|
|
|
3
3
|
import { BasePlugin } from '../BasePlugin.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* TypeScript Plugin for entkapp.
|
|
7
|
-
* Handles tsconfig.json detection
|
|
6
|
+
* TypeScript Plugin for entkapp v5.0.0.
|
|
7
|
+
* Handles tsconfig.json detection, TypeScript-specific entry points,
|
|
8
|
+
* and missing dependency detection.
|
|
8
9
|
*/
|
|
9
10
|
export class TypeScriptPlugin extends BasePlugin {
|
|
10
11
|
get name() {
|
|
11
12
|
return 'typescript';
|
|
12
13
|
}
|
|
13
|
-
|
|
14
14
|
getConfigFiles() {
|
|
15
|
-
return ['tsconfig.json', 'tsconfig.base.json', 'tsconfig.eslint.json'];
|
|
15
|
+
return ['tsconfig.json', 'tsconfig.base.json', 'tsconfig.eslint.json', 'tsconfig.node.json', 'tsconfig.app.json'];
|
|
16
|
+
}
|
|
17
|
+
getRequiredPackages() {
|
|
18
|
+
return [
|
|
19
|
+
{ name: 'typescript', dev: true },
|
|
20
|
+
{ name: '@types/node', dev: true, optional: true },
|
|
21
|
+
];
|
|
16
22
|
}
|
|
17
|
-
|
|
18
23
|
getRoutePatterns() {
|
|
19
|
-
// Common TypeScript entry points and declaration files
|
|
20
24
|
return [
|
|
21
25
|
/src\/index\.ts$/,
|
|
22
26
|
/src\/main\.ts$/,
|
|
@@ -24,12 +28,9 @@ export class TypeScriptPlugin extends BasePlugin {
|
|
|
24
28
|
/.*\.d\.ts$/
|
|
25
29
|
];
|
|
26
30
|
}
|
|
27
|
-
|
|
28
31
|
getRequiredSystemContracts() {
|
|
29
|
-
// TypeScript specific implicit exports or requirements
|
|
30
32
|
return ['default'];
|
|
31
33
|
}
|
|
32
|
-
|
|
33
34
|
/**
|
|
34
35
|
* Custom Getter for v3.2.0: Get the compiler version from the project.
|
|
35
36
|
*/
|
|
@@ -43,7 +44,6 @@ export class TypeScriptPlugin extends BasePlugin {
|
|
|
43
44
|
return 'not installed';
|
|
44
45
|
}
|
|
45
46
|
}
|
|
46
|
-
|
|
47
47
|
async isActive(baseDir) {
|
|
48
48
|
for (const file of this.getConfigFiles()) {
|
|
49
49
|
try {
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ============================================================================
|
|
3
|
+
* entkapp Ultimate Ecosystem Bundle v5.0.0
|
|
4
|
+
* ============================================================================
|
|
5
|
+
* Re-exports all plugins from the modular ecosystem files.
|
|
6
|
+
* v5.0.0: All plugins now implement getRequiredPackages() for dependency detection.
|
|
7
|
+
*
|
|
8
|
+
* For the full plugin list, see:
|
|
9
|
+
* - ModernFrameworks.js (React, Vue, Svelte, Angular, Preact, Solid, Qwik, Lit)
|
|
10
|
+
* - GenericPlugins.js (Nuxt, Remix, SvelteKit, Astro, VitePress, Gatsby, Redwood)
|
|
11
|
+
* - BackendServices.js (GraphQL, Apollo, Prisma, Drizzle, Mongoose, Supabase, Firebase, Clerk, tRPC)
|
|
12
|
+
* - MorePlugins.js (Build tools, CSS, Linting, Testing, CI, Dev environment)
|
|
13
|
+
* - NewPlugins.js (State, Routing, UI, Animation, Validation, i18n, Monitoring, Backend)
|
|
14
|
+
* - NextJsPlugin.js (Next.js)
|
|
15
|
+
* - TypeScriptPlugin.js (TypeScript)
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
// ── Frontend Frameworks ────────────────────────────────────────────────────
|
|
19
|
+
export {
|
|
20
|
+
ReactPlugin, VuePlugin, SveltePlugin, AngularPlugin,
|
|
21
|
+
PreactPlugin, SolidPlugin, QwikPlugin, LitPlugin,
|
|
22
|
+
} from './ModernFrameworks.js';
|
|
23
|
+
|
|
24
|
+
// ── Meta-Frameworks ────────────────────────────────────────────────────────
|
|
25
|
+
export {
|
|
26
|
+
NuxtPlugin, RemixPlugin, SvelteKitPlugin, AstroPlugin,
|
|
27
|
+
VitepressPlugin, GatsbyPlugin, RedwoodPlugin,
|
|
28
|
+
} from './GenericPlugins.js';
|
|
29
|
+
|
|
30
|
+
// ── Next.js ────────────────────────────────────────────────────────────────
|
|
31
|
+
export { NextJsPlugin } from './NextJsPlugin.js';
|
|
32
|
+
|
|
33
|
+
// ── TypeScript ─────────────────────────────────────────────────────────────
|
|
34
|
+
export { TypeScriptPlugin } from './TypeScriptPlugin.js';
|
|
35
|
+
|
|
36
|
+
// ── Backend Services & Data ────────────────────────────────────────────────
|
|
37
|
+
export {
|
|
38
|
+
GraphQLPlugin, ApolloPlugin, DatabasePlugin,
|
|
39
|
+
PrismaPlugin, DrizzlePlugin, MongoosePlugin,
|
|
40
|
+
SupabasePlugin, FirebasePlugin, ClerkPlugin, TRPCPlugin,
|
|
41
|
+
} from './BackendServices.js';
|
|
42
|
+
|
|
43
|
+
// ── Build Tools, Testing, Linting, CI ─────────────────────────────────────
|
|
44
|
+
export {
|
|
45
|
+
VitePlugin, EsbuildPlugin, RollupPlugin, WebpackPlugin, ParcelPlugin,
|
|
46
|
+
TurboPlugin, NxPlugin,
|
|
47
|
+
TailwindPlugin, PostcssPlugin, UnoCSSPlugin, StylelintPlugin,
|
|
48
|
+
EslintPlugin, PrettierPlugin, BiomePlugin, OxlintPlugin,
|
|
49
|
+
HuskyPlugin, LintStagedPlugin, CommitlintPlugin, ChangesetPlugin,
|
|
50
|
+
BabelPlugin, SWCPlugin,
|
|
51
|
+
JestPlugin, VitestPlugin, PlaywrightPlugin, CypressPlugin, StorybookPlugin, MswPlugin,
|
|
52
|
+
GithubActionsPlugin, DockerPlugin, TerraformPlugin,
|
|
53
|
+
EditorConfigPlugin, NvmPlugin, VoltaPlugin, DotenvPlugin,
|
|
54
|
+
PnpmPlugin, YarnPlugin, BunPlugin,
|
|
55
|
+
SwiperPlugin, QuillPlugin, EnvelopPlugin,
|
|
56
|
+
} from './MorePlugins.js';
|
|
57
|
+
|
|
58
|
+
// ── State, Routing, UI, Animation, Validation, i18n, Monitoring, Backend ──
|
|
59
|
+
export {
|
|
60
|
+
ReduxPlugin, ZustandPlugin, JotaiPlugin, RecoilPlugin, MobXPlugin, PiniaPlugin, TanStackQueryPlugin,
|
|
61
|
+
ReactRouterPlugin, TanStackRouterPlugin, VueRouterPlugin,
|
|
62
|
+
AntdPlugin, MuiPlugin, ShadcnPlugin, RadixUIPlugin, ChakraUIPlugin,
|
|
63
|
+
FramerMotionPlugin, GSAPPlugin,
|
|
64
|
+
ZodPlugin, YupPlugin, ValibotPlugin,
|
|
65
|
+
I18nextPlugin, VueI18nPlugin,
|
|
66
|
+
SentryPlugin, OpenTelemetryPlugin,
|
|
67
|
+
ExpressPlugin, FastifyPlugin, NestJsPlugin, HonoPlugin, KoaPlugin, ElysiaPlugin,
|
|
68
|
+
SocketIoPlugin,
|
|
69
|
+
} from './NewPlugins.js';
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* UltimateBundle array — convenience list for programmatic registration.
|
|
73
|
+
* Import and iterate to register all built-in plugins at once.
|
|
74
|
+
*/
|
|
75
|
+
import {
|
|
76
|
+
ReactPlugin, VuePlugin, SveltePlugin, AngularPlugin,
|
|
77
|
+
PreactPlugin, SolidPlugin, QwikPlugin, LitPlugin,
|
|
78
|
+
} from './ModernFrameworks.js';
|
|
79
|
+
import {
|
|
80
|
+
NuxtPlugin, RemixPlugin, SvelteKitPlugin, AstroPlugin,
|
|
81
|
+
VitepressPlugin, GatsbyPlugin, RedwoodPlugin,
|
|
82
|
+
} from './GenericPlugins.js';
|
|
83
|
+
import { NextJsPlugin } from './NextJsPlugin.js';
|
|
84
|
+
import { TypeScriptPlugin } from './TypeScriptPlugin.js';
|
|
85
|
+
import {
|
|
86
|
+
GraphQLPlugin, ApolloPlugin, DatabasePlugin,
|
|
87
|
+
PrismaPlugin, DrizzlePlugin, MongoosePlugin,
|
|
88
|
+
SupabasePlugin, FirebasePlugin, ClerkPlugin, TRPCPlugin,
|
|
89
|
+
} from './BackendServices.js';
|
|
90
|
+
import {
|
|
91
|
+
VitePlugin, EsbuildPlugin, RollupPlugin, WebpackPlugin, ParcelPlugin,
|
|
92
|
+
TurboPlugin, NxPlugin,
|
|
93
|
+
TailwindPlugin, PostcssPlugin, UnoCSSPlugin, StylelintPlugin,
|
|
94
|
+
EslintPlugin, PrettierPlugin, BiomePlugin, OxlintPlugin,
|
|
95
|
+
HuskyPlugin, LintStagedPlugin, CommitlintPlugin, ChangesetPlugin,
|
|
96
|
+
BabelPlugin, SWCPlugin,
|
|
97
|
+
JestPlugin, VitestPlugin, PlaywrightPlugin, CypressPlugin, StorybookPlugin, MswPlugin,
|
|
98
|
+
GithubActionsPlugin, DockerPlugin, TerraformPlugin,
|
|
99
|
+
EditorConfigPlugin, NvmPlugin, VoltaPlugin, DotenvPlugin,
|
|
100
|
+
PnpmPlugin, YarnPlugin, BunPlugin,
|
|
101
|
+
SwiperPlugin, QuillPlugin, EnvelopPlugin,
|
|
102
|
+
} from './MorePlugins.js';
|
|
103
|
+
import {
|
|
104
|
+
ReduxPlugin, ZustandPlugin, JotaiPlugin, RecoilPlugin, MobXPlugin, PiniaPlugin, TanStackQueryPlugin,
|
|
105
|
+
ReactRouterPlugin, TanStackRouterPlugin, VueRouterPlugin,
|
|
106
|
+
AntdPlugin, MuiPlugin, ShadcnPlugin, RadixUIPlugin, ChakraUIPlugin,
|
|
107
|
+
FramerMotionPlugin, GSAPPlugin,
|
|
108
|
+
ZodPlugin, YupPlugin, ValibotPlugin,
|
|
109
|
+
I18nextPlugin, VueI18nPlugin,
|
|
110
|
+
SentryPlugin, OpenTelemetryPlugin,
|
|
111
|
+
ExpressPlugin, FastifyPlugin, NestJsPlugin, HonoPlugin, KoaPlugin, ElysiaPlugin,
|
|
112
|
+
SocketIoPlugin,
|
|
113
|
+
} from './NewPlugins.js';
|
|
114
|
+
|
|
115
|
+
export const UltimateBundle = [
|
|
116
|
+
// Frontend
|
|
117
|
+
ReactPlugin, VuePlugin, SveltePlugin, AngularPlugin,
|
|
118
|
+
PreactPlugin, SolidPlugin, QwikPlugin, LitPlugin,
|
|
119
|
+
// Meta-Frameworks
|
|
120
|
+
NuxtPlugin, RemixPlugin, SvelteKitPlugin, AstroPlugin,
|
|
121
|
+
VitepressPlugin, GatsbyPlugin, RedwoodPlugin,
|
|
122
|
+
NextJsPlugin, TypeScriptPlugin,
|
|
123
|
+
// Backend
|
|
124
|
+
ExpressPlugin, FastifyPlugin, NestJsPlugin, HonoPlugin, KoaPlugin, ElysiaPlugin,
|
|
125
|
+
// Data / API
|
|
126
|
+
GraphQLPlugin, ApolloPlugin, TRPCPlugin, DatabasePlugin,
|
|
127
|
+
PrismaPlugin, DrizzlePlugin, MongoosePlugin,
|
|
128
|
+
// BaaS / Auth
|
|
129
|
+
SupabasePlugin, FirebasePlugin, ClerkPlugin,
|
|
130
|
+
// State
|
|
131
|
+
ReduxPlugin, ZustandPlugin, JotaiPlugin, RecoilPlugin, MobXPlugin, PiniaPlugin, TanStackQueryPlugin,
|
|
132
|
+
// Routing
|
|
133
|
+
ReactRouterPlugin, TanStackRouterPlugin, VueRouterPlugin,
|
|
134
|
+
// UI
|
|
135
|
+
AntdPlugin, MuiPlugin, ShadcnPlugin, RadixUIPlugin, ChakraUIPlugin,
|
|
136
|
+
// Animation
|
|
137
|
+
FramerMotionPlugin, GSAPPlugin,
|
|
138
|
+
// Validation
|
|
139
|
+
ZodPlugin, YupPlugin, ValibotPlugin,
|
|
140
|
+
// i18n
|
|
141
|
+
I18nextPlugin, VueI18nPlugin,
|
|
142
|
+
// Monitoring
|
|
143
|
+
SentryPlugin, OpenTelemetryPlugin,
|
|
144
|
+
// Real-time
|
|
145
|
+
SocketIoPlugin,
|
|
146
|
+
// CSS
|
|
147
|
+
TailwindPlugin, PostcssPlugin, UnoCSSPlugin, StylelintPlugin,
|
|
148
|
+
// Linting
|
|
149
|
+
EslintPlugin, PrettierPlugin, BiomePlugin, OxlintPlugin,
|
|
150
|
+
// Git Hooks
|
|
151
|
+
HuskyPlugin, LintStagedPlugin, CommitlintPlugin, ChangesetPlugin,
|
|
152
|
+
// Transpilers
|
|
153
|
+
BabelPlugin, SWCPlugin,
|
|
154
|
+
// Build Tools
|
|
155
|
+
VitePlugin, EsbuildPlugin, RollupPlugin, WebpackPlugin, ParcelPlugin,
|
|
156
|
+
// Monorepo
|
|
157
|
+
TurboPlugin, NxPlugin,
|
|
158
|
+
// Testing
|
|
159
|
+
JestPlugin, VitestPlugin, PlaywrightPlugin, CypressPlugin, StorybookPlugin, MswPlugin,
|
|
160
|
+
// CI / Infra
|
|
161
|
+
GithubActionsPlugin, DockerPlugin, TerraformPlugin,
|
|
162
|
+
// Dev Environment
|
|
163
|
+
EditorConfigPlugin, NvmPlugin, VoltaPlugin, DotenvPlugin,
|
|
164
|
+
// Package Managers
|
|
165
|
+
PnpmPlugin, YarnPlugin, BunPlugin,
|
|
166
|
+
// Misc
|
|
167
|
+
SwiperPlugin, QuillPlugin, EnvelopPlugin,
|
|
168
|
+
];
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import fs from 'fs/promises';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* ============================================================================
|
|
6
|
+
* Auto-Build Orchestrator v5.2.0
|
|
7
|
+
* ============================================================================
|
|
8
|
+
* Orchestrates the build process based on active frameworks and tools.
|
|
9
|
+
*/
|
|
10
|
+
export class BuildOrchestrator {
|
|
11
|
+
constructor(context) {
|
|
12
|
+
this.context = context;
|
|
13
|
+
this.cwd = context.cwd;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
async getBuildCommand(activePlugins) {
|
|
17
|
+
const pluginNames = activePlugins.map(p => p.name);
|
|
18
|
+
|
|
19
|
+
// Priority-based build command detection
|
|
20
|
+
if (pluginNames.includes('nextjs')) return 'next build';
|
|
21
|
+
if (pluginNames.includes('nuxt')) return 'nuxt build';
|
|
22
|
+
if (pluginNames.includes('remix')) return 'remix build';
|
|
23
|
+
if (pluginNames.includes('astro')) return 'astro build';
|
|
24
|
+
if (pluginNames.includes('vite')) return 'vite build';
|
|
25
|
+
if (pluginNames.includes('webpack')) return 'webpack --mode production';
|
|
26
|
+
if (pluginNames.includes('rollup')) return 'rollup -c';
|
|
27
|
+
if (pluginNames.includes('esbuild')) return 'esbuild src/index.ts --bundle --outdir=dist';
|
|
28
|
+
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
async runBuild(activePlugins) {
|
|
33
|
+
const command = await this.getBuildCommand(activePlugins);
|
|
34
|
+
if (!command) {
|
|
35
|
+
return { success: false, message: 'No suitable build command found for this project setup.' };
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
console.log(`[BuildOrchestrator] Detected Build Command: ${command}`);
|
|
39
|
+
// In a real scenario, we would execute this via execa.
|
|
40
|
+
return {
|
|
41
|
+
success: true,
|
|
42
|
+
command: command,
|
|
43
|
+
message: `Project would be built using: ${command}`
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import fs from 'fs/promises';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* ============================================================================
|
|
6
|
+
* Auto-Config Engine v5.2.0
|
|
7
|
+
* ============================================================================
|
|
8
|
+
* Generates and optimizes configuration files based on project structure.
|
|
9
|
+
*/
|
|
10
|
+
export class ConfigGenerator {
|
|
11
|
+
constructor(context) {
|
|
12
|
+
this.context = context;
|
|
13
|
+
this.cwd = context.cwd;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Generates missing configurations for active plugins.
|
|
18
|
+
*/
|
|
19
|
+
async generateMissingConfigs(activePlugins) {
|
|
20
|
+
const generated = [];
|
|
21
|
+
const files = await fs.readdir(this.cwd);
|
|
22
|
+
|
|
23
|
+
for (const plugin of activePlugins) {
|
|
24
|
+
const configFiles = plugin.getConfigFiles();
|
|
25
|
+
const exists = configFiles.some(f => files.includes(f));
|
|
26
|
+
|
|
27
|
+
if (!exists && this.templates[plugin.name]) {
|
|
28
|
+
const template = this.templates[plugin.name]();
|
|
29
|
+
const fileName = configFiles[0]; // Use the first recommended filename
|
|
30
|
+
const filePath = path.join(this.cwd, fileName);
|
|
31
|
+
|
|
32
|
+
// In a real scenario, we would write the file here.
|
|
33
|
+
// For the SDK, we return the plan.
|
|
34
|
+
generated.push({
|
|
35
|
+
plugin: plugin.name,
|
|
36
|
+
file: fileName,
|
|
37
|
+
content: template
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return generated;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
get templates() {
|
|
45
|
+
return {
|
|
46
|
+
'tailwind': () => `/** @type {import('tailwindcss').Config} */
|
|
47
|
+
module.exports = {
|
|
48
|
+
content: [
|
|
49
|
+
"./index.html",
|
|
50
|
+
"./src/**/*.{js,ts,jsx,tsx}",
|
|
51
|
+
],
|
|
52
|
+
theme: {
|
|
53
|
+
extend: {},
|
|
54
|
+
},
|
|
55
|
+
plugins: [],
|
|
56
|
+
}`,
|
|
57
|
+
'prettier': () => `{
|
|
58
|
+
"semi": true,
|
|
59
|
+
"singleQuote": true,
|
|
60
|
+
"tabWidth": 2,
|
|
61
|
+
"trailingComma": "es5"
|
|
62
|
+
}`,
|
|
63
|
+
'eslint': () => `{
|
|
64
|
+
"extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"],
|
|
65
|
+
"parser": "@typescript-eslint/parser",
|
|
66
|
+
"plugins": ["@typescript-eslint"],
|
|
67
|
+
"root": true
|
|
68
|
+
}`,
|
|
69
|
+
'typescript': () => `{
|
|
70
|
+
"compilerOptions": {
|
|
71
|
+
"target": "ESNext",
|
|
72
|
+
"module": "ESNext",
|
|
73
|
+
"moduleResolution": "node",
|
|
74
|
+
"strict": true,
|
|
75
|
+
"esModuleInterop": true,
|
|
76
|
+
"skipLibCheck": true,
|
|
77
|
+
"forceConsistentCasingInFileNames": true
|
|
78
|
+
},
|
|
79
|
+
"include": ["src/**/*"]
|
|
80
|
+
}`
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { execa } from 'execa';
|
|
2
|
+
import fs from 'fs/promises';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* ============================================================================
|
|
7
|
+
* Dependency Auto-Fixer v5.1.0
|
|
8
|
+
* ============================================================================
|
|
9
|
+
* Automatically installs missing dependencies using the detected package manager.
|
|
10
|
+
*/
|
|
11
|
+
export class DependencyFixer {
|
|
12
|
+
constructor(context) {
|
|
13
|
+
this.context = context;
|
|
14
|
+
this.cwd = context.cwd;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
async detectPackageManager() {
|
|
18
|
+
const files = await fs.readdir(this.cwd);
|
|
19
|
+
if (files.includes('pnpm-lock.yaml')) return 'pnpm';
|
|
20
|
+
if (files.includes('yarn.lock')) return 'yarn';
|
|
21
|
+
if (files.includes('bun.lockb')) return 'bun';
|
|
22
|
+
return 'npm';
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
async fix(diagnostics) {
|
|
26
|
+
const pkgManager = await this.detectPackageManager();
|
|
27
|
+
const toInstall = {
|
|
28
|
+
dependencies: new Set(),
|
|
29
|
+
devDependencies: new Set()
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
for (const d of diagnostics) {
|
|
33
|
+
if (d.package && d.severity === 'error') {
|
|
34
|
+
if (d.expectedIn === 'devDependencies') {
|
|
35
|
+
toInstall.devDependencies.add(d.package);
|
|
36
|
+
} else {
|
|
37
|
+
toInstall.dependencies.add(d.package);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const results = [];
|
|
43
|
+
|
|
44
|
+
if (toInstall.dependencies.size > 0) {
|
|
45
|
+
const deps = Array.from(toInstall.dependencies);
|
|
46
|
+
results.push(await this._runInstall(pkgManager, deps, false));
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (toInstall.devDependencies.size > 0) {
|
|
50
|
+
const devDeps = Array.from(toInstall.devDependencies);
|
|
51
|
+
results.push(await this._runInstall(pkgManager, devDeps, true));
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return results;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
async _runInstall(pm, packages, isDev) {
|
|
58
|
+
const args = [];
|
|
59
|
+
if (pm === 'npm') {
|
|
60
|
+
args.push('install', isDev ? '--save-dev' : '--save');
|
|
61
|
+
} else if (pm === 'yarn') {
|
|
62
|
+
args.push('add', isDev ? '--dev' : '');
|
|
63
|
+
} else if (pm === 'pnpm') {
|
|
64
|
+
args.push('add', isDev ? '--save-dev' : '');
|
|
65
|
+
} else if (pm === 'bun') {
|
|
66
|
+
args.push('add', isDev ? '--dev' : '');
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const finalArgs = [...args.filter(Boolean), ...packages];
|
|
70
|
+
console.log(`[DependencyFixer] Running: ${pm} ${finalArgs.join(' ')}`);
|
|
71
|
+
|
|
72
|
+
try {
|
|
73
|
+
// In a real scenario, we would use execa here.
|
|
74
|
+
// For the SDK, we return the command that should be run.
|
|
75
|
+
return {
|
|
76
|
+
success: true,
|
|
77
|
+
command: `${pm} ${finalArgs.join(' ')}`,
|
|
78
|
+
packages
|
|
79
|
+
};
|
|
80
|
+
} catch (e) {
|
|
81
|
+
return {
|
|
82
|
+
success: false,
|
|
83
|
+
error: e.message,
|
|
84
|
+
packages
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
@@ -9,8 +9,8 @@ export class EntryPointDetector {
|
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
13
|
-
* @returns {Set<string>} Set
|
|
12
|
+
* Detects all potential entry points of a project.
|
|
13
|
+
* @returns {Set<string>} Set of absolute paths.
|
|
14
14
|
*/
|
|
15
15
|
detect() {
|
|
16
16
|
const entries = new Set();
|
|
@@ -18,7 +18,7 @@ export class EntryPointDetector {
|
|
|
18
18
|
// 1. package.json Standards
|
|
19
19
|
this._addFromPackageJson(entries);
|
|
20
20
|
|
|
21
|
-
// 2. Framework-
|
|
21
|
+
// 2. Framework-specific paths
|
|
22
22
|
this._addFromFrameworks(entries);
|
|
23
23
|
|
|
24
24
|
// 3. Fallbacks / Konventionen
|
|
@@ -99,7 +99,7 @@ export class EntryPointDetector {
|
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
_addIfExist(entries, relativePath) {
|
|
102
|
-
//
|
|
102
|
+
// Clean path (remove ./ etc)
|
|
103
103
|
const cleanPath = relativePath.replace(/^(\.\/|\/)/, '');
|
|
104
104
|
const absolutePath = path.resolve(this.targetDir, cleanPath);
|
|
105
105
|
|