entkapp 5.0.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/bin/cli.js +2 -2
- 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/ASTAnalyzer.js +29 -14
- package/src/ast/BarrelParser.js +22 -20
- package/src/ast/OxcAnalyzer.js +33 -409
- package/src/index.js +78 -8
- 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/CircularDetector.js +64 -25
- package/src/resolution/ConfigGenerator.js +83 -0
- package/src/resolution/DepencyResolver.js +12 -1
- 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 +47 -3
- package/src/resolution/WorkSpaceGraph.js +4 -1
- package/docs.zip +0 -0
|
@@ -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
|
+
}
|
|
@@ -6,47 +6,86 @@ export class CircularDetector {
|
|
|
6
6
|
this.cycles = [];
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
detectCycles(projectGraph
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
9
|
+
detectCycles(projectGraph) {
|
|
10
|
+
const stack = [];
|
|
11
|
+
const onStack = new Set();
|
|
12
|
+
const indices = new Map();
|
|
13
|
+
const lowlink = new Map();
|
|
14
|
+
const sccs = [];
|
|
15
|
+
let index = 0;
|
|
13
16
|
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
const strongConnect = (v) => {
|
|
18
|
+
indices.set(v, index);
|
|
19
|
+
lowlink.set(v, index);
|
|
20
|
+
index++;
|
|
21
|
+
stack.push(v);
|
|
22
|
+
onStack.add(v);
|
|
18
23
|
|
|
19
|
-
const node = projectGraph.get(
|
|
24
|
+
const node = projectGraph.get(v);
|
|
20
25
|
if (node && node.outgoingEdges) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
// Ensure outgoingEdges is treated as an array-like structure
|
|
27
|
+
const edges = Array.isArray(node.outgoingEdges) ? node.outgoingEdges : Array.from(node.outgoingEdges);
|
|
28
|
+
|
|
29
|
+
for (let i = 0; i < edges.length; i++) {
|
|
30
|
+
const w = edges[i];
|
|
31
|
+
if (!indices.has(w)) {
|
|
32
|
+
strongConnect(w);
|
|
33
|
+
lowlink.set(v, Math.min(lowlink.get(v), lowlink.get(w)));
|
|
34
|
+
} else if (onStack.has(w)) {
|
|
35
|
+
lowlink.set(v, Math.min(lowlink.get(v), indices.get(w)));
|
|
29
36
|
}
|
|
30
37
|
}
|
|
31
38
|
}
|
|
32
39
|
|
|
33
|
-
|
|
34
|
-
|
|
40
|
+
if (lowlink.get(v) === indices.get(v)) {
|
|
41
|
+
const scc = [];
|
|
42
|
+
let w;
|
|
43
|
+
do {
|
|
44
|
+
w = stack.pop();
|
|
45
|
+
onStack.delete(w);
|
|
46
|
+
scc.push(w);
|
|
47
|
+
} while (w !== v);
|
|
48
|
+
|
|
49
|
+
if (scc.length > 1) {
|
|
50
|
+
const cycle = scc.slice().reverse();
|
|
51
|
+
cycle.push(cycle[0]);
|
|
52
|
+
sccs.push(cycle);
|
|
53
|
+
} else if (scc.length === 1) {
|
|
54
|
+
const singleNode = projectGraph.get(scc[0]);
|
|
55
|
+
if (singleNode && singleNode.outgoingEdges) {
|
|
56
|
+
const edges = Array.isArray(singleNode.outgoingEdges) ? singleNode.outgoingEdges : Array.from(singleNode.outgoingEdges);
|
|
57
|
+
let hasSelfLoop = false;
|
|
58
|
+
for (let i = 0; i < edges.length; i++) {
|
|
59
|
+
if (edges[i] === scc[0]) {
|
|
60
|
+
hasSelfLoop = true;
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (hasSelfLoop) {
|
|
65
|
+
sccs.push([scc[0], scc[0]]);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
35
70
|
};
|
|
36
71
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
72
|
+
const keys = Array.from(projectGraph.keys());
|
|
73
|
+
for (let i = 0; i < keys.length; i++) {
|
|
74
|
+
if (!indices.has(keys[i])) {
|
|
75
|
+
strongConnect(keys[i]);
|
|
40
76
|
}
|
|
41
77
|
}
|
|
42
78
|
|
|
43
|
-
this.cycles =
|
|
44
|
-
return
|
|
79
|
+
this.cycles = sccs;
|
|
80
|
+
return sccs;
|
|
45
81
|
}
|
|
46
82
|
|
|
47
83
|
formatCycles() {
|
|
48
84
|
return this.cycles.map(cycle => {
|
|
49
|
-
return cycle.map(p =>
|
|
85
|
+
return cycle.map(p => {
|
|
86
|
+
const relativePath = path.relative(this.context.cwd, p);
|
|
87
|
+
return relativePath.replace(/\\/g, '/');
|
|
88
|
+
}).join(' -> ');
|
|
50
89
|
});
|
|
51
90
|
}
|
|
52
91
|
}
|
|
@@ -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
|
+
}
|