driftdetect-core 0.1.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/dist/analyzers/ast-analyzer.d.ts +251 -0
- package/dist/analyzers/ast-analyzer.d.ts.map +1 -0
- package/dist/analyzers/ast-analyzer.js +548 -0
- package/dist/analyzers/ast-analyzer.js.map +1 -0
- package/dist/analyzers/flow-analyzer.d.ts +241 -0
- package/dist/analyzers/flow-analyzer.d.ts.map +1 -0
- package/dist/analyzers/flow-analyzer.js +1219 -0
- package/dist/analyzers/flow-analyzer.js.map +1 -0
- package/dist/analyzers/index.d.ts +18 -0
- package/dist/analyzers/index.d.ts.map +1 -0
- package/dist/analyzers/index.js +19 -0
- package/dist/analyzers/index.js.map +1 -0
- package/dist/analyzers/semantic-analyzer.d.ts +252 -0
- package/dist/analyzers/semantic-analyzer.d.ts.map +1 -0
- package/dist/analyzers/semantic-analyzer.js +1182 -0
- package/dist/analyzers/semantic-analyzer.js.map +1 -0
- package/dist/analyzers/type-analyzer.d.ts +289 -0
- package/dist/analyzers/type-analyzer.d.ts.map +1 -0
- package/dist/analyzers/type-analyzer.js +1269 -0
- package/dist/analyzers/type-analyzer.js.map +1 -0
- package/dist/analyzers/types.d.ts +537 -0
- package/dist/analyzers/types.d.ts.map +1 -0
- package/dist/analyzers/types.js +11 -0
- package/dist/analyzers/types.js.map +1 -0
- package/dist/config/config-loader.d.ts +166 -0
- package/dist/config/config-loader.d.ts.map +1 -0
- package/dist/config/config-loader.js +429 -0
- package/dist/config/config-loader.js.map +1 -0
- package/dist/config/config-validator.d.ts +204 -0
- package/dist/config/config-validator.d.ts.map +1 -0
- package/dist/config/config-validator.js +632 -0
- package/dist/config/config-validator.js.map +1 -0
- package/dist/config/defaults.d.ts +8 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +26 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +10 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +10 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/types.d.ts +47 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +7 -0
- package/dist/config/types.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -0
- package/dist/manifest/exporter.d.ts +21 -0
- package/dist/manifest/exporter.d.ts.map +1 -0
- package/dist/manifest/exporter.js +339 -0
- package/dist/manifest/exporter.js.map +1 -0
- package/dist/manifest/index.d.ts +14 -0
- package/dist/manifest/index.d.ts.map +1 -0
- package/dist/manifest/index.js +15 -0
- package/dist/manifest/index.js.map +1 -0
- package/dist/manifest/manifest-store.d.ts +111 -0
- package/dist/manifest/manifest-store.d.ts.map +1 -0
- package/dist/manifest/manifest-store.js +418 -0
- package/dist/manifest/manifest-store.js.map +1 -0
- package/dist/manifest/types.d.ts +238 -0
- package/dist/manifest/types.d.ts.map +1 -0
- package/dist/manifest/types.js +11 -0
- package/dist/manifest/types.js.map +1 -0
- package/dist/matcher/confidence-scorer.d.ts +188 -0
- package/dist/matcher/confidence-scorer.d.ts.map +1 -0
- package/dist/matcher/confidence-scorer.js +302 -0
- package/dist/matcher/confidence-scorer.js.map +1 -0
- package/dist/matcher/index.d.ts +24 -0
- package/dist/matcher/index.d.ts.map +1 -0
- package/dist/matcher/index.js +26 -0
- package/dist/matcher/index.js.map +1 -0
- package/dist/matcher/outlier-detector.d.ts +252 -0
- package/dist/matcher/outlier-detector.d.ts.map +1 -0
- package/dist/matcher/outlier-detector.js +544 -0
- package/dist/matcher/outlier-detector.js.map +1 -0
- package/dist/matcher/pattern-matcher.d.ts +169 -0
- package/dist/matcher/pattern-matcher.d.ts.map +1 -0
- package/dist/matcher/pattern-matcher.js +692 -0
- package/dist/matcher/pattern-matcher.js.map +1 -0
- package/dist/matcher/types.d.ts +476 -0
- package/dist/matcher/types.d.ts.map +1 -0
- package/dist/matcher/types.js +36 -0
- package/dist/matcher/types.js.map +1 -0
- package/dist/parsers/base-parser.d.ts +282 -0
- package/dist/parsers/base-parser.d.ts.map +1 -0
- package/dist/parsers/base-parser.js +421 -0
- package/dist/parsers/base-parser.js.map +1 -0
- package/dist/parsers/css-parser.d.ts +225 -0
- package/dist/parsers/css-parser.d.ts.map +1 -0
- package/dist/parsers/css-parser.js +477 -0
- package/dist/parsers/css-parser.js.map +1 -0
- package/dist/parsers/index.d.ts +15 -0
- package/dist/parsers/index.d.ts.map +1 -0
- package/dist/parsers/index.js +15 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/parsers/json-parser.d.ts +219 -0
- package/dist/parsers/json-parser.d.ts.map +1 -0
- package/dist/parsers/json-parser.js +602 -0
- package/dist/parsers/json-parser.js.map +1 -0
- package/dist/parsers/markdown-parser.d.ts +276 -0
- package/dist/parsers/markdown-parser.d.ts.map +1 -0
- package/dist/parsers/markdown-parser.js +731 -0
- package/dist/parsers/markdown-parser.js.map +1 -0
- package/dist/parsers/parser-manager.d.ts +294 -0
- package/dist/parsers/parser-manager.d.ts.map +1 -0
- package/dist/parsers/parser-manager.js +738 -0
- package/dist/parsers/parser-manager.js.map +1 -0
- package/dist/parsers/python-parser.d.ts +204 -0
- package/dist/parsers/python-parser.d.ts.map +1 -0
- package/dist/parsers/python-parser.js +517 -0
- package/dist/parsers/python-parser.js.map +1 -0
- package/dist/parsers/types.d.ts +43 -0
- package/dist/parsers/types.d.ts.map +1 -0
- package/dist/parsers/types.js +7 -0
- package/dist/parsers/types.js.map +1 -0
- package/dist/parsers/typescript-parser.d.ts +264 -0
- package/dist/parsers/typescript-parser.d.ts.map +1 -0
- package/dist/parsers/typescript-parser.js +658 -0
- package/dist/parsers/typescript-parser.js.map +1 -0
- package/dist/rules/evaluator.d.ts +305 -0
- package/dist/rules/evaluator.d.ts.map +1 -0
- package/dist/rules/evaluator.js +579 -0
- package/dist/rules/evaluator.js.map +1 -0
- package/dist/rules/index.d.ts +13 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/rules/index.js +13 -0
- package/dist/rules/index.js.map +1 -0
- package/dist/rules/quick-fix-generator.d.ts +334 -0
- package/dist/rules/quick-fix-generator.d.ts.map +1 -0
- package/dist/rules/quick-fix-generator.js +1075 -0
- package/dist/rules/quick-fix-generator.js.map +1 -0
- package/dist/rules/rule-engine.d.ts +241 -0
- package/dist/rules/rule-engine.d.ts.map +1 -0
- package/dist/rules/rule-engine.js +585 -0
- package/dist/rules/rule-engine.js.map +1 -0
- package/dist/rules/severity-manager.d.ts +394 -0
- package/dist/rules/severity-manager.d.ts.map +1 -0
- package/dist/rules/severity-manager.js +619 -0
- package/dist/rules/severity-manager.js.map +1 -0
- package/dist/rules/types.d.ts +370 -0
- package/dist/rules/types.d.ts.map +1 -0
- package/dist/rules/types.js +133 -0
- package/dist/rules/types.js.map +1 -0
- package/dist/rules/variant-manager.d.ts +388 -0
- package/dist/rules/variant-manager.d.ts.map +1 -0
- package/dist/rules/variant-manager.js +777 -0
- package/dist/rules/variant-manager.js.map +1 -0
- package/dist/scanner/change-detector.d.ts +164 -0
- package/dist/scanner/change-detector.d.ts.map +1 -0
- package/dist/scanner/change-detector.js +263 -0
- package/dist/scanner/change-detector.js.map +1 -0
- package/dist/scanner/dependency-graph.d.ts +270 -0
- package/dist/scanner/dependency-graph.d.ts.map +1 -0
- package/dist/scanner/dependency-graph.js +436 -0
- package/dist/scanner/dependency-graph.js.map +1 -0
- package/dist/scanner/file-walker.d.ts +127 -0
- package/dist/scanner/file-walker.d.ts.map +1 -0
- package/dist/scanner/file-walker.js +526 -0
- package/dist/scanner/file-walker.js.map +1 -0
- package/dist/scanner/index.d.ts +12 -0
- package/dist/scanner/index.d.ts.map +1 -0
- package/dist/scanner/index.js +12 -0
- package/dist/scanner/index.js.map +1 -0
- package/dist/scanner/types.d.ts +218 -0
- package/dist/scanner/types.d.ts.map +1 -0
- package/dist/scanner/types.js +10 -0
- package/dist/scanner/types.js.map +1 -0
- package/dist/scanner/worker-pool.d.ts +317 -0
- package/dist/scanner/worker-pool.d.ts.map +1 -0
- package/dist/scanner/worker-pool.js +571 -0
- package/dist/scanner/worker-pool.js.map +1 -0
- package/dist/store/cache-manager.d.ts +179 -0
- package/dist/store/cache-manager.d.ts.map +1 -0
- package/dist/store/cache-manager.js +391 -0
- package/dist/store/cache-manager.js.map +1 -0
- package/dist/store/history-store.d.ts +314 -0
- package/dist/store/history-store.d.ts.map +1 -0
- package/dist/store/history-store.js +707 -0
- package/dist/store/history-store.js.map +1 -0
- package/dist/store/index.d.ts +20 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +26 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/lock-file-manager.d.ts +202 -0
- package/dist/store/lock-file-manager.d.ts.map +1 -0
- package/dist/store/lock-file-manager.js +475 -0
- package/dist/store/lock-file-manager.js.map +1 -0
- package/dist/store/pattern-store.d.ts +289 -0
- package/dist/store/pattern-store.d.ts.map +1 -0
- package/dist/store/pattern-store.js +936 -0
- package/dist/store/pattern-store.js.map +1 -0
- package/dist/store/schema-validator.d.ts +159 -0
- package/dist/store/schema-validator.d.ts.map +1 -0
- package/dist/store/schema-validator.js +1096 -0
- package/dist/store/schema-validator.js.map +1 -0
- package/dist/store/types.d.ts +585 -0
- package/dist/store/types.d.ts.map +1 -0
- package/dist/store/types.js +82 -0
- package/dist/store/types.js.map +1 -0
- package/dist/types/analysis.d.ts +19 -0
- package/dist/types/analysis.d.ts.map +1 -0
- package/dist/types/analysis.js +5 -0
- package/dist/types/analysis.js.map +1 -0
- package/dist/types/common.d.ts +7 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +5 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/index.d.ts +12 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +10 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/patterns.d.ts +40 -0
- package/dist/types/patterns.d.ts.map +1 -0
- package/dist/types/patterns.js +7 -0
- package/dist/types/patterns.js.map +1 -0
- package/dist/types/violations.d.ts +7 -0
- package/dist/types/violations.d.ts.map +1 -0
- package/dist/types/violations.js +7 -0
- package/dist/types/violations.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,477 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CSS Parser - CSS/SCSS/SASS/LESS parsing for AST extraction
|
|
3
|
+
*
|
|
4
|
+
* Extracts selectors, properties, values, @rules, and CSS variables
|
|
5
|
+
* from CSS-like files using regex-based parsing.
|
|
6
|
+
*
|
|
7
|
+
* @requirements 3.2
|
|
8
|
+
*/
|
|
9
|
+
import { BaseParser } from './base-parser.js';
|
|
10
|
+
/**
|
|
11
|
+
* CSS/SCSS/SASS/LESS parser using regex-based parsing.
|
|
12
|
+
*
|
|
13
|
+
* Provides AST parsing and extraction of selectors, properties,
|
|
14
|
+
* values, @rules, and CSS variables from CSS-like source files.
|
|
15
|
+
*
|
|
16
|
+
* @requirements 3.2 - Support CSS/SCSS parsing
|
|
17
|
+
* @requirements 3.3 - Graceful degradation on parse errors
|
|
18
|
+
*/
|
|
19
|
+
export class CSSParser extends BaseParser {
|
|
20
|
+
language = 'css';
|
|
21
|
+
extensions = ['.css', '.scss', '.sass', '.less'];
|
|
22
|
+
/**
|
|
23
|
+
* Parse CSS source code into an AST.
|
|
24
|
+
*
|
|
25
|
+
* @param source - The source code to parse
|
|
26
|
+
* @param filePath - Optional file path for error reporting
|
|
27
|
+
* @returns CSSParseResult containing the AST and extracted information
|
|
28
|
+
*
|
|
29
|
+
* @requirements 3.2, 3.3
|
|
30
|
+
*/
|
|
31
|
+
parse(source, _filePath) {
|
|
32
|
+
try {
|
|
33
|
+
const lines = source.split('\n');
|
|
34
|
+
const rootChildren = [];
|
|
35
|
+
// Extract semantic information
|
|
36
|
+
const atRules = this.extractAtRules(source, lines);
|
|
37
|
+
const rules = this.extractRules(source, lines);
|
|
38
|
+
const selectors = this.extractSelectors(rules);
|
|
39
|
+
const properties = this.extractAllProperties(rules);
|
|
40
|
+
const variables = this.extractVariables(source, lines);
|
|
41
|
+
// Build AST nodes for @rules
|
|
42
|
+
for (const atRule of atRules) {
|
|
43
|
+
const atRuleNode = this.createAtRuleNode(atRule, source);
|
|
44
|
+
rootChildren.push(atRuleNode);
|
|
45
|
+
}
|
|
46
|
+
// Build AST nodes for rules
|
|
47
|
+
for (const rule of rules) {
|
|
48
|
+
const ruleNode = this.createRuleNode(rule, source);
|
|
49
|
+
rootChildren.push(ruleNode);
|
|
50
|
+
}
|
|
51
|
+
// Create root node
|
|
52
|
+
const endPosition = lines.length > 0
|
|
53
|
+
? { row: lines.length - 1, column: lines[lines.length - 1]?.length ?? 0 }
|
|
54
|
+
: { row: 0, column: 0 };
|
|
55
|
+
const rootNode = this.createNode('StyleSheet', source, { row: 0, column: 0 }, endPosition, rootChildren);
|
|
56
|
+
const ast = this.createAST(rootNode, source);
|
|
57
|
+
return {
|
|
58
|
+
...this.createSuccessResult(ast),
|
|
59
|
+
selectors,
|
|
60
|
+
properties,
|
|
61
|
+
atRules,
|
|
62
|
+
variables,
|
|
63
|
+
rules,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown parse error';
|
|
68
|
+
return {
|
|
69
|
+
...this.createFailureResult([this.createError(errorMessage, { row: 0, column: 0 })]),
|
|
70
|
+
selectors: [],
|
|
71
|
+
properties: [],
|
|
72
|
+
atRules: [],
|
|
73
|
+
variables: [],
|
|
74
|
+
rules: [],
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Query the AST for nodes matching a pattern.
|
|
80
|
+
*
|
|
81
|
+
* Supports querying by node type (e.g., 'Rule', 'AtRule', 'Declaration').
|
|
82
|
+
*
|
|
83
|
+
* @param ast - The AST to query
|
|
84
|
+
* @param pattern - The node type to search for
|
|
85
|
+
* @returns Array of matching AST nodes
|
|
86
|
+
*
|
|
87
|
+
* @requirements 3.5
|
|
88
|
+
*/
|
|
89
|
+
query(ast, pattern) {
|
|
90
|
+
return this.findNodesByType(ast, pattern);
|
|
91
|
+
}
|
|
92
|
+
// ============================================
|
|
93
|
+
// @Rule Extraction
|
|
94
|
+
// ============================================
|
|
95
|
+
/**
|
|
96
|
+
* Extract all @rules from CSS source.
|
|
97
|
+
*/
|
|
98
|
+
extractAtRules(source, _lines) {
|
|
99
|
+
const atRules = [];
|
|
100
|
+
// Match @rules: @import, @media, @keyframes, @font-face, @charset, @supports, etc.
|
|
101
|
+
// This regex matches @rule-name followed by params and optionally a block
|
|
102
|
+
const atRuleRegex = /@([\w-]+)\s*([^{;]*?)(?:\{([^}]*(?:\{[^}]*\}[^}]*)*)\}|;)/g;
|
|
103
|
+
let match;
|
|
104
|
+
while ((match = atRuleRegex.exec(source)) !== null) {
|
|
105
|
+
const lineStart = this.getLineNumber(source, match.index);
|
|
106
|
+
const name = match[1] ?? '';
|
|
107
|
+
const params = (match[2] ?? '').trim();
|
|
108
|
+
const blockContent = match[3];
|
|
109
|
+
const hasBlock = blockContent !== undefined;
|
|
110
|
+
const endOffset = match.index + (match[0]?.length ?? 0);
|
|
111
|
+
const lineEnd = this.getLineNumber(source, endOffset);
|
|
112
|
+
// Parse nested rules if this is a block @rule
|
|
113
|
+
const nestedRules = [];
|
|
114
|
+
if (hasBlock && blockContent) {
|
|
115
|
+
const nestedSource = blockContent;
|
|
116
|
+
const nestedLines = nestedSource.split('\n');
|
|
117
|
+
nestedRules.push(...this.extractRules(nestedSource, nestedLines));
|
|
118
|
+
}
|
|
119
|
+
atRules.push({
|
|
120
|
+
name,
|
|
121
|
+
params,
|
|
122
|
+
hasBlock,
|
|
123
|
+
nestedRules,
|
|
124
|
+
startPosition: { row: lineStart, column: this.getColumnNumber(source, match.index) },
|
|
125
|
+
endPosition: { row: lineEnd, column: this.getColumnNumber(source, endOffset) },
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
return atRules;
|
|
129
|
+
}
|
|
130
|
+
// ============================================
|
|
131
|
+
// Rule Extraction
|
|
132
|
+
// ============================================
|
|
133
|
+
/**
|
|
134
|
+
* Extract all CSS rules (selector + declarations) from source.
|
|
135
|
+
*/
|
|
136
|
+
extractRules(source, _lines) {
|
|
137
|
+
const rules = [];
|
|
138
|
+
// Remove comments first
|
|
139
|
+
const sourceWithoutComments = this.removeComments(source);
|
|
140
|
+
// Remove @rules to avoid matching their content as regular rules
|
|
141
|
+
const sourceWithoutAtRules = this.removeAtRules(sourceWithoutComments);
|
|
142
|
+
// Match CSS rules: selector(s) { declarations }
|
|
143
|
+
// This handles multi-line selectors and nested rules
|
|
144
|
+
const ruleRegex = /([^{}@]+?)\s*\{([^{}]*(?:\{[^{}]*\}[^{}]*)*)\}/g;
|
|
145
|
+
let match;
|
|
146
|
+
while ((match = ruleRegex.exec(sourceWithoutAtRules)) !== null) {
|
|
147
|
+
const selectorText = (match[1] ?? '').trim();
|
|
148
|
+
const declarationsText = match[2] ?? '';
|
|
149
|
+
// Skip if selector is empty or looks like a comment
|
|
150
|
+
if (!selectorText || selectorText.startsWith('/*') || selectorText.startsWith('//')) {
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
const lineStart = this.getLineNumber(source, match.index);
|
|
154
|
+
const endOffset = match.index + (match[0]?.length ?? 0);
|
|
155
|
+
const lineEnd = this.getLineNumber(source, endOffset);
|
|
156
|
+
// Parse selectors (comma-separated)
|
|
157
|
+
const selectors = this.parseSelectors(selectorText);
|
|
158
|
+
// Parse properties
|
|
159
|
+
const properties = this.parseDeclarations(declarationsText, selectorText, lineStart);
|
|
160
|
+
// Parse nested rules (for SCSS/LESS)
|
|
161
|
+
const nestedRules = this.parseNestedRules(declarationsText, selectorText, lineStart);
|
|
162
|
+
rules.push({
|
|
163
|
+
selectors,
|
|
164
|
+
properties,
|
|
165
|
+
nestedRules,
|
|
166
|
+
parentSelector: null,
|
|
167
|
+
startPosition: { row: lineStart, column: this.getColumnNumber(source, match.index) },
|
|
168
|
+
endPosition: { row: lineEnd, column: this.getColumnNumber(source, endOffset) },
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
return rules;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Remove @rules from source to avoid matching their content as regular rules.
|
|
175
|
+
*/
|
|
176
|
+
removeAtRules(source) {
|
|
177
|
+
// Remove @rules with blocks
|
|
178
|
+
let result = source.replace(/@[\w-]+\s*[^{;]*\{[^}]*(?:\{[^}]*\}[^}]*)*\}/g, '');
|
|
179
|
+
// Remove @rules without blocks (like @import, @charset)
|
|
180
|
+
result = result.replace(/@[\w-]+\s*[^{;]*;/g, '');
|
|
181
|
+
return result;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Remove CSS comments from source.
|
|
185
|
+
*/
|
|
186
|
+
removeComments(source) {
|
|
187
|
+
// Remove block comments /* ... */
|
|
188
|
+
let result = source.replace(/\/\*[\s\S]*?\*\//g, '');
|
|
189
|
+
// Remove single-line comments // ... (SCSS/LESS style)
|
|
190
|
+
result = result.replace(/\/\/[^\n]*/g, '');
|
|
191
|
+
return result;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Parse comma-separated selectors.
|
|
195
|
+
*/
|
|
196
|
+
parseSelectors(selectorText) {
|
|
197
|
+
return selectorText
|
|
198
|
+
.split(',')
|
|
199
|
+
.map(s => s.trim())
|
|
200
|
+
.filter(s => s.length > 0 && !s.startsWith('/*'));
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Parse CSS declarations (property: value pairs).
|
|
204
|
+
*/
|
|
205
|
+
parseDeclarations(declarationsText, parentSelector, baseLineNumber) {
|
|
206
|
+
const properties = [];
|
|
207
|
+
// Remove nested rules first
|
|
208
|
+
const cleanDeclarations = declarationsText.replace(/[^{}]+\{[^{}]*\}/g, '');
|
|
209
|
+
// Match property: value pairs
|
|
210
|
+
const declarationRegex = /([\w-]+)\s*:\s*([^;{}]+?)(?:\s*(!important))?\s*(?:;|$)/g;
|
|
211
|
+
let match;
|
|
212
|
+
while ((match = declarationRegex.exec(cleanDeclarations)) !== null) {
|
|
213
|
+
const name = match[1] ?? '';
|
|
214
|
+
const value = (match[2] ?? '').trim();
|
|
215
|
+
const isImportant = !!match[3];
|
|
216
|
+
const isVariable = name.startsWith('--');
|
|
217
|
+
const lineOffset = this.getLineNumber(cleanDeclarations, match.index);
|
|
218
|
+
const lineNumber = baseLineNumber + lineOffset;
|
|
219
|
+
properties.push({
|
|
220
|
+
name,
|
|
221
|
+
value,
|
|
222
|
+
isVariable,
|
|
223
|
+
isImportant,
|
|
224
|
+
parentSelector,
|
|
225
|
+
startPosition: { row: lineNumber, column: 0 },
|
|
226
|
+
endPosition: { row: lineNumber, column: (match[0]?.length ?? 0) },
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
return properties;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Parse nested rules (for SCSS/LESS).
|
|
233
|
+
*/
|
|
234
|
+
parseNestedRules(declarationsText, parentSelector, baseLineNumber) {
|
|
235
|
+
const nestedRules = [];
|
|
236
|
+
// Match nested rules: selector { declarations }
|
|
237
|
+
const nestedRuleRegex = /([&\w\s.#:\[\]="-]+?)\s*\{([^{}]*)\}/g;
|
|
238
|
+
let match;
|
|
239
|
+
while ((match = nestedRuleRegex.exec(declarationsText)) !== null) {
|
|
240
|
+
const nestedSelectorText = (match[1] ?? '').trim();
|
|
241
|
+
const nestedDeclarationsText = match[2] ?? '';
|
|
242
|
+
// Skip if it looks like a property value with braces
|
|
243
|
+
if (!nestedSelectorText || /^[\w-]+$/.test(nestedSelectorText)) {
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
const lineOffset = this.getLineNumber(declarationsText, match.index);
|
|
247
|
+
const lineNumber = baseLineNumber + lineOffset;
|
|
248
|
+
// Resolve nested selector (replace & with parent)
|
|
249
|
+
const resolvedSelectors = this.resolveNestedSelectors(nestedSelectorText, parentSelector);
|
|
250
|
+
// Parse nested properties
|
|
251
|
+
const properties = this.parseDeclarations(nestedDeclarationsText, resolvedSelectors[0] ?? '', lineNumber);
|
|
252
|
+
nestedRules.push({
|
|
253
|
+
selectors: resolvedSelectors,
|
|
254
|
+
properties,
|
|
255
|
+
nestedRules: [],
|
|
256
|
+
parentSelector,
|
|
257
|
+
startPosition: { row: lineNumber, column: 0 },
|
|
258
|
+
endPosition: { row: lineNumber + this.getLineNumber(nestedDeclarationsText, nestedDeclarationsText.length), column: 0 },
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
return nestedRules;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Resolve nested selectors by replacing & with parent selector.
|
|
265
|
+
*/
|
|
266
|
+
resolveNestedSelectors(nestedSelector, parentSelector) {
|
|
267
|
+
const selectors = this.parseSelectors(nestedSelector);
|
|
268
|
+
return selectors.map(selector => {
|
|
269
|
+
if (selector.includes('&')) {
|
|
270
|
+
return selector.replace(/&/g, parentSelector);
|
|
271
|
+
}
|
|
272
|
+
// If no &, prepend parent selector
|
|
273
|
+
return `${parentSelector} ${selector}`;
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
// ============================================
|
|
277
|
+
// Selector Extraction
|
|
278
|
+
// ============================================
|
|
279
|
+
/**
|
|
280
|
+
* Extract all selectors from parsed rules.
|
|
281
|
+
*/
|
|
282
|
+
extractSelectors(rules) {
|
|
283
|
+
const selectors = [];
|
|
284
|
+
for (const rule of rules) {
|
|
285
|
+
for (const selector of rule.selectors) {
|
|
286
|
+
const parts = this.parseSelectorParts(selector);
|
|
287
|
+
const primaryType = this.determinePrimarySelectorType(parts);
|
|
288
|
+
selectors.push({
|
|
289
|
+
selector,
|
|
290
|
+
type: primaryType,
|
|
291
|
+
parts,
|
|
292
|
+
startPosition: rule.startPosition,
|
|
293
|
+
endPosition: rule.endPosition,
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
// Also extract from nested rules
|
|
297
|
+
for (const nestedRule of rule.nestedRules) {
|
|
298
|
+
for (const selector of nestedRule.selectors) {
|
|
299
|
+
const parts = this.parseSelectorParts(selector);
|
|
300
|
+
const primaryType = this.determinePrimarySelectorType(parts);
|
|
301
|
+
selectors.push({
|
|
302
|
+
selector,
|
|
303
|
+
type: primaryType,
|
|
304
|
+
parts,
|
|
305
|
+
startPosition: nestedRule.startPosition,
|
|
306
|
+
endPosition: nestedRule.endPosition,
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
return selectors;
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Parse a selector into its component parts.
|
|
315
|
+
*/
|
|
316
|
+
parseSelectorParts(selector) {
|
|
317
|
+
const parts = [];
|
|
318
|
+
// Match different selector types
|
|
319
|
+
const patterns = [
|
|
320
|
+
{ regex: /::[\w-]+/g, type: 'pseudo-element' },
|
|
321
|
+
{ regex: /:[\w-]+(?:\([^)]*\))?/g, type: 'pseudo-class' },
|
|
322
|
+
{ regex: /\[[\w-]+(?:[~|^$*]?=["']?[^"'\]]*["']?)?\]/g, type: 'attribute' },
|
|
323
|
+
{ regex: /#[\w-]+/g, type: 'id' },
|
|
324
|
+
{ regex: /\.[\w-]+/g, type: 'class' },
|
|
325
|
+
{ regex: /\*/g, type: 'universal' },
|
|
326
|
+
{ regex: /[>+~\s]+/g, type: 'combinator' },
|
|
327
|
+
];
|
|
328
|
+
// First, extract all special selectors
|
|
329
|
+
let remaining = selector;
|
|
330
|
+
for (const { regex, type } of patterns) {
|
|
331
|
+
let match;
|
|
332
|
+
const localRegex = new RegExp(regex.source, 'g');
|
|
333
|
+
while ((match = localRegex.exec(selector)) !== null) {
|
|
334
|
+
const text = match[0].trim();
|
|
335
|
+
if (text && type !== 'combinator') {
|
|
336
|
+
parts.push({ text, type });
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
// Remove matched parts from remaining
|
|
340
|
+
remaining = remaining.replace(regex, ' ');
|
|
341
|
+
}
|
|
342
|
+
// What's left should be element selectors
|
|
343
|
+
const elementParts = remaining.trim().split(/\s+/).filter(p => p && /^[\w-]+$/.test(p));
|
|
344
|
+
for (const element of elementParts) {
|
|
345
|
+
parts.push({ text: element, type: 'element' });
|
|
346
|
+
}
|
|
347
|
+
return parts;
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Determine the primary selector type from parts.
|
|
351
|
+
*/
|
|
352
|
+
determinePrimarySelectorType(parts) {
|
|
353
|
+
// Priority: id > class > element > pseudo-class > pseudo-element > attribute > universal
|
|
354
|
+
const priority = ['id', 'class', 'element', 'pseudo-class', 'pseudo-element', 'attribute', 'universal'];
|
|
355
|
+
for (const type of priority) {
|
|
356
|
+
if (parts.some(p => p.type === type)) {
|
|
357
|
+
return type;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
return 'element';
|
|
361
|
+
}
|
|
362
|
+
// ============================================
|
|
363
|
+
// Property Extraction
|
|
364
|
+
// ============================================
|
|
365
|
+
/**
|
|
366
|
+
* Extract all properties from parsed rules.
|
|
367
|
+
*/
|
|
368
|
+
extractAllProperties(rules) {
|
|
369
|
+
const properties = [];
|
|
370
|
+
for (const rule of rules) {
|
|
371
|
+
properties.push(...rule.properties);
|
|
372
|
+
// Also extract from nested rules
|
|
373
|
+
for (const nestedRule of rule.nestedRules) {
|
|
374
|
+
properties.push(...nestedRule.properties);
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
return properties;
|
|
378
|
+
}
|
|
379
|
+
// ============================================
|
|
380
|
+
// CSS Variable Extraction
|
|
381
|
+
// ============================================
|
|
382
|
+
/**
|
|
383
|
+
* Extract all CSS variables (custom properties) from source.
|
|
384
|
+
*/
|
|
385
|
+
extractVariables(source, _lines) {
|
|
386
|
+
const variables = [];
|
|
387
|
+
// Match CSS variable declarations: --variable-name: value;
|
|
388
|
+
// We need to find them within rule blocks
|
|
389
|
+
const ruleRegex = /([^{}]+?)\s*\{([^{}]*(?:\{[^{}]*\}[^{}]*)*)\}/g;
|
|
390
|
+
let ruleMatch;
|
|
391
|
+
while ((ruleMatch = ruleRegex.exec(source)) !== null) {
|
|
392
|
+
const scope = (ruleMatch[1] ?? '').trim();
|
|
393
|
+
const declarations = ruleMatch[2] ?? '';
|
|
394
|
+
const ruleLineStart = this.getLineNumber(source, ruleMatch.index);
|
|
395
|
+
// Find variable declarations within this rule
|
|
396
|
+
const varRegex = /(--[\w-]+)\s*:\s*([^;{}]+?)\s*;/g;
|
|
397
|
+
let varMatch;
|
|
398
|
+
while ((varMatch = varRegex.exec(declarations)) !== null) {
|
|
399
|
+
const name = varMatch[1] ?? '';
|
|
400
|
+
const value = (varMatch[2] ?? '').trim();
|
|
401
|
+
const lineOffset = this.getLineNumber(declarations, varMatch.index);
|
|
402
|
+
const lineNumber = ruleLineStart + lineOffset;
|
|
403
|
+
variables.push({
|
|
404
|
+
name,
|
|
405
|
+
value,
|
|
406
|
+
scope,
|
|
407
|
+
startPosition: { row: lineNumber, column: 0 },
|
|
408
|
+
endPosition: { row: lineNumber, column: (varMatch[0]?.length ?? 0) },
|
|
409
|
+
});
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
return variables;
|
|
413
|
+
}
|
|
414
|
+
// ============================================
|
|
415
|
+
// AST Node Creation
|
|
416
|
+
// ============================================
|
|
417
|
+
/**
|
|
418
|
+
* Create an AST node for an @rule.
|
|
419
|
+
*/
|
|
420
|
+
createAtRuleNode(atRule, _source) {
|
|
421
|
+
const children = [];
|
|
422
|
+
// Add params node if present
|
|
423
|
+
if (atRule.params) {
|
|
424
|
+
children.push(this.createNode('AtRuleParams', atRule.params, atRule.startPosition, atRule.endPosition, []));
|
|
425
|
+
}
|
|
426
|
+
// Add nested rule nodes
|
|
427
|
+
for (const nestedRule of atRule.nestedRules) {
|
|
428
|
+
children.push(this.createRuleNode(nestedRule, ''));
|
|
429
|
+
}
|
|
430
|
+
return this.createNode('AtRule', `@${atRule.name}`, atRule.startPosition, atRule.endPosition, children);
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Create an AST node for a CSS rule.
|
|
434
|
+
*/
|
|
435
|
+
createRuleNode(rule, _source) {
|
|
436
|
+
const children = [];
|
|
437
|
+
// Add selector nodes
|
|
438
|
+
for (const selector of rule.selectors) {
|
|
439
|
+
children.push(this.createNode('Selector', selector, rule.startPosition, rule.endPosition, []));
|
|
440
|
+
}
|
|
441
|
+
// Add declaration nodes
|
|
442
|
+
for (const prop of rule.properties) {
|
|
443
|
+
children.push(this.createNode('Declaration', `${prop.name}: ${prop.value}`, prop.startPosition, prop.endPosition, []));
|
|
444
|
+
}
|
|
445
|
+
// Add nested rule nodes
|
|
446
|
+
for (const nestedRule of rule.nestedRules) {
|
|
447
|
+
children.push(this.createRuleNode(nestedRule, ''));
|
|
448
|
+
}
|
|
449
|
+
return this.createNode('Rule', rule.selectors.join(', '), rule.startPosition, rule.endPosition, children);
|
|
450
|
+
}
|
|
451
|
+
// ============================================
|
|
452
|
+
// Utility Methods
|
|
453
|
+
// ============================================
|
|
454
|
+
/**
|
|
455
|
+
* Get the line number for a character offset.
|
|
456
|
+
*/
|
|
457
|
+
getLineNumber(source, offset) {
|
|
458
|
+
let line = 0;
|
|
459
|
+
for (let i = 0; i < offset && i < source.length; i++) {
|
|
460
|
+
if (source[i] === '\n') {
|
|
461
|
+
line++;
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
return line;
|
|
465
|
+
}
|
|
466
|
+
/**
|
|
467
|
+
* Get the column number for a character offset.
|
|
468
|
+
*/
|
|
469
|
+
getColumnNumber(source, offset) {
|
|
470
|
+
let column = 0;
|
|
471
|
+
for (let i = offset - 1; i >= 0 && source[i] !== '\n'; i--) {
|
|
472
|
+
column++;
|
|
473
|
+
}
|
|
474
|
+
return column;
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
//# sourceMappingURL=css-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css-parser.js","sourceRoot":"","sources":["../../src/parsers/css-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser module exports
|
|
3
|
+
*
|
|
4
|
+
* Provides multi-language AST parsing via Tree-sitter with
|
|
5
|
+
* incremental parsing support.
|
|
6
|
+
*/
|
|
7
|
+
export * from './types.js';
|
|
8
|
+
export * from './base-parser.js';
|
|
9
|
+
export * from './parser-manager.js';
|
|
10
|
+
export * from './typescript-parser.js';
|
|
11
|
+
export * from './python-parser.js';
|
|
12
|
+
export * from './css-parser.js';
|
|
13
|
+
export * from './json-parser.js';
|
|
14
|
+
export * from './markdown-parser.js';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser module exports
|
|
3
|
+
*
|
|
4
|
+
* Provides multi-language AST parsing via Tree-sitter with
|
|
5
|
+
* incremental parsing support.
|
|
6
|
+
*/
|
|
7
|
+
export * from './types.js';
|
|
8
|
+
export * from './base-parser.js';
|
|
9
|
+
export * from './parser-manager.js';
|
|
10
|
+
export * from './typescript-parser.js';
|
|
11
|
+
export * from './python-parser.js';
|
|
12
|
+
export * from './css-parser.js';
|
|
13
|
+
export * from './json-parser.js';
|
|
14
|
+
export * from './markdown-parser.js';
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC"}
|