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,259 @@
1
+ import { Worker } from 'worker_threads';
2
+ import { cpus } from 'os';
3
+ import { join, dirname } from 'path';
4
+ import { fileURLToPath } from 'url';
5
+ import { CacheManager } from './cache-manager.js';
6
+ /**
7
+ * File processor with concurrent parsing using worker threads
8
+ */
9
+ export class FileProcessor {
10
+ maxWorkers;
11
+ cacheManager;
12
+ workers = [];
13
+ taskQueue = [];
14
+ pendingTasks = new Map();
15
+ isProcessing = false;
16
+ constructor(options = {}) {
17
+ this.maxWorkers = options.maxWorkers || Math.min(cpus().length, 8);
18
+ this.cacheManager = options.cacheManager || new CacheManager();
19
+ }
20
+ /**
21
+ * Process multiple files concurrently with caching
22
+ */
23
+ async processFiles(filePaths) {
24
+ // Check cache for unchanged files
25
+ const { changed, unchanged } = await this.cacheManager.getChangedFiles(filePaths);
26
+ // Get cached results for unchanged files
27
+ const cachedFeatures = [];
28
+ for (const filePath of unchanged) {
29
+ const cached = await this.cacheManager.getCachedParseResult(filePath);
30
+ if (cached) {
31
+ cachedFeatures.push(...cached);
32
+ }
33
+ else {
34
+ // Cache miss, need to process
35
+ changed.push(filePath);
36
+ }
37
+ }
38
+ // Process changed files
39
+ const newFeatures = changed.length > 0
40
+ ? await this.processFilesWithWorkers(changed)
41
+ : [];
42
+ return [...cachedFeatures, ...newFeatures];
43
+ }
44
+ /**
45
+ * Process files using worker threads
46
+ */
47
+ async processFilesWithWorkers(filePaths) {
48
+ if (filePaths.length === 0) {
49
+ return [];
50
+ }
51
+ // Create worker tasks
52
+ const tasks = filePaths.map((filePath, index) => ({
53
+ id: `task_${index}_${Date.now()}`,
54
+ filePath
55
+ }));
56
+ // Process tasks in batches
57
+ const batchSize = Math.max(1, Math.ceil(tasks.length / this.maxWorkers));
58
+ const batches = [];
59
+ for (let i = 0; i < tasks.length; i += batchSize) {
60
+ batches.push(tasks.slice(i, i + batchSize));
61
+ }
62
+ const allFeatures = [];
63
+ // Process each batch
64
+ for (const batch of batches) {
65
+ const batchResults = await Promise.allSettled(batch.map(task => this.processTask(task)));
66
+ batchResults.forEach((result, index) => {
67
+ if (result.status === 'fulfilled') {
68
+ allFeatures.push(...result.value);
69
+ // Cache the result
70
+ this.cacheManager.setCachedParseResult(batch[index].filePath, result.value);
71
+ }
72
+ else {
73
+ console.warn(`Failed to process ${batch[index].filePath}: ${result.reason}`);
74
+ }
75
+ });
76
+ // Small delay between batches to prevent overwhelming
77
+ if (batches.length > 1) {
78
+ await this.sleep(10);
79
+ }
80
+ }
81
+ return allFeatures;
82
+ }
83
+ /**
84
+ * Process a single task
85
+ */
86
+ async processTask(task) {
87
+ return new Promise((resolve, reject) => {
88
+ // Check cache first
89
+ this.cacheManager.getCachedParseResult(task.filePath)
90
+ .then(cached => {
91
+ if (cached) {
92
+ resolve(cached);
93
+ return;
94
+ }
95
+ // Add to pending tasks
96
+ this.pendingTasks.set(task.id, { resolve, reject });
97
+ this.taskQueue.push(task);
98
+ // Start processing if not already running
99
+ if (!this.isProcessing) {
100
+ this.startProcessing();
101
+ }
102
+ })
103
+ .catch(reject);
104
+ });
105
+ }
106
+ /**
107
+ * Start worker processing
108
+ */
109
+ async startProcessing() {
110
+ if (this.isProcessing) {
111
+ return;
112
+ }
113
+ this.isProcessing = true;
114
+ try {
115
+ // Initialize workers
116
+ await this.initializeWorkers();
117
+ // Process tasks
118
+ while (this.taskQueue.length > 0 || this.pendingTasks.size > 0) {
119
+ await this.processBatch();
120
+ await this.sleep(10);
121
+ }
122
+ }
123
+ finally {
124
+ // Cleanup
125
+ await this.terminateWorkers();
126
+ this.isProcessing = false;
127
+ }
128
+ }
129
+ /**
130
+ * Initialize worker threads
131
+ */
132
+ async initializeWorkers() {
133
+ const workerScript = this.getWorkerScriptPath();
134
+ const numWorkers = Math.min(this.maxWorkers, this.taskQueue.length);
135
+ for (let i = 0; i < numWorkers; i++) {
136
+ try {
137
+ const worker = new Worker(workerScript);
138
+ worker.on('message', (result) => {
139
+ this.handleWorkerResult(result);
140
+ });
141
+ worker.on('error', (error) => {
142
+ console.error(`Worker error: ${error.message}`);
143
+ });
144
+ this.workers.push(worker);
145
+ }
146
+ catch (error) {
147
+ console.warn(`Failed to create worker: ${error instanceof Error ? error.message : 'Unknown error'}`);
148
+ }
149
+ }
150
+ }
151
+ /**
152
+ * Process a batch of tasks with available workers
153
+ */
154
+ async processBatch() {
155
+ const availableWorkers = this.workers.length;
156
+ const tasksToProcess = this.taskQueue.splice(0, availableWorkers);
157
+ if (tasksToProcess.length === 0) {
158
+ return;
159
+ }
160
+ // Assign tasks to workers
161
+ const promises = tasksToProcess.map((task, index) => {
162
+ const worker = this.workers[index % this.workers.length];
163
+ return this.assignTaskToWorker(worker, task);
164
+ });
165
+ await Promise.allSettled(promises);
166
+ }
167
+ /**
168
+ * Assign task to worker
169
+ */
170
+ async assignTaskToWorker(worker, task) {
171
+ return new Promise((resolve) => {
172
+ const timeout = setTimeout(() => {
173
+ console.warn(`Worker task ${task.id} timed out`);
174
+ this.handleWorkerError(task.id, new Error('Worker timeout'));
175
+ resolve();
176
+ }, 30000); // 30 second timeout
177
+ const messageHandler = (result) => {
178
+ if (result.id === task.id) {
179
+ clearTimeout(timeout);
180
+ worker.off('message', messageHandler);
181
+ resolve();
182
+ }
183
+ };
184
+ worker.on('message', messageHandler);
185
+ worker.postMessage(task);
186
+ });
187
+ }
188
+ /**
189
+ * Handle worker result
190
+ */
191
+ handleWorkerResult(result) {
192
+ const pending = this.pendingTasks.get(result.id);
193
+ if (!pending) {
194
+ return;
195
+ }
196
+ this.pendingTasks.delete(result.id);
197
+ if (result.error) {
198
+ pending.reject(new Error(result.error));
199
+ }
200
+ else {
201
+ pending.resolve(result.features);
202
+ }
203
+ }
204
+ /**
205
+ * Handle worker error
206
+ */
207
+ handleWorkerError(taskId, error) {
208
+ const pending = this.pendingTasks.get(taskId);
209
+ if (pending) {
210
+ this.pendingTasks.delete(taskId);
211
+ pending.reject(error);
212
+ }
213
+ }
214
+ /**
215
+ * Terminate all workers
216
+ */
217
+ async terminateWorkers() {
218
+ await Promise.all(this.workers.map(worker => worker.terminate()));
219
+ this.workers = [];
220
+ }
221
+ /**
222
+ * Get worker script path
223
+ */
224
+ getWorkerScriptPath() {
225
+ // For now, we'll use a simple fallback since we don't have worker threads implemented yet
226
+ // In a real implementation, this would point to a separate worker script
227
+ const __filename = fileURLToPath(import.meta.url);
228
+ const __dirname = dirname(__filename);
229
+ return join(__dirname, 'parser-worker.js');
230
+ }
231
+ /**
232
+ * Sleep utility
233
+ */
234
+ sleep(ms) {
235
+ return new Promise(resolve => setTimeout(resolve, ms));
236
+ }
237
+ /**
238
+ * Get processing statistics
239
+ */
240
+ getStats() {
241
+ return {
242
+ maxWorkers: this.maxWorkers,
243
+ activeWorkers: this.workers.length,
244
+ queuedTasks: this.taskQueue.length,
245
+ pendingTasks: this.pendingTasks.size,
246
+ cacheStats: this.cacheManager.getStats()
247
+ };
248
+ }
249
+ /**
250
+ * Cleanup resources
251
+ */
252
+ async cleanup() {
253
+ await this.terminateWorkers();
254
+ this.taskQueue = [];
255
+ this.pendingTasks.clear();
256
+ this.isProcessing = false;
257
+ }
258
+ }
259
+ //# sourceMappingURL=file-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-processor.js","sourceRoot":"","sources":["../../src/core/file-processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Manages .gitignore file to ensure sensitive configuration is not committed
3
+ */
4
+ export declare class GitignoreManager {
5
+ private static readonly GITIGNORE_FILE;
6
+ private static readonly CONFIG_FILE;
7
+ /**
8
+ * Ensure .baseguardrc.json is in .gitignore for security
9
+ */
10
+ static ensureConfigIgnored(): Promise<boolean>;
11
+ /**
12
+ * Check if a file exists
13
+ */
14
+ private static fileExists;
15
+ /**
16
+ * Create new .gitignore with BaseGuard configuration
17
+ */
18
+ private static createGitignore;
19
+ /**
20
+ * Check if config file is already ignored
21
+ */
22
+ private static isConfigIgnored;
23
+ /**
24
+ * Add config file to existing .gitignore
25
+ */
26
+ private static addConfigToGitignore;
27
+ /**
28
+ * Simple glob pattern matching
29
+ */
30
+ private static matchesPattern;
31
+ /**
32
+ * Check if config file is properly ignored
33
+ */
34
+ static isConfigSecure(): Promise<{
35
+ gitignoreExists: boolean;
36
+ configIgnored: boolean;
37
+ recommendations: string[];
38
+ }>;
39
+ /**
40
+ * Get security recommendations for the user
41
+ */
42
+ static getSecurityRecommendations(): Promise<string[]>;
43
+ }
44
+ //# sourceMappingURL=gitignore-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitignore-manager.d.ts","sourceRoot":"","sources":["../../src/core/gitignore-manager.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAgB;IACtD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAuB;IAE1D;;OAEG;WACU,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC;IA6BpD;;OAEG;mBACkB,UAAU;IAS/B;;OAEG;mBACkB,eAAe;IAOpC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAkB9B;;OAEG;mBACkB,oBAAoB;IAiBzC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAW7B;;OAEG;WACU,cAAc,IAAI,OAAO,CAAC;QACrC,eAAe,EAAE,OAAO,CAAC;QACzB,aAAa,EAAE,OAAO,CAAC;QACvB,eAAe,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;IAmCF;;OAEG;WACU,0BAA0B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAI7D"}
@@ -0,0 +1,147 @@
1
+ import { readFile, writeFile, access } from 'fs/promises';
2
+ import { constants } from 'fs';
3
+ /**
4
+ * Manages .gitignore file to ensure sensitive configuration is not committed
5
+ */
6
+ export class GitignoreManager {
7
+ static GITIGNORE_FILE = '.gitignore';
8
+ static CONFIG_FILE = '.baseguardrc.json';
9
+ /**
10
+ * Ensure .baseguardrc.json is in .gitignore for security
11
+ */
12
+ static async ensureConfigIgnored() {
13
+ try {
14
+ // Check if .gitignore exists
15
+ const gitignoreExists = await this.fileExists(this.GITIGNORE_FILE);
16
+ if (!gitignoreExists) {
17
+ // Create .gitignore with BaseGuard config
18
+ await this.createGitignore();
19
+ return true;
20
+ }
21
+ // Read existing .gitignore
22
+ const content = await readFile(this.GITIGNORE_FILE, 'utf-8');
23
+ // Check if our config file is already ignored
24
+ if (this.isConfigIgnored(content)) {
25
+ return false; // Already ignored, no changes made
26
+ }
27
+ // Add our config to .gitignore
28
+ await this.addConfigToGitignore(content);
29
+ return true; // Changes made
30
+ }
31
+ catch (error) {
32
+ console.warn(`Warning: Could not update .gitignore: ${error instanceof Error ? error.message : 'Unknown error'}`);
33
+ return false;
34
+ }
35
+ }
36
+ /**
37
+ * Check if a file exists
38
+ */
39
+ static async fileExists(filePath) {
40
+ try {
41
+ await access(filePath, constants.F_OK);
42
+ return true;
43
+ }
44
+ catch {
45
+ return false;
46
+ }
47
+ }
48
+ /**
49
+ * Create new .gitignore with BaseGuard configuration
50
+ */
51
+ static async createGitignore() {
52
+ const content = `# BaseGuard configuration (contains API keys)
53
+ ${this.CONFIG_FILE}
54
+ `;
55
+ await writeFile(this.GITIGNORE_FILE, content, 'utf-8');
56
+ }
57
+ /**
58
+ * Check if config file is already ignored
59
+ */
60
+ static isConfigIgnored(gitignoreContent) {
61
+ const lines = gitignoreContent.split('\n').map(line => line.trim());
62
+ // Check for exact match or pattern that would match our config
63
+ return lines.some(line => {
64
+ if (line === this.CONFIG_FILE)
65
+ return true;
66
+ if (line === '*.json' && this.CONFIG_FILE.endsWith('.json'))
67
+ return true;
68
+ if (line === '.baseguardrc*')
69
+ return true;
70
+ // Check for glob patterns that might match
71
+ if (line.includes('*') && this.matchesPattern(this.CONFIG_FILE, line)) {
72
+ return true;
73
+ }
74
+ return false;
75
+ });
76
+ }
77
+ /**
78
+ * Add config file to existing .gitignore
79
+ */
80
+ static async addConfigToGitignore(existingContent) {
81
+ let content = existingContent;
82
+ // Ensure content ends with newline
83
+ if (!content.endsWith('\n')) {
84
+ content += '\n';
85
+ }
86
+ // Add BaseGuard section
87
+ content += `
88
+ # BaseGuard configuration (contains API keys)
89
+ ${this.CONFIG_FILE}
90
+ `;
91
+ await writeFile(this.GITIGNORE_FILE, content, 'utf-8');
92
+ }
93
+ /**
94
+ * Simple glob pattern matching
95
+ */
96
+ static matchesPattern(filename, pattern) {
97
+ // Convert glob pattern to regex
98
+ const regexPattern = pattern
99
+ .replace(/\./g, '\\.')
100
+ .replace(/\*/g, '.*')
101
+ .replace(/\?/g, '.');
102
+ const regex = new RegExp(`^${regexPattern}$`);
103
+ return regex.test(filename);
104
+ }
105
+ /**
106
+ * Check if config file is properly ignored
107
+ */
108
+ static async isConfigSecure() {
109
+ const recommendations = [];
110
+ const gitignoreExists = await this.fileExists(this.GITIGNORE_FILE);
111
+ let configIgnored = false;
112
+ if (!gitignoreExists) {
113
+ recommendations.push('Create .gitignore file to protect sensitive configuration');
114
+ }
115
+ else {
116
+ try {
117
+ const content = await readFile(this.GITIGNORE_FILE, 'utf-8');
118
+ configIgnored = this.isConfigIgnored(content);
119
+ if (!configIgnored) {
120
+ recommendations.push(`Add "${this.CONFIG_FILE}" to .gitignore to prevent committing API keys`);
121
+ }
122
+ }
123
+ catch (error) {
124
+ recommendations.push('Check .gitignore file permissions and readability');
125
+ }
126
+ }
127
+ // Check if config file exists and might be tracked
128
+ const configExists = await this.fileExists(this.CONFIG_FILE);
129
+ if (configExists && !configIgnored) {
130
+ recommendations.push('Remove .baseguardrc.json from git tracking if already committed');
131
+ recommendations.push('Run: git rm --cached .baseguardrc.json');
132
+ }
133
+ return {
134
+ gitignoreExists,
135
+ configIgnored,
136
+ recommendations
137
+ };
138
+ }
139
+ /**
140
+ * Get security recommendations for the user
141
+ */
142
+ static async getSecurityRecommendations() {
143
+ const status = await this.isConfigSecure();
144
+ return status.recommendations;
145
+ }
146
+ }
147
+ //# sourceMappingURL=gitignore-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitignore-manager.js","sourceRoot":"","sources":["../../src/core/gitignore-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export * from './baseguard.js';
2
+ export * from './baseline-checker.js';
3
+ export { ConfigurationManager, BROWSER_TARGET_PRESETS } from './configuration.js';
4
+ export type { PresetName } from './configuration.js';
5
+ export { ApiKeyManager } from './api-key-manager.js';
6
+ export { GitignoreManager } from './gitignore-manager.js';
7
+ export { CacheManager, LRUCache } from './cache-manager.js';
8
+ export { FileProcessor } from './file-processor.js';
9
+ export { DirectoryFilter } from './directory-filter.js';
10
+ export { LazyLoader } from './lazy-loader.js';
11
+ export { MemoryManager } from './memory-manager.js';
12
+ export { StartupOptimizer } from './startup-optimizer.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,13 @@
1
+ // Core engine exports
2
+ export * from './baseguard.js';
3
+ export * from './baseline-checker.js';
4
+ export { ConfigurationManager, BROWSER_TARGET_PRESETS } from './configuration.js';
5
+ export { ApiKeyManager } from './api-key-manager.js';
6
+ export { GitignoreManager } from './gitignore-manager.js';
7
+ export { CacheManager, LRUCache } from './cache-manager.js';
8
+ export { FileProcessor } from './file-processor.js';
9
+ export { DirectoryFilter } from './directory-filter.js';
10
+ export { LazyLoader } from './lazy-loader.js';
11
+ export { MemoryManager } from './memory-manager.js';
12
+ export { StartupOptimizer } from './startup-optimizer.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Lazy loading system for heavy dependencies and parsers
3
+ */
4
+ export declare class LazyLoader {
5
+ private static instances;
6
+ private static loadPromises;
7
+ /**
8
+ * Lazy load web-features package
9
+ */
10
+ static getWebFeatures(): Promise<any>;
11
+ /**
12
+ * Lazy load Babel parser
13
+ */
14
+ static getBabelParser(): Promise<any>;
15
+ /**
16
+ * Lazy load Babel traverse
17
+ */
18
+ static getBabelTraverse(): Promise<any>;
19
+ /**
20
+ * Lazy load PostCSS
21
+ */
22
+ static getPostCSS(): Promise<any>;
23
+ /**
24
+ * Lazy load Vue compiler
25
+ */
26
+ static getVueCompiler(): Promise<any>;
27
+ /**
28
+ * Lazy load Svelte compiler
29
+ */
30
+ static getSvelteCompiler(): Promise<any>;
31
+ /**
32
+ * Preload commonly used dependencies
33
+ */
34
+ static preloadCommon(): Promise<void>;
35
+ /**
36
+ * Clear all cached instances (for testing)
37
+ */
38
+ static clearCache(): void;
39
+ /**
40
+ * Get memory usage statistics
41
+ */
42
+ static getStats(): {
43
+ loadedModules: string[];
44
+ pendingLoads: string[];
45
+ memoryUsage?: NodeJS.MemoryUsage;
46
+ };
47
+ /**
48
+ * Load web-features with optimized loading
49
+ */
50
+ private static loadWebFeatures;
51
+ /**
52
+ * Optimize web-features data to reduce memory usage
53
+ */
54
+ private static optimizeWebFeaturesData;
55
+ /**
56
+ * Get startup performance statistics
57
+ */
58
+ static getStartupStats(): {
59
+ loadedModules: string[];
60
+ pendingLoads: string[];
61
+ startupTime?: number;
62
+ };
63
+ /**
64
+ * Optimize startup by preloading critical dependencies
65
+ */
66
+ static optimizeStartup(): Promise<void>;
67
+ }
68
+ //# sourceMappingURL=lazy-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy-loader.d.ts","sourceRoot":"","sources":["../../src/core/lazy-loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,SAAS,CAA0B;IAClD,OAAO,CAAC,MAAM,CAAC,YAAY,CAAmC;IAE9D;;OAEG;WACU,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC;IAyB3C;;OAEG;WACU,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC;IAyB3C;;OAEG;WACU,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC;IAyB7C;;OAEG;WACU,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC;IAyBvC;;OAEG;WACU,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC;IAyB3C;;OAEG;WACU,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC;IAyB9C;;OAEG;WACU,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3C;;OAEG;IACH,MAAM,CAAC,UAAU,IAAI,IAAI;IAKzB;;OAEG;IACH,MAAM,CAAC,QAAQ,IAAI;QACjB,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;KAClC;IAQD;;OAEG;mBACkB,eAAe;IAoBpC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IA0CtC;;OAEG;IACH,MAAM,CAAC,eAAe,IAAI;QACxB,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB;IAQD;;OAEG;WACU,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;CAU9C"}