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.
Files changed (244) hide show
  1. package/.eslintrc.json +25 -0
  2. package/.prettierrc +8 -0
  3. package/README.md +94 -0
  4. package/bin/base.js +494 -0
  5. package/dist/ai/fix-manager.d.ts +67 -0
  6. package/dist/ai/fix-manager.d.ts.map +1 -0
  7. package/dist/ai/fix-manager.js +326 -0
  8. package/dist/ai/fix-manager.js.map +1 -0
  9. package/dist/ai/gemini-analyzer.d.ts +116 -0
  10. package/dist/ai/gemini-analyzer.d.ts.map +1 -0
  11. package/dist/ai/gemini-analyzer.js +572 -0
  12. package/dist/ai/gemini-analyzer.js.map +1 -0
  13. package/dist/ai/index.d.ts +4 -0
  14. package/dist/ai/index.d.ts.map +1 -0
  15. package/dist/ai/index.js +5 -0
  16. package/dist/ai/index.js.map +1 -0
  17. package/dist/ai/jules-implementer.d.ts +115 -0
  18. package/dist/ai/jules-implementer.d.ts.map +1 -0
  19. package/dist/ai/jules-implementer.js +387 -0
  20. package/dist/ai/jules-implementer.js.map +1 -0
  21. package/dist/commands/automation.d.ts +5 -0
  22. package/dist/commands/automation.d.ts.map +1 -0
  23. package/dist/commands/automation.js +305 -0
  24. package/dist/commands/automation.js.map +1 -0
  25. package/dist/commands/check.d.ts +9 -0
  26. package/dist/commands/check.d.ts.map +1 -0
  27. package/dist/commands/check.js +113 -0
  28. package/dist/commands/check.js.map +1 -0
  29. package/dist/commands/config.d.ts +11 -0
  30. package/dist/commands/config.d.ts.map +1 -0
  31. package/dist/commands/config.js +324 -0
  32. package/dist/commands/config.js.map +1 -0
  33. package/dist/commands/fix.d.ts +9 -0
  34. package/dist/commands/fix.d.ts.map +1 -0
  35. package/dist/commands/fix.js +207 -0
  36. package/dist/commands/fix.js.map +1 -0
  37. package/dist/commands/index.d.ts +6 -0
  38. package/dist/commands/index.d.ts.map +1 -0
  39. package/dist/commands/index.js +7 -0
  40. package/dist/commands/index.js.map +1 -0
  41. package/dist/commands/init.d.ts +9 -0
  42. package/dist/commands/init.d.ts.map +1 -0
  43. package/dist/commands/init.js +125 -0
  44. package/dist/commands/init.js.map +1 -0
  45. package/dist/core/api-key-manager.d.ts +83 -0
  46. package/dist/core/api-key-manager.d.ts.map +1 -0
  47. package/dist/core/api-key-manager.js +244 -0
  48. package/dist/core/api-key-manager.js.map +1 -0
  49. package/dist/core/baseguard.d.ts +46 -0
  50. package/dist/core/baseguard.d.ts.map +1 -0
  51. package/dist/core/baseguard.js +132 -0
  52. package/dist/core/baseguard.js.map +1 -0
  53. package/dist/core/baseline-checker.d.ts +63 -0
  54. package/dist/core/baseline-checker.d.ts.map +1 -0
  55. package/dist/core/baseline-checker.js +502 -0
  56. package/dist/core/baseline-checker.js.map +1 -0
  57. package/dist/core/cache-manager.d.ts +88 -0
  58. package/dist/core/cache-manager.d.ts.map +1 -0
  59. package/dist/core/cache-manager.js +213 -0
  60. package/dist/core/cache-manager.js.map +1 -0
  61. package/dist/core/configuration.d.ts +140 -0
  62. package/dist/core/configuration.d.ts.map +1 -0
  63. package/dist/core/configuration.js +474 -0
  64. package/dist/core/configuration.js.map +1 -0
  65. package/dist/core/directory-filter.d.ts +90 -0
  66. package/dist/core/directory-filter.d.ts.map +1 -0
  67. package/dist/core/directory-filter.js +319 -0
  68. package/dist/core/directory-filter.js.map +1 -0
  69. package/dist/core/error-handler.d.ts +110 -0
  70. package/dist/core/error-handler.d.ts.map +1 -0
  71. package/dist/core/error-handler.js +392 -0
  72. package/dist/core/error-handler.js.map +1 -0
  73. package/dist/core/file-processor.d.ts +80 -0
  74. package/dist/core/file-processor.d.ts.map +1 -0
  75. package/dist/core/file-processor.js +259 -0
  76. package/dist/core/file-processor.js.map +1 -0
  77. package/dist/core/gitignore-manager.d.ts +44 -0
  78. package/dist/core/gitignore-manager.d.ts.map +1 -0
  79. package/dist/core/gitignore-manager.js +147 -0
  80. package/dist/core/gitignore-manager.js.map +1 -0
  81. package/dist/core/index.d.ts +13 -0
  82. package/dist/core/index.d.ts.map +1 -0
  83. package/dist/core/index.js +13 -0
  84. package/dist/core/index.js.map +1 -0
  85. package/dist/core/lazy-loader.d.ts +68 -0
  86. package/dist/core/lazy-loader.d.ts.map +1 -0
  87. package/dist/core/lazy-loader.js +260 -0
  88. package/dist/core/lazy-loader.js.map +1 -0
  89. package/dist/core/memory-manager.d.ts +1 -0
  90. package/dist/core/memory-manager.d.ts.map +1 -0
  91. package/dist/core/memory-manager.js +2 -0
  92. package/dist/core/memory-manager.js.map +1 -0
  93. package/dist/core/startup-optimizer.d.ts +45 -0
  94. package/dist/core/startup-optimizer.d.ts.map +1 -0
  95. package/dist/core/startup-optimizer.js +140 -0
  96. package/dist/core/startup-optimizer.js.map +1 -0
  97. package/dist/git/automation-engine.d.ts +58 -0
  98. package/dist/git/automation-engine.d.ts.map +1 -0
  99. package/dist/git/automation-engine.js +318 -0
  100. package/dist/git/automation-engine.js.map +1 -0
  101. package/dist/git/github-manager.d.ts +71 -0
  102. package/dist/git/github-manager.d.ts.map +1 -0
  103. package/dist/git/github-manager.js +226 -0
  104. package/dist/git/github-manager.js.map +1 -0
  105. package/dist/git/hook-manager.d.ts +43 -0
  106. package/dist/git/hook-manager.d.ts.map +1 -0
  107. package/dist/git/hook-manager.js +191 -0
  108. package/dist/git/hook-manager.js.map +1 -0
  109. package/dist/git/index.d.ts +4 -0
  110. package/dist/git/index.d.ts.map +1 -0
  111. package/dist/git/index.js +5 -0
  112. package/dist/git/index.js.map +1 -0
  113. package/dist/index.d.ts +8 -0
  114. package/dist/index.d.ts.map +1 -0
  115. package/dist/index.js +9 -0
  116. package/dist/index.js.map +1 -0
  117. package/dist/parsers/feature-validator.d.ts +60 -0
  118. package/dist/parsers/feature-validator.d.ts.map +1 -0
  119. package/dist/parsers/feature-validator.js +483 -0
  120. package/dist/parsers/feature-validator.js.map +1 -0
  121. package/dist/parsers/index.d.ts +8 -0
  122. package/dist/parsers/index.d.ts.map +1 -0
  123. package/dist/parsers/index.js +9 -0
  124. package/dist/parsers/index.js.map +1 -0
  125. package/dist/parsers/parser-manager.d.ts +103 -0
  126. package/dist/parsers/parser-manager.d.ts.map +1 -0
  127. package/dist/parsers/parser-manager.js +321 -0
  128. package/dist/parsers/parser-manager.js.map +1 -0
  129. package/dist/parsers/parser.d.ts +23 -0
  130. package/dist/parsers/parser.d.ts.map +1 -0
  131. package/dist/parsers/parser.js +6 -0
  132. package/dist/parsers/parser.js.map +1 -0
  133. package/dist/parsers/react-parser.d.ts +22 -0
  134. package/dist/parsers/react-parser.d.ts.map +1 -0
  135. package/dist/parsers/react-parser.js +307 -0
  136. package/dist/parsers/react-parser.js.map +1 -0
  137. package/dist/parsers/svelte-parser.d.ts +33 -0
  138. package/dist/parsers/svelte-parser.d.ts.map +1 -0
  139. package/dist/parsers/svelte-parser.js +408 -0
  140. package/dist/parsers/svelte-parser.js.map +1 -0
  141. package/dist/parsers/vanilla-parser.d.ts +31 -0
  142. package/dist/parsers/vanilla-parser.d.ts.map +1 -0
  143. package/dist/parsers/vanilla-parser.js +590 -0
  144. package/dist/parsers/vanilla-parser.js.map +1 -0
  145. package/dist/parsers/vue-parser.d.ts +9 -0
  146. package/dist/parsers/vue-parser.d.ts.map +1 -0
  147. package/dist/parsers/vue-parser.js +16 -0
  148. package/dist/parsers/vue-parser.js.map +1 -0
  149. package/dist/terminal-header.d.ts +12 -0
  150. package/dist/terminal-header.js +45 -0
  151. package/dist/types/index.d.ts +83 -0
  152. package/dist/types/index.d.ts.map +1 -0
  153. package/dist/types/index.js +5 -0
  154. package/dist/types/index.js.map +1 -0
  155. package/dist/ui/components.d.ts +133 -0
  156. package/dist/ui/components.d.ts.map +1 -0
  157. package/dist/ui/components.js +482 -0
  158. package/dist/ui/components.js.map +1 -0
  159. package/dist/ui/help.d.ts +11 -0
  160. package/dist/ui/help.d.ts.map +1 -0
  161. package/dist/ui/help.js +161 -0
  162. package/dist/ui/help.js.map +1 -0
  163. package/dist/ui/index.d.ts +5 -0
  164. package/dist/ui/index.d.ts.map +1 -0
  165. package/dist/ui/index.js +5 -0
  166. package/dist/ui/index.js.map +1 -0
  167. package/dist/ui/prompts.d.ts +63 -0
  168. package/dist/ui/prompts.d.ts.map +1 -0
  169. package/dist/ui/prompts.js +611 -0
  170. package/dist/ui/prompts.js.map +1 -0
  171. package/dist/ui/terminal-header.d.ts +13 -0
  172. package/dist/ui/terminal-header.d.ts.map +1 -0
  173. package/dist/ui/terminal-header.js +46 -0
  174. package/dist/ui/terminal-header.js.map +1 -0
  175. package/package.json +80 -0
  176. package/src/ai/__tests__/gemini-analyzer.test.ts +181 -0
  177. package/src/ai/fix-manager.ts +362 -0
  178. package/src/ai/gemini-analyzer.ts +671 -0
  179. package/src/ai/index.ts +4 -0
  180. package/src/ai/jules-implementer.ts +459 -0
  181. package/src/commands/automation.ts +344 -0
  182. package/src/commands/check.ts +299 -0
  183. package/src/commands/config.ts +365 -0
  184. package/src/commands/fix.ts +234 -0
  185. package/src/commands/index.ts +6 -0
  186. package/src/commands/init.ts +142 -0
  187. package/src/commands/status.ts +0 -0
  188. package/src/core/api-key-manager.ts +298 -0
  189. package/src/core/baseguard.ts +742 -0
  190. package/src/core/baseline-checker.ts +563 -0
  191. package/src/core/cache-manager.ts +270 -0
  192. package/src/core/configuration-recovery.ts +676 -0
  193. package/src/core/configuration.ts +559 -0
  194. package/src/core/debug-logger.ts +590 -0
  195. package/src/core/directory-filter.ts +421 -0
  196. package/src/core/error-handler.ts +517 -0
  197. package/src/core/file-processor.ts +331 -0
  198. package/src/core/gitignore-manager.ts +169 -0
  199. package/src/core/graceful-degradation-manager.ts +596 -0
  200. package/src/core/index.ts +13 -0
  201. package/src/core/lazy-loader.ts +307 -0
  202. package/src/core/logger.ts +0 -0
  203. package/src/core/memory-manager.ts +294 -0
  204. package/src/core/startup-optimizer.ts +173 -0
  205. package/src/core/system-error-handler.ts +746 -0
  206. package/src/git/automation-engine.ts +361 -0
  207. package/src/git/github-manager.ts +260 -0
  208. package/src/git/hook-manager.ts +210 -0
  209. package/src/git/index.ts +4 -0
  210. package/src/index.ts +8 -0
  211. package/src/parsers/feature-validator.ts +559 -0
  212. package/src/parsers/index.ts +8 -0
  213. package/src/parsers/parser-manager.ts +419 -0
  214. package/src/parsers/parser.ts +26 -0
  215. package/src/parsers/react-parser-optimized.ts +161 -0
  216. package/src/parsers/react-parser.ts +359 -0
  217. package/src/parsers/svelte-parser.ts +506 -0
  218. package/src/parsers/vanilla-parser.ts +682 -0
  219. package/src/parsers/vue-parser.ts +472 -0
  220. package/src/types/index.ts +92 -0
  221. package/src/ui/components.ts +567 -0
  222. package/src/ui/help.ts +193 -0
  223. package/src/ui/index.ts +4 -0
  224. package/src/ui/prompts.ts +688 -0
  225. package/src/ui/terminal-header.ts +59 -0
  226. package/test-config-commands.js +56 -0
  227. package/test-header-simple.js +33 -0
  228. package/test-terminal-header.js +12 -0
  229. package/test-ui.js +29 -0
  230. package/tests/e2e/baseguard.e2e.test.ts +516 -0
  231. package/tests/e2e/cross-platform.e2e.test.ts +420 -0
  232. package/tests/e2e/git-integration.e2e.test.ts +487 -0
  233. package/tests/fixtures/react-project/package.json +14 -0
  234. package/tests/fixtures/react-project/src/App.css +76 -0
  235. package/tests/fixtures/react-project/src/App.tsx +77 -0
  236. package/tests/fixtures/svelte-project/package.json +11 -0
  237. package/tests/fixtures/svelte-project/src/App.svelte +369 -0
  238. package/tests/fixtures/vanilla-project/index.html +76 -0
  239. package/tests/fixtures/vanilla-project/script.js +331 -0
  240. package/tests/fixtures/vanilla-project/styles.css +359 -0
  241. package/tests/fixtures/vue-project/package.json +12 -0
  242. package/tests/fixtures/vue-project/src/App.vue +216 -0
  243. package/tsconfig.json +36 -0
  244. package/vitest.config.ts +10 -0
