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 @@
1
+ {"version":3,"file":"cache-manager.d.ts","sourceRoot":"","sources":["../../src/core/cache-manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;GAEG;AACH,qBAAa,QAAQ,CAAC,CAAC,EAAE,CAAC;IACxB,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,GAAE,MAAa;IAIlC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAU1B,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAW3B,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIpB,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,MAAM;CAGf;AAqBD;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiC;IAC5D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAwB;IACzD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA4B;IAC9D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;gBAE7B,OAAO,GAAE;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,eAAe,CAAC,EAAE,MAAM,CAAC;KACrB;IAQN;;OAEG;IACG,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC;IA2B/E;;OAEG;IACG,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBxF;;OAEG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI;IAIlD;;OAEG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI;IAIvD;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAClD,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IA0BF;;OAEG;IACH,QAAQ,IAAI,IAAI;IAMhB;;OAEG;IACH,YAAY,IAAI,IAAI;IAkBpB;;OAEG;IACH,QAAQ,IAAI;QACV,UAAU,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QAC9C,gBAAgB,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QACpD,iBAAiB,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;KACrC;IAgBD;;OAEG;YACW,eAAe;IAY7B;;OAEG;IACH,OAAO,CAAC,cAAc;IAMtB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAKzB"}
@@ -0,0 +1,213 @@
1
+ import { createHash } from 'crypto';
2
+ import { stat } from 'fs/promises';
3
+ /**
4
+ * LRU Cache implementation for web-features data and parsing results
5
+ */
6
+ export class LRUCache {
7
+ cache = new Map();
8
+ maxSize;
9
+ constructor(maxSize = 1000) {
10
+ this.maxSize = maxSize;
11
+ }
12
+ get(key) {
13
+ const value = this.cache.get(key);
14
+ if (value !== undefined) {
15
+ // Move to end (most recently used)
16
+ this.cache.delete(key);
17
+ this.cache.set(key, value);
18
+ }
19
+ return value;
20
+ }
21
+ set(key, value) {
22
+ if (this.cache.has(key)) {
23
+ this.cache.delete(key);
24
+ }
25
+ else if (this.cache.size >= this.maxSize) {
26
+ // Remove least recently used (first item)
27
+ const firstKey = this.cache.keys().next().value;
28
+ this.cache.delete(firstKey);
29
+ }
30
+ this.cache.set(key, value);
31
+ }
32
+ has(key) {
33
+ return this.cache.has(key);
34
+ }
35
+ clear() {
36
+ this.cache.clear();
37
+ }
38
+ size() {
39
+ return this.cache.size;
40
+ }
41
+ }
42
+ /**
43
+ * Cache manager for efficient file processing and incremental scanning
44
+ */
45
+ export class CacheManager {
46
+ parseCache;
47
+ webFeaturesCache;
48
+ fileMetadataCache;
49
+ maxCacheSize;
50
+ cacheValidityMs;
51
+ constructor(options = {}) {
52
+ this.maxCacheSize = options.maxCacheSize || 1000;
53
+ this.cacheValidityMs = options.cacheValidityMs || 5 * 60 * 1000; // 5 minutes
54
+ this.parseCache = new LRUCache(this.maxCacheSize);
55
+ this.webFeaturesCache = new LRUCache(500);
56
+ this.fileMetadataCache = new Map();
57
+ }
58
+ /**
59
+ * Get cached parsing result if file hasn't changed
60
+ */
61
+ async getCachedParseResult(filePath) {
62
+ try {
63
+ const currentMetadata = await this.getFileMetadata(filePath);
64
+ const cached = this.parseCache.get(filePath);
65
+ if (!cached) {
66
+ return null;
67
+ }
68
+ // Check if file has changed
69
+ if (this.hasFileChanged(cached.metadata, currentMetadata)) {
70
+ this.parseCache.set(filePath, { ...cached, metadata: currentMetadata });
71
+ return null;
72
+ }
73
+ // Check cache validity
74
+ if (Date.now() - cached.timestamp > this.cacheValidityMs) {
75
+ return null;
76
+ }
77
+ return cached.features;
78
+ }
79
+ catch (error) {
80
+ // File doesn't exist or can't be accessed
81
+ return null;
82
+ }
83
+ }
84
+ /**
85
+ * Cache parsing result
86
+ */
87
+ async setCachedParseResult(filePath, features) {
88
+ try {
89
+ const metadata = await this.getFileMetadata(filePath);
90
+ const cached = {
91
+ features,
92
+ metadata,
93
+ timestamp: Date.now()
94
+ };
95
+ this.parseCache.set(filePath, cached);
96
+ this.fileMetadataCache.set(filePath, metadata);
97
+ }
98
+ catch (error) {
99
+ // Ignore caching errors
100
+ }
101
+ }
102
+ /**
103
+ * Get cached web-features data
104
+ */
105
+ getCachedWebFeature(featureId) {
106
+ return this.webFeaturesCache.get(featureId) || null;
107
+ }
108
+ /**
109
+ * Cache web-features data
110
+ */
111
+ setCachedWebFeature(featureId, data) {
112
+ this.webFeaturesCache.set(featureId, data);
113
+ }
114
+ /**
115
+ * Check if files have changed since last scan
116
+ */
117
+ async getChangedFiles(filePaths) {
118
+ const changed = [];
119
+ const unchanged = [];
120
+ await Promise.all(filePaths.map(async (filePath) => {
121
+ try {
122
+ const currentMetadata = await this.getFileMetadata(filePath);
123
+ const cachedMetadata = this.fileMetadataCache.get(filePath);
124
+ if (!cachedMetadata || this.hasFileChanged(cachedMetadata, currentMetadata)) {
125
+ changed.push(filePath);
126
+ this.fileMetadataCache.set(filePath, currentMetadata);
127
+ }
128
+ else {
129
+ unchanged.push(filePath);
130
+ }
131
+ }
132
+ catch (error) {
133
+ // File doesn't exist or can't be accessed, consider it changed
134
+ changed.push(filePath);
135
+ }
136
+ }));
137
+ return { changed, unchanged };
138
+ }
139
+ /**
140
+ * Clear all caches
141
+ */
142
+ clearAll() {
143
+ this.parseCache.clear();
144
+ this.webFeaturesCache.clear();
145
+ this.fileMetadataCache.clear();
146
+ }
147
+ /**
148
+ * Clear expired cache entries
149
+ */
150
+ clearExpired() {
151
+ const now = Date.now();
152
+ const expiredKeys = [];
153
+ // Find expired parse cache entries
154
+ for (const [key, value] of this.parseCache['cache']) {
155
+ if (now - value.timestamp > this.cacheValidityMs) {
156
+ expiredKeys.push(key);
157
+ }
158
+ }
159
+ // Remove expired entries
160
+ expiredKeys.forEach(key => {
161
+ this.parseCache['cache'].delete(key);
162
+ this.fileMetadataCache.delete(key);
163
+ });
164
+ }
165
+ /**
166
+ * Get cache statistics
167
+ */
168
+ getStats() {
169
+ return {
170
+ parseCache: {
171
+ size: this.parseCache.size(),
172
+ maxSize: this.maxCacheSize
173
+ },
174
+ webFeaturesCache: {
175
+ size: this.webFeaturesCache.size(),
176
+ maxSize: 500
177
+ },
178
+ fileMetadataCache: {
179
+ size: this.fileMetadataCache.size
180
+ }
181
+ };
182
+ }
183
+ /**
184
+ * Get file metadata for change detection
185
+ */
186
+ async getFileMetadata(filePath) {
187
+ const stats = await stat(filePath);
188
+ const hash = this.generateFileHash(filePath, stats.mtime.getTime(), stats.size);
189
+ return {
190
+ path: filePath,
191
+ mtime: stats.mtime.getTime(),
192
+ size: stats.size,
193
+ hash
194
+ };
195
+ }
196
+ /**
197
+ * Check if file has changed based on metadata
198
+ */
199
+ hasFileChanged(cached, current) {
200
+ return cached.mtime !== current.mtime ||
201
+ cached.size !== current.size ||
202
+ cached.hash !== current.hash;
203
+ }
204
+ /**
205
+ * Generate hash for file identification
206
+ */
207
+ generateFileHash(filePath, mtime, size) {
208
+ return createHash('md5')
209
+ .update(`${filePath}:${mtime}:${size}`)
210
+ .digest('hex');
211
+ }
212
+ }
213
+ //# sourceMappingURL=cache-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-manager.js","sourceRoot":"","sources":["../../src/core/cache-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,140 @@
1
+ import type { Configuration, BrowserTarget } from '../types/index.js';
2
+ export declare const BROWSER_TARGET_PRESETS: {
3
+ 'baseline-widely': BrowserTarget[];
4
+ 'baseline-newly': BrowserTarget[];
5
+ 'last-2-years': BrowserTarget[];
6
+ };
7
+ export type PresetName = 'baseline-widely' | 'baseline-newly' | 'last-2-years';
8
+ /**
9
+ * Configuration manager for BaseGuard settings
10
+ */
11
+ export declare class ConfigurationManager {
12
+ private static readonly CONFIG_FILE;
13
+ /**
14
+ * Load configuration from file or create default
15
+ */
16
+ static load(): Promise<Configuration>;
17
+ /**
18
+ * Save configuration to file
19
+ */
20
+ static save(config: Configuration): Promise<void>;
21
+ /**
22
+ * Create default configuration
23
+ */
24
+ static createDefault(): Configuration;
25
+ /**
26
+ * Create configuration with preset browser targets
27
+ */
28
+ static createWithPreset(preset: PresetName): Configuration;
29
+ /**
30
+ * Create configuration with custom browser targets
31
+ */
32
+ static createWithCustomTargets(targets: BrowserTarget[]): Configuration;
33
+ /**
34
+ * Validate and migrate configuration
35
+ */
36
+ private static validateAndMigrate;
37
+ /**
38
+ * Validate browser targets
39
+ */
40
+ private static validateBrowserTargets;
41
+ /**
42
+ * Validate minimum version
43
+ */
44
+ private static validateMinVersion;
45
+ /**
46
+ * Validate automation trigger
47
+ */
48
+ private static validateTrigger;
49
+ /**
50
+ * Parse browser target string (e.g., "chrome 100", "safari baseline")
51
+ */
52
+ static parseBrowserTarget(targetString: string): BrowserTarget | null;
53
+ /**
54
+ * Parse multiple browser targets from strings
55
+ */
56
+ static parseBrowserTargets(targetStrings: string[]): BrowserTarget[];
57
+ /**
58
+ * Get available preset names
59
+ */
60
+ static getAvailablePresets(): PresetName[];
61
+ /**
62
+ * Get preset description
63
+ */
64
+ static getPresetDescription(preset: PresetName): string;
65
+ /**
66
+ * Check if configuration file exists
67
+ */
68
+ static exists(): Promise<boolean>;
69
+ /**
70
+ * Get configuration file path
71
+ */
72
+ static getConfigFilePath(): string;
73
+ /**
74
+ * Add browser target to existing configuration
75
+ */
76
+ static addBrowserTarget(target: BrowserTarget): Promise<void>;
77
+ /**
78
+ * Remove browser target from existing configuration
79
+ */
80
+ static removeBrowserTarget(browser: string): Promise<void>;
81
+ /**
82
+ * Update browser targets with preset
83
+ */
84
+ static updateWithPreset(preset: PresetName): Promise<void>;
85
+ /**
86
+ * Update browser targets with custom targets
87
+ */
88
+ static updateWithCustomTargets(targets: BrowserTarget[]): Promise<void>;
89
+ /**
90
+ * Update automation configuration
91
+ */
92
+ static updateAutomation(automationConfig: Partial<Configuration['automation']>): Promise<void>;
93
+ /**
94
+ * Enable automation
95
+ */
96
+ static enableAutomation(trigger?: 'pre-commit' | 'pre-push'): Promise<void>;
97
+ /**
98
+ * Disable automation
99
+ */
100
+ static disableAutomation(): Promise<void>;
101
+ /**
102
+ * Update API keys
103
+ */
104
+ static updateApiKeys(apiKeys: Partial<Configuration['apiKeys']>): Promise<void>;
105
+ /**
106
+ * Validate configuration structure and data
107
+ */
108
+ static validateConfiguration(config: any): {
109
+ valid: boolean;
110
+ errors: string[];
111
+ };
112
+ /**
113
+ * Migrate configuration from older versions
114
+ */
115
+ static migrateConfiguration(config: any): Configuration;
116
+ /**
117
+ * Get configuration display information
118
+ */
119
+ static getConfigurationDisplay(): Promise<{
120
+ config: Configuration;
121
+ security: {
122
+ gitignoreExists: boolean;
123
+ configIgnored: boolean;
124
+ recommendations: string[];
125
+ };
126
+ validation: {
127
+ valid: boolean;
128
+ errors: string[];
129
+ };
130
+ }>;
131
+ /**
132
+ * Backup current configuration
133
+ */
134
+ static backupConfiguration(): Promise<string>;
135
+ /**
136
+ * Restore configuration from backup
137
+ */
138
+ static restoreConfiguration(backupFile: string): Promise<void>;
139
+ }
140
+ //# sourceMappingURL=configuration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["../../src/core/configuration.ts"],"names":[],"mappings":"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"}