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,260 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lazy loading system for heavy dependencies and parsers
|
|
3
|
+
*/
|
|
4
|
+
export class LazyLoader {
|
|
5
|
+
static instances = new Map();
|
|
6
|
+
static loadPromises = new Map();
|
|
7
|
+
/**
|
|
8
|
+
* Lazy load web-features package
|
|
9
|
+
*/
|
|
10
|
+
static async getWebFeatures() {
|
|
11
|
+
const key = 'web-features';
|
|
12
|
+
if (this.instances.has(key)) {
|
|
13
|
+
return this.instances.get(key);
|
|
14
|
+
}
|
|
15
|
+
if (this.loadPromises.has(key)) {
|
|
16
|
+
return this.loadPromises.get(key);
|
|
17
|
+
}
|
|
18
|
+
const loadPromise = this.loadWebFeatures();
|
|
19
|
+
this.loadPromises.set(key, loadPromise);
|
|
20
|
+
try {
|
|
21
|
+
const webFeatures = await loadPromise;
|
|
22
|
+
this.instances.set(key, webFeatures);
|
|
23
|
+
this.loadPromises.delete(key);
|
|
24
|
+
return webFeatures;
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
this.loadPromises.delete(key);
|
|
28
|
+
throw error;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Lazy load Babel parser
|
|
33
|
+
*/
|
|
34
|
+
static async getBabelParser() {
|
|
35
|
+
const key = 'babel-parser';
|
|
36
|
+
if (this.instances.has(key)) {
|
|
37
|
+
return this.instances.get(key);
|
|
38
|
+
}
|
|
39
|
+
if (this.loadPromises.has(key)) {
|
|
40
|
+
return this.loadPromises.get(key);
|
|
41
|
+
}
|
|
42
|
+
const loadPromise = import('@babel/parser');
|
|
43
|
+
this.loadPromises.set(key, loadPromise);
|
|
44
|
+
try {
|
|
45
|
+
const parser = await loadPromise;
|
|
46
|
+
this.instances.set(key, parser);
|
|
47
|
+
this.loadPromises.delete(key);
|
|
48
|
+
return parser;
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
this.loadPromises.delete(key);
|
|
52
|
+
throw error;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Lazy load Babel traverse
|
|
57
|
+
*/
|
|
58
|
+
static async getBabelTraverse() {
|
|
59
|
+
const key = 'babel-traverse';
|
|
60
|
+
if (this.instances.has(key)) {
|
|
61
|
+
return this.instances.get(key);
|
|
62
|
+
}
|
|
63
|
+
if (this.loadPromises.has(key)) {
|
|
64
|
+
return this.loadPromises.get(key);
|
|
65
|
+
}
|
|
66
|
+
const loadPromise = import('@babel/traverse');
|
|
67
|
+
this.loadPromises.set(key, loadPromise);
|
|
68
|
+
try {
|
|
69
|
+
const traverse = await loadPromise;
|
|
70
|
+
this.instances.set(key, traverse.default || traverse);
|
|
71
|
+
this.loadPromises.delete(key);
|
|
72
|
+
return this.instances.get(key);
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
this.loadPromises.delete(key);
|
|
76
|
+
throw error;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Lazy load PostCSS
|
|
81
|
+
*/
|
|
82
|
+
static async getPostCSS() {
|
|
83
|
+
const key = 'postcss';
|
|
84
|
+
if (this.instances.has(key)) {
|
|
85
|
+
return this.instances.get(key);
|
|
86
|
+
}
|
|
87
|
+
if (this.loadPromises.has(key)) {
|
|
88
|
+
return this.loadPromises.get(key);
|
|
89
|
+
}
|
|
90
|
+
const loadPromise = import('postcss');
|
|
91
|
+
this.loadPromises.set(key, loadPromise);
|
|
92
|
+
try {
|
|
93
|
+
const postcss = await loadPromise;
|
|
94
|
+
this.instances.set(key, postcss.default || postcss);
|
|
95
|
+
this.loadPromises.delete(key);
|
|
96
|
+
return this.instances.get(key);
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
this.loadPromises.delete(key);
|
|
100
|
+
throw error;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Lazy load Vue compiler
|
|
105
|
+
*/
|
|
106
|
+
static async getVueCompiler() {
|
|
107
|
+
const key = 'vue-compiler';
|
|
108
|
+
if (this.instances.has(key)) {
|
|
109
|
+
return this.instances.get(key);
|
|
110
|
+
}
|
|
111
|
+
if (this.loadPromises.has(key)) {
|
|
112
|
+
return this.loadPromises.get(key);
|
|
113
|
+
}
|
|
114
|
+
const loadPromise = import('@vue/compiler-sfc');
|
|
115
|
+
this.loadPromises.set(key, loadPromise);
|
|
116
|
+
try {
|
|
117
|
+
const compiler = await loadPromise;
|
|
118
|
+
this.instances.set(key, compiler);
|
|
119
|
+
this.loadPromises.delete(key);
|
|
120
|
+
return compiler;
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
this.loadPromises.delete(key);
|
|
124
|
+
throw error;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Lazy load Svelte compiler
|
|
129
|
+
*/
|
|
130
|
+
static async getSvelteCompiler() {
|
|
131
|
+
const key = 'svelte-compiler';
|
|
132
|
+
if (this.instances.has(key)) {
|
|
133
|
+
return this.instances.get(key);
|
|
134
|
+
}
|
|
135
|
+
if (this.loadPromises.has(key)) {
|
|
136
|
+
return this.loadPromises.get(key);
|
|
137
|
+
}
|
|
138
|
+
const loadPromise = import('svelte/compiler');
|
|
139
|
+
this.loadPromises.set(key, loadPromise);
|
|
140
|
+
try {
|
|
141
|
+
const compiler = await loadPromise;
|
|
142
|
+
this.instances.set(key, compiler);
|
|
143
|
+
this.loadPromises.delete(key);
|
|
144
|
+
return compiler;
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
this.loadPromises.delete(key);
|
|
148
|
+
throw error;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Preload commonly used dependencies
|
|
153
|
+
*/
|
|
154
|
+
static async preloadCommon() {
|
|
155
|
+
// Preload in background without blocking
|
|
156
|
+
Promise.all([
|
|
157
|
+
this.getWebFeatures().catch(() => { }),
|
|
158
|
+
this.getBabelParser().catch(() => { }),
|
|
159
|
+
this.getPostCSS().catch(() => { })
|
|
160
|
+
]);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Clear all cached instances (for testing)
|
|
164
|
+
*/
|
|
165
|
+
static clearCache() {
|
|
166
|
+
this.instances.clear();
|
|
167
|
+
this.loadPromises.clear();
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Get memory usage statistics
|
|
171
|
+
*/
|
|
172
|
+
static getStats() {
|
|
173
|
+
return {
|
|
174
|
+
loadedModules: Array.from(this.instances.keys()),
|
|
175
|
+
pendingLoads: Array.from(this.loadPromises.keys()),
|
|
176
|
+
memoryUsage: process.memoryUsage ? process.memoryUsage() : undefined
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Load web-features with optimized loading
|
|
181
|
+
*/
|
|
182
|
+
static async loadWebFeatures() {
|
|
183
|
+
try {
|
|
184
|
+
// Try to load web-features package
|
|
185
|
+
const webFeatures = await import('web-features');
|
|
186
|
+
// Extract only the data we need to reduce memory usage
|
|
187
|
+
const optimizedData = this.optimizeWebFeaturesData(webFeatures.default || webFeatures);
|
|
188
|
+
return optimizedData;
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
console.warn('Failed to load web-features package:', error);
|
|
192
|
+
// Return minimal fallback data
|
|
193
|
+
return {
|
|
194
|
+
features: {},
|
|
195
|
+
browsers: {},
|
|
196
|
+
groups: {}
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Optimize web-features data to reduce memory usage
|
|
202
|
+
*/
|
|
203
|
+
static optimizeWebFeaturesData(webFeatures) {
|
|
204
|
+
if (!webFeatures) {
|
|
205
|
+
return { features: {}, browsers: {}, groups: {} };
|
|
206
|
+
}
|
|
207
|
+
// Handle both direct export and features property
|
|
208
|
+
const featuresData = webFeatures.features || webFeatures;
|
|
209
|
+
if (!featuresData || typeof featuresData !== 'object') {
|
|
210
|
+
return { features: {}, browsers: {}, groups: {} };
|
|
211
|
+
}
|
|
212
|
+
// Create optimized structure with only essential data
|
|
213
|
+
const optimized = {
|
|
214
|
+
features: {},
|
|
215
|
+
browsers: webFeatures.browsers || {},
|
|
216
|
+
groups: webFeatures.groups || {}
|
|
217
|
+
};
|
|
218
|
+
// Only keep essential feature data to reduce memory footprint
|
|
219
|
+
for (const [featureId, feature] of Object.entries(featuresData)) {
|
|
220
|
+
const f = feature;
|
|
221
|
+
// Skip if not a valid feature object
|
|
222
|
+
if (!f || typeof f !== 'object') {
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
225
|
+
// Only store essential compatibility data
|
|
226
|
+
optimized.features[featureId] = {
|
|
227
|
+
name: f.name,
|
|
228
|
+
status: f.status ? {
|
|
229
|
+
baseline: f.status.baseline,
|
|
230
|
+
support: f.status.support
|
|
231
|
+
} : null,
|
|
232
|
+
// Skip heavy data like descriptions, specs, caniuse data, etc.
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
return optimized;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Get startup performance statistics
|
|
239
|
+
*/
|
|
240
|
+
static getStartupStats() {
|
|
241
|
+
return {
|
|
242
|
+
loadedModules: Array.from(this.instances.keys()),
|
|
243
|
+
pendingLoads: Array.from(this.loadPromises.keys()),
|
|
244
|
+
startupTime: process.uptime ? Math.round(process.uptime() * 1000) : undefined
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Optimize startup by preloading critical dependencies
|
|
249
|
+
*/
|
|
250
|
+
static async optimizeStartup() {
|
|
251
|
+
// Start loading critical dependencies in background
|
|
252
|
+
const criticalLoads = [
|
|
253
|
+
this.getWebFeatures().catch(() => { }),
|
|
254
|
+
this.getBabelParser().catch(() => { })
|
|
255
|
+
];
|
|
256
|
+
// Don't wait for all to complete, just start the process
|
|
257
|
+
Promise.all(criticalLoads);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=lazy-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lazy-loader.js","sourceRoot":"","sources":["../../src/core/lazy-loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,UAAU;IACb,MAAM,CAAC,SAAS,GAAG,IAAI,GAAG,EAAe,CAAC;IAC1C,MAAM,CAAC,YAAY,GAAG,IAAI,GAAG,EAAwB,CAAC;IAE9D;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,cAAc;QACzB,MAAM,GAAG,GAAG,cAAc,CAAC;QAE3B,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAExC,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YACrC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,WAAW,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,cAAc;QACzB,MAAM,GAAG,GAAG,cAAc,CAAC;QAE3B,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;QAC5C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAExC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;YACjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAChC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,gBAAgB;QAC3B,MAAM,GAAG,GAAG,gBAAgB,CAAC;QAE7B,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC9C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAExC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC;YACtD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,UAAU;QACrB,MAAM,GAAG,GAAG,SAAS,CAAC;QAEtB,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAExC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC;YAClC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC;YACpD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,cAAc;QACzB,MAAM,GAAG,GAAG,cAAc,CAAC;QAE3B,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAChD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAExC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAClC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,iBAAiB;QAC5B,MAAM,GAAG,GAAG,iBAAiB,CAAC;QAE9B,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC9C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAExC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAClC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,aAAa;QACxB,yCAAyC;QACzC,OAAO,CAAC,GAAG,CAAC;YACV,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;YACrC,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;YACrC,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;SAClC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,UAAU;QACf,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ;QAKb,OAAO;YACL,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAChD,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YAClD,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS;SACrE,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,KAAK,CAAC,eAAe;QAClC,IAAI,CAAC;YACH,mCAAmC;YACnC,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;YAEjD,uDAAuD;YACvD,MAAM,aAAa,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,CAAC;YAEvF,OAAO,aAAa,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;YAC5D,+BAA+B;YAC/B,OAAO;gBACL,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE,EAAE;gBACZ,MAAM,EAAE,EAAE;aACX,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,uBAAuB,CAAC,WAAgB;QACrD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACpD,CAAC;QAED,kDAAkD;QAClD,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC;QAEzD,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;YACtD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACpD,CAAC;QAED,sDAAsD;QACtD,MAAM,SAAS,GAAG;YAChB,QAAQ,EAAE,EAAS;YACnB,QAAQ,EAAE,WAAW,CAAC,QAAQ,IAAI,EAAE;YACpC,MAAM,EAAE,WAAW,CAAC,MAAM,IAAI,EAAE;SACjC,CAAC;QAEF,8DAA8D;QAC9D,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAChE,MAAM,CAAC,GAAG,OAAc,CAAC;YAEzB,qCAAqC;YACrC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAChC,SAAS;YACX,CAAC;YAED,0CAA0C;YAC1C,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG;gBAC9B,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oBACjB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ;oBAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO;iBAC1B,CAAC,CAAC,CAAC,IAAI;gBACR,+DAA+D;aAChE,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,eAAe;QAKpB,OAAO;YACL,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAChD,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YAClD,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC9E,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,eAAe;QAC1B,oDAAoD;QACpD,MAAM,aAAa,GAAG;YACpB,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;YACrC,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;SACtC,CAAC;QAEF,yDAAyD;QACzD,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC7B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=memory-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-manager.d.ts","sourceRoot":"","sources":["../../src/core/memory-manager.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-manager.js","sourceRoot":"","sources":["../../src/core/memory-manager.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Startup optimization manager to minimize initialization time and memory usage
|
|
3
|
+
*/
|
|
4
|
+
export declare class StartupOptimizer {
|
|
5
|
+
private static startTime;
|
|
6
|
+
private static initialized;
|
|
7
|
+
/**
|
|
8
|
+
* Initialize BaseGuard with optimized startup
|
|
9
|
+
*/
|
|
10
|
+
static initialize(): Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Preload critical dependencies without blocking
|
|
13
|
+
*/
|
|
14
|
+
private static preloadCriticalDependencies;
|
|
15
|
+
/**
|
|
16
|
+
* Setup memory optimizations
|
|
17
|
+
*/
|
|
18
|
+
private static setupMemoryOptimizations;
|
|
19
|
+
/**
|
|
20
|
+
* Get startup performance metrics
|
|
21
|
+
*/
|
|
22
|
+
static getStartupMetrics(): {
|
|
23
|
+
totalStartupTime: number;
|
|
24
|
+
memoryUsage: NodeJS.MemoryUsage;
|
|
25
|
+
nodeVersion: string;
|
|
26
|
+
platform: string;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Optimize for specific use cases
|
|
30
|
+
*/
|
|
31
|
+
static optimizeForUseCase(useCase: 'check' | 'fix' | 'init'): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Clean up resources and optimize memory
|
|
34
|
+
*/
|
|
35
|
+
static cleanup(): void;
|
|
36
|
+
/**
|
|
37
|
+
* Check if startup optimizations are working
|
|
38
|
+
*/
|
|
39
|
+
static validateOptimizations(): {
|
|
40
|
+
isOptimized: boolean;
|
|
41
|
+
issues: string[];
|
|
42
|
+
recommendations: string[];
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=startup-optimizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startup-optimizer.d.ts","sourceRoot":"","sources":["../../src/core/startup-optimizer.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,SAAS,CAAc;IACtC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAS;IAEnC;;OAEG;WACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BxC;;OAEG;mBACkB,2BAA2B;IAahD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAsBvC;;OAEG;IACH,MAAM,CAAC,iBAAiB,IAAI;QAC1B,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;QAChC,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;KAClB;IASD;;OAEG;WACU,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBjF;;OAEG;IACH,MAAM,CAAC,OAAO,IAAI,IAAI;IAWtB;;OAEG;IACH,MAAM,CAAC,qBAAqB,IAAI;QAC9B,WAAW,EAAE,OAAO,CAAC;QACrB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,eAAe,EAAE,MAAM,EAAE,CAAC;KAC3B;CAgCF"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Startup optimization manager to minimize initialization time and memory usage
|
|
3
|
+
*/
|
|
4
|
+
export class StartupOptimizer {
|
|
5
|
+
static startTime = Date.now();
|
|
6
|
+
static initialized = false;
|
|
7
|
+
/**
|
|
8
|
+
* Initialize BaseGuard with optimized startup
|
|
9
|
+
*/
|
|
10
|
+
static async initialize() {
|
|
11
|
+
if (this.initialized) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const startTime = Date.now();
|
|
15
|
+
try {
|
|
16
|
+
// Start critical dependency loading in background
|
|
17
|
+
await this.preloadCriticalDependencies();
|
|
18
|
+
// Initialize memory management
|
|
19
|
+
this.setupMemoryOptimizations();
|
|
20
|
+
this.initialized = true;
|
|
21
|
+
const initTime = Date.now() - startTime;
|
|
22
|
+
if (initTime > 200) {
|
|
23
|
+
console.warn(`Slow startup detected: ${initTime}ms`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
console.warn('Startup optimization failed:', error);
|
|
28
|
+
this.initialized = true; // Continue anyway
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Preload critical dependencies without blocking
|
|
33
|
+
*/
|
|
34
|
+
static async preloadCriticalDependencies() {
|
|
35
|
+
const { LazyLoader } = await import('./lazy-loader.js');
|
|
36
|
+
// Start loading critical dependencies in parallel
|
|
37
|
+
const criticalLoads = [
|
|
38
|
+
LazyLoader.getWebFeatures().catch(() => { }),
|
|
39
|
+
LazyLoader.getBabelParser().catch(() => { })
|
|
40
|
+
];
|
|
41
|
+
// Don't wait for all to complete - just start the loading process
|
|
42
|
+
Promise.all(criticalLoads);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Setup memory optimizations
|
|
46
|
+
*/
|
|
47
|
+
static setupMemoryOptimizations() {
|
|
48
|
+
// Enable garbage collection hints if available
|
|
49
|
+
if (global.gc) {
|
|
50
|
+
// Set up periodic GC for long-running processes
|
|
51
|
+
setInterval(() => {
|
|
52
|
+
const { MemoryManager } = require('./memory-manager.js');
|
|
53
|
+
const memCheck = MemoryManager.checkMemoryUsage();
|
|
54
|
+
if (memCheck.warning) {
|
|
55
|
+
MemoryManager.tryGarbageCollect();
|
|
56
|
+
}
|
|
57
|
+
}, 30000); // Check every 30 seconds
|
|
58
|
+
}
|
|
59
|
+
// Setup process memory monitoring
|
|
60
|
+
process.on('warning', (warning) => {
|
|
61
|
+
if (warning.name === 'MaxListenersExceededWarning') {
|
|
62
|
+
console.warn('Memory warning: Too many event listeners');
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Get startup performance metrics
|
|
68
|
+
*/
|
|
69
|
+
static getStartupMetrics() {
|
|
70
|
+
return {
|
|
71
|
+
totalStartupTime: Date.now() - this.startTime,
|
|
72
|
+
memoryUsage: process.memoryUsage(),
|
|
73
|
+
nodeVersion: process.version,
|
|
74
|
+
platform: process.platform
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Optimize for specific use cases
|
|
79
|
+
*/
|
|
80
|
+
static async optimizeForUseCase(useCase) {
|
|
81
|
+
const { LazyLoader } = await import('./lazy-loader.js');
|
|
82
|
+
switch (useCase) {
|
|
83
|
+
case 'check':
|
|
84
|
+
// Preload parsing and baseline checking dependencies
|
|
85
|
+
LazyLoader.getWebFeatures().catch(() => { });
|
|
86
|
+
LazyLoader.getBabelParser().catch(() => { });
|
|
87
|
+
LazyLoader.getPostCSS().catch(() => { });
|
|
88
|
+
break;
|
|
89
|
+
case 'fix':
|
|
90
|
+
// Preload all dependencies including AI services
|
|
91
|
+
LazyLoader.preloadCommon();
|
|
92
|
+
break;
|
|
93
|
+
case 'init':
|
|
94
|
+
// Minimal loading for initialization
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Clean up resources and optimize memory
|
|
100
|
+
*/
|
|
101
|
+
static cleanup() {
|
|
102
|
+
const { LazyLoader } = require('./lazy-loader.js');
|
|
103
|
+
const { MemoryManager } = require('./memory-manager.js');
|
|
104
|
+
// Clear caches
|
|
105
|
+
LazyLoader.clearCache();
|
|
106
|
+
// Force garbage collection if available
|
|
107
|
+
MemoryManager.tryGarbageCollect();
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Check if startup optimizations are working
|
|
111
|
+
*/
|
|
112
|
+
static validateOptimizations() {
|
|
113
|
+
const issues = [];
|
|
114
|
+
const recommendations = [];
|
|
115
|
+
const metrics = this.getStartupMetrics();
|
|
116
|
+
// Check startup time
|
|
117
|
+
if (metrics.totalStartupTime > 500) {
|
|
118
|
+
issues.push(`Slow startup: ${metrics.totalStartupTime}ms`);
|
|
119
|
+
recommendations.push('Consider reducing dependencies or using lazy loading');
|
|
120
|
+
}
|
|
121
|
+
// Check memory usage
|
|
122
|
+
const heapUsedMB = metrics.memoryUsage.heapUsed / 1024 / 1024;
|
|
123
|
+
if (heapUsedMB > 50) {
|
|
124
|
+
issues.push(`High memory usage: ${Math.round(heapUsedMB)}MB`);
|
|
125
|
+
recommendations.push('Consider optimizing data structures or clearing caches');
|
|
126
|
+
}
|
|
127
|
+
// Check Node.js version
|
|
128
|
+
const nodeVersion = parseInt(metrics.nodeVersion.slice(1));
|
|
129
|
+
if (nodeVersion < 18) {
|
|
130
|
+
issues.push(`Old Node.js version: ${metrics.nodeVersion}`);
|
|
131
|
+
recommendations.push('Upgrade to Node.js 18+ for better performance');
|
|
132
|
+
}
|
|
133
|
+
return {
|
|
134
|
+
isOptimized: issues.length === 0,
|
|
135
|
+
issues,
|
|
136
|
+
recommendations
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=startup-optimizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startup-optimizer.js","sourceRoot":"","sources":["../../src/core/startup-optimizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { AutomationOptions, Configuration } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Automation engine for git workflow integration
|
|
4
|
+
*/
|
|
5
|
+
export declare class AutomationEngine {
|
|
6
|
+
private config;
|
|
7
|
+
private baseGuard;
|
|
8
|
+
constructor(config?: Configuration);
|
|
9
|
+
/**
|
|
10
|
+
* Run automation for git hooks
|
|
11
|
+
*/
|
|
12
|
+
run(options: AutomationOptions): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* Check violations in staged files (for pre-commit) or all files (for pre-push)
|
|
15
|
+
*/
|
|
16
|
+
private checkViolations;
|
|
17
|
+
/**
|
|
18
|
+
* Get staged files from git
|
|
19
|
+
*/
|
|
20
|
+
private getStagedFiles;
|
|
21
|
+
/**
|
|
22
|
+
* Get all tracked files from git
|
|
23
|
+
*/
|
|
24
|
+
private getAllTrackedFiles;
|
|
25
|
+
/**
|
|
26
|
+
* Analyze violations if auto-analyze is enabled
|
|
27
|
+
*/
|
|
28
|
+
private analyzeViolations;
|
|
29
|
+
/**
|
|
30
|
+
* Generate and apply fixes if auto-fix is enabled
|
|
31
|
+
*/
|
|
32
|
+
private generateFixes;
|
|
33
|
+
/**
|
|
34
|
+
* Apply fixes to files
|
|
35
|
+
*/
|
|
36
|
+
private applyFixes;
|
|
37
|
+
/**
|
|
38
|
+
* Stage changes after fixing
|
|
39
|
+
*/
|
|
40
|
+
private stageChanges;
|
|
41
|
+
/**
|
|
42
|
+
* Show manual options when auto-fix is disabled
|
|
43
|
+
*/
|
|
44
|
+
private showManualOptions;
|
|
45
|
+
/**
|
|
46
|
+
* Check if git repository has uncommitted changes
|
|
47
|
+
*/
|
|
48
|
+
private hasUncommittedChanges;
|
|
49
|
+
/**
|
|
50
|
+
* Get current git branch
|
|
51
|
+
*/
|
|
52
|
+
private getCurrentBranch;
|
|
53
|
+
/**
|
|
54
|
+
* Check if we're in a git repository
|
|
55
|
+
*/
|
|
56
|
+
private isGitRepository;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=automation-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"automation-engine.d.ts","sourceRoot":"","sources":["../../src/git/automation-engine.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAA4B,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAOpG;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,SAAS,CAAY;gBAEjB,MAAM,CAAC,EAAE,aAAa;IAKlC;;OAEG;IACG,GAAG,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoEpD;;OAEG;YACW,eAAe;IAuC7B;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAS1B;;OAEG;YACW,iBAAiB;IA+B/B;;OAEG;YACW,aAAa;IAoC3B;;OAEG;YACW,UAAU;IAaxB;;OAEG;YACW,YAAY;IAQ1B;;OAEG;YACW,iBAAiB;IA4D/B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAS7B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IASxB;;OAEG;IACH,OAAO,CAAC,eAAe;CAQxB"}
|