tailwind-typescript-plugin 1.3.1-beta.4 → 1.4.0-beta.1
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/CHANGELOG.md +15 -0
- package/README.md +171 -0
- package/lib/core/types.d.ts +14 -0
- package/lib/core/types.d.ts.map +1 -1
- package/lib/extractors/CvaExtractor.d.ts.map +1 -1
- package/lib/extractors/CvaExtractor.js +44 -26
- package/lib/extractors/CvaExtractor.js.map +1 -1
- package/lib/extractors/ExpressionExtractor.d.ts +2 -1
- package/lib/extractors/ExpressionExtractor.d.ts.map +1 -1
- package/lib/extractors/ExpressionExtractor.js +46 -25
- package/lib/extractors/ExpressionExtractor.js.map +1 -1
- package/lib/extractors/JsxAttributeExtractor.d.ts.map +1 -1
- package/lib/extractors/JsxAttributeExtractor.js +13 -8
- package/lib/extractors/JsxAttributeExtractor.js.map +1 -1
- package/lib/extractors/TailwindVariantsExtractor.d.ts.map +1 -1
- package/lib/extractors/TailwindVariantsExtractor.js +50 -31
- package/lib/extractors/TailwindVariantsExtractor.js.map +1 -1
- package/lib/extractors/VariableReferenceExtractor.d.ts +1 -0
- package/lib/extractors/VariableReferenceExtractor.d.ts.map +1 -1
- package/lib/extractors/VariableReferenceExtractor.js +19 -14
- package/lib/extractors/VariableReferenceExtractor.js.map +1 -1
- package/lib/plugin/TailwindTypescriptPlugin.d.ts.map +1 -1
- package/lib/plugin/TailwindTypescriptPlugin.js +55 -18
- package/lib/plugin/TailwindTypescriptPlugin.js.map +1 -1
- package/lib/services/CodeActionService.d.ts +5 -0
- package/lib/services/CodeActionService.d.ts.map +1 -1
- package/lib/services/CodeActionService.js +37 -5
- package/lib/services/CodeActionService.js.map +1 -1
- package/lib/services/CodeActionService.spec.js +44 -0
- package/lib/services/CodeActionService.spec.js.map +1 -1
- package/lib/services/DiagnosticService.d.ts +26 -1
- package/lib/services/DiagnosticService.d.ts.map +1 -1
- package/lib/services/DiagnosticService.js +57 -2
- package/lib/services/DiagnosticService.js.map +1 -1
- package/lib/services/DuplicateClassDetection.spec.d.ts +2 -0
- package/lib/services/DuplicateClassDetection.spec.d.ts.map +1 -0
- package/lib/services/DuplicateClassDetection.spec.js +435 -0
- package/lib/services/DuplicateClassDetection.spec.js.map +1 -0
- package/lib/services/ValidationService.d.ts +4 -0
- package/lib/services/ValidationService.d.ts.map +1 -1
- package/lib/services/ValidationService.js +103 -6
- package/lib/services/ValidationService.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValidationService.d.ts","sourceRoot":"","sources":["../../src/services/ValidationService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD;;;GAGG;AACH,qBAAa,iBAAiB;IAE5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAHN,iBAAiB,EAAE,0BAA0B,EAC7C,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,EAAE,mBAAmB,EAC9B,MAAM,EAAE,MAAM;IAGhC;;;OAGG;IACH,YAAY,CACX,UAAU,EAAE,OAAO,EAAE,EACrB,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,gBAAgB,EAAE,MAAM,EAAE,EAC1B,WAAW,CAAC,EAAE,EAAE,CAAC,WAAW,GAC1B,EAAE,CAAC,UAAU,EAAE;
|
|
1
|
+
{"version":3,"file":"ValidationService.d.ts","sourceRoot":"","sources":["../../src/services/ValidationService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD;;;GAGG;AACH,qBAAa,iBAAiB;IAE5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAHN,iBAAiB,EAAE,0BAA0B,EAC7C,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,EAAE,mBAAmB,EAC9B,MAAM,EAAE,MAAM;IAGhC;;;OAGG;IACH,YAAY,CACX,UAAU,EAAE,OAAO,EAAE,EACrB,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,gBAAgB,EAAE,MAAM,EAAE,EAC1B,WAAW,CAAC,EAAE,EAAE,CAAC,WAAW,GAC1B,EAAE,CAAC,UAAU,EAAE;IAiElB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAM5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAiG5B"}
|
|
@@ -33,18 +33,29 @@ class ValidationService {
|
|
|
33
33
|
}
|
|
34
34
|
// Filter invalid class names
|
|
35
35
|
const invalidClasses = this.filterInvalidClasses(classNames);
|
|
36
|
+
// Detect duplicate classes (only for valid classes, to avoid double-reporting)
|
|
37
|
+
const { trueDuplicates, extractableClasses } = this.findDuplicateClasses(classNames);
|
|
36
38
|
// PERFORMANCE: Only log if enabled
|
|
37
39
|
if (this.logger.isEnabled()) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
+
const totalIssues = invalidClasses.length + trueDuplicates.length + extractableClasses.length;
|
|
41
|
+
if (totalIssues > 0) {
|
|
42
|
+
this.logger.log(`[ValidationService] Returning ${invalidClasses.length} invalid + ${trueDuplicates.length} duplicate + ${extractableClasses.length} extractable diagnostics`);
|
|
40
43
|
}
|
|
41
44
|
else {
|
|
42
|
-
this.logger.log(`[ValidationService] No
|
|
45
|
+
this.logger.log(`[ValidationService] No issues found`);
|
|
43
46
|
}
|
|
44
47
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
+
const diagnostics = [];
|
|
49
|
+
if (invalidClasses.length > 0) {
|
|
50
|
+
diagnostics.push(...this.diagnosticService.createDiagnostics(invalidClasses, sourceFile));
|
|
51
|
+
}
|
|
52
|
+
if (trueDuplicates.length > 0) {
|
|
53
|
+
diagnostics.push(...this.diagnosticService.createDuplicateDiagnostics(trueDuplicates, sourceFile));
|
|
54
|
+
}
|
|
55
|
+
if (extractableClasses.length > 0) {
|
|
56
|
+
diagnostics.push(...this.diagnosticService.createExtractableClassDiagnostics(extractableClasses, sourceFile));
|
|
57
|
+
}
|
|
58
|
+
return diagnostics;
|
|
48
59
|
}
|
|
49
60
|
/**
|
|
50
61
|
* Filter out valid classes and return only invalid ones
|
|
@@ -55,6 +66,92 @@ class ValidationService {
|
|
|
55
66
|
// This method is called for every class in every file
|
|
56
67
|
return classNames.filter(classInfo => !this.validator.isValidClass(classInfo.className));
|
|
57
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Result of duplicate detection with separate categories
|
|
71
|
+
*/
|
|
72
|
+
findDuplicateClasses(classNames) {
|
|
73
|
+
const trueDuplicates = [];
|
|
74
|
+
const extractableClasses = [];
|
|
75
|
+
// Group classes by attributeId
|
|
76
|
+
const byAttribute = new Map();
|
|
77
|
+
for (const classInfo of classNames) {
|
|
78
|
+
// Use attributeId if available, otherwise use a unique key per class
|
|
79
|
+
// (which means no duplicates can be detected for classes without attributeId)
|
|
80
|
+
const key = classInfo.attributeId || `${classInfo.absoluteStart}`;
|
|
81
|
+
if (!byAttribute.has(key)) {
|
|
82
|
+
byAttribute.set(key, []);
|
|
83
|
+
}
|
|
84
|
+
byAttribute.get(key).push(classInfo);
|
|
85
|
+
}
|
|
86
|
+
// For each attribute, find duplicates
|
|
87
|
+
for (const classes of byAttribute.values()) {
|
|
88
|
+
// Group by class name first
|
|
89
|
+
const byClassName = new Map();
|
|
90
|
+
for (const classInfo of classes) {
|
|
91
|
+
const className = classInfo.className;
|
|
92
|
+
if (!byClassName.has(className)) {
|
|
93
|
+
byClassName.set(className, []);
|
|
94
|
+
}
|
|
95
|
+
byClassName.get(className).push(classInfo);
|
|
96
|
+
}
|
|
97
|
+
// Analyze each class that appears multiple times
|
|
98
|
+
for (const [, occurrences] of byClassName) {
|
|
99
|
+
if (occurrences.length <= 1) {
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
// Separate root-level classes from branch classes
|
|
103
|
+
const rootClasses = occurrences.filter(c => !c.conditionalBranchId);
|
|
104
|
+
const branchClasses = occurrences.filter(c => c.conditionalBranchId);
|
|
105
|
+
// Case 1: Class at root level AND in branches = true duplicate
|
|
106
|
+
// Mark all branch occurrences as duplicates
|
|
107
|
+
if (rootClasses.length > 0 && branchClasses.length > 0) {
|
|
108
|
+
trueDuplicates.push(...branchClasses);
|
|
109
|
+
}
|
|
110
|
+
// Case 2: Multiple occurrences at root level = true duplicate
|
|
111
|
+
if (rootClasses.length > 1) {
|
|
112
|
+
// Skip the first, mark rest as duplicates
|
|
113
|
+
trueDuplicates.push(...rootClasses.slice(1));
|
|
114
|
+
}
|
|
115
|
+
// Case 3: Same class in different branches of same ternary
|
|
116
|
+
// Check if class appears in BOTH branches of any ternary
|
|
117
|
+
if (branchClasses.length > 0 && rootClasses.length === 0) {
|
|
118
|
+
// Group by ternary ID
|
|
119
|
+
const byTernary = new Map();
|
|
120
|
+
for (const classInfo of branchClasses) {
|
|
121
|
+
const branchId = classInfo.conditionalBranchId;
|
|
122
|
+
// Parse: "ternary:true:123" or "ternary:false:123"
|
|
123
|
+
const match = branchId.match(/^ternary:(true|false):(\d+)$/);
|
|
124
|
+
if (match) {
|
|
125
|
+
const [, branch, ternaryId] = match;
|
|
126
|
+
if (!byTernary.has(ternaryId)) {
|
|
127
|
+
byTernary.set(ternaryId, { true: [], false: [] });
|
|
128
|
+
}
|
|
129
|
+
byTernary.get(ternaryId)[branch].push(classInfo);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
// Check each ternary
|
|
133
|
+
for (const [, branches] of byTernary) {
|
|
134
|
+
if (branches.true.length > 0 && branches.false.length > 0) {
|
|
135
|
+
// Class appears in BOTH branches - this is extractable (hint)
|
|
136
|
+
// Mark ALL occurrences in both branches as extractable suggestions
|
|
137
|
+
// so the user sees the hint on both sides of the ternary
|
|
138
|
+
extractableClasses.push(...branches.true, ...branches.false);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
// Class only in one branch - check for duplicates within that branch
|
|
142
|
+
if (branches.true.length > 1) {
|
|
143
|
+
trueDuplicates.push(...branches.true.slice(1));
|
|
144
|
+
}
|
|
145
|
+
if (branches.false.length > 1) {
|
|
146
|
+
trueDuplicates.push(...branches.false.slice(1));
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return { trueDuplicates, extractableClasses };
|
|
154
|
+
}
|
|
58
155
|
}
|
|
59
156
|
exports.ValidationService = ValidationService;
|
|
60
157
|
//# sourceMappingURL=ValidationService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValidationService.js","sourceRoot":"","sources":["../../src/services/ValidationService.ts"],"names":[],"mappings":";;;AAQA;;;GAGG;AACH,MAAa,iBAAiB;IAC7B,YACkB,iBAA6C,EAC7C,iBAAoC,EACpC,SAA8B,EAC9B,MAAc;QAHd,sBAAiB,GAAjB,iBAAiB,CAA4B;QAC7C,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,cAAS,GAAT,SAAS,CAAqB;QAC9B,WAAM,GAAN,MAAM,CAAQ;IAC7B,CAAC;IAEJ;;;OAGG;IACH,YAAY,CACX,UAAqB,EACrB,UAAyB,EACzB,gBAA0B,EAC1B,WAA4B;QAE5B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,GAAG,CACd,yDAAyD,UAAU,CAAC,QAAQ,EAAE,CAC9E,CAAC;YACF,OAAO,EAAE,CAAC;QACX,CAAC;QAED,mCAAmC;QACnC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,wCAAwC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChF,CAAC;QAED,wCAAwC;QACxC,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAC9D,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,WAAW,CACX,CAAC;QAEF,mCAAmC;QACnC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,6BAA6B,UAAU,CAAC,MAAM,0BAA0B,CAAC,CAAC;QAC3F,CAAC;QAED,6BAA6B;QAC7B,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAE7D,mCAAmC;QACnC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;YAC7B,
|
|
1
|
+
{"version":3,"file":"ValidationService.js","sourceRoot":"","sources":["../../src/services/ValidationService.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tailwind-typescript-plugin",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0-beta.1",
|
|
4
4
|
"description": "TypeScript Language Service plugin that validates Tailwind CSS class names in JSX/TSX files. Catches typos and invalid classes in real-time with support for tailwind-variants and class-variance-authority.",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|