@@ -0,0 +1,321 @@
1
+ import { FeatureValidator } from './feature-validator.js';
2
+ import { MemoryManager } from '../core/memory-manager.js';
3
+ import { readFile, stat } from 'fs/promises';
4
+ import { join } from 'path';
5
+ /**
6
+ * Parser manager that coordinates all parsers and provides concurrent processing
7
+ * for large codebases with advanced web APIs using lazy loading
8
+ */
9
+ export class ParserManager {
10
+ parsers = new Map();
11
+ validator;
12
+ maxConcurrency;
13
+ initialized = false;
14
+ constructor(maxConcurrency = 10) {
15
+ this.validator = new FeatureValidator();
16
+ this.maxConcurrency = maxConcurrency;
17
+ // Don't initialize parsers immediately - use lazy loading
18
+ }
19
+ /**
20
+ * Lazy load parsers only when needed
21
+ */
22
+ async ensureParsersLoaded() {
23
+ if (this.initialized) {
24
+ return;
25
+ }
26
+ try {
27
+ // Dynamically import parsers to reduce startup time
28
+ const [{ ReactParser }, { VueParser }, { SvelteParser }, { VanillaParser }] = await Promise.all([
29
+ import('./react-parser.js'),
30
+ import('./vue-parser.js'),
31
+ import('./svelte-parser.js'),
32
+ import('./vanilla-parser.js')
33
+ ]);
34
+ this.parsers.set('react', new ReactParser());
35
+ this.parsers.set('vue', new VueParser());
36
+ this.parsers.set('svelte', new SvelteParser());
37
+ this.parsers.set('vanilla', new VanillaParser());
38
+ this.initialized = true;
39
+ }
40
+ catch (error) {
41
+ console.warn('Failed to load some parsers:', error);
42
+ this.initialized = true;
43
+ }
44
+ }
45
+ /**
46
+ * Get parser for file type with lazy loading
47
+ */
48
+ async getParserForFile(filePath) {
49
+ await this.ensureParsersLoaded();
50
+ for (const parser of this.parsers.values()) {
51
+ if (parser.canParse(filePath)) {
52
+ return parser;
53
+ }
54
+ }
55
+ return null;
56
+ }
57
+ /**
58
+ * Parse multiple files concurrently with error handling
59
+ */
60
+ async parseFiles(filePaths) {
61
+ const allFeatures = [];
62
+ // Filter out unsupported files
63
+ const supportedFiles = filePaths.filter(filePath => this.canParseFile(filePath));
64
+ if (supportedFiles.length === 0) {
65
+ return [];
66
+ }
67
+ // Process files in batches for better performance
68
+ const batches = this.createBatches(supportedFiles, this.maxConcurrency);
69
+ for (const batch of batches) {
70
+ try {
71
+ const batchResults = await Promise.allSettled(batch.map(filePath => this.parseFile(filePath)));
72
+ batchResults.forEach((result, index) => {
73
+ if (result.status === 'fulfilled') {
74
+ allFeatures.push(...result.value);
75
+ }
76
+ else {
77
+ console.warn(`Failed to parse ${batch[index]}: ${result.reason}`);
78
+ }
79
+ });
80
+ // Small delay between batches to prevent overwhelming the system
81
+ if (batches.length > 1) {
82
+ await this.sleep(10);
83
+ }
84
+ }
85
+ catch (error) {
86
+ console.error(`Error processing batch: ${error instanceof Error ? error.message : 'Unknown error'}`);
87
+ }
88
+ }
89
+ // Validate and filter features
90
+ return this.validator.validateFeatures(allFeatures, this.maxConcurrency);
91
+ }
92
+ /**
93
+ * Parse a single file with memory optimization
94
+ */
95
+ async parseFile(filePath) {
96
+ try {
97
+ // Find appropriate parser
98
+ const parser = await this.getParserForFile(filePath);
99
+ if (!parser) {
100
+ return [];
101
+ }
102
+ // Check file size and use streaming for large files
103
+ const fileStats = await stat(filePath);
104
+ if (MemoryManager.shouldStream(fileStats.size)) {
105
+ return await this.parseFileStreaming(filePath, parser);
106
+ }
107
+ // Read file content for smaller files
108
+ const content = await readFile(filePath, 'utf-8');
109
+ // Parse features
110
+ const features = await parser.parseFeatures(content, filePath);
111
+ // Add file path to features for tracking and optimize memory
112
+ return features.map(feature => MemoryManager.optimizeObject({
113
+ ...feature,
114
+ file: filePath
115
+ }));
116
+ }
117
+ catch (error) {
118
+ // Graceful error handling for unsupported files and syntax errors
119
+ if (error instanceof Error) {
120
+ if (error.message.includes('ENOENT')) {
121
+ console.warn(`File not found: ${filePath}`);
122
+ }
123
+ else if (error.message.includes('SyntaxError') || error.message.includes('Unexpected token')) {
124
+ console.warn(`Syntax error in ${filePath}: ${error.message}`);
125
+ }
126
+ else {
127
+ console.warn(`Error parsing ${filePath}: ${error.message}`);
128
+ }
129
+ }
130
+ else {
131
+ console.warn(`Unknown error parsing ${filePath}`);
132
+ }
133
+ return [];
134
+ }
135
+ }
136
+ /**
137
+ * Parse large files using streaming to reduce memory usage
138
+ */
139
+ async parseFileStreaming(filePath, parser) {
140
+ const features = [];
141
+ await MemoryManager.readFileStreaming(filePath, async (chunk, startLine) => {
142
+ try {
143
+ const chunkFeatures = await parser.parseFeatures(chunk, filePath);
144
+ // Adjust line numbers for chunk offset
145
+ const adjustedFeatures = chunkFeatures.map(feature => ({
146
+ ...feature,
147
+ line: feature.line + startLine - 1,
148
+ file: filePath
149
+ }));
150
+ features.push(...adjustedFeatures);
151
+ }
152
+ catch (error) {
153
+ // Continue processing other chunks even if one fails
154
+ console.warn(`Error parsing chunk in ${filePath}: ${error}`);
155
+ }
156
+ });
157
+ return features;
158
+ }
159
+ /**
160
+ * Check if a file can be parsed by any available parser
161
+ */
162
+ async canParseFile(filePath) {
163
+ await this.ensureParsersLoaded();
164
+ for (const parser of this.parsers.values()) {
165
+ if (parser.canParse(filePath)) {
166
+ return true;
167
+ }
168
+ }
169
+ return false;
170
+ }
171
+ /**
172
+ * Get all supported file extensions
173
+ */
174
+ async getSupportedExtensions() {
175
+ await this.ensureParsersLoaded();
176
+ const extensions = new Set();
177
+ this.parsers.forEach(parser => {
178
+ parser.getSupportedExtensions().forEach(ext => extensions.add(ext));
179
+ });
180
+ return Array.from(extensions);
181
+ }
182
+ /**
183
+ * Get parser information for debugging
184
+ */
185
+ async getParserInfo() {
186
+ await this.ensureParsersLoaded();
187
+ return Array.from(this.parsers.values()).map(parser => ({
188
+ name: parser.getName(),
189
+ extensions: parser.getSupportedExtensions()
190
+ }));
191
+ }
192
+ /**
193
+ * Filter files by supported extensions
194
+ */
195
+ async filterSupportedFiles(filePaths) {
196
+ const supportedExtensions = await this.getSupportedExtensions();
197
+ return filePaths.filter(filePath => {
198
+ const extension = this.getFileExtension(filePath);
199
+ return supportedExtensions.includes(extension);
200
+ });
201
+ }
202
+ /**
203
+ * Scan directory for supported files (recursive)
204
+ */
205
+ async scanDirectory(directoryPath, options = {}) {
206
+ const { recursive = true, excludePatterns = ['node_modules', '.git', 'dist', 'build', '.next', '.nuxt'], maxDepth = 10 } = options;
207
+ const supportedFiles = [];
208
+ try {
209
+ await this.scanDirectoryRecursive(directoryPath, supportedFiles, excludePatterns, recursive, 0, maxDepth);
210
+ }
211
+ catch (error) {
212
+ console.error(`Error scanning directory ${directoryPath}: ${error instanceof Error ? error.message : 'Unknown error'}`);
213
+ }
214
+ return supportedFiles;
215
+ }
216
+ /**
217
+ * Recursive directory scanning helper
218
+ */
219
+ async scanDirectoryRecursive(currentPath, results, excludePatterns, recursive, currentDepth, maxDepth) {
220
+ if (currentDepth >= maxDepth) {
221
+ return;
222
+ }
223
+ try {
224
+ const { readdir, stat } = await import('fs/promises');
225
+ const entries = await readdir(currentPath);
226
+ for (const entry of entries) {
227
+ const fullPath = join(currentPath, entry);
228
+ // Skip excluded patterns
229
+ if (excludePatterns.some(pattern => entry.includes(pattern))) {
230
+ continue;
231
+ }
232
+ try {
233
+ const stats = await stat(fullPath);
234
+ if (stats.isFile()) {
235
+ if (await this.canParseFile(fullPath)) {
236
+ results.push(fullPath);
237
+ }
238
+ }
239
+ else if (stats.isDirectory() && recursive) {
240
+ await this.scanDirectoryRecursive(fullPath, results, excludePatterns, recursive, currentDepth + 1, maxDepth);
241
+ }
242
+ }
243
+ catch (error) {
244
+ // Skip files/directories that can't be accessed
245
+ continue;
246
+ }
247
+ }
248
+ }
249
+ catch (error) {
250
+ console.warn(`Could not read directory ${currentPath}: ${error instanceof Error ? error.message : 'Unknown error'}`);
251
+ }
252
+ }
253
+ /**
254
+ * Get processing statistics
255
+ */
256
+ async getProcessingStats(filePaths) {
257
+ const supportedFiles = await this.filterSupportedFiles(filePaths);
258
+ const filesByType = {};
259
+ supportedFiles.forEach(filePath => {
260
+ const extension = this.getFileExtension(filePath);
261
+ filesByType[extension] = (filesByType[extension] || 0) + 1;
262
+ });
263
+ // Rough estimation: 10ms per file on average
264
+ const estimatedProcessingTime = Math.ceil(supportedFiles.length * 10 / this.maxConcurrency);
265
+ // Memory estimate: ~50KB per file on average
266
+ const memoryEstimate = `${Math.round(supportedFiles.length * 50 / 1024)}MB`;
267
+ return {
268
+ totalFiles: filePaths.length,
269
+ supportedFiles: supportedFiles.length,
270
+ filesByType,
271
+ estimatedProcessingTime,
272
+ memoryEstimate
273
+ };
274
+ }
275
+ /**
276
+ * Get memory and performance statistics
277
+ */
278
+ getStats() {
279
+ return {
280
+ parsersLoaded: this.parsers.size,
281
+ maxConcurrency: this.maxConcurrency,
282
+ memoryStats: MemoryManager.getMemoryStats()
283
+ };
284
+ }
285
+ /**
286
+ * Create batches for concurrent processing
287
+ */
288
+ createBatches(items, batchSize) {
289
+ const batches = [];
290
+ for (let i = 0; i < items.length; i += batchSize) {
291
+ batches.push(items.slice(i, i + batchSize));
292
+ }
293
+ return batches;
294
+ }
295
+ /**
296
+ * Get file extension
297
+ */
298
+ getFileExtension(filePath) {
299
+ const match = filePath.match(/\.[^.]+$/);
300
+ return match ? match[0] : '';
301
+ }
302
+ /**
303
+ * Sleep utility for batch processing
304
+ */
305
+ sleep(ms) {
306
+ return new Promise(resolve => setTimeout(resolve, ms));
307
+ }
308
+ /**
309
+ * Get feature validator instance
310
+ */
311
+ getValidator() {
312
+ return this.validator;
313
+ }
314
+ /**
315
+ * Validate features without parsing (for external use)
316
+ */
317
+ async validateFeatures(features) {
318
+ return this.validator.validateFeatures(features, this.maxConcurrency);
319
+ }
320
+ }
321
+ //# sourceMappingURL=parser-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser-manager.js","sourceRoot":"","sources":["../../src/parsers/parser-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { DetectedFeature } from '../types/index.js';
2
+ /**
3
+ * Abstract base class for all code parsers
4
+ */
5
+ export declare abstract class Parser {
6
+ /**
7
+ * Check if this parser can handle the given file
8
+ */
9
+ abstract canParse(filePath: string): boolean;
10
+ /**
11
+ * Parse features from file content
12
+ */
13
+ abstract parseFeatures(content: string, filePath: string): Promise<DetectedFeature[]>;
14
+ /**
15
+ * Get supported file extensions for this parser
16
+ */
17
+ abstract getSupportedExtensions(): string[];
18
+ /**
19
+ * Get parser name for identification
20
+ */
21
+ abstract getName(): string;
22
+ }
23
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parsers/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;GAEG;AACH,8BAAsB,MAAM;IAC1B;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAE5C;;OAEG;IACH,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAErF;;OAEG;IACH,QAAQ,CAAC,sBAAsB,IAAI,MAAM,EAAE;IAE3C;;OAEG;IACH,QAAQ,CAAC,OAAO,IAAI,MAAM;CAC3B"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Abstract base class for all code parsers
3
+ */
4
+ export class Parser {
5
+ }
6
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parsers/parser.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,OAAgB,MAAM;CAoB3B"}
@@ -0,0 +1,22 @@
1
+ import { Parser } from './parser.js';
2
+ import type { DetectedFeature } from '../types/index.js';
3
+ /**
4
+ * React/JSX parser using Babel - extracts ALL web platform features
5
+ * while ignoring React-specific APIs
6
+ */
7
+ export declare class ReactParser extends Parser {
8
+ private readonly REACT_SPECIFIC_APIS;
9
+ private readonly WEB_PLATFORM_APIS;
10
+ private readonly CSS_PROPERTIES;
11
+ canParse(filePath: string): boolean;
12
+ parseFeatures(content: string, filePath: string): Promise<DetectedFeature[]>;
13
+ private extractWebAPIFeature;
14
+ private extractWebAPICall;
15
+ private extractInlineCSS;
16
+ private getMemberExpressionName;
17
+ private isTopLevelAwait;
18
+ private getContext;
19
+ getSupportedExtensions(): string[];
20
+ getName(): string;
21
+ }
22
+ //# sourceMappingURL=react-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-parser.d.ts","sourceRoot":"","sources":["../../src/parsers/react-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD;;;GAGG;AACH,qBAAa,WAAY,SAAQ,MAAM;IACrC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAiBjC;IAEH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAwC/B;IAEH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAuB5B;IAEH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI7B,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAiIlF,OAAO,CAAC,oBAAoB;IAoB5B,OAAO,CAAC,iBAAiB;IA0BzB,OAAO,CAAC,gBAAgB;IAwCxB,OAAO,CAAC,uBAAuB;IAkB/B,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,UAAU;IAMlB,sBAAsB,IAAI,MAAM,EAAE;IAIlC,OAAO,IAAI,MAAM;CAGlB"}