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,590 @@
1
+ import { Parser } from './parser.js';
2
+ /**
3
+ * Vanilla JavaScript/CSS/HTML parser - extracts ALL web platform features
4
+ * Handles .js, .ts, .html, and .css files with comprehensive feature detection
5
+ */
6
+ export class VanillaParser extends Parser {
7
+ WEB_PLATFORM_APIS = new Set([
8
+ // Canvas APIs
9
+ 'getContext', 'CanvasRenderingContext2D', 'WebGLRenderingContext', 'WebGL2RenderingContext',
10
+ 'OffscreenCanvas', 'ImageBitmap', 'createImageBitmap', 'Path2D', 'ImageData',
11
+ 'CanvasGradient', 'CanvasPattern', 'TextMetrics',
12
+ // WebGL specific
13
+ 'createShader', 'shaderSource', 'compileShader', 'createProgram', 'attachShader',
14
+ 'linkProgram', 'useProgram', 'getAttribLocation', 'getUniformLocation',
15
+ 'enableVertexAttribArray', 'vertexAttribPointer', 'uniform1f', 'uniform2f',
16
+ 'uniform3f', 'uniform4f', 'uniformMatrix4fv', 'drawArrays', 'drawElements',
17
+ // WebRTC APIs
18
+ 'RTCPeerConnection', 'RTCDataChannel', 'RTCSessionDescription', 'RTCIceCandidate',
19
+ 'getUserMedia', 'getDisplayMedia', 'MediaStream', 'MediaStreamTrack',
20
+ 'RTCRtpSender', 'RTCRtpReceiver', 'RTCStatsReport', 'RTCIceServer',
21
+ // WebAssembly
22
+ 'WebAssembly', 'instantiate', 'compile', 'validate', 'Module', 'Instance',
23
+ 'Memory', 'Table', 'Global', 'CompileError', 'LinkError', 'RuntimeError',
24
+ // Service Workers & PWA
25
+ 'ServiceWorker', 'serviceWorker', 'register', 'unregister', 'update',
26
+ 'Cache', 'caches', 'open', 'match', 'matchAll', 'add', 'addAll', 'put', 'delete',
27
+ 'PushManager', 'subscribe', 'getSubscription', 'permissionState',
28
+ 'Notification', 'showNotification', 'getNotifications', 'requestPermission',
29
+ 'BackgroundSync', 'sync', 'getTags', 'BackgroundFetch',
30
+ // DOM APIs
31
+ 'querySelector', 'querySelectorAll', 'getElementById', 'getElementsByClassName',
32
+ 'getElementsByTagName', 'createElement', 'createTextNode', 'createDocumentFragment',
33
+ 'addEventListener', 'removeEventListener', 'dispatchEvent', 'CustomEvent',
34
+ 'MutationObserver', 'observe', 'disconnect', 'takeRecords',
35
+ 'ResizeObserver', 'IntersectionObserver', 'PerformanceObserver',
36
+ 'AbortController', 'AbortSignal', 'abort', 'signal',
37
+ 'FormData', 'append', 'set', 'get', 'getAll', 'has', 'entries', 'keys', 'values',
38
+ 'URLSearchParams', 'URL', 'createObjectURL', 'revokeObjectURL',
39
+ // Fetch API
40
+ 'fetch', 'Request', 'Response', 'Headers', 'clone', 'json', 'text', 'blob',
41
+ 'arrayBuffer', 'formData', 'ok', 'status', 'statusText', 'redirected',
42
+ // File APIs
43
+ 'Blob', 'File', 'FileReader', 'FileList', 'readAsText', 'readAsDataURL',
44
+ 'readAsArrayBuffer', 'readAsBinaryString', 'slice',
45
+ // Web APIs
46
+ 'navigator', 'geolocation', 'getCurrentPosition', 'watchPosition', 'clearWatch',
47
+ 'permissions', 'query', 'clipboard', 'writeText', 'readText', 'write', 'read',
48
+ 'share', 'canShare', 'requestAnimationFrame', 'cancelAnimationFrame',
49
+ 'requestIdleCallback', 'cancelIdleCallback', 'setTimeout', 'setInterval',
50
+ 'clearTimeout', 'clearInterval', 'queueMicrotask',
51
+ // Storage APIs
52
+ 'localStorage', 'sessionStorage', 'getItem', 'setItem', 'removeItem', 'clear',
53
+ 'indexedDB', 'open', 'deleteDatabase', 'cmp', 'IDBDatabase', 'IDBTransaction',
54
+ 'IDBObjectStore', 'IDBIndex', 'IDBCursor', 'IDBKeyRange',
55
+ // Crypto APIs
56
+ 'crypto', 'getRandomValues', 'randomUUID', 'subtle', 'encrypt', 'decrypt',
57
+ 'sign', 'verify', 'digest', 'generateKey', 'importKey', 'exportKey',
58
+ // Performance APIs
59
+ 'performance', 'now', 'mark', 'measure', 'getEntries', 'getEntriesByName',
60
+ 'getEntriesByType', 'clearMarks', 'clearMeasures', 'timing', 'navigation',
61
+ // Audio/Video APIs
62
+ 'AudioContext', 'createOscillator', 'createGain', 'createAnalyser',
63
+ 'createBiquadFilter', 'createBufferSource', 'createMediaElementSource',
64
+ 'createScriptProcessor', 'createDynamicsCompressor', 'createConvolver',
65
+ 'MediaRecorder', 'start', 'stop', 'pause', 'resume', 'requestData',
66
+ 'MediaSource', 'SourceBuffer', 'appendBuffer', 'remove', 'abort',
67
+ 'HTMLMediaElement', 'HTMLAudioElement', 'HTMLVideoElement', 'play', 'pause',
68
+ 'load', 'canPlayType', 'addTextTrack', 'captureStream',
69
+ // Modern JavaScript APIs
70
+ 'structuredClone', 'reportError', 'WeakRef', 'deref', 'FinalizationRegistry',
71
+ 'AggregateError', 'Promise', 'allSettled', 'any', 'race', 'resolve', 'reject',
72
+ 'AsyncIterator', 'Symbol', 'iterator', 'asyncIterator', 'BigInt', 'asIntN', 'asUintN',
73
+ // Intl APIs
74
+ 'Intl', 'DateTimeFormat', 'format', 'formatToParts', 'resolvedOptions',
75
+ 'NumberFormat', 'Collator', 'compare', 'PluralRules', 'select',
76
+ 'RelativeTimeFormat', 'ListFormat', 'Locale', 'getCanonicalLocales',
77
+ 'DisplayNames', 'of', 'Segmenter', 'segment',
78
+ // Streams API
79
+ 'ReadableStream', 'WritableStream', 'TransformStream', 'getReader', 'getWriter',
80
+ 'readable', 'writable', 'pipeThrough', 'pipeTo', 'tee',
81
+ // Web Components
82
+ 'customElements', 'define', 'get', 'whenDefined', 'upgrade', 'ShadowRoot',
83
+ 'attachShadow', 'shadowRoot', 'HTMLTemplateElement', 'content', 'HTMLSlotElement',
84
+ // Pointer Events
85
+ 'PointerEvent', 'pointerId', 'pointerType', 'isPrimary', 'setPointerCapture',
86
+ 'releasePointerCapture', 'hasPointerCapture',
87
+ // Touch Events
88
+ 'TouchEvent', 'touches', 'targetTouches', 'changedTouches', 'Touch',
89
+ // Gamepad API
90
+ 'navigator.getGamepads', 'Gamepad', 'GamepadButton', 'pressed', 'value',
91
+ // Battery API
92
+ 'navigator.getBattery', 'BatteryManager', 'charging', 'chargingTime',
93
+ 'dischargingTime', 'level',
94
+ // Device APIs
95
+ 'DeviceOrientationEvent', 'alpha', 'beta', 'gamma', 'absolute',
96
+ 'DeviceMotionEvent', 'acceleration', 'accelerationIncludingGravity',
97
+ 'rotationRate', 'interval'
98
+ ]);
99
+ CSS_PROPERTIES = new Set([
100
+ // Container Queries
101
+ 'container-type', 'container-name', 'container', 'container-query-length',
102
+ // Grid Layout
103
+ 'display', 'grid', 'inline-grid', 'grid-template-columns', 'grid-template-rows',
104
+ 'grid-template-areas', 'grid-template', 'grid-column-start', 'grid-column-end',
105
+ 'grid-row-start', 'grid-row-end', 'grid-column', 'grid-row', 'grid-area',
106
+ 'grid-auto-columns', 'grid-auto-rows', 'grid-auto-flow', 'gap', 'grid-gap',
107
+ 'column-gap', 'row-gap', 'grid-column-gap', 'grid-row-gap',
108
+ // Flexbox
109
+ 'flex', 'inline-flex', 'flex-direction', 'flex-wrap', 'flex-flow',
110
+ 'justify-content', 'align-items', 'align-content', 'align-self',
111
+ 'flex-grow', 'flex-shrink', 'flex-basis', 'order',
112
+ // Modern Layout
113
+ 'aspect-ratio', 'object-fit', 'object-position', 'place-items', 'place-content',
114
+ 'place-self', 'justify-items', 'justify-self', 'align-tracks', 'justify-tracks',
115
+ // Visual Effects
116
+ 'backdrop-filter', 'filter', 'mix-blend-mode', 'isolation', 'clip-path',
117
+ 'mask', 'mask-image', 'mask-mode', 'mask-repeat', 'mask-position',
118
+ 'mask-clip', 'mask-origin', 'mask-size', 'mask-composite',
119
+ // Color & Appearance
120
+ 'color-scheme', 'accent-color', 'color-mix', 'color-contrast',
121
+ 'forced-color-adjust', 'print-color-adjust',
122
+ // Scrolling
123
+ 'scroll-behavior', 'scroll-snap-type', 'scroll-snap-align', 'scroll-snap-stop',
124
+ 'scroll-margin', 'scroll-margin-top', 'scroll-margin-right', 'scroll-margin-bottom',
125
+ 'scroll-margin-left', 'scroll-padding', 'scroll-padding-top', 'scroll-padding-right',
126
+ 'scroll-padding-bottom', 'scroll-padding-left', 'overscroll-behavior',
127
+ 'overscroll-behavior-x', 'overscroll-behavior-y', 'scroll-timeline',
128
+ 'scroll-timeline-name', 'scroll-timeline-axis',
129
+ // Interaction
130
+ 'touch-action', 'user-select', 'pointer-events', 'cursor',
131
+ // CSS Custom Properties & Functions
132
+ '--', 'var(', 'calc(', 'clamp(', 'min(', 'max(', 'minmax(',
133
+ // Transforms & Animations
134
+ 'transform', 'transform-origin', 'transform-style', 'perspective',
135
+ 'perspective-origin', 'backface-visibility', 'animation', 'animation-name',
136
+ 'animation-duration', 'animation-timing-function', 'animation-delay',
137
+ 'animation-iteration-count', 'animation-direction', 'animation-fill-mode',
138
+ 'animation-play-state', 'animation-timeline', 'transition', 'transition-property',
139
+ 'transition-duration', 'transition-timing-function', 'transition-delay',
140
+ 'will-change', 'contain', 'content-visibility',
141
+ // Typography
142
+ 'font-display', 'font-variation-settings', 'font-optical-sizing',
143
+ 'font-palette', 'text-decoration-thickness', 'text-decoration-skip-ink',
144
+ 'text-underline-offset', 'text-underline-position', 'hanging-punctuation',
145
+ 'hyphens', 'line-break', 'word-break', 'overflow-wrap', 'text-overflow',
146
+ 'white-space', 'tab-size', 'writing-mode', 'text-orientation',
147
+ // Layout & Positioning
148
+ 'position', 'top', 'right', 'bottom', 'left', 'z-index', 'inset',
149
+ 'inset-block', 'inset-inline', 'width', 'height', 'min-width', 'min-height',
150
+ 'max-width', 'max-height', 'margin', 'margin-top', 'margin-right',
151
+ 'margin-bottom', 'margin-left', 'padding', 'padding-top', 'padding-right',
152
+ 'padding-bottom', 'padding-left', 'border', 'border-radius', 'outline',
153
+ 'box-sizing', 'overflow', 'overflow-x', 'overflow-y', 'resize',
154
+ // Logical Properties
155
+ 'margin-block', 'margin-inline', 'padding-block', 'padding-inline',
156
+ 'border-block', 'border-inline', 'inset-block-start', 'inset-block-end',
157
+ 'inset-inline-start', 'inset-inline-end'
158
+ ]);
159
+ CSS_SELECTORS = new Set([
160
+ ':has(', ':is(', ':where(', ':not(', ':focus-visible', ':focus-within',
161
+ ':target-within', ':any-link', ':local-link', ':scope', ':current',
162
+ ':past', ':future', ':playing', ':paused', ':seeking', ':buffering',
163
+ ':stalled', ':muted', ':volume-locked', ':fullscreen', ':picture-in-picture',
164
+ ':user-invalid', ':user-valid', ':blank', ':placeholder-shown',
165
+ '::backdrop', '::placeholder', '::marker', '::selection', '::first-letter',
166
+ '::first-line', '::before', '::after', '::file-selector-button'
167
+ ]);
168
+ HTML_ELEMENTS = new Set([
169
+ // Modern semantic elements
170
+ 'dialog', 'details', 'summary', 'main', 'article', 'section', 'nav', 'aside',
171
+ 'header', 'footer', 'figure', 'figcaption', 'time', 'mark', 'progress', 'meter',
172
+ // Media elements
173
+ 'canvas', 'video', 'audio', 'source', 'track', 'embed', 'object', 'picture',
174
+ // Form elements
175
+ 'datalist', 'output', 'keygen', 'fieldset', 'legend',
176
+ // Interactive elements
177
+ 'slot', 'template'
178
+ ]);
179
+ HTML_ATTRIBUTES = new Set([
180
+ 'loading', 'decoding', 'fetchpriority', 'enterkeyhint', 'inputmode',
181
+ 'autocomplete', 'autofocus', 'capture', 'crossorigin', 'dirname',
182
+ 'download', 'draggable', 'enctype', 'formaction', 'formenctype',
183
+ 'formmethod', 'formnovalidate', 'formtarget', 'hidden', 'integrity',
184
+ 'is', 'itemid', 'itemprop', 'itemref', 'itemscope', 'itemtype',
185
+ 'kind', 'label', 'lang', 'list', 'loop', 'max', 'maxlength', 'media',
186
+ 'method', 'min', 'minlength', 'multiple', 'muted', 'novalidate',
187
+ 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster',
188
+ 'preload', 'readonly', 'referrerpolicy', 'rel', 'required', 'reversed',
189
+ 'rows', 'rowspan', 'sandbox', 'scope', 'selected', 'shape', 'size',
190
+ 'sizes', 'span', 'spellcheck', 'srcdoc', 'srclang', 'srcset', 'start',
191
+ 'step', 'target', 'translate', 'type', 'usemap', 'value', 'wrap'
192
+ ]);
193
+ canParse(filePath) {
194
+ return /\.(js|ts|html|css)$/.test(filePath);
195
+ }
196
+ async parseFeatures(content, filePath) {
197
+ const extension = this.getFileExtension(filePath);
198
+ switch (extension) {
199
+ case '.js':
200
+ case '.ts':
201
+ return this.parseJavaScript(content, filePath, extension === '.ts');
202
+ case '.css':
203
+ return this.parseCSS(content, filePath);
204
+ case '.html':
205
+ return await this.parseHTML(content, filePath);
206
+ default:
207
+ return [];
208
+ }
209
+ }
210
+ async parseJavaScript(content, filePath, isTypeScript) {
211
+ const features = [];
212
+ try {
213
+ const ast = parseBabel(content, {
214
+ sourceType: 'module',
215
+ plugins: [
216
+ 'typescript',
217
+ 'decorators-legacy',
218
+ 'classProperties',
219
+ 'objectRestSpread',
220
+ 'asyncGenerators',
221
+ 'functionBind',
222
+ 'exportDefaultFrom',
223
+ 'exportNamespaceFrom',
224
+ 'dynamicImport',
225
+ 'nullishCoalescingOperator',
226
+ 'optionalChaining',
227
+ 'topLevelAwait',
228
+ 'privateIn',
229
+ 'importMeta'
230
+ ].filter(plugin => isTypeScript || plugin !== 'typescript')
231
+ });
232
+ traverse(ast, {
233
+ // Extract Web API member expressions
234
+ MemberExpression: (path) => {
235
+ const feature = this.extractWebAPIFeature(path.node, content);
236
+ if (feature) {
237
+ features.push({ ...feature, file: filePath });
238
+ }
239
+ },
240
+ // Extract Web API function calls
241
+ CallExpression: (path) => {
242
+ const feature = this.extractWebAPICall(path.node, content);
243
+ if (feature) {
244
+ features.push({ ...feature, file: filePath });
245
+ }
246
+ },
247
+ // Modern JavaScript syntax features
248
+ OptionalMemberExpression: (path) => {
249
+ features.push({
250
+ feature: 'optional-chaining',
251
+ type: 'js',
252
+ context: this.getContext(content, path.node.loc?.start.line || 0),
253
+ line: path.node.loc?.start.line || 0,
254
+ column: path.node.loc?.start.column || 0,
255
+ file: filePath
256
+ });
257
+ },
258
+ OptionalCallExpression: (path) => {
259
+ features.push({
260
+ feature: 'optional-chaining',
261
+ type: 'js',
262
+ context: this.getContext(content, path.node.loc?.start.line || 0),
263
+ line: path.node.loc?.start.line || 0,
264
+ column: path.node.loc?.start.column || 0,
265
+ file: filePath
266
+ });
267
+ },
268
+ // Nullish coalescing
269
+ LogicalExpression: (path) => {
270
+ if (path.node.operator === '??') {
271
+ features.push({
272
+ feature: 'nullish-coalescing',
273
+ type: 'js',
274
+ context: this.getContext(content, path.node.loc?.start.line || 0),
275
+ line: path.node.loc?.start.line || 0,
276
+ column: path.node.loc?.start.column || 0,
277
+ file: filePath
278
+ });
279
+ }
280
+ },
281
+ // Private class fields
282
+ ClassPrivateProperty: (path) => {
283
+ features.push({
284
+ feature: 'private-fields',
285
+ type: 'js',
286
+ context: this.getContext(content, path.node.loc?.start.line || 0),
287
+ line: path.node.loc?.start.line || 0,
288
+ column: path.node.loc?.start.column || 0,
289
+ file: filePath
290
+ });
291
+ },
292
+ ClassPrivateMethod: (path) => {
293
+ features.push({
294
+ feature: 'private-methods',
295
+ type: 'js',
296
+ context: this.getContext(content, path.node.loc?.start.line || 0),
297
+ line: path.node.loc?.start.line || 0,
298
+ column: path.node.loc?.start.column || 0,
299
+ file: filePath
300
+ });
301
+ },
302
+ // Top-level await
303
+ AwaitExpression: (path) => {
304
+ if (this.isTopLevelAwait(path)) {
305
+ features.push({
306
+ feature: 'top-level-await',
307
+ type: 'js',
308
+ context: this.getContext(content, path.node.loc?.start.line || 0),
309
+ line: path.node.loc?.start.line || 0,
310
+ column: path.node.loc?.start.column || 0,
311
+ file: filePath
312
+ });
313
+ }
314
+ },
315
+ // Dynamic imports
316
+ Import: (path) => {
317
+ features.push({
318
+ feature: 'dynamic-import',
319
+ type: 'js',
320
+ context: this.getContext(content, path.node.loc?.start.line || 0),
321
+ line: path.node.loc?.start.line || 0,
322
+ column: path.node.loc?.start.column || 0,
323
+ file: filePath
324
+ });
325
+ },
326
+ // BigInt literals
327
+ BigIntLiteral: (path) => {
328
+ features.push({
329
+ feature: 'bigint',
330
+ type: 'js',
331
+ context: this.getContext(content, path.node.loc?.start.line || 0),
332
+ line: path.node.loc?.start.line || 0,
333
+ column: path.node.loc?.start.column || 0,
334
+ file: filePath
335
+ });
336
+ },
337
+ // Numeric separators
338
+ NumericLiteral: (path) => {
339
+ if (path.node.extra?.raw?.includes('_')) {
340
+ features.push({
341
+ feature: 'numeric-separators',
342
+ type: 'js',
343
+ context: this.getContext(content, path.node.loc?.start.line || 0),
344
+ line: path.node.loc?.start.line || 0,
345
+ column: path.node.loc?.start.column || 0,
346
+ file: filePath
347
+ });
348
+ }
349
+ }
350
+ });
351
+ }
352
+ catch (error) {
353
+ console.warn(`Warning: Could not parse JavaScript file ${filePath}: ${error instanceof Error ? error.message : 'Unknown error'}`);
354
+ }
355
+ return features;
356
+ }
357
+ async parseCSS(content, filePath) {
358
+ const features = [];
359
+ try {
360
+ const root = postcss.parse(content);
361
+ // Extract CSS properties
362
+ root.walkDecls(decl => {
363
+ if (this.CSS_PROPERTIES.has(decl.prop) || decl.prop.startsWith('--')) {
364
+ features.push({
365
+ feature: decl.prop,
366
+ type: 'css',
367
+ context: `${decl.prop}: ${decl.value}`,
368
+ line: decl.source?.start?.line || 0,
369
+ column: decl.source?.start?.column || 0,
370
+ file: filePath
371
+ });
372
+ }
373
+ // Check for CSS functions in values
374
+ if (decl.value.includes('var(') || decl.value.includes('calc(') ||
375
+ decl.value.includes('clamp(') || decl.value.includes('min(') ||
376
+ decl.value.includes('max(')) {
377
+ const func = this.extractCSSFunction(decl.value);
378
+ if (func) {
379
+ features.push({
380
+ feature: func,
381
+ type: 'css',
382
+ context: `${decl.prop}: ${decl.value}`,
383
+ line: decl.source?.start?.line || 0,
384
+ column: decl.source?.start?.column || 0,
385
+ file: filePath
386
+ });
387
+ }
388
+ }
389
+ });
390
+ // Extract CSS selectors
391
+ root.walkRules(rule => {
392
+ this.CSS_SELECTORS.forEach(selector => {
393
+ if (rule.selector.includes(selector)) {
394
+ features.push({
395
+ feature: selector.replace('(', '()'),
396
+ type: 'css',
397
+ context: rule.selector,
398
+ line: rule.source?.start?.line || 0,
399
+ column: rule.source?.start?.column || 0,
400
+ file: filePath
401
+ });
402
+ }
403
+ });
404
+ });
405
+ // Extract at-rules
406
+ root.walkAtRules(atRule => {
407
+ const atRuleName = `@${atRule.name}`;
408
+ features.push({
409
+ feature: atRuleName,
410
+ type: 'css',
411
+ context: `${atRuleName} ${atRule.params}`,
412
+ line: atRule.source?.start?.line || 0,
413
+ column: atRule.source?.start?.column || 0,
414
+ file: filePath
415
+ });
416
+ });
417
+ }
418
+ catch (error) {
419
+ console.warn(`Warning: Could not parse CSS file ${filePath}: ${error instanceof Error ? error.message : 'Unknown error'}`);
420
+ }
421
+ return features;
422
+ }
423
+ async parseHTML(content, filePath) {
424
+ const features = [];
425
+ const lines = content.split('\n');
426
+ // Parse HTML elements and attributes
427
+ const elementRegex = /<(\w+)([^>]*)>/g;
428
+ lines.forEach((line, index) => {
429
+ let match;
430
+ while ((match = elementRegex.exec(line)) !== null) {
431
+ const tagName = match[1];
432
+ const attributes = match[2];
433
+ // Check for modern HTML elements
434
+ if (tagName && this.HTML_ELEMENTS.has(tagName)) {
435
+ features.push({
436
+ feature: tagName,
437
+ type: 'html',
438
+ context: line.trim(),
439
+ line: index + 1,
440
+ column: match.index,
441
+ file: filePath
442
+ });
443
+ }
444
+ // Check for modern HTML attributes
445
+ if (attributes) {
446
+ const modernAttrs = this.extractHTMLAttributes(attributes);
447
+ modernAttrs.forEach(attr => {
448
+ features.push({
449
+ feature: attr,
450
+ type: 'html',
451
+ context: line.trim(),
452
+ line: index + 1,
453
+ column: match?.index || 0,
454
+ file: filePath
455
+ });
456
+ });
457
+ }
458
+ }
459
+ });
460
+ // Extract inline CSS and JavaScript
461
+ const styleRegex = /<style[^>]*>([\s\S]*?)<\/style>/gi;
462
+ const scriptRegex = /<script[^>]*>([\s\S]*?)<\/script>/gi;
463
+ // Parse inline styles
464
+ let styleMatch;
465
+ while ((styleMatch = styleRegex.exec(content)) !== null) {
466
+ const cssContent = styleMatch[1];
467
+ const cssFeatures = cssContent ? await this.parseInlineCSS(cssContent, filePath) : [];
468
+ features.push(...cssFeatures);
469
+ }
470
+ // Parse inline scripts
471
+ let scriptMatch;
472
+ while ((scriptMatch = scriptRegex.exec(content)) !== null) {
473
+ const jsContent = scriptMatch[1];
474
+ const jsFeatures = jsContent ? await this.parseInlineJS(jsContent, filePath) : [];
475
+ features.push(...jsFeatures);
476
+ }
477
+ return features;
478
+ }
479
+ async parseInlineCSS(cssContent, filePath) {
480
+ try {
481
+ return await this.parseCSS(cssContent, filePath);
482
+ }
483
+ catch (error) {
484
+ console.warn(`Warning: Could not parse inline CSS in ${filePath}: ${error instanceof Error ? error.message : 'Unknown error'}`);
485
+ return [];
486
+ }
487
+ }
488
+ async parseInlineJS(jsContent, filePath) {
489
+ try {
490
+ return await this.parseJavaScript(jsContent, filePath, false);
491
+ }
492
+ catch (error) {
493
+ console.warn(`Warning: Could not parse inline JavaScript in ${filePath}: ${error instanceof Error ? error.message : 'Unknown error'}`);
494
+ return [];
495
+ }
496
+ }
497
+ extractWebAPIFeature(node, content) {
498
+ const apiName = this.getMemberExpressionName(node);
499
+ if (this.WEB_PLATFORM_APIS.has(apiName)) {
500
+ return {
501
+ feature: apiName,
502
+ type: 'js',
503
+ context: this.getContext(content, node.loc?.start.line || 0),
504
+ line: node.loc?.start.line || 0,
505
+ column: node.loc?.start.column || 0
506
+ };
507
+ }
508
+ return null;
509
+ }
510
+ extractWebAPICall(node, content) {
511
+ let apiName = '';
512
+ if (t.isIdentifier(node.callee)) {
513
+ apiName = node.callee.name;
514
+ }
515
+ else if (t.isMemberExpression(node.callee)) {
516
+ apiName = this.getMemberExpressionName(node.callee);
517
+ }
518
+ if (this.WEB_PLATFORM_APIS.has(apiName)) {
519
+ return {
520
+ feature: apiName,
521
+ type: 'js',
522
+ context: this.getContext(content, node.loc?.start.line || 0),
523
+ line: node.loc?.start.line || 0,
524
+ column: node.loc?.start.column || 0
525
+ };
526
+ }
527
+ return null;
528
+ }
529
+ extractCSSFunction(value) {
530
+ const functions = ['var(', 'calc(', 'clamp(', 'min(', 'max(', 'minmax('];
531
+ for (const func of functions) {
532
+ if (value.includes(func)) {
533
+ return func.replace('(', '()');
534
+ }
535
+ }
536
+ return null;
537
+ }
538
+ extractHTMLAttributes(attributes) {
539
+ const modernAttrs = [];
540
+ this.HTML_ATTRIBUTES.forEach(attr => {
541
+ const attrRegex = new RegExp(`\\b${attr}\\b`, 'i');
542
+ if (attrRegex.test(attributes)) {
543
+ modernAttrs.push(attr);
544
+ }
545
+ });
546
+ return modernAttrs;
547
+ }
548
+ getMemberExpressionName(node) {
549
+ const parts = [];
550
+ const traverse = (n) => {
551
+ if (t.isIdentifier(n)) {
552
+ parts.unshift(n.name);
553
+ }
554
+ else if (t.isMemberExpression(n)) {
555
+ if (t.isIdentifier(n.property)) {
556
+ parts.unshift(n.property.name);
557
+ }
558
+ traverse(n.object);
559
+ }
560
+ };
561
+ traverse(node);
562
+ return parts.join('.');
563
+ }
564
+ isTopLevelAwait(path) {
565
+ let parent = path.parent;
566
+ while (parent) {
567
+ if (t.isFunction(parent) || t.isArrowFunctionExpression(parent)) {
568
+ return false;
569
+ }
570
+ parent = path.parentPath?.parent;
571
+ }
572
+ return true;
573
+ }
574
+ getFileExtension(filePath) {
575
+ const match = filePath.match(/\.[^.]+$/);
576
+ return match ? match[0] : '';
577
+ }
578
+ getContext(content, line) {
579
+ const lines = content.split('\n');
580
+ const targetLine = lines[line - 1] || '';
581
+ return targetLine.trim();
582
+ }
583
+ getSupportedExtensions() {
584
+ return ['.js', '.ts', '.html', '.css'];
585
+ }
586
+ getName() {
587
+ return 'VanillaParser';
588
+ }
589
+ }
590
+ //# sourceMappingURL=vanilla-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vanilla-parser.js","sourceRoot":"","sources":["../../src/parsers/vanilla-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { Parser } from './parser.js';
2
+ import type { DetectedFeature } from '../types/index.js';
3
+ export declare class VueParser extends Parser {
4
+ canParse(filePath: string): boolean;
5
+ parseFeatures(content: string, filePath: string): Promise<DetectedFeature[]>;
6
+ getSupportedExtensions(): string[];
7
+ getName(): string;
8
+ }
9
+ //# sourceMappingURL=vue-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vue-parser.d.ts","sourceRoot":"","sources":["../../src/parsers/vue-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,qBAAa,SAAU,SAAQ,MAAM;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI7B,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAIlF,sBAAsB,IAAI,MAAM,EAAE;IAIlC,OAAO,IAAI,MAAM;CAGlB"}