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,216 @@
1
+ <template>
2
+ <div class="vue-app">
3
+ <h1>Vue Test App</h1>
4
+ <button @click="openDialog">Open Dialog</button>
5
+ <button @click="testWebAPIs">Test Web APIs</button>
6
+ <button @click="testCanvas">Test Canvas</button>
7
+
8
+ <dialog ref="dialogRef" :open="dialogOpen">
9
+ <p>This is a modern dialog element in Vue</p>
10
+ <button @click="closeDialog">Close</button>
11
+ </dialog>
12
+
13
+ <div class="container-test">
14
+ <p>Container query test in Vue</p>
15
+ </div>
16
+
17
+ <canvas ref="canvasRef" width="200" height="200"></canvas>
18
+ </div>
19
+ </template>
20
+
21
+ <script setup lang="ts">
22
+ import { ref, onMounted, onUnmounted } from 'vue';
23
+
24
+ const dialogOpen = ref(false);
25
+ const dialogRef = ref<HTMLDialogElement>();
26
+ const canvasRef = ref<HTMLCanvasElement>();
27
+ let resizeObserver: ResizeObserver | null = null;
28
+
29
+ onMounted(() => {
30
+ // Modern JavaScript APIs
31
+ setupModernAPIs();
32
+ setupCanvas();
33
+ });
34
+
35
+ onUnmounted(() => {
36
+ if (resizeObserver) {
37
+ resizeObserver.disconnect();
38
+ }
39
+ });
40
+
41
+ const setupModernAPIs = () => {
42
+ // ResizeObserver - baseline newly available
43
+ resizeObserver = new ResizeObserver((entries) => {
44
+ console.log('Vue: Element resized:', entries);
45
+ });
46
+
47
+ if (dialogRef.value) {
48
+ resizeObserver.observe(dialogRef.value);
49
+ }
50
+
51
+ // structuredClone - baseline newly available
52
+ const testData = { vue: true, data: { nested: 'value' } };
53
+ const cloned = structuredClone(testData);
54
+ console.log('Vue: Cloned data:', cloned);
55
+
56
+ // Array.at() - baseline newly available
57
+ const items = ['vue', 'react', 'svelte'];
58
+ const lastFramework = items.at(-1);
59
+ console.log('Vue: Last framework:', lastFramework);
60
+ };
61
+
62
+ const setupCanvas = () => {
63
+ if (!canvasRef.value) return;
64
+
65
+ const ctx = canvasRef.value.getContext('2d');
66
+ if (ctx) {
67
+ // Modern Canvas API - filter property
68
+ ctx.filter = 'blur(2px)';
69
+ ctx.fillStyle = 'blue';
70
+ ctx.fillRect(10, 10, 100, 100);
71
+ }
72
+ };
73
+
74
+ const openDialog = () => {
75
+ if (dialogRef.value) {
76
+ // HTMLDialogElement.showModal() - baseline newly available
77
+ dialogRef.value.showModal();
78
+ }
79
+ dialogOpen.value = true;
80
+ };
81
+
82
+ const closeDialog = () => {
83
+ if (dialogRef.value) {
84
+ dialogRef.value.close();
85
+ }
86
+ dialogOpen.value = false;
87
+ };
88
+
89
+ const testWebAPIs = () => {
90
+ // Test various modern Web APIs
91
+
92
+ // AbortController - baseline widely available
93
+ const controller = new AbortController();
94
+ const signal = controller.signal;
95
+
96
+ // Fetch with AbortSignal
97
+ fetch('https://api.example.com/data', { signal })
98
+ .then(response => response.json())
99
+ .catch(error => {
100
+ if (error.name === 'AbortError') {
101
+ console.log('Vue: Fetch aborted');
102
+ }
103
+ });
104
+
105
+ // Abort after 1 second
106
+ setTimeout(() => controller.abort(), 1000);
107
+
108
+ // IntersectionObserver - baseline widely available
109
+ const observer = new IntersectionObserver((entries) => {
110
+ console.log('Vue: Intersection observed:', entries);
111
+ });
112
+
113
+ if (dialogRef.value) {
114
+ observer.observe(dialogRef.value);
115
+ }
116
+ };
117
+
118
+ const testCanvas = () => {
119
+ if (!canvasRef.value) return;
120
+
121
+ // Test OffscreenCanvas - baseline newly available
122
+ if ('OffscreenCanvas' in window) {
123
+ const offscreen = new OffscreenCanvas(100, 100);
124
+ const ctx = offscreen.getContext('2d');
125
+ if (ctx) {
126
+ ctx.fillStyle = 'red';
127
+ ctx.fillRect(0, 0, 50, 50);
128
+ }
129
+ }
130
+
131
+ // Test WebGL2 - baseline widely available
132
+ const gl = canvasRef.value.getContext('webgl2');
133
+ if (gl) {
134
+ gl.clearColor(0.0, 1.0, 0.0, 1.0);
135
+ gl.clear(gl.COLOR_BUFFER_BIT);
136
+ }
137
+ };
138
+ </script>
139
+
140
+ <style scoped>
141
+ /* Modern CSS features in Vue component */
142
+ .vue-app {
143
+ container-type: inline-size;
144
+ container-name: vue-container;
145
+
146
+ /* Modern CSS properties */
147
+ aspect-ratio: 4/3;
148
+ accent-color: #42b883;
149
+ color-scheme: light dark;
150
+
151
+ /* CSS Grid with modern gap */
152
+ display: grid;
153
+ gap: 1.5rem;
154
+
155
+ /* Modern CSS functions */
156
+ background: color-mix(in srgb, #42b883 30%, white);
157
+
158
+ /* Backdrop filter */
159
+ backdrop-filter: blur(5px);
160
+ }
161
+
162
+ /* Container queries */
163
+ @container vue-container (min-width: 500px) {
164
+ .container-test {
165
+ font-size: 1.4rem;
166
+ color: #42b883;
167
+ }
168
+ }
169
+
170
+ /* Modern selectors */
171
+ .vue-app:has(dialog[open]) {
172
+ background-color: rgba(66, 184, 131, 0.1);
173
+ }
174
+
175
+ /* CSS nesting */
176
+ .vue-app {
177
+ .container-test {
178
+ padding: 1.5rem;
179
+ border-radius: 8px;
180
+
181
+ &:hover {
182
+ background-color: rgba(66, 184, 131, 0.1);
183
+ }
184
+ }
185
+ }
186
+
187
+ /* Modern pseudo-classes */
188
+ .vue-app button:focus-visible {
189
+ outline: 2px solid #42b883;
190
+ outline-offset: 2px;
191
+ }
192
+
193
+ .vue-app button:is(:hover, :focus) {
194
+ transform: translateY(-2px);
195
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
196
+ }
197
+
198
+ /* Modern CSS units and functions */
199
+ .container-test {
200
+ width: clamp(200px, 50%, 400px);
201
+ height: max(150px, 15vh);
202
+ margin-block: 1rem;
203
+ padding-inline: 1.5rem;
204
+ }
205
+
206
+ /* CSS custom properties with modern color functions */
207
+ :root {
208
+ --vue-primary: oklch(0.6 0.2 160);
209
+ --vue-secondary: color(display-p3 0.26 0.72 0.51);
210
+ }
211
+
212
+ canvas {
213
+ border: 1px solid var(--vue-primary);
214
+ border-radius: 4px;
215
+ }
216
+ </style>
package/tsconfig.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "ESNext",
5
+ "moduleResolution": "node",
6
+ "allowSyntheticDefaultImports": true,
7
+ "esModuleInterop": true,
8
+ "allowJs": true,
9
+ "outDir": "./dist",
10
+ "rootDir": "./src",
11
+ "strict": true,
12
+ "noImplicitAny": true,
13
+ "strictNullChecks": true,
14
+ "strictFunctionTypes": true,
15
+ "noImplicitReturns": true,
16
+ "noFallthroughCasesInSwitch": true,
17
+ "noUncheckedIndexedAccess": true,
18
+ "skipLibCheck": true,
19
+ "declaration": true,
20
+ "declarationMap": true,
21
+ "sourceMap": true,
22
+ "removeComments": false,
23
+ "skipLibCheck": true,
24
+ "forceConsistentCasingInFileNames": true,
25
+ "resolveJsonModule": true
26
+ },
27
+ "include": [
28
+ "src/**/*"
29
+ ],
30
+ "exclude": [
31
+ "node_modules",
32
+ "dist",
33
+ "**/*.test.ts",
34
+ "**/*.spec.ts"
35
+ ]
36
+ }
@@ -0,0 +1,10 @@
1
+ import { defineConfig } from 'vitest/config';
2
+
3
+ export default defineConfig({
4
+ test: {
5
+ globals: true,
6
+ environment: 'node',
7
+ include: ['src/**/*.{test,spec}.{js,ts}'],
8
+ exclude: ['node_modules', 'dist']
9
+ }
10
+ });