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.
- package/.eslintrc.json +25 -0
- package/.prettierrc +8 -0
- package/README.md +94 -0
- package/bin/base.js +494 -0
- package/dist/ai/fix-manager.d.ts +67 -0
- package/dist/ai/fix-manager.d.ts.map +1 -0
- package/dist/ai/fix-manager.js +326 -0
- package/dist/ai/fix-manager.js.map +1 -0
- package/dist/ai/gemini-analyzer.d.ts +116 -0
- package/dist/ai/gemini-analyzer.d.ts.map +1 -0
- package/dist/ai/gemini-analyzer.js +572 -0
- package/dist/ai/gemini-analyzer.js.map +1 -0
- package/dist/ai/index.d.ts +4 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +5 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/jules-implementer.d.ts +115 -0
- package/dist/ai/jules-implementer.d.ts.map +1 -0
- package/dist/ai/jules-implementer.js +387 -0
- package/dist/ai/jules-implementer.js.map +1 -0
- package/dist/commands/automation.d.ts +5 -0
- package/dist/commands/automation.d.ts.map +1 -0
- package/dist/commands/automation.js +305 -0
- package/dist/commands/automation.js.map +1 -0
- package/dist/commands/check.d.ts +9 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +113 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/config.d.ts +11 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +324 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/fix.d.ts +9 -0
- package/dist/commands/fix.d.ts.map +1 -0
- package/dist/commands/fix.js +207 -0
- package/dist/commands/fix.js.map +1 -0
- package/dist/commands/index.d.ts +6 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +7 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +9 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +125 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/core/api-key-manager.d.ts +83 -0
- package/dist/core/api-key-manager.d.ts.map +1 -0
- package/dist/core/api-key-manager.js +244 -0
- package/dist/core/api-key-manager.js.map +1 -0
- package/dist/core/baseguard.d.ts +46 -0
- package/dist/core/baseguard.d.ts.map +1 -0
- package/dist/core/baseguard.js +132 -0
- package/dist/core/baseguard.js.map +1 -0
- package/dist/core/baseline-checker.d.ts +63 -0
- package/dist/core/baseline-checker.d.ts.map +1 -0
- package/dist/core/baseline-checker.js +502 -0
- package/dist/core/baseline-checker.js.map +1 -0
- package/dist/core/cache-manager.d.ts +88 -0
- package/dist/core/cache-manager.d.ts.map +1 -0
- package/dist/core/cache-manager.js +213 -0
- package/dist/core/cache-manager.js.map +1 -0
- package/dist/core/configuration.d.ts +140 -0
- package/dist/core/configuration.d.ts.map +1 -0
- package/dist/core/configuration.js +474 -0
- package/dist/core/configuration.js.map +1 -0
- package/dist/core/directory-filter.d.ts +90 -0
- package/dist/core/directory-filter.d.ts.map +1 -0
- package/dist/core/directory-filter.js +319 -0
- package/dist/core/directory-filter.js.map +1 -0
- package/dist/core/error-handler.d.ts +110 -0
- package/dist/core/error-handler.d.ts.map +1 -0
- package/dist/core/error-handler.js +392 -0
- package/dist/core/error-handler.js.map +1 -0
- package/dist/core/file-processor.d.ts +80 -0
- package/dist/core/file-processor.d.ts.map +1 -0
- package/dist/core/file-processor.js +259 -0
- package/dist/core/file-processor.js.map +1 -0
- package/dist/core/gitignore-manager.d.ts +44 -0
- package/dist/core/gitignore-manager.d.ts.map +1 -0
- package/dist/core/gitignore-manager.js +147 -0
- package/dist/core/gitignore-manager.js.map +1 -0
- package/dist/core/index.d.ts +13 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +13 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/lazy-loader.d.ts +68 -0
- package/dist/core/lazy-loader.d.ts.map +1 -0
- package/dist/core/lazy-loader.js +260 -0
- package/dist/core/lazy-loader.js.map +1 -0
- package/dist/core/memory-manager.d.ts +1 -0
- package/dist/core/memory-manager.d.ts.map +1 -0
- package/dist/core/memory-manager.js +2 -0
- package/dist/core/memory-manager.js.map +1 -0
- package/dist/core/startup-optimizer.d.ts +45 -0
- package/dist/core/startup-optimizer.d.ts.map +1 -0
- package/dist/core/startup-optimizer.js +140 -0
- package/dist/core/startup-optimizer.js.map +1 -0
- package/dist/git/automation-engine.d.ts +58 -0
- package/dist/git/automation-engine.d.ts.map +1 -0
- package/dist/git/automation-engine.js +318 -0
- package/dist/git/automation-engine.js.map +1 -0
- package/dist/git/github-manager.d.ts +71 -0
- package/dist/git/github-manager.d.ts.map +1 -0
- package/dist/git/github-manager.js +226 -0
- package/dist/git/github-manager.js.map +1 -0
- package/dist/git/hook-manager.d.ts +43 -0
- package/dist/git/hook-manager.d.ts.map +1 -0
- package/dist/git/hook-manager.js +191 -0
- package/dist/git/hook-manager.js.map +1 -0
- package/dist/git/index.d.ts +4 -0
- package/dist/git/index.d.ts.map +1 -0
- package/dist/git/index.js +5 -0
- package/dist/git/index.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/parsers/feature-validator.d.ts +60 -0
- package/dist/parsers/feature-validator.d.ts.map +1 -0
- package/dist/parsers/feature-validator.js +483 -0
- package/dist/parsers/feature-validator.js.map +1 -0
- package/dist/parsers/index.d.ts +8 -0
- package/dist/parsers/index.d.ts.map +1 -0
- package/dist/parsers/index.js +9 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/parsers/parser-manager.d.ts +103 -0
- package/dist/parsers/parser-manager.d.ts.map +1 -0
- package/dist/parsers/parser-manager.js +321 -0
- package/dist/parsers/parser-manager.js.map +1 -0
- package/dist/parsers/parser.d.ts +23 -0
- package/dist/parsers/parser.d.ts.map +1 -0
- package/dist/parsers/parser.js +6 -0
- package/dist/parsers/parser.js.map +1 -0
- package/dist/parsers/react-parser.d.ts +22 -0
- package/dist/parsers/react-parser.d.ts.map +1 -0
- package/dist/parsers/react-parser.js +307 -0
- package/dist/parsers/react-parser.js.map +1 -0
- package/dist/parsers/svelte-parser.d.ts +33 -0
- package/dist/parsers/svelte-parser.d.ts.map +1 -0
- package/dist/parsers/svelte-parser.js +408 -0
- package/dist/parsers/svelte-parser.js.map +1 -0
- package/dist/parsers/vanilla-parser.d.ts +31 -0
- package/dist/parsers/vanilla-parser.d.ts.map +1 -0
- package/dist/parsers/vanilla-parser.js +590 -0
- package/dist/parsers/vanilla-parser.js.map +1 -0
- package/dist/parsers/vue-parser.d.ts +9 -0
- package/dist/parsers/vue-parser.d.ts.map +1 -0
- package/dist/parsers/vue-parser.js +16 -0
- package/dist/parsers/vue-parser.js.map +1 -0
- package/dist/terminal-header.d.ts +12 -0
- package/dist/terminal-header.js +45 -0
- package/dist/types/index.d.ts +83 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/ui/components.d.ts +133 -0
- package/dist/ui/components.d.ts.map +1 -0
- package/dist/ui/components.js +482 -0
- package/dist/ui/components.js.map +1 -0
- package/dist/ui/help.d.ts +11 -0
- package/dist/ui/help.d.ts.map +1 -0
- package/dist/ui/help.js +161 -0
- package/dist/ui/help.js.map +1 -0
- package/dist/ui/index.d.ts +5 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +5 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/prompts.d.ts +63 -0
- package/dist/ui/prompts.d.ts.map +1 -0
- package/dist/ui/prompts.js +611 -0
- package/dist/ui/prompts.js.map +1 -0
- package/dist/ui/terminal-header.d.ts +13 -0
- package/dist/ui/terminal-header.d.ts.map +1 -0
- package/dist/ui/terminal-header.js +46 -0
- package/dist/ui/terminal-header.js.map +1 -0
- package/package.json +80 -0
- package/src/ai/__tests__/gemini-analyzer.test.ts +181 -0
- package/src/ai/fix-manager.ts +362 -0
- package/src/ai/gemini-analyzer.ts +671 -0
- package/src/ai/index.ts +4 -0
- package/src/ai/jules-implementer.ts +459 -0
- package/src/commands/automation.ts +344 -0
- package/src/commands/check.ts +299 -0
- package/src/commands/config.ts +365 -0
- package/src/commands/fix.ts +234 -0
- package/src/commands/index.ts +6 -0
- package/src/commands/init.ts +142 -0
- package/src/commands/status.ts +0 -0
- package/src/core/api-key-manager.ts +298 -0
- package/src/core/baseguard.ts +742 -0
- package/src/core/baseline-checker.ts +563 -0
- package/src/core/cache-manager.ts +270 -0
- package/src/core/configuration-recovery.ts +676 -0
- package/src/core/configuration.ts +559 -0
- package/src/core/debug-logger.ts +590 -0
- package/src/core/directory-filter.ts +421 -0
- package/src/core/error-handler.ts +517 -0
- package/src/core/file-processor.ts +331 -0
- package/src/core/gitignore-manager.ts +169 -0
- package/src/core/graceful-degradation-manager.ts +596 -0
- package/src/core/index.ts +13 -0
- package/src/core/lazy-loader.ts +307 -0
- package/src/core/logger.ts +0 -0
- package/src/core/memory-manager.ts +294 -0
- package/src/core/startup-optimizer.ts +173 -0
- package/src/core/system-error-handler.ts +746 -0
- package/src/git/automation-engine.ts +361 -0
- package/src/git/github-manager.ts +260 -0
- package/src/git/hook-manager.ts +210 -0
- package/src/git/index.ts +4 -0
- package/src/index.ts +8 -0
- package/src/parsers/feature-validator.ts +559 -0
- package/src/parsers/index.ts +8 -0
- package/src/parsers/parser-manager.ts +419 -0
- package/src/parsers/parser.ts +26 -0
- package/src/parsers/react-parser-optimized.ts +161 -0
- package/src/parsers/react-parser.ts +359 -0
- package/src/parsers/svelte-parser.ts +506 -0
- package/src/parsers/vanilla-parser.ts +682 -0
- package/src/parsers/vue-parser.ts +472 -0
- package/src/types/index.ts +92 -0
- package/src/ui/components.ts +567 -0
- package/src/ui/help.ts +193 -0
- package/src/ui/index.ts +4 -0
- package/src/ui/prompts.ts +688 -0
- package/src/ui/terminal-header.ts +59 -0
- package/test-config-commands.js +56 -0
- package/test-header-simple.js +33 -0
- package/test-terminal-header.js +12 -0
- package/test-ui.js +29 -0
- package/tests/e2e/baseguard.e2e.test.ts +516 -0
- package/tests/e2e/cross-platform.e2e.test.ts +420 -0
- package/tests/e2e/git-integration.e2e.test.ts +487 -0
- package/tests/fixtures/react-project/package.json +14 -0
- package/tests/fixtures/react-project/src/App.css +76 -0
- package/tests/fixtures/react-project/src/App.tsx +77 -0
- package/tests/fixtures/svelte-project/package.json +11 -0
- package/tests/fixtures/svelte-project/src/App.svelte +369 -0
- package/tests/fixtures/vanilla-project/index.html +76 -0
- package/tests/fixtures/vanilla-project/script.js +331 -0
- package/tests/fixtures/vanilla-project/styles.css +359 -0
- package/tests/fixtures/vue-project/package.json +12 -0
- package/tests/fixtures/vue-project/src/App.vue +216 -0
- package/tsconfig.json +36 -0
- package/vitest.config.ts +10 -0
|
@@ -0,0 +1,483 @@
|
|
|
1
|
+
import webFeatures from 'web-features';
|
|
2
|
+
/**
|
|
3
|
+
* Comprehensive web-features validation and filtering system
|
|
4
|
+
* Validates detected features against the complete web-features package
|
|
5
|
+
* and filters out framework-specific features while capturing all web platform scope
|
|
6
|
+
*/
|
|
7
|
+
export class FeatureValidator {
|
|
8
|
+
FEATURE_ID_MAP;
|
|
9
|
+
FRAMEWORK_SPECIFIC_PATTERNS;
|
|
10
|
+
constructor() {
|
|
11
|
+
this.FEATURE_ID_MAP = this.buildFeatureIdMap();
|
|
12
|
+
this.FRAMEWORK_SPECIFIC_PATTERNS = this.buildFrameworkPatterns();
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Validate and filter detected features against web-features package
|
|
16
|
+
*/
|
|
17
|
+
async validateFeatures(detectedFeatures, concurrency = 10) {
|
|
18
|
+
const validFeatures = [];
|
|
19
|
+
// Process features in batches for performance
|
|
20
|
+
const batches = this.createBatches(detectedFeatures, concurrency);
|
|
21
|
+
for (const batch of batches) {
|
|
22
|
+
const batchResults = await Promise.all(batch.map(feature => this.validateSingleFeature(feature)));
|
|
23
|
+
validFeatures.push(...batchResults.filter(Boolean));
|
|
24
|
+
}
|
|
25
|
+
return this.deduplicateFeatures(validFeatures);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Validate a single feature against web-features package
|
|
29
|
+
*/
|
|
30
|
+
async validateSingleFeature(feature) {
|
|
31
|
+
try {
|
|
32
|
+
// Skip framework-specific features
|
|
33
|
+
if (this.isFrameworkSpecific(feature.feature)) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
// Map feature to web-features ID
|
|
37
|
+
const webFeatureId = this.mapToWebFeatureId(feature.feature);
|
|
38
|
+
if (!webFeatureId) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
// Validate against web-features package
|
|
42
|
+
const webFeatureData = webFeatures[webFeatureId];
|
|
43
|
+
if (!webFeatureData) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
// Return validated feature with enhanced metadata
|
|
47
|
+
return {
|
|
48
|
+
...feature,
|
|
49
|
+
feature: webFeatureId, // Use standardized web-features ID
|
|
50
|
+
context: this.enhanceContext(feature.context, feature.type)
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
console.warn(`Warning: Could not validate feature ${feature.feature}: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Build comprehensive feature ID mapping for ALL web platform technologies
|
|
60
|
+
*/
|
|
61
|
+
buildFeatureIdMap() {
|
|
62
|
+
const map = new Map();
|
|
63
|
+
// CSS Properties mapping
|
|
64
|
+
const cssPropertyMap = {
|
|
65
|
+
// Container Queries
|
|
66
|
+
'container-type': 'container-queries',
|
|
67
|
+
'container-name': 'container-queries',
|
|
68
|
+
'container': 'container-queries',
|
|
69
|
+
// Grid Layout
|
|
70
|
+
'display': 'css-grid',
|
|
71
|
+
'grid-template-columns': 'css-grid',
|
|
72
|
+
'grid-template-rows': 'css-grid',
|
|
73
|
+
'grid-template-areas': 'css-grid',
|
|
74
|
+
'grid-column': 'css-grid',
|
|
75
|
+
'grid-row': 'css-grid',
|
|
76
|
+
'grid-area': 'css-grid',
|
|
77
|
+
'gap': 'css-grid-gap',
|
|
78
|
+
'grid-gap': 'css-grid-gap',
|
|
79
|
+
'column-gap': 'css-grid-gap',
|
|
80
|
+
'row-gap': 'css-grid-gap',
|
|
81
|
+
// Flexbox
|
|
82
|
+
'flex': 'flexbox',
|
|
83
|
+
'flex-direction': 'flexbox',
|
|
84
|
+
'flex-wrap': 'flexbox',
|
|
85
|
+
'justify-content': 'flexbox',
|
|
86
|
+
'align-items': 'flexbox',
|
|
87
|
+
'align-content': 'flexbox',
|
|
88
|
+
'align-self': 'flexbox',
|
|
89
|
+
// Modern Layout
|
|
90
|
+
'aspect-ratio': 'aspect-ratio',
|
|
91
|
+
'object-fit': 'object-fit',
|
|
92
|
+
'object-position': 'object-fit',
|
|
93
|
+
// Visual Effects
|
|
94
|
+
'backdrop-filter': 'backdrop-filter',
|
|
95
|
+
'filter': 'css-filters',
|
|
96
|
+
'mix-blend-mode': 'css-mixblendmode',
|
|
97
|
+
'clip-path': 'css-clip-path',
|
|
98
|
+
'mask': 'css-masks',
|
|
99
|
+
// Color & Appearance
|
|
100
|
+
'color-scheme': 'color-scheme',
|
|
101
|
+
'accent-color': 'accent-color',
|
|
102
|
+
// Scrolling
|
|
103
|
+
'scroll-behavior': 'scroll-behavior',
|
|
104
|
+
'scroll-snap-type': 'scroll-snap',
|
|
105
|
+
'scroll-snap-align': 'scroll-snap',
|
|
106
|
+
'overscroll-behavior': 'overscroll-behavior',
|
|
107
|
+
// Interaction
|
|
108
|
+
'touch-action': 'touch-action',
|
|
109
|
+
'user-select': 'user-select',
|
|
110
|
+
// Custom Properties
|
|
111
|
+
'--': 'css-variables',
|
|
112
|
+
'var(': 'css-variables',
|
|
113
|
+
// Functions
|
|
114
|
+
'calc(': 'calc',
|
|
115
|
+
'clamp(': 'css-math-functions',
|
|
116
|
+
'min(': 'css-math-functions',
|
|
117
|
+
'max(': 'css-math-functions',
|
|
118
|
+
// Transforms & Animations
|
|
119
|
+
'transform': 'transforms2d',
|
|
120
|
+
'transform-origin': 'transforms2d',
|
|
121
|
+
'perspective': 'transforms3d',
|
|
122
|
+
'animation': 'css-animation',
|
|
123
|
+
'transition': 'css-transitions',
|
|
124
|
+
'will-change': 'will-change',
|
|
125
|
+
'contain': 'css-containment',
|
|
126
|
+
'content-visibility': 'content-visibility'
|
|
127
|
+
};
|
|
128
|
+
// CSS Selectors mapping
|
|
129
|
+
const cssSelectorMap = {
|
|
130
|
+
':has()': 'css-has',
|
|
131
|
+
':is()': 'css-matches-pseudo',
|
|
132
|
+
':where()': 'css-where-pseudo',
|
|
133
|
+
':focus-visible': 'focus-visible',
|
|
134
|
+
':focus-within': 'focus-within',
|
|
135
|
+
'::backdrop': 'backdrop',
|
|
136
|
+
'::placeholder': 'placeholder',
|
|
137
|
+
'::marker': 'css-marker-pseudo'
|
|
138
|
+
};
|
|
139
|
+
// JavaScript APIs mapping
|
|
140
|
+
const jsApiMap = {
|
|
141
|
+
// Canvas APIs
|
|
142
|
+
'getContext': 'canvas',
|
|
143
|
+
'CanvasRenderingContext2D': 'canvas',
|
|
144
|
+
'WebGLRenderingContext': 'webgl',
|
|
145
|
+
'WebGL2RenderingContext': 'webgl2',
|
|
146
|
+
'OffscreenCanvas': 'offscreen-canvas',
|
|
147
|
+
'ImageBitmap': 'createimagebitmap',
|
|
148
|
+
'createImageBitmap': 'createimagebitmap',
|
|
149
|
+
'Path2D': 'path2d',
|
|
150
|
+
// WebRTC APIs
|
|
151
|
+
'RTCPeerConnection': 'rtcpeerconnection',
|
|
152
|
+
'RTCDataChannel': 'rtcdatachannel',
|
|
153
|
+
'getUserMedia': 'getusermedia',
|
|
154
|
+
'getDisplayMedia': 'getdisplaymedia',
|
|
155
|
+
'MediaStream': 'mediastream',
|
|
156
|
+
// WebAssembly
|
|
157
|
+
'WebAssembly': 'wasm',
|
|
158
|
+
'WebAssembly.instantiate': 'wasm',
|
|
159
|
+
'WebAssembly.compile': 'wasm',
|
|
160
|
+
// Service Workers
|
|
161
|
+
'ServiceWorker': 'serviceworkers',
|
|
162
|
+
'navigator.serviceWorker': 'serviceworkers',
|
|
163
|
+
'Cache': 'cache',
|
|
164
|
+
'caches': 'cache',
|
|
165
|
+
'PushManager': 'push-api',
|
|
166
|
+
'Notification': 'notifications',
|
|
167
|
+
// DOM APIs
|
|
168
|
+
'querySelector': 'queryselector',
|
|
169
|
+
'querySelectorAll': 'queryselector',
|
|
170
|
+
'addEventListener': 'addeventlistener',
|
|
171
|
+
'CustomEvent': 'customevent',
|
|
172
|
+
'MutationObserver': 'mutationobserver',
|
|
173
|
+
'ResizeObserver': 'resizeobserver',
|
|
174
|
+
'IntersectionObserver': 'intersectionobserver',
|
|
175
|
+
'AbortController': 'abortcontroller',
|
|
176
|
+
'FormData': 'formdata',
|
|
177
|
+
'URLSearchParams': 'urlsearchparams',
|
|
178
|
+
'URL': 'url',
|
|
179
|
+
// Fetch API
|
|
180
|
+
'fetch': 'fetch',
|
|
181
|
+
'Request': 'fetch',
|
|
182
|
+
'Response': 'fetch',
|
|
183
|
+
'Headers': 'fetch',
|
|
184
|
+
// File APIs
|
|
185
|
+
'Blob': 'fileapi',
|
|
186
|
+
'File': 'fileapi',
|
|
187
|
+
'FileReader': 'filereader',
|
|
188
|
+
// Storage APIs
|
|
189
|
+
'localStorage': 'localstorage',
|
|
190
|
+
'sessionStorage': 'sessionstorage',
|
|
191
|
+
'indexedDB': 'indexeddb',
|
|
192
|
+
// Crypto APIs
|
|
193
|
+
'crypto': 'cryptography',
|
|
194
|
+
'crypto.getRandomValues': 'getrandomvalues',
|
|
195
|
+
'crypto.subtle': 'subtlecrypto',
|
|
196
|
+
// Performance APIs
|
|
197
|
+
'performance': 'high-resolution-time',
|
|
198
|
+
'performance.now': 'high-resolution-time',
|
|
199
|
+
'PerformanceObserver': 'performance-observer',
|
|
200
|
+
// Audio/Video APIs
|
|
201
|
+
'AudioContext': 'audio-api',
|
|
202
|
+
'MediaRecorder': 'mediarecorder',
|
|
203
|
+
'MediaSource': 'mediasource',
|
|
204
|
+
'HTMLMediaElement': 'audio',
|
|
205
|
+
// Modern JavaScript APIs
|
|
206
|
+
'structuredClone': 'structured-clone',
|
|
207
|
+
'WeakRef': 'weakrefs',
|
|
208
|
+
'FinalizationRegistry': 'weakrefs',
|
|
209
|
+
'AggregateError': 'promise-any',
|
|
210
|
+
// ECMAScript features
|
|
211
|
+
'optional-chaining': 'optional-chaining',
|
|
212
|
+
'nullish-coalescing': 'nullish-coalescing',
|
|
213
|
+
'private-fields': 'private-class-fields',
|
|
214
|
+
'private-methods': 'private-class-methods',
|
|
215
|
+
'top-level-await': 'top-level-await',
|
|
216
|
+
'dynamic-import': 'es6-module-dynamic-import',
|
|
217
|
+
'bigint': 'bigint',
|
|
218
|
+
'numeric-separators': 'numeric-separators',
|
|
219
|
+
// Intl APIs
|
|
220
|
+
'Intl.DateTimeFormat': 'internationalization',
|
|
221
|
+
'Intl.NumberFormat': 'internationalization',
|
|
222
|
+
'Intl.Collator': 'internationalization',
|
|
223
|
+
'Intl.PluralRules': 'intl-pluralrules',
|
|
224
|
+
'Intl.RelativeTimeFormat': 'intl-relativetimeformat',
|
|
225
|
+
'Intl.ListFormat': 'intl-listformat',
|
|
226
|
+
'Intl.Locale': 'intl-locale',
|
|
227
|
+
// Streams API
|
|
228
|
+
'ReadableStream': 'streams',
|
|
229
|
+
'WritableStream': 'streams',
|
|
230
|
+
'TransformStream': 'streams',
|
|
231
|
+
// Web Components
|
|
232
|
+
'customElements': 'custom-elementsv1',
|
|
233
|
+
'ShadowRoot': 'shadowdomv1',
|
|
234
|
+
'HTMLTemplateElement': 'template',
|
|
235
|
+
// Pointer Events
|
|
236
|
+
'PointerEvent': 'pointer',
|
|
237
|
+
'setPointerCapture': 'pointer',
|
|
238
|
+
// Touch Events
|
|
239
|
+
'TouchEvent': 'touch',
|
|
240
|
+
// Gamepad API
|
|
241
|
+
'navigator.getGamepads': 'gamepad',
|
|
242
|
+
'Gamepad': 'gamepad',
|
|
243
|
+
// Battery API
|
|
244
|
+
'navigator.getBattery': 'battery-status',
|
|
245
|
+
'BatteryManager': 'battery-status',
|
|
246
|
+
// Device APIs
|
|
247
|
+
'DeviceOrientationEvent': 'deviceorientation',
|
|
248
|
+
'DeviceMotionEvent': 'devicemotion'
|
|
249
|
+
};
|
|
250
|
+
// HTML Elements mapping
|
|
251
|
+
const htmlElementMap = {
|
|
252
|
+
'dialog': 'dialog',
|
|
253
|
+
'details': 'details',
|
|
254
|
+
'summary': 'details',
|
|
255
|
+
'main': 'html5semantic',
|
|
256
|
+
'article': 'html5semantic',
|
|
257
|
+
'section': 'html5semantic',
|
|
258
|
+
'nav': 'html5semantic',
|
|
259
|
+
'aside': 'html5semantic',
|
|
260
|
+
'header': 'html5semantic',
|
|
261
|
+
'footer': 'html5semantic',
|
|
262
|
+
'figure': 'html5semantic',
|
|
263
|
+
'figcaption': 'html5semantic',
|
|
264
|
+
'time': 'html5semantic',
|
|
265
|
+
'mark': 'html5semantic',
|
|
266
|
+
'progress': 'progressmeter',
|
|
267
|
+
'meter': 'progressmeter',
|
|
268
|
+
'canvas': 'canvas',
|
|
269
|
+
'video': 'video',
|
|
270
|
+
'audio': 'audio',
|
|
271
|
+
'source': 'video',
|
|
272
|
+
'track': 'video-track',
|
|
273
|
+
'picture': 'picture',
|
|
274
|
+
'datalist': 'datalist',
|
|
275
|
+
'output': 'form-validation',
|
|
276
|
+
'template': 'template',
|
|
277
|
+
'slot': 'shadowdomv1'
|
|
278
|
+
};
|
|
279
|
+
// HTML Attributes mapping
|
|
280
|
+
const htmlAttributeMap = {
|
|
281
|
+
'loading': 'loading-lazy-attr',
|
|
282
|
+
'decoding': 'img-decode-async',
|
|
283
|
+
'fetchpriority': 'priority-hints',
|
|
284
|
+
'enterkeyhint': 'mdn-html_global_attributes_enterkeyhint',
|
|
285
|
+
'inputmode': 'input-inputmode',
|
|
286
|
+
'autocomplete': 'form-attribute-autocomplete',
|
|
287
|
+
'crossorigin': 'cors',
|
|
288
|
+
'integrity': 'subresource-integrity',
|
|
289
|
+
'referrerpolicy': 'referrer-policy'
|
|
290
|
+
};
|
|
291
|
+
// At-rules mapping
|
|
292
|
+
const atRuleMap = {
|
|
293
|
+
'@supports': 'css-featurequeries',
|
|
294
|
+
'@container': 'container-queries',
|
|
295
|
+
'@media': 'css-mediaqueries',
|
|
296
|
+
'@import': 'css-import',
|
|
297
|
+
'@keyframes': 'css-animation',
|
|
298
|
+
'@font-face': 'fontface',
|
|
299
|
+
'@layer': 'css-cascade-layers'
|
|
300
|
+
};
|
|
301
|
+
// Combine all mappings
|
|
302
|
+
Object.entries(cssPropertyMap).forEach(([key, value]) => map.set(key, value));
|
|
303
|
+
Object.entries(cssSelectorMap).forEach(([key, value]) => map.set(key, value));
|
|
304
|
+
Object.entries(jsApiMap).forEach(([key, value]) => map.set(key, value));
|
|
305
|
+
Object.entries(htmlElementMap).forEach(([key, value]) => map.set(key, value));
|
|
306
|
+
Object.entries(htmlAttributeMap).forEach(([key, value]) => map.set(key, value));
|
|
307
|
+
Object.entries(atRuleMap).forEach(([key, value]) => map.set(key, value));
|
|
308
|
+
return map;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Build patterns to identify framework-specific features
|
|
312
|
+
*/
|
|
313
|
+
buildFrameworkPatterns() {
|
|
314
|
+
return [
|
|
315
|
+
// React patterns
|
|
316
|
+
/^use[A-Z]/, // React hooks (useState, useEffect, etc.)
|
|
317
|
+
/^React/, // React namespace
|
|
318
|
+
/^jsx/, // JSX elements
|
|
319
|
+
/^_jsx/, // JSX runtime
|
|
320
|
+
/^Component$/, // React.Component
|
|
321
|
+
/^PureComponent$/, // React.PureComponent
|
|
322
|
+
/^Fragment$/, // React.Fragment
|
|
323
|
+
/^createElement$/, // React.createElement
|
|
324
|
+
/^cloneElement$/, // React.cloneElement
|
|
325
|
+
/^ReactDOM/, // ReactDOM namespace
|
|
326
|
+
// Vue patterns
|
|
327
|
+
/^ref$/, // Vue ref
|
|
328
|
+
/^reactive$/, // Vue reactive
|
|
329
|
+
/^computed$/, // Vue computed
|
|
330
|
+
/^watch$/, // Vue watch
|
|
331
|
+
/^onMounted$/, // Vue lifecycle
|
|
332
|
+
/^onUnmounted$/, // Vue lifecycle
|
|
333
|
+
/^defineComponent$/, // Vue defineComponent
|
|
334
|
+
/^defineProps$/, // Vue defineProps
|
|
335
|
+
/^defineEmits$/, // Vue defineEmits
|
|
336
|
+
/^nextTick$/, // Vue nextTick
|
|
337
|
+
/^provide$/, // Vue provide
|
|
338
|
+
/^inject$/, // Vue inject
|
|
339
|
+
/^toRef$/, // Vue toRef
|
|
340
|
+
/^toRefs$/, // Vue toRefs
|
|
341
|
+
/^unref$/, // Vue unref
|
|
342
|
+
/^isRef$/, // Vue isRef
|
|
343
|
+
/^useRouter$/, // Vue Router
|
|
344
|
+
/^useRoute$/, // Vue Router
|
|
345
|
+
/^useStore$/, // Vuex/Pinia
|
|
346
|
+
// Svelte patterns
|
|
347
|
+
/^writable$/, // Svelte stores
|
|
348
|
+
/^readable$/, // Svelte stores
|
|
349
|
+
/^derived$/, // Svelte stores
|
|
350
|
+
/^onMount$/, // Svelte lifecycle
|
|
351
|
+
/^onDestroy$/, // Svelte lifecycle
|
|
352
|
+
/^beforeUpdate$/, // Svelte lifecycle
|
|
353
|
+
/^afterUpdate$/, // Svelte lifecycle
|
|
354
|
+
/^tick$/, // Svelte tick
|
|
355
|
+
/^setContext$/, // Svelte context
|
|
356
|
+
/^getContext$/, // Svelte context
|
|
357
|
+
/^createEventDispatcher$/, // Svelte events
|
|
358
|
+
/^goto$/, // SvelteKit
|
|
359
|
+
/^page$/, // SvelteKit
|
|
360
|
+
/^navigating$/, // SvelteKit
|
|
361
|
+
// Angular patterns (for future support)
|
|
362
|
+
/^ng[A-Z]/, // Angular directives
|
|
363
|
+
/^Injectable$/, // Angular Injectable
|
|
364
|
+
/^Component$/, // Angular Component (when in Angular context)
|
|
365
|
+
/^Directive$/, // Angular Directive
|
|
366
|
+
/^Pipe$/, // Angular Pipe
|
|
367
|
+
// Framework directive patterns
|
|
368
|
+
/^v-/, // Vue directives
|
|
369
|
+
/^bind:/, // Svelte directives
|
|
370
|
+
/^on:/, // Svelte directives
|
|
371
|
+
/^use:/, // Svelte directives
|
|
372
|
+
/^\*ng/, // Angular structural directives
|
|
373
|
+
/^\[/, // Angular property binding
|
|
374
|
+
/^\(/, // Angular event binding
|
|
375
|
+
];
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Check if a feature is framework-specific
|
|
379
|
+
*/
|
|
380
|
+
isFrameworkSpecific(featureName) {
|
|
381
|
+
return this.FRAMEWORK_SPECIFIC_PATTERNS.some(pattern => pattern.test(featureName));
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Map detected feature to web-features ID
|
|
385
|
+
*/
|
|
386
|
+
mapToWebFeatureId(featureName) {
|
|
387
|
+
// Direct mapping
|
|
388
|
+
if (this.FEATURE_ID_MAP.has(featureName)) {
|
|
389
|
+
return this.FEATURE_ID_MAP.get(featureName);
|
|
390
|
+
}
|
|
391
|
+
// Handle CSS custom properties
|
|
392
|
+
if (featureName.startsWith('--')) {
|
|
393
|
+
return 'css-variables';
|
|
394
|
+
}
|
|
395
|
+
// Handle member expressions (e.g., 'navigator.geolocation')
|
|
396
|
+
if (featureName.includes('.')) {
|
|
397
|
+
const parts = featureName.split('.');
|
|
398
|
+
const lastPart = parts[parts.length - 1];
|
|
399
|
+
// Try mapping the full expression first
|
|
400
|
+
if (this.FEATURE_ID_MAP.has(featureName)) {
|
|
401
|
+
return this.FEATURE_ID_MAP.get(featureName);
|
|
402
|
+
}
|
|
403
|
+
// Try mapping just the method/property name
|
|
404
|
+
if (lastPart && this.FEATURE_ID_MAP.has(lastPart)) {
|
|
405
|
+
return this.FEATURE_ID_MAP.get(lastPart);
|
|
406
|
+
}
|
|
407
|
+
// Try mapping the object name
|
|
408
|
+
const objectName = parts[0];
|
|
409
|
+
if (objectName && this.FEATURE_ID_MAP.has(objectName)) {
|
|
410
|
+
return this.FEATURE_ID_MAP.get(objectName);
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
// Check if the feature exists directly in web-features
|
|
414
|
+
if (webFeatures[featureName]) {
|
|
415
|
+
return featureName;
|
|
416
|
+
}
|
|
417
|
+
return null;
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Enhance context information for better display
|
|
421
|
+
*/
|
|
422
|
+
enhanceContext(context, type) {
|
|
423
|
+
// Limit context length
|
|
424
|
+
const maxLength = 100;
|
|
425
|
+
if (context.length > maxLength) {
|
|
426
|
+
context = context.substring(0, maxLength) + '...';
|
|
427
|
+
}
|
|
428
|
+
// Add type-specific formatting
|
|
429
|
+
switch (type) {
|
|
430
|
+
case 'css':
|
|
431
|
+
return context.includes(':') ? context : `${context}: ...`;
|
|
432
|
+
case 'js':
|
|
433
|
+
return context;
|
|
434
|
+
case 'html':
|
|
435
|
+
return context.startsWith('<') ? context : `<${context}>`;
|
|
436
|
+
default:
|
|
437
|
+
return context;
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Create batches for concurrent processing
|
|
442
|
+
*/
|
|
443
|
+
createBatches(items, batchSize) {
|
|
444
|
+
const batches = [];
|
|
445
|
+
for (let i = 0; i < items.length; i += batchSize) {
|
|
446
|
+
batches.push(items.slice(i, i + batchSize));
|
|
447
|
+
}
|
|
448
|
+
return batches;
|
|
449
|
+
}
|
|
450
|
+
/**
|
|
451
|
+
* Remove duplicate features based on feature ID, file, and line
|
|
452
|
+
*/
|
|
453
|
+
deduplicateFeatures(features) {
|
|
454
|
+
const seen = new Set();
|
|
455
|
+
return features.filter(feature => {
|
|
456
|
+
const key = `${feature.feature}:${feature.file}:${feature.line}:${feature.column}`;
|
|
457
|
+
if (seen.has(key)) {
|
|
458
|
+
return false;
|
|
459
|
+
}
|
|
460
|
+
seen.add(key);
|
|
461
|
+
return true;
|
|
462
|
+
});
|
|
463
|
+
}
|
|
464
|
+
/**
|
|
465
|
+
* Get all supported web-features IDs for validation
|
|
466
|
+
*/
|
|
467
|
+
getSupportedFeatures() {
|
|
468
|
+
return Object.keys(webFeatures);
|
|
469
|
+
}
|
|
470
|
+
/**
|
|
471
|
+
* Check if a specific feature ID is supported by web-features
|
|
472
|
+
*/
|
|
473
|
+
isFeatureSupported(featureId) {
|
|
474
|
+
return featureId in webFeatures;
|
|
475
|
+
}
|
|
476
|
+
/**
|
|
477
|
+
* Get feature data from web-features package
|
|
478
|
+
*/
|
|
479
|
+
getFeatureData(featureId) {
|
|
480
|
+
return webFeatures[featureId] || null;
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
//# sourceMappingURL=feature-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-validator.js","sourceRoot":"","sources":["../../src/parsers/feature-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './parser.js';
|
|
2
|
+
export * from './react-parser.js';
|
|
3
|
+
export * from './vue-parser.js';
|
|
4
|
+
export * from './svelte-parser.js';
|
|
5
|
+
export * from './vanilla-parser.js';
|
|
6
|
+
export * from './feature-validator.js';
|
|
7
|
+
export * from './parser-manager.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// Parser exports
|
|
2
|
+
export * from './parser.js';
|
|
3
|
+
export * from './react-parser.js';
|
|
4
|
+
export * from './vue-parser.js';
|
|
5
|
+
export * from './svelte-parser.js';
|
|
6
|
+
export * from './vanilla-parser.js';
|
|
7
|
+
export * from './feature-validator.js';
|
|
8
|
+
export * from './parser-manager.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import type { DetectedFeature } from '../types/index.js';
|
|
2
|
+
import { FeatureValidator } from './feature-validator.js';
|
|
3
|
+
/**
|
|
4
|
+
* Parser manager that coordinates all parsers and provides concurrent processing
|
|
5
|
+
* for large codebases with advanced web APIs using lazy loading
|
|
6
|
+
*/
|
|
7
|
+
export declare class ParserManager {
|
|
8
|
+
private parsers;
|
|
9
|
+
private readonly validator;
|
|
10
|
+
private readonly maxConcurrency;
|
|
11
|
+
private initialized;
|
|
12
|
+
constructor(maxConcurrency?: number);
|
|
13
|
+
/**
|
|
14
|
+
* Lazy load parsers only when needed
|
|
15
|
+
*/
|
|
16
|
+
private ensureParsersLoaded;
|
|
17
|
+
/**
|
|
18
|
+
* Get parser for file type with lazy loading
|
|
19
|
+
*/
|
|
20
|
+
private getParserForFile;
|
|
21
|
+
/**
|
|
22
|
+
* Parse multiple files concurrently with error handling
|
|
23
|
+
*/
|
|
24
|
+
parseFiles(filePaths: string[]): Promise<DetectedFeature[]>;
|
|
25
|
+
/**
|
|
26
|
+
* Parse a single file with memory optimization
|
|
27
|
+
*/
|
|
28
|
+
parseFile(filePath: string): Promise<DetectedFeature[]>;
|
|
29
|
+
/**
|
|
30
|
+
* Parse large files using streaming to reduce memory usage
|
|
31
|
+
*/
|
|
32
|
+
private parseFileStreaming;
|
|
33
|
+
/**
|
|
34
|
+
* Check if a file can be parsed by any available parser
|
|
35
|
+
*/
|
|
36
|
+
canParseFile(filePath: string): Promise<boolean>;
|
|
37
|
+
/**
|
|
38
|
+
* Get all supported file extensions
|
|
39
|
+
*/
|
|
40
|
+
getSupportedExtensions(): Promise<string[]>;
|
|
41
|
+
/**
|
|
42
|
+
* Get parser information for debugging
|
|
43
|
+
*/
|
|
44
|
+
getParserInfo(): Promise<Array<{
|
|
45
|
+
name: string;
|
|
46
|
+
extensions: string[];
|
|
47
|
+
}>>;
|
|
48
|
+
/**
|
|
49
|
+
* Filter files by supported extensions
|
|
50
|
+
*/
|
|
51
|
+
filterSupportedFiles(filePaths: string[]): Promise<string[]>;
|
|
52
|
+
/**
|
|
53
|
+
* Scan directory for supported files (recursive)
|
|
54
|
+
*/
|
|
55
|
+
scanDirectory(directoryPath: string, options?: {
|
|
56
|
+
recursive?: boolean;
|
|
57
|
+
excludePatterns?: string[];
|
|
58
|
+
maxDepth?: number;
|
|
59
|
+
}): Promise<string[]>;
|
|
60
|
+
/**
|
|
61
|
+
* Recursive directory scanning helper
|
|
62
|
+
*/
|
|
63
|
+
private scanDirectoryRecursive;
|
|
64
|
+
/**
|
|
65
|
+
* Get processing statistics
|
|
66
|
+
*/
|
|
67
|
+
getProcessingStats(filePaths: string[]): Promise<{
|
|
68
|
+
totalFiles: number;
|
|
69
|
+
supportedFiles: number;
|
|
70
|
+
filesByType: Record<string, number>;
|
|
71
|
+
estimatedProcessingTime: number;
|
|
72
|
+
memoryEstimate: string;
|
|
73
|
+
}>;
|
|
74
|
+
/**
|
|
75
|
+
* Get memory and performance statistics
|
|
76
|
+
*/
|
|
77
|
+
getStats(): {
|
|
78
|
+
parsersLoaded: number;
|
|
79
|
+
maxConcurrency: number;
|
|
80
|
+
memoryStats: any;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Create batches for concurrent processing
|
|
84
|
+
*/
|
|
85
|
+
private createBatches;
|
|
86
|
+
/**
|
|
87
|
+
* Get file extension
|
|
88
|
+
*/
|
|
89
|
+
private getFileExtension;
|
|
90
|
+
/**
|
|
91
|
+
* Sleep utility for batch processing
|
|
92
|
+
*/
|
|
93
|
+
private sleep;
|
|
94
|
+
/**
|
|
95
|
+
* Get feature validator instance
|
|
96
|
+
*/
|
|
97
|
+
getValidator(): FeatureValidator;
|
|
98
|
+
/**
|
|
99
|
+
* Validate features without parsing (for external use)
|
|
100
|
+
*/
|
|
101
|
+
validateFeatures(features: DetectedFeature[]): Promise<DetectedFeature[]>;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=parser-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser-manager.d.ts","sourceRoot":"","sources":["../../src/parsers/parser-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAM1D;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;IAC7C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,WAAW,CAAS;gBAEhB,cAAc,GAAE,MAAW;IAMvC;;OAEG;YACW,mBAAmB;IA+BjC;;OAEG;YACW,gBAAgB;IAY9B;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAyCjE;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA4C7D;;OAEG;YACW,kBAAkB;IAwBhC;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYtD;;OAEG;IACG,sBAAsB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAUjD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAS7E;;OAEG;IACG,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAQlE;;OAEG;IACG,aAAa,CACjB,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE;QACP,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACd,GACL,OAAO,CAAC,MAAM,EAAE,CAAC;IAyBpB;;OAEG;YACW,sBAAsB;IAmDpC;;OAEG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QACrD,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACpC,uBAAuB,EAAE,MAAM,CAAC;QAChC,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IAwBF;;OAEG;IACH,QAAQ,IAAI;QACV,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,GAAG,CAAC;KAClB;IAQD;;OAEG;IACH,OAAO,CAAC,aAAa;IAQrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;OAEG;IACH,YAAY,IAAI,gBAAgB;IAIhC;;OAEG;IACG,gBAAgB,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CAGhF"}
|