baseguard 1.0.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/.eslintrc.json +25 -0
- package/.prettierrc +8 -0
- package/README.md +94 -0
- package/bin/base.js +494 -0
- package/dist/ai/fix-manager.d.ts +67 -0
- package/dist/ai/fix-manager.d.ts.map +1 -0
- package/dist/ai/fix-manager.js +326 -0
- package/dist/ai/fix-manager.js.map +1 -0
- package/dist/ai/gemini-analyzer.d.ts +116 -0
- package/dist/ai/gemini-analyzer.d.ts.map +1 -0
- package/dist/ai/gemini-analyzer.js +572 -0
- package/dist/ai/gemini-analyzer.js.map +1 -0
- package/dist/ai/index.d.ts +4 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +5 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/jules-implementer.d.ts +115 -0
- package/dist/ai/jules-implementer.d.ts.map +1 -0
- package/dist/ai/jules-implementer.js +387 -0
- package/dist/ai/jules-implementer.js.map +1 -0
- package/dist/commands/automation.d.ts +5 -0
- package/dist/commands/automation.d.ts.map +1 -0
- package/dist/commands/automation.js +305 -0
- package/dist/commands/automation.js.map +1 -0
- package/dist/commands/check.d.ts +9 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +113 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/config.d.ts +11 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +324 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/fix.d.ts +9 -0
- package/dist/commands/fix.d.ts.map +1 -0
- package/dist/commands/fix.js +207 -0
- package/dist/commands/fix.js.map +1 -0
- package/dist/commands/index.d.ts +6 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +7 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +9 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +125 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/core/api-key-manager.d.ts +83 -0
- package/dist/core/api-key-manager.d.ts.map +1 -0
- package/dist/core/api-key-manager.js +244 -0
- package/dist/core/api-key-manager.js.map +1 -0
- package/dist/core/baseguard.d.ts +46 -0
- package/dist/core/baseguard.d.ts.map +1 -0
- package/dist/core/baseguard.js +132 -0
- package/dist/core/baseguard.js.map +1 -0
- package/dist/core/baseline-checker.d.ts +63 -0
- package/dist/core/baseline-checker.d.ts.map +1 -0
- package/dist/core/baseline-checker.js +502 -0
- package/dist/core/baseline-checker.js.map +1 -0
- package/dist/core/cache-manager.d.ts +88 -0
- package/dist/core/cache-manager.d.ts.map +1 -0
- package/dist/core/cache-manager.js +213 -0
- package/dist/core/cache-manager.js.map +1 -0
- package/dist/core/configuration.d.ts +140 -0
- package/dist/core/configuration.d.ts.map +1 -0
- package/dist/core/configuration.js +474 -0
- package/dist/core/configuration.js.map +1 -0
- package/dist/core/directory-filter.d.ts +90 -0
- package/dist/core/directory-filter.d.ts.map +1 -0
- package/dist/core/directory-filter.js +319 -0
- package/dist/core/directory-filter.js.map +1 -0
- package/dist/core/error-handler.d.ts +110 -0
- package/dist/core/error-handler.d.ts.map +1 -0
- package/dist/core/error-handler.js +392 -0
- package/dist/core/error-handler.js.map +1 -0
- package/dist/core/file-processor.d.ts +80 -0
- package/dist/core/file-processor.d.ts.map +1 -0
- package/dist/core/file-processor.js +259 -0
- package/dist/core/file-processor.js.map +1 -0
- package/dist/core/gitignore-manager.d.ts +44 -0
- package/dist/core/gitignore-manager.d.ts.map +1 -0
- package/dist/core/gitignore-manager.js +147 -0
- package/dist/core/gitignore-manager.js.map +1 -0
- package/dist/core/index.d.ts +13 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +13 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/lazy-loader.d.ts +68 -0
- package/dist/core/lazy-loader.d.ts.map +1 -0
- package/dist/core/lazy-loader.js +260 -0
- package/dist/core/lazy-loader.js.map +1 -0
- package/dist/core/memory-manager.d.ts +1 -0
- package/dist/core/memory-manager.d.ts.map +1 -0
- package/dist/core/memory-manager.js +2 -0
- package/dist/core/memory-manager.js.map +1 -0
- package/dist/core/startup-optimizer.d.ts +45 -0
- package/dist/core/startup-optimizer.d.ts.map +1 -0
- package/dist/core/startup-optimizer.js +140 -0
- package/dist/core/startup-optimizer.js.map +1 -0
- package/dist/git/automation-engine.d.ts +58 -0
- package/dist/git/automation-engine.d.ts.map +1 -0
- package/dist/git/automation-engine.js +318 -0
- package/dist/git/automation-engine.js.map +1 -0
- package/dist/git/github-manager.d.ts +71 -0
- package/dist/git/github-manager.d.ts.map +1 -0
- package/dist/git/github-manager.js +226 -0
- package/dist/git/github-manager.js.map +1 -0
- package/dist/git/hook-manager.d.ts +43 -0
- package/dist/git/hook-manager.d.ts.map +1 -0
- package/dist/git/hook-manager.js +191 -0
- package/dist/git/hook-manager.js.map +1 -0
- package/dist/git/index.d.ts +4 -0
- package/dist/git/index.d.ts.map +1 -0
- package/dist/git/index.js +5 -0
- package/dist/git/index.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/parsers/feature-validator.d.ts +60 -0
- package/dist/parsers/feature-validator.d.ts.map +1 -0
- package/dist/parsers/feature-validator.js +483 -0
- package/dist/parsers/feature-validator.js.map +1 -0
- package/dist/parsers/index.d.ts +8 -0
- package/dist/parsers/index.d.ts.map +1 -0
- package/dist/parsers/index.js +9 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/parsers/parser-manager.d.ts +103 -0
- package/dist/parsers/parser-manager.d.ts.map +1 -0
- package/dist/parsers/parser-manager.js +321 -0
- package/dist/parsers/parser-manager.js.map +1 -0
- package/dist/parsers/parser.d.ts +23 -0
- package/dist/parsers/parser.d.ts.map +1 -0
- package/dist/parsers/parser.js +6 -0
- package/dist/parsers/parser.js.map +1 -0
- package/dist/parsers/react-parser.d.ts +22 -0
- package/dist/parsers/react-parser.d.ts.map +1 -0
- package/dist/parsers/react-parser.js +307 -0
- package/dist/parsers/react-parser.js.map +1 -0
- package/dist/parsers/svelte-parser.d.ts +33 -0
- package/dist/parsers/svelte-parser.d.ts.map +1 -0
- package/dist/parsers/svelte-parser.js +408 -0
- package/dist/parsers/svelte-parser.js.map +1 -0
- package/dist/parsers/vanilla-parser.d.ts +31 -0
- package/dist/parsers/vanilla-parser.d.ts.map +1 -0
- package/dist/parsers/vanilla-parser.js +590 -0
- package/dist/parsers/vanilla-parser.js.map +1 -0
- package/dist/parsers/vue-parser.d.ts +9 -0
- package/dist/parsers/vue-parser.d.ts.map +1 -0
- package/dist/parsers/vue-parser.js +16 -0
- package/dist/parsers/vue-parser.js.map +1 -0
- package/dist/terminal-header.d.ts +12 -0
- package/dist/terminal-header.js +45 -0
- package/dist/types/index.d.ts +83 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/ui/components.d.ts +133 -0
- package/dist/ui/components.d.ts.map +1 -0
- package/dist/ui/components.js +482 -0
- package/dist/ui/components.js.map +1 -0
- package/dist/ui/help.d.ts +11 -0
- package/dist/ui/help.d.ts.map +1 -0
- package/dist/ui/help.js +161 -0
- package/dist/ui/help.js.map +1 -0
- package/dist/ui/index.d.ts +5 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +5 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/prompts.d.ts +63 -0
- package/dist/ui/prompts.d.ts.map +1 -0
- package/dist/ui/prompts.js +611 -0
- package/dist/ui/prompts.js.map +1 -0
- package/dist/ui/terminal-header.d.ts +13 -0
- package/dist/ui/terminal-header.d.ts.map +1 -0
- package/dist/ui/terminal-header.js +46 -0
- package/dist/ui/terminal-header.js.map +1 -0
- package/package.json +80 -0
- package/src/ai/__tests__/gemini-analyzer.test.ts +181 -0
- package/src/ai/fix-manager.ts +362 -0
- package/src/ai/gemini-analyzer.ts +671 -0
- package/src/ai/index.ts +4 -0
- package/src/ai/jules-implementer.ts +459 -0
- package/src/commands/automation.ts +344 -0
- package/src/commands/check.ts +299 -0
- package/src/commands/config.ts +365 -0
- package/src/commands/fix.ts +234 -0
- package/src/commands/index.ts +6 -0
- package/src/commands/init.ts +142 -0
- package/src/commands/status.ts +0 -0
- package/src/core/api-key-manager.ts +298 -0
- package/src/core/baseguard.ts +742 -0
- package/src/core/baseline-checker.ts +563 -0
- package/src/core/cache-manager.ts +270 -0
- package/src/core/configuration-recovery.ts +676 -0
- package/src/core/configuration.ts +559 -0
- package/src/core/debug-logger.ts +590 -0
- package/src/core/directory-filter.ts +421 -0
- package/src/core/error-handler.ts +517 -0
- package/src/core/file-processor.ts +331 -0
- package/src/core/gitignore-manager.ts +169 -0
- package/src/core/graceful-degradation-manager.ts +596 -0
- package/src/core/index.ts +13 -0
- package/src/core/lazy-loader.ts +307 -0
- package/src/core/logger.ts +0 -0
- package/src/core/memory-manager.ts +294 -0
- package/src/core/startup-optimizer.ts +173 -0
- package/src/core/system-error-handler.ts +746 -0
- package/src/git/automation-engine.ts +361 -0
- package/src/git/github-manager.ts +260 -0
- package/src/git/hook-manager.ts +210 -0
- package/src/git/index.ts +4 -0
- package/src/index.ts +8 -0
- package/src/parsers/feature-validator.ts +559 -0
- package/src/parsers/index.ts +8 -0
- package/src/parsers/parser-manager.ts +419 -0
- package/src/parsers/parser.ts +26 -0
- package/src/parsers/react-parser-optimized.ts +161 -0
- package/src/parsers/react-parser.ts +359 -0
- package/src/parsers/svelte-parser.ts +506 -0
- package/src/parsers/vanilla-parser.ts +682 -0
- package/src/parsers/vue-parser.ts +472 -0
- package/src/types/index.ts +92 -0
- package/src/ui/components.ts +567 -0
- package/src/ui/help.ts +193 -0
- package/src/ui/index.ts +4 -0
- package/src/ui/prompts.ts +688 -0
- package/src/ui/terminal-header.ts +59 -0
- package/test-config-commands.js +56 -0
- package/test-header-simple.js +33 -0
- package/test-terminal-header.js +12 -0
- package/test-ui.js +29 -0
- package/tests/e2e/baseguard.e2e.test.ts +516 -0
- package/tests/e2e/cross-platform.e2e.test.ts +420 -0
- package/tests/e2e/git-integration.e2e.test.ts +487 -0
- package/tests/fixtures/react-project/package.json +14 -0
- package/tests/fixtures/react-project/src/App.css +76 -0
- package/tests/fixtures/react-project/src/App.tsx +77 -0
- package/tests/fixtures/svelte-project/package.json +11 -0
- package/tests/fixtures/svelte-project/src/App.svelte +369 -0
- package/tests/fixtures/vanilla-project/index.html +76 -0
- package/tests/fixtures/vanilla-project/script.js +331 -0
- package/tests/fixtures/vanilla-project/styles.css +359 -0
- package/tests/fixtures/vue-project/package.json +12 -0
- package/tests/fixtures/vue-project/src/App.vue +216 -0
- package/tsconfig.json +36 -0
- package/vitest.config.ts +10 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Startup optimization manager to minimize initialization time and memory usage
|
|
3
|
+
*/
|
|
4
|
+
export class StartupOptimizer {
|
|
5
|
+
private static startTime = Date.now();
|
|
6
|
+
private static initialized = false;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Initialize BaseGuard with optimized startup
|
|
10
|
+
*/
|
|
11
|
+
static async initialize(): Promise<void> {
|
|
12
|
+
if (this.initialized) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const startTime = Date.now();
|
|
17
|
+
|
|
18
|
+
try {
|
|
19
|
+
// Start critical dependency loading in background
|
|
20
|
+
await this.preloadCriticalDependencies();
|
|
21
|
+
|
|
22
|
+
// Initialize memory management
|
|
23
|
+
this.setupMemoryOptimizations();
|
|
24
|
+
|
|
25
|
+
this.initialized = true;
|
|
26
|
+
|
|
27
|
+
const initTime = Date.now() - startTime;
|
|
28
|
+
if (initTime > 200) {
|
|
29
|
+
console.warn(`Slow startup detected: ${initTime}ms`);
|
|
30
|
+
}
|
|
31
|
+
} catch (error) {
|
|
32
|
+
console.warn('Startup optimization failed:', error);
|
|
33
|
+
this.initialized = true; // Continue anyway
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Preload critical dependencies without blocking
|
|
39
|
+
*/
|
|
40
|
+
private static async preloadCriticalDependencies(): Promise<void> {
|
|
41
|
+
const { LazyLoader } = await import('./lazy-loader.js');
|
|
42
|
+
|
|
43
|
+
// Start loading critical dependencies in parallel
|
|
44
|
+
const criticalLoads = [
|
|
45
|
+
LazyLoader.getWebFeatures().catch(() => {}),
|
|
46
|
+
LazyLoader.getBabelParser().catch(() => {})
|
|
47
|
+
];
|
|
48
|
+
|
|
49
|
+
// Don't wait for all to complete - just start the loading process
|
|
50
|
+
Promise.all(criticalLoads);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Setup memory optimizations
|
|
55
|
+
*/
|
|
56
|
+
private static setupMemoryOptimizations(): void {
|
|
57
|
+
// Enable garbage collection hints if available
|
|
58
|
+
if (global.gc) {
|
|
59
|
+
// Set up periodic GC for long-running processes
|
|
60
|
+
setInterval(() => {
|
|
61
|
+
const { MemoryManager } = require('./memory-manager.js');
|
|
62
|
+
const memCheck = MemoryManager.checkMemoryUsage();
|
|
63
|
+
|
|
64
|
+
if (memCheck.warning) {
|
|
65
|
+
MemoryManager.tryGarbageCollect();
|
|
66
|
+
}
|
|
67
|
+
}, 30000); // Check every 30 seconds
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Setup process memory monitoring
|
|
71
|
+
process.on('warning', (warning) => {
|
|
72
|
+
if (warning.name === 'MaxListenersExceededWarning') {
|
|
73
|
+
console.warn('Memory warning: Too many event listeners');
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Get startup performance metrics
|
|
80
|
+
*/
|
|
81
|
+
static getStartupMetrics(): {
|
|
82
|
+
totalStartupTime: number;
|
|
83
|
+
memoryUsage: NodeJS.MemoryUsage;
|
|
84
|
+
nodeVersion: string;
|
|
85
|
+
platform: string;
|
|
86
|
+
} {
|
|
87
|
+
return {
|
|
88
|
+
totalStartupTime: Date.now() - this.startTime,
|
|
89
|
+
memoryUsage: process.memoryUsage(),
|
|
90
|
+
nodeVersion: process.version,
|
|
91
|
+
platform: process.platform
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Optimize for specific use cases
|
|
97
|
+
*/
|
|
98
|
+
static async optimizeForUseCase(useCase: 'check' | 'fix' | 'init'): Promise<void> {
|
|
99
|
+
const { LazyLoader } = await import('./lazy-loader.js');
|
|
100
|
+
|
|
101
|
+
switch (useCase) {
|
|
102
|
+
case 'check':
|
|
103
|
+
// Preload parsing and baseline checking dependencies
|
|
104
|
+
LazyLoader.getWebFeatures().catch(() => {});
|
|
105
|
+
LazyLoader.getBabelParser().catch(() => {});
|
|
106
|
+
LazyLoader.getPostCSS().catch(() => {});
|
|
107
|
+
break;
|
|
108
|
+
|
|
109
|
+
case 'fix':
|
|
110
|
+
// Preload all dependencies including AI services
|
|
111
|
+
LazyLoader.preloadCommon();
|
|
112
|
+
break;
|
|
113
|
+
|
|
114
|
+
case 'init':
|
|
115
|
+
// Minimal loading for initialization
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Clean up resources and optimize memory
|
|
122
|
+
*/
|
|
123
|
+
static cleanup(): void {
|
|
124
|
+
const { LazyLoader } = require('./lazy-loader.js');
|
|
125
|
+
const { MemoryManager } = require('./memory-manager.js');
|
|
126
|
+
|
|
127
|
+
// Clear caches
|
|
128
|
+
LazyLoader.clearCache();
|
|
129
|
+
|
|
130
|
+
// Force garbage collection if available
|
|
131
|
+
MemoryManager.tryGarbageCollect();
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Check if startup optimizations are working
|
|
136
|
+
*/
|
|
137
|
+
static validateOptimizations(): {
|
|
138
|
+
isOptimized: boolean;
|
|
139
|
+
issues: string[];
|
|
140
|
+
recommendations: string[];
|
|
141
|
+
} {
|
|
142
|
+
const issues: string[] = [];
|
|
143
|
+
const recommendations: string[] = [];
|
|
144
|
+
|
|
145
|
+
const metrics = this.getStartupMetrics();
|
|
146
|
+
|
|
147
|
+
// Check startup time
|
|
148
|
+
if (metrics.totalStartupTime > 500) {
|
|
149
|
+
issues.push(`Slow startup: ${metrics.totalStartupTime}ms`);
|
|
150
|
+
recommendations.push('Consider reducing dependencies or using lazy loading');
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// Check memory usage
|
|
154
|
+
const heapUsedMB = metrics.memoryUsage.heapUsed / 1024 / 1024;
|
|
155
|
+
if (heapUsedMB > 50) {
|
|
156
|
+
issues.push(`High memory usage: ${Math.round(heapUsedMB)}MB`);
|
|
157
|
+
recommendations.push('Consider optimizing data structures or clearing caches');
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// Check Node.js version
|
|
161
|
+
const nodeVersion = parseInt(metrics.nodeVersion.slice(1));
|
|
162
|
+
if (nodeVersion < 18) {
|
|
163
|
+
issues.push(`Old Node.js version: ${metrics.nodeVersion}`);
|
|
164
|
+
recommendations.push('Upgrade to Node.js 18+ for better performance');
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
return {
|
|
168
|
+
isOptimized: issues.length === 0,
|
|
169
|
+
issues,
|
|
170
|
+
recommendations
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
}
|