baseguard 1.0.1 → 1.0.2
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/.baseguardrc.example.json +64 -0
- package/.eslintrc.json +1 -1
- package/CHANGELOG.md +196 -0
- package/DEPLOYMENT.md +625 -0
- package/DEPLOYMENT_CHECKLIST.md +239 -0
- package/DEPLOYMENT_SUMMARY_v1.0.2.md +202 -0
- package/QUICK_START.md +134 -0
- package/README.md +447 -52
- package/RELEASE_NOTES_v1.0.2.md +434 -0
- package/bin/base.js +64 -59
- package/dist/ai/agentkit-orchestrator.d.ts +116 -0
- package/dist/ai/agentkit-orchestrator.d.ts.map +1 -0
- package/dist/ai/agentkit-orchestrator.js +417 -0
- package/dist/ai/agentkit-orchestrator.js.map +1 -0
- package/dist/ai/gemini-code-fixer.d.ts +85 -0
- package/dist/ai/gemini-code-fixer.d.ts.map +1 -0
- package/dist/ai/gemini-code-fixer.js +452 -0
- package/dist/ai/gemini-code-fixer.js.map +1 -0
- package/dist/ai/jules-implementer.d.ts +5 -4
- package/dist/ai/jules-implementer.d.ts.map +1 -1
- package/dist/ai/jules-implementer.js +6 -5
- package/dist/ai/jules-implementer.js.map +1 -1
- package/dist/ai/unified-code-fixer.d.ts +69 -0
- package/dist/ai/unified-code-fixer.d.ts.map +1 -0
- package/dist/ai/unified-code-fixer.js +289 -0
- package/dist/ai/unified-code-fixer.js.map +1 -0
- package/dist/commands/check.d.ts +3 -1
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +166 -34
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/config.d.ts +4 -0
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +183 -0
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/fix.d.ts.map +1 -1
- package/dist/commands/fix.js +89 -91
- package/dist/commands/fix.js.map +1 -1
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +1 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +16 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/status.d.ts +14 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +254 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/core/baseguard.d.ts +47 -5
- package/dist/core/baseguard.d.ts.map +1 -1
- package/dist/core/baseguard.js +506 -52
- package/dist/core/baseguard.js.map +1 -1
- package/dist/core/cache-manager.d.ts.map +1 -1
- package/dist/core/cache-manager.js +3 -1
- package/dist/core/cache-manager.js.map +1 -1
- package/dist/core/configuration-recovery.d.ts +116 -0
- package/dist/core/configuration-recovery.d.ts.map +1 -0
- package/dist/core/configuration-recovery.js +552 -0
- package/dist/core/configuration-recovery.js.map +1 -0
- package/dist/core/configuration.d.ts +4 -0
- package/dist/core/configuration.d.ts.map +1 -1
- package/dist/core/configuration.js +35 -0
- package/dist/core/configuration.js.map +1 -1
- package/dist/core/debug-logger.d.ts +181 -0
- package/dist/core/debug-logger.d.ts.map +1 -0
- package/dist/core/debug-logger.js +479 -0
- package/dist/core/debug-logger.js.map +1 -0
- package/dist/core/file-processor.d.ts.map +1 -1
- package/dist/core/file-processor.js +8 -2
- package/dist/core/file-processor.js.map +1 -1
- package/dist/core/graceful-degradation-manager.d.ts +123 -0
- package/dist/core/graceful-degradation-manager.d.ts.map +1 -0
- package/dist/core/graceful-degradation-manager.js +512 -0
- package/dist/core/graceful-degradation-manager.js.map +1 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +4 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/logger.d.ts +1 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +2 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/memory-manager.d.ts +84 -0
- package/dist/core/memory-manager.d.ts.map +1 -1
- package/dist/core/memory-manager.js +236 -1
- package/dist/core/memory-manager.js.map +1 -1
- package/dist/core/startup-optimizer.d.ts +12 -0
- package/dist/core/startup-optimizer.d.ts.map +1 -1
- package/dist/core/startup-optimizer.js +60 -0
- package/dist/core/startup-optimizer.js.map +1 -1
- package/dist/core/system-error-handler.d.ts +65 -0
- package/dist/core/system-error-handler.d.ts.map +1 -0
- package/dist/core/system-error-handler.js +646 -0
- package/dist/core/system-error-handler.js.map +1 -0
- package/dist/git/github-manager.d.ts +5 -16
- package/dist/git/github-manager.d.ts.map +1 -1
- package/dist/git/github-manager.js +6 -61
- package/dist/git/github-manager.js.map +1 -1
- package/dist/parsers/react-parser-optimized.d.ts +16 -0
- package/dist/parsers/react-parser-optimized.d.ts.map +1 -0
- package/dist/parsers/react-parser-optimized.js +147 -0
- package/dist/parsers/react-parser-optimized.js.map +1 -0
- package/dist/parsers/react-parser.d.ts.map +1 -1
- package/dist/parsers/react-parser.js +17 -15
- package/dist/parsers/react-parser.js.map +1 -1
- package/dist/parsers/svelte-parser.d.ts.map +1 -1
- package/dist/parsers/svelte-parser.js +7 -3
- package/dist/parsers/svelte-parser.js.map +1 -1
- package/dist/parsers/vanilla-parser.d.ts.map +1 -1
- package/dist/parsers/vanilla-parser.js +7 -3
- package/dist/parsers/vanilla-parser.js.map +1 -1
- package/dist/parsers/vue-parser.d.ts +18 -0
- package/dist/parsers/vue-parser.d.ts.map +1 -1
- package/dist/parsers/vue-parser.js +387 -1
- package/dist/parsers/vue-parser.js.map +1 -1
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/ui/help.js +1 -1
- package/dist/ui/help.js.map +1 -1
- package/dist/ui/prompts.d.ts +7 -4
- package/dist/ui/prompts.d.ts.map +1 -1
- package/dist/ui/prompts.js +48 -55
- package/dist/ui/prompts.js.map +1 -1
- package/package.json +31 -6
- package/src/ai/__tests__/gemini-analyzer.test.ts +2 -2
- package/src/ai/agentkit-orchestrator.ts +534 -0
- package/src/ai/gemini-code-fixer.ts +540 -0
- package/src/ai/jules-implementer.ts +6 -5
- package/src/ai/unified-code-fixer.ts +347 -0
- package/src/commands/config.ts +126 -0
- package/src/commands/fix.ts +98 -94
- package/src/commands/init.ts +16 -2
- package/src/core/cache-manager.ts +4 -2
- package/src/core/configuration.ts +37 -0
- package/src/core/debug-logger.ts +2 -2
- package/src/core/file-processor.ts +10 -3
- package/src/core/index.ts +5 -1
- package/src/core/memory-manager.ts +4 -3
- package/src/core/startup-optimizer.ts +70 -0
- package/src/git/github-manager.ts +11 -79
- package/src/parsers/react-parser.ts +2 -2
- package/src/parsers/svelte-parser.ts +13 -9
- package/src/parsers/vanilla-parser.ts +18 -14
- package/src/parsers/vue-parser.ts +20 -14
- package/src/types/index.ts +4 -0
- package/src/ui/help.ts +1 -1
- package/src/ui/prompts.ts +54 -61
- package/test-build.js +41 -0
- package/tests/e2e/git-integration.e2e.test.ts +1 -1
- package/tsconfig.json +0 -1
- package/vitest.config.ts +4 -2
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AACA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAClF,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AACA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAClF,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/core/index.js
CHANGED
|
@@ -10,4 +10,8 @@ export { DirectoryFilter } from './directory-filter.js';
|
|
|
10
10
|
export { LazyLoader } from './lazy-loader.js';
|
|
11
11
|
export { MemoryManager } from './memory-manager.js';
|
|
12
12
|
export { StartupOptimizer } from './startup-optimizer.js';
|
|
13
|
+
export { SystemErrorHandler } from './system-error-handler.js';
|
|
14
|
+
export { GracefulDegradationManager } from './graceful-degradation-manager.js';
|
|
15
|
+
export { ConfigurationRecovery } from './configuration-recovery.js';
|
|
16
|
+
export { logger, DebugLogger } from './debug-logger.js';
|
|
13
17
|
//# sourceMappingURL=index.js.map
|
package/dist/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAElF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAElF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1,85 @@
|
|
|
1
|
+
declare global {
|
|
2
|
+
var gc: NodeJS.GCFunction | undefined;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Memory-efficient file processing and streaming
|
|
6
|
+
*/
|
|
7
|
+
export declare class MemoryManager {
|
|
8
|
+
private static readonly MAX_FILE_SIZE;
|
|
9
|
+
private static readonly CHUNK_SIZE;
|
|
10
|
+
private static readonly GC_THRESHOLD;
|
|
11
|
+
/**
|
|
12
|
+
* Check if file should be processed in streaming mode
|
|
13
|
+
*/
|
|
14
|
+
static shouldStream(fileSize: number): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Read large file in chunks using streaming
|
|
17
|
+
*/
|
|
18
|
+
static readFileStreaming(filePath: string, processor: (chunk: string, lineNumber: number) => Promise<void>): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Process array in memory-efficient batches
|
|
21
|
+
*/
|
|
22
|
+
static processBatches<T, R>(items: T[], processor: (batch: T[]) => Promise<R[]>, batchSize?: number): Promise<R[]>;
|
|
23
|
+
/**
|
|
24
|
+
* Monitor memory usage and warn if high
|
|
25
|
+
*/
|
|
26
|
+
static checkMemoryUsage(): {
|
|
27
|
+
usage: NodeJS.MemoryUsage;
|
|
28
|
+
warning?: string;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Try to trigger garbage collection if available
|
|
32
|
+
*/
|
|
33
|
+
static tryGarbageCollect(): void;
|
|
34
|
+
/**
|
|
35
|
+
* Sleep utility for batch processing
|
|
36
|
+
*/
|
|
37
|
+
static sleep(ms: number): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Create memory-efficient data structure for violations
|
|
40
|
+
*/
|
|
41
|
+
static createViolationTracker(): ViolationTracker;
|
|
42
|
+
/**
|
|
43
|
+
* Optimize object for memory usage by removing undefined properties
|
|
44
|
+
*/
|
|
45
|
+
static optimizeObject<T extends Record<string, any>>(obj: T): T;
|
|
46
|
+
/**
|
|
47
|
+
* Get memory usage statistics
|
|
48
|
+
*/
|
|
49
|
+
static getMemoryStats(): {
|
|
50
|
+
heapUsed: string;
|
|
51
|
+
heapTotal: string;
|
|
52
|
+
external: string;
|
|
53
|
+
rss: string;
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Memory-efficient violation tracking
|
|
58
|
+
*/
|
|
59
|
+
declare class ViolationTracker {
|
|
60
|
+
private violations;
|
|
61
|
+
private fileIndex;
|
|
62
|
+
private nextFileId;
|
|
63
|
+
/**
|
|
64
|
+
* Add violation with memory optimization
|
|
65
|
+
*/
|
|
66
|
+
addViolation(violation: any): void;
|
|
67
|
+
/**
|
|
68
|
+
* Get all violations with full data
|
|
69
|
+
*/
|
|
70
|
+
getViolations(): any[];
|
|
71
|
+
/**
|
|
72
|
+
* Get memory usage statistics
|
|
73
|
+
*/
|
|
74
|
+
getStats(): {
|
|
75
|
+
violationCount: number;
|
|
76
|
+
fileCount: number;
|
|
77
|
+
memoryEstimate: string;
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Clear all data
|
|
81
|
+
*/
|
|
82
|
+
clear(): void;
|
|
83
|
+
}
|
|
84
|
+
export {};
|
|
1
85
|
//# sourceMappingURL=memory-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-manager.d.ts","sourceRoot":"","sources":["../../src/core/memory-manager.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"memory-manager.d.ts","sourceRoot":"","sources":["../../src/core/memory-manager.ts"],"names":[],"mappings":"AAIA,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,EAAE,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;CACvC;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAoB;IACzD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAa;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAEzD;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI9C;;OAEG;WACU,iBAAiB,CAC5B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAC9D,OAAO,CAAC,IAAI,CAAC;IAuDhB;;OAEG;WACU,cAAc,CAAC,CAAC,EAAE,CAAC,EAC9B,KAAK,EAAE,CAAC,EAAE,EACV,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,EACvC,SAAS,GAAE,MAAY,GACtB,OAAO,CAAC,CAAC,EAAE,CAAC;IAyBf;;OAEG;IACH,MAAM,CAAC,gBAAgB,IAAI;QACzB,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC;QAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB;IAYD;;OAEG;IACH,MAAM,CAAC,iBAAiB,IAAI,IAAI;IAUhC;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC;;OAEG;IACH,MAAM,CAAC,sBAAsB,IAAI,gBAAgB;IAIjD;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;IAY/D;;OAEG;IACH,MAAM,CAAC,cAAc,IAAI;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,GAAG,EAAE,MAAM,CAAC;KACb;CAUF;AAED;;GAEG;AACH,cAAM,gBAAgB;IACpB,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,UAAU,CAAK;IAEvB;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,GAAG,GAAG,IAAI;IA2BlC;;OAEG;IACH,aAAa,IAAI,GAAG,EAAE;IA4BtB;;OAEG;IACH,QAAQ,IAAI;QACV,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,MAAM,CAAC;KACxB;IAcD;;OAEG;IACH,KAAK,IAAI,IAAI;CAKd"}
|
|
@@ -1,2 +1,237 @@
|
|
|
1
|
-
|
|
1
|
+
import { createReadStream } from 'fs';
|
|
2
|
+
import { createInterface } from 'readline';
|
|
3
|
+
/**
|
|
4
|
+
* Memory-efficient file processing and streaming
|
|
5
|
+
*/
|
|
6
|
+
export class MemoryManager {
|
|
7
|
+
static MAX_FILE_SIZE = 10 * 1024 * 1024; // 10MB
|
|
8
|
+
static CHUNK_SIZE = 64 * 1024; // 64KB chunks
|
|
9
|
+
static GC_THRESHOLD = 100 * 1024 * 1024; // 100MB
|
|
10
|
+
/**
|
|
11
|
+
* Check if file should be processed in streaming mode
|
|
12
|
+
*/
|
|
13
|
+
static shouldStream(fileSize) {
|
|
14
|
+
return fileSize > this.MAX_FILE_SIZE;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Read large file in chunks using streaming
|
|
18
|
+
*/
|
|
19
|
+
static async readFileStreaming(filePath, processor) {
|
|
20
|
+
return new Promise((resolve, reject) => {
|
|
21
|
+
const fileStream = createReadStream(filePath, {
|
|
22
|
+
encoding: 'utf8',
|
|
23
|
+
highWaterMark: this.CHUNK_SIZE
|
|
24
|
+
});
|
|
25
|
+
const rl = createInterface({
|
|
26
|
+
input: fileStream,
|
|
27
|
+
crlfDelay: Infinity
|
|
28
|
+
});
|
|
29
|
+
let lineNumber = 0;
|
|
30
|
+
let currentChunk = '';
|
|
31
|
+
let chunkLineCount = 0;
|
|
32
|
+
rl.on('line', async (line) => {
|
|
33
|
+
lineNumber++;
|
|
34
|
+
currentChunk += line + '\n';
|
|
35
|
+
chunkLineCount++;
|
|
36
|
+
// Process in chunks to avoid memory buildup
|
|
37
|
+
if (chunkLineCount >= 1000) {
|
|
38
|
+
try {
|
|
39
|
+
await processor(currentChunk, lineNumber - chunkLineCount + 1);
|
|
40
|
+
currentChunk = '';
|
|
41
|
+
chunkLineCount = 0;
|
|
42
|
+
// Force garbage collection if available
|
|
43
|
+
this.tryGarbageCollect();
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
rl.close();
|
|
47
|
+
reject(error);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
rl.on('close', async () => {
|
|
53
|
+
try {
|
|
54
|
+
// Process remaining chunk
|
|
55
|
+
if (currentChunk.trim()) {
|
|
56
|
+
await processor(currentChunk, lineNumber - chunkLineCount + 1);
|
|
57
|
+
}
|
|
58
|
+
resolve();
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
reject(error);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
rl.on('error', reject);
|
|
65
|
+
fileStream.on('error', reject);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Process array in memory-efficient batches
|
|
70
|
+
*/
|
|
71
|
+
static async processBatches(items, processor, batchSize = 100) {
|
|
72
|
+
const results = [];
|
|
73
|
+
for (let i = 0; i < items.length; i += batchSize) {
|
|
74
|
+
const batch = items.slice(i, i + batchSize);
|
|
75
|
+
try {
|
|
76
|
+
const batchResults = await processor(batch);
|
|
77
|
+
results.push(...batchResults);
|
|
78
|
+
// Force garbage collection between batches
|
|
79
|
+
this.tryGarbageCollect();
|
|
80
|
+
// Small delay to prevent overwhelming the system
|
|
81
|
+
if (i + batchSize < items.length) {
|
|
82
|
+
await this.sleep(1);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
console.warn(`Error processing batch ${i}-${i + batchSize}: ${error}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return results;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Monitor memory usage and warn if high
|
|
93
|
+
*/
|
|
94
|
+
static checkMemoryUsage() {
|
|
95
|
+
const usage = process.memoryUsage();
|
|
96
|
+
let warning;
|
|
97
|
+
// Check if memory usage is high (over 100MB heap used)
|
|
98
|
+
if (usage.heapUsed > this.GC_THRESHOLD) {
|
|
99
|
+
warning = `High memory usage detected: ${Math.round(usage.heapUsed / 1024 / 1024)}MB heap used`;
|
|
100
|
+
}
|
|
101
|
+
return { usage, warning };
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Try to trigger garbage collection if available
|
|
105
|
+
*/
|
|
106
|
+
static tryGarbageCollect() {
|
|
107
|
+
if (global.gc) {
|
|
108
|
+
try {
|
|
109
|
+
global.gc();
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
// Ignore GC errors
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Sleep utility for batch processing
|
|
118
|
+
*/
|
|
119
|
+
static sleep(ms) {
|
|
120
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Create memory-efficient data structure for violations
|
|
124
|
+
*/
|
|
125
|
+
static createViolationTracker() {
|
|
126
|
+
return new ViolationTracker();
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Optimize object for memory usage by removing undefined properties
|
|
130
|
+
*/
|
|
131
|
+
static optimizeObject(obj) {
|
|
132
|
+
const optimized = {};
|
|
133
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
134
|
+
if (value !== undefined && value !== null) {
|
|
135
|
+
optimized[key] = value;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return optimized;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Get memory usage statistics
|
|
142
|
+
*/
|
|
143
|
+
static getMemoryStats() {
|
|
144
|
+
const usage = process.memoryUsage();
|
|
145
|
+
return {
|
|
146
|
+
heapUsed: `${Math.round(usage.heapUsed / 1024 / 1024)}MB`,
|
|
147
|
+
heapTotal: `${Math.round(usage.heapTotal / 1024 / 1024)}MB`,
|
|
148
|
+
external: `${Math.round(usage.external / 1024 / 1024)}MB`,
|
|
149
|
+
rss: `${Math.round(usage.rss / 1024 / 1024)}MB`
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Memory-efficient violation tracking
|
|
155
|
+
*/
|
|
156
|
+
class ViolationTracker {
|
|
157
|
+
violations = new Map();
|
|
158
|
+
fileIndex = new Map();
|
|
159
|
+
nextFileId = 0;
|
|
160
|
+
/**
|
|
161
|
+
* Add violation with memory optimization
|
|
162
|
+
*/
|
|
163
|
+
addViolation(violation) {
|
|
164
|
+
// Optimize file path storage using indices
|
|
165
|
+
let fileId = this.fileIndex.get(violation.file);
|
|
166
|
+
if (fileId === undefined) {
|
|
167
|
+
fileId = this.nextFileId++;
|
|
168
|
+
this.fileIndex.set(violation.file, fileId);
|
|
169
|
+
}
|
|
170
|
+
// Create optimized violation object
|
|
171
|
+
const optimized = {
|
|
172
|
+
f: violation.feature,
|
|
173
|
+
fid: violation.featureId,
|
|
174
|
+
fi: fileId, // file index instead of full path
|
|
175
|
+
l: violation.line,
|
|
176
|
+
c: violation.column,
|
|
177
|
+
ctx: violation.context?.substring(0, 100), // Limit context length
|
|
178
|
+
b: violation.browser,
|
|
179
|
+
r: violation.required,
|
|
180
|
+
a: violation.actual,
|
|
181
|
+
bs: violation.baselineStatus,
|
|
182
|
+
rs: violation.reason?.substring(0, 200) // Limit reason length
|
|
183
|
+
};
|
|
184
|
+
const key = `${fileId}-${violation.line}-${violation.feature}`;
|
|
185
|
+
this.violations.set(key, optimized);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Get all violations with full data
|
|
189
|
+
*/
|
|
190
|
+
getViolations() {
|
|
191
|
+
const result = [];
|
|
192
|
+
const fileIdToPath = new Map();
|
|
193
|
+
// Create reverse mapping
|
|
194
|
+
for (const [path, id] of this.fileIndex) {
|
|
195
|
+
fileIdToPath.set(id, path);
|
|
196
|
+
}
|
|
197
|
+
for (const optimized of this.violations.values()) {
|
|
198
|
+
result.push({
|
|
199
|
+
feature: optimized.f,
|
|
200
|
+
featureId: optimized.fid,
|
|
201
|
+
file: fileIdToPath.get(optimized.fi) || 'unknown',
|
|
202
|
+
line: optimized.l,
|
|
203
|
+
column: optimized.c,
|
|
204
|
+
context: optimized.ctx,
|
|
205
|
+
browser: optimized.b,
|
|
206
|
+
required: optimized.r,
|
|
207
|
+
actual: optimized.a,
|
|
208
|
+
baselineStatus: optimized.bs,
|
|
209
|
+
reason: optimized.rs
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
return result;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Get memory usage statistics
|
|
216
|
+
*/
|
|
217
|
+
getStats() {
|
|
218
|
+
const violationCount = this.violations.size;
|
|
219
|
+
const fileCount = this.fileIndex.size;
|
|
220
|
+
// Rough memory estimate (each violation ~200 bytes)
|
|
221
|
+
const memoryEstimate = `${Math.round(violationCount * 200 / 1024)}KB`;
|
|
222
|
+
return {
|
|
223
|
+
violationCount,
|
|
224
|
+
fileCount,
|
|
225
|
+
memoryEstimate
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Clear all data
|
|
230
|
+
*/
|
|
231
|
+
clear() {
|
|
232
|
+
this.violations.clear();
|
|
233
|
+
this.fileIndex.clear();
|
|
234
|
+
this.nextFileId = 0;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
2
237
|
//# sourceMappingURL=memory-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-manager.js","sourceRoot":"","sources":["../../src/core/memory-manager.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"memory-manager.js","sourceRoot":"","sources":["../../src/core/memory-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAO3C;;GAEG;AACH,MAAM,OAAO,aAAa;IAChB,MAAM,CAAU,aAAa,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO;IACzD,MAAM,CAAU,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,cAAc;IACtD,MAAM,CAAU,YAAY,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,QAAQ;IAElE;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,QAAgB;QAClC,OAAO,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAC5B,QAAgB,EAChB,SAA+D;QAE/D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,EAAE;gBAC5C,QAAQ,EAAE,MAAM;gBAChB,aAAa,EAAE,IAAI,CAAC,UAAU;aAC/B,CAAC,CAAC;YAEH,MAAM,EAAE,GAAG,eAAe,CAAC;gBACzB,KAAK,EAAE,UAAU;gBACjB,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAC;YAEH,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,YAAY,GAAG,EAAE,CAAC;YACtB,IAAI,cAAc,GAAG,CAAC,CAAC;YAEvB,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBAC3B,UAAU,EAAE,CAAC;gBACb,YAAY,IAAI,IAAI,GAAG,IAAI,CAAC;gBAC5B,cAAc,EAAE,CAAC;gBAEjB,4CAA4C;gBAC5C,IAAI,cAAc,IAAI,IAAI,EAAE,CAAC;oBAC3B,IAAI,CAAC;wBACH,MAAM,SAAS,CAAC,YAAY,EAAE,UAAU,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC;wBAC/D,YAAY,GAAG,EAAE,CAAC;wBAClB,cAAc,GAAG,CAAC,CAAC;wBAEnB,wCAAwC;wBACxC,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBAC3B,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,EAAE,CAAC,KAAK,EAAE,CAAC;wBACX,MAAM,CAAC,KAAK,CAAC,CAAC;wBACd,OAAO;oBACT,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;gBACxB,IAAI,CAAC;oBACH,0BAA0B;oBAC1B,IAAI,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;wBACxB,MAAM,SAAS,CAAC,YAAY,EAAE,UAAU,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC;oBACjE,CAAC;oBACD,OAAO,EAAE,CAAC;gBACZ,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACvB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,cAAc,CACzB,KAAU,EACV,SAAuC,EACvC,YAAoB,GAAG;QAEvB,MAAM,OAAO,GAAQ,EAAE,CAAC;QAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;YAE5C,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC5C,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;gBAE9B,2CAA2C;gBAC3C,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAEzB,iDAAiD;gBACjD,IAAI,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;oBACjC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,GAAG,SAAS,KAAK,KAAK,EAAE,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB;QAIrB,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QACpC,IAAI,OAA2B,CAAC;QAEhC,uDAAuD;QACvD,IAAI,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACvC,OAAO,GAAG,+BAA+B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC;QAClG,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,iBAAiB;QACtB,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,mBAAmB;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,EAAU;QACrB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,sBAAsB;QAC3B,OAAO,IAAI,gBAAgB,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,cAAc,CAAgC,GAAM;QACzD,MAAM,SAAS,GAAG,EAAO,CAAC;QAE1B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC1C,SAAS,CAAC,GAAc,CAAC,GAAG,KAAK,CAAC;YACpC,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,cAAc;QAMnB,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAEpC,OAAO;YACL,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI;YACzD,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI;YAC3D,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI;YACzD,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI;SAChD,CAAC;IACJ,CAAC;;AAGH;;GAEG;AACH,MAAM,gBAAgB;IACZ,UAAU,GAAG,IAAI,GAAG,EAAe,CAAC;IACpC,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,UAAU,GAAG,CAAC,CAAC;IAEvB;;OAEG;IACH,YAAY,CAAC,SAAc;QACzB,2CAA2C;QAC3C,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAC3B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC;QAED,oCAAoC;QACpC,MAAM,SAAS,GAAG;YAChB,CAAC,EAAE,SAAS,CAAC,OAAO;YACpB,GAAG,EAAE,SAAS,CAAC,SAAS;YACxB,EAAE,EAAE,MAAM,EAAE,kCAAkC;YAC9C,CAAC,EAAE,SAAS,CAAC,IAAI;YACjB,CAAC,EAAE,SAAS,CAAC,MAAM;YACnB,GAAG,EAAE,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,uBAAuB;YAClE,CAAC,EAAE,SAAS,CAAC,OAAO;YACpB,CAAC,EAAE,SAAS,CAAC,QAAQ;YACrB,CAAC,EAAE,SAAS,CAAC,MAAM;YACnB,EAAE,EAAE,SAAS,CAAC,cAAc;YAC5B,EAAE,EAAE,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,sBAAsB;SAC/D,CAAC;QAEF,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QAC/D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,aAAa;QACX,MAAM,MAAM,GAAU,EAAE,CAAC;QACzB,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;QAE/C,yBAAyB;QACzB,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACxC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC;gBACV,OAAO,EAAE,SAAS,CAAC,CAAC;gBACpB,SAAS,EAAE,SAAS,CAAC,GAAG;gBACxB,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,SAAS;gBACjD,IAAI,EAAE,SAAS,CAAC,CAAC;gBACjB,MAAM,EAAE,SAAS,CAAC,CAAC;gBACnB,OAAO,EAAE,SAAS,CAAC,GAAG;gBACtB,OAAO,EAAE,SAAS,CAAC,CAAC;gBACpB,QAAQ,EAAE,SAAS,CAAC,CAAC;gBACrB,MAAM,EAAE,SAAS,CAAC,CAAC;gBACnB,cAAc,EAAE,SAAS,CAAC,EAAE;gBAC5B,MAAM,EAAE,SAAS,CAAC,EAAE;aACrB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,QAAQ;QAKN,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAEtC,oDAAoD;QACpD,MAAM,cAAc,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;QAEtE,OAAO;YACL,cAAc;YACd,SAAS;YACT,cAAc;SACf,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACtB,CAAC;CACF"}
|
|
@@ -41,5 +41,17 @@ export declare class StartupOptimizer {
|
|
|
41
41
|
issues: string[];
|
|
42
42
|
recommendations: string[];
|
|
43
43
|
};
|
|
44
|
+
/**
|
|
45
|
+
* Optimize memory usage by reducing object overhead
|
|
46
|
+
*/
|
|
47
|
+
static optimizeMemoryUsage(): void;
|
|
48
|
+
/**
|
|
49
|
+
* Reduce startup time by deferring non-critical operations
|
|
50
|
+
*/
|
|
51
|
+
static deferNonCriticalOperations(): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Optimize startup by preloading critical dependencies
|
|
54
|
+
*/
|
|
55
|
+
static optimizeStartup(): Promise<void>;
|
|
44
56
|
}
|
|
45
57
|
//# sourceMappingURL=startup-optimizer.d.ts.map
|
|
@@ -1 +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;
|
|
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;IAiCD;;OAEG;IACH,MAAM,CAAC,mBAAmB,IAAI,IAAI;IAqBlC;;OAEG;WACU,0BAA0B,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBxD;;OAEG;WACU,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;CAkB9C"}
|
|
@@ -136,5 +136,65 @@ export class StartupOptimizer {
|
|
|
136
136
|
recommendations
|
|
137
137
|
};
|
|
138
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* Optimize memory usage by reducing object overhead
|
|
141
|
+
*/
|
|
142
|
+
static optimizeMemoryUsage() {
|
|
143
|
+
// Enable V8 memory optimizations if available
|
|
144
|
+
if (process.env.NODE_ENV !== 'development') {
|
|
145
|
+
// Set V8 flags for better memory management
|
|
146
|
+
process.env.NODE_OPTIONS = (process.env.NODE_OPTIONS || '') + ' --max-old-space-size=512 --optimize-for-size';
|
|
147
|
+
}
|
|
148
|
+
// Setup memory monitoring
|
|
149
|
+
if (global.gc) {
|
|
150
|
+
setInterval(() => {
|
|
151
|
+
const usage = process.memoryUsage();
|
|
152
|
+
const heapUsedMB = usage.heapUsed / 1024 / 1024;
|
|
153
|
+
// Force GC if memory usage is high
|
|
154
|
+
if (heapUsedMB > 100 && global.gc) {
|
|
155
|
+
global.gc();
|
|
156
|
+
}
|
|
157
|
+
}, 30000);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Reduce startup time by deferring non-critical operations
|
|
162
|
+
*/
|
|
163
|
+
static async deferNonCriticalOperations() {
|
|
164
|
+
// Defer heavy operations until after startup
|
|
165
|
+
setTimeout(async () => {
|
|
166
|
+
try {
|
|
167
|
+
// Preload remaining dependencies
|
|
168
|
+
const { LazyLoader } = await import('./lazy-loader.js');
|
|
169
|
+
LazyLoader.preloadCommon();
|
|
170
|
+
// Initialize caches
|
|
171
|
+
const { CacheManager } = await import('./cache-manager.js');
|
|
172
|
+
// Cache initialization would happen here
|
|
173
|
+
// Cleanup old logs
|
|
174
|
+
const { logger } = await import('./debug-logger.js');
|
|
175
|
+
logger.cleanupOldLogs().catch(() => { });
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
// Ignore errors in deferred operations
|
|
179
|
+
}
|
|
180
|
+
}, 100); // Defer by 100ms
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Optimize startup by preloading critical dependencies
|
|
184
|
+
*/
|
|
185
|
+
static async optimizeStartup() {
|
|
186
|
+
// Start loading critical dependencies in background
|
|
187
|
+
const { LazyLoader } = await import('./lazy-loader.js');
|
|
188
|
+
const criticalLoads = [
|
|
189
|
+
LazyLoader.getWebFeatures().catch(() => { }),
|
|
190
|
+
LazyLoader.getBabelParser().catch(() => { })
|
|
191
|
+
];
|
|
192
|
+
// Don't wait for all to complete, just start the process
|
|
193
|
+
Promise.all(criticalLoads);
|
|
194
|
+
// Setup memory optimizations
|
|
195
|
+
this.optimizeMemoryUsage();
|
|
196
|
+
// Defer non-critical operations
|
|
197
|
+
this.deferNonCriticalOperations();
|
|
198
|
+
}
|
|
139
199
|
}
|
|
140
200
|
//# sourceMappingURL=startup-optimizer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startup-optimizer.js","sourceRoot":"","sources":["../../src/core/startup-optimizer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"startup-optimizer.js","sourceRoot":"","sources":["../../src/core/startup-optimizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export interface SystemErrorContext {
|
|
2
|
+
operation: string;
|
|
3
|
+
file?: string;
|
|
4
|
+
line?: number;
|
|
5
|
+
details?: any;
|
|
6
|
+
timestamp?: Date;
|
|
7
|
+
userId?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface RecoveryStrategy {
|
|
10
|
+
name: string;
|
|
11
|
+
description: string;
|
|
12
|
+
execute: () => Promise<boolean>;
|
|
13
|
+
priority: number;
|
|
14
|
+
}
|
|
15
|
+
export declare class SystemError extends Error {
|
|
16
|
+
code: string;
|
|
17
|
+
context?: SystemErrorContext | undefined;
|
|
18
|
+
recoverable: boolean;
|
|
19
|
+
severity: 'low' | 'medium' | 'high' | 'critical';
|
|
20
|
+
constructor(message: string, code: string, context?: SystemErrorContext | undefined, recoverable?: boolean, severity?: 'low' | 'medium' | 'high' | 'critical');
|
|
21
|
+
}
|
|
22
|
+
export declare class SystemErrorHandler {
|
|
23
|
+
private static retryAttempts;
|
|
24
|
+
private static maxRetries;
|
|
25
|
+
private static backoffBase;
|
|
26
|
+
private static errorLog;
|
|
27
|
+
private static maxLogSize;
|
|
28
|
+
private static recoveryStrategies;
|
|
29
|
+
private static gracefulDegradationEnabled;
|
|
30
|
+
private static offlineMode;
|
|
31
|
+
static withRetry<T>(operation: () => Promise<T>, context: SystemErrorContext, maxRetries?: number, customBackoff?: (attempt: number) => number): Promise<T>;
|
|
32
|
+
static handleGracefully<T>(operation: () => Promise<T>, fallback: T | (() => Promise<T>), context: SystemErrorContext, options?: {
|
|
33
|
+
logError?: boolean;
|
|
34
|
+
showWarning?: boolean;
|
|
35
|
+
attemptRecovery?: boolean;
|
|
36
|
+
}): Promise<T>;
|
|
37
|
+
static wrapError(error: any, context: SystemErrorContext): SystemError;
|
|
38
|
+
static displayError(error: SystemError, options?: {
|
|
39
|
+
verbose?: boolean;
|
|
40
|
+
showRecovery?: boolean;
|
|
41
|
+
}): void;
|
|
42
|
+
private static attemptRecovery;
|
|
43
|
+
private static showRecoveryOptions;
|
|
44
|
+
private static provideSuggestions;
|
|
45
|
+
private static showDegradationOptions;
|
|
46
|
+
static logError(error: SystemError): void;
|
|
47
|
+
static saveErrorLog(filePath?: string): Promise<void>;
|
|
48
|
+
static getErrorSummary(): {
|
|
49
|
+
total: number;
|
|
50
|
+
bySeverity: Record<string, number>;
|
|
51
|
+
byCode: Record<string, number>;
|
|
52
|
+
recoverable: number;
|
|
53
|
+
critical: number;
|
|
54
|
+
};
|
|
55
|
+
static registerRecoveryStrategy(errorCode: string, strategy: RecoveryStrategy): void;
|
|
56
|
+
static enableGracefulDegradation(enabled?: boolean): void;
|
|
57
|
+
static setOfflineMode(offline?: boolean): void;
|
|
58
|
+
static isOfflineMode(): boolean;
|
|
59
|
+
static clearErrorLog(): void;
|
|
60
|
+
static createCorruptionRecovery(configPath: string): Promise<boolean>;
|
|
61
|
+
static handleProcessSignals(): Promise<void>;
|
|
62
|
+
private static sleep;
|
|
63
|
+
static initializeRecoveryStrategies(): void;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=system-error-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-error-handler.d.ts","sourceRoot":"","sources":["../../src/core/system-error-handler.ts"],"names":[],"mappings":"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"}
|