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.
Files changed (43) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +171 -0
  3. package/lib/core/types.d.ts +14 -0
  4. package/lib/core/types.d.ts.map +1 -1
  5. package/lib/extractors/CvaExtractor.d.ts.map +1 -1
  6. package/lib/extractors/CvaExtractor.js +44 -26
  7. package/lib/extractors/CvaExtractor.js.map +1 -1
  8. package/lib/extractors/ExpressionExtractor.d.ts +2 -1
  9. package/lib/extractors/ExpressionExtractor.d.ts.map +1 -1
  10. package/lib/extractors/ExpressionExtractor.js +46 -25
  11. package/lib/extractors/ExpressionExtractor.js.map +1 -1
  12. package/lib/extractors/JsxAttributeExtractor.d.ts.map +1 -1
  13. package/lib/extractors/JsxAttributeExtractor.js +13 -8
  14. package/lib/extractors/JsxAttributeExtractor.js.map +1 -1
  15. package/lib/extractors/TailwindVariantsExtractor.d.ts.map +1 -1
  16. package/lib/extractors/TailwindVariantsExtractor.js +50 -31
  17. package/lib/extractors/TailwindVariantsExtractor.js.map +1 -1
  18. package/lib/extractors/VariableReferenceExtractor.d.ts +1 -0
  19. package/lib/extractors/VariableReferenceExtractor.d.ts.map +1 -1
  20. package/lib/extractors/VariableReferenceExtractor.js +19 -14
  21. package/lib/extractors/VariableReferenceExtractor.js.map +1 -1
  22. package/lib/plugin/TailwindTypescriptPlugin.d.ts.map +1 -1
  23. package/lib/plugin/TailwindTypescriptPlugin.js +55 -18
  24. package/lib/plugin/TailwindTypescriptPlugin.js.map +1 -1
  25. package/lib/services/CodeActionService.d.ts +5 -0
  26. package/lib/services/CodeActionService.d.ts.map +1 -1
  27. package/lib/services/CodeActionService.js +37 -5
  28. package/lib/services/CodeActionService.js.map +1 -1
  29. package/lib/services/CodeActionService.spec.js +44 -0
  30. package/lib/services/CodeActionService.spec.js.map +1 -1
  31. package/lib/services/DiagnosticService.d.ts +26 -1
  32. package/lib/services/DiagnosticService.d.ts.map +1 -1
  33. package/lib/services/DiagnosticService.js +57 -2
  34. package/lib/services/DiagnosticService.js.map +1 -1
  35. package/lib/services/DuplicateClassDetection.spec.d.ts +2 -0
  36. package/lib/services/DuplicateClassDetection.spec.d.ts.map +1 -0
  37. package/lib/services/DuplicateClassDetection.spec.js +435 -0
  38. package/lib/services/DuplicateClassDetection.spec.js.map +1 -0
  39. package/lib/services/ValidationService.d.ts +4 -0
  40. package/lib/services/ValidationService.d.ts.map +1 -1
  41. package/lib/services/ValidationService.js +103 -6
  42. package/lib/services/ValidationService.js.map +1 -1
  43. 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;IA2ClB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;CAK5B"}
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
- if (invalidClasses.length > 0) {
39
- this.logger.log(`[ValidationService] Returning ${invalidClasses.length} diagnostics`);
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 invalid classes found`);
45
+ this.logger.log(`[ValidationService] No issues found`);
43
46
  }
44
47
  }
45
- return invalidClasses.length > 0
46
- ? this.diagnosticService.createDiagnostics(invalidClasses, sourceFile)
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,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iCAAiC,cAAc,CAAC,MAAM,cAAc,CAAC,CAAC;YACvF,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;YACjE,CAAC;QACF,CAAC;QAED,OAAO,cAAc,CAAC,MAAM,GAAG,CAAC;YAC/B,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,cAAc,EAAE,UAAU,CAAC;YACtE,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED;;;OAGG;IACK,oBAAoB,CAAC,UAA2B;QACvD,6DAA6D;QAC7D,sDAAsD;QACtD,OAAO,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1F,CAAC;CACD;AArED,8CAqEC"}
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.1-beta.4",
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",