tailwind-typescript-plugin 1.4.1-beta.3 → 1.4.1-beta.31

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 (152) hide show
  1. package/CHANGELOG.md +155 -0
  2. package/README.md +369 -71
  3. package/lib/core/interfaces.d.ts +40 -13
  4. package/lib/core/interfaces.d.ts.map +1 -1
  5. package/lib/core/types.d.ts +112 -1
  6. package/lib/core/types.d.ts.map +1 -1
  7. package/lib/extractors/BaseExtractor.d.ts +56 -3
  8. package/lib/extractors/BaseExtractor.d.ts.map +1 -1
  9. package/lib/extractors/BaseExtractor.js +194 -5
  10. package/lib/extractors/BaseExtractor.js.map +1 -1
  11. package/lib/extractors/BaseExtractor.spec.d.ts +2 -0
  12. package/lib/extractors/BaseExtractor.spec.d.ts.map +1 -0
  13. package/lib/extractors/BaseExtractor.spec.js +421 -0
  14. package/lib/extractors/BaseExtractor.spec.js.map +1 -0
  15. package/lib/extractors/CvaExtractor.js +1 -1
  16. package/lib/extractors/CvaExtractor.js.map +1 -1
  17. package/lib/extractors/CvaExtractor.spec.d.ts +2 -0
  18. package/lib/extractors/CvaExtractor.spec.d.ts.map +1 -0
  19. package/lib/extractors/CvaExtractor.spec.js +1177 -0
  20. package/lib/extractors/CvaExtractor.spec.js.map +1 -0
  21. package/lib/extractors/ExpressionExtractor.d.ts.map +1 -1
  22. package/lib/extractors/ExpressionExtractor.js +35 -5
  23. package/lib/extractors/ExpressionExtractor.js.map +1 -1
  24. package/lib/extractors/ExpressionExtractor.spec.d.ts +2 -0
  25. package/lib/extractors/ExpressionExtractor.spec.d.ts.map +1 -0
  26. package/lib/extractors/ExpressionExtractor.spec.js +316 -0
  27. package/lib/extractors/ExpressionExtractor.spec.js.map +1 -0
  28. package/lib/extractors/JsxAttributeExtractor.d.ts +7 -1
  29. package/lib/extractors/JsxAttributeExtractor.d.ts.map +1 -1
  30. package/lib/extractors/JsxAttributeExtractor.js +21 -8
  31. package/lib/extractors/JsxAttributeExtractor.js.map +1 -1
  32. package/lib/extractors/JsxAttributeExtractor.spec.d.ts +2 -0
  33. package/lib/extractors/JsxAttributeExtractor.spec.d.ts.map +1 -0
  34. package/lib/extractors/JsxAttributeExtractor.spec.js +430 -0
  35. package/lib/extractors/JsxAttributeExtractor.spec.js.map +1 -0
  36. package/lib/extractors/TailwindVariantsExtractor.d.ts.map +1 -1
  37. package/lib/extractors/TailwindVariantsExtractor.js +1 -5
  38. package/lib/extractors/TailwindVariantsExtractor.js.map +1 -1
  39. package/lib/extractors/TailwindVariantsExtractor.spec.d.ts +2 -0
  40. package/lib/extractors/TailwindVariantsExtractor.spec.d.ts.map +1 -0
  41. package/lib/extractors/TailwindVariantsExtractor.spec.js +1407 -0
  42. package/lib/extractors/TailwindVariantsExtractor.spec.js.map +1 -0
  43. package/lib/extractors/TemplateExpressionExtractor.spec.d.ts +2 -0
  44. package/lib/extractors/TemplateExpressionExtractor.spec.d.ts.map +1 -0
  45. package/lib/extractors/TemplateExpressionExtractor.spec.js +240 -0
  46. package/lib/extractors/TemplateExpressionExtractor.spec.js.map +1 -0
  47. package/lib/extractors/VariableReferenceExtractor.d.ts.map +1 -1
  48. package/lib/extractors/VariableReferenceExtractor.js +21 -0
  49. package/lib/extractors/VariableReferenceExtractor.js.map +1 -1
  50. package/lib/extractors/VariableReferenceExtractor.spec.d.ts +2 -0
  51. package/lib/extractors/VariableReferenceExtractor.spec.d.ts.map +1 -0
  52. package/lib/extractors/VariableReferenceExtractor.spec.js +138 -0
  53. package/lib/extractors/VariableReferenceExtractor.spec.js.map +1 -0
  54. package/lib/extractors/VueAttributeExtractor.d.ts +202 -0
  55. package/lib/extractors/VueAttributeExtractor.d.ts.map +1 -0
  56. package/lib/extractors/VueAttributeExtractor.js +1691 -0
  57. package/lib/extractors/VueAttributeExtractor.js.map +1 -0
  58. package/lib/extractors/VueExpressionExtractor.d.ts +34 -0
  59. package/lib/extractors/VueExpressionExtractor.d.ts.map +1 -0
  60. package/lib/extractors/VueExpressionExtractor.js +171 -0
  61. package/lib/extractors/VueExpressionExtractor.js.map +1 -0
  62. package/lib/infrastructure/TailwindValidator.css-vars.spec.js +1 -11
  63. package/lib/infrastructure/TailwindValidator.css-vars.spec.js.map +1 -1
  64. package/lib/infrastructure/TailwindValidator.d.ts +10 -3
  65. package/lib/infrastructure/TailwindValidator.d.ts.map +1 -1
  66. package/lib/infrastructure/TailwindValidator.js +68 -28
  67. package/lib/infrastructure/TailwindValidator.js.map +1 -1
  68. package/lib/infrastructure/TailwindValidator.spec.js +50 -17
  69. package/lib/infrastructure/TailwindValidator.spec.js.map +1 -1
  70. package/lib/plugin/TailwindTypescriptPlugin.d.ts +22 -1
  71. package/lib/plugin/TailwindTypescriptPlugin.d.ts.map +1 -1
  72. package/lib/plugin/TailwindTypescriptPlugin.js +133 -50
  73. package/lib/plugin/TailwindTypescriptPlugin.js.map +1 -1
  74. package/lib/services/ClassNameExtractionService.d.ts +27 -6
  75. package/lib/services/ClassNameExtractionService.d.ts.map +1 -1
  76. package/lib/services/ClassNameExtractionService.js +80 -17
  77. package/lib/services/ClassNameExtractionService.js.map +1 -1
  78. package/lib/services/ClassNameExtractionService.spec.d.ts +2 -0
  79. package/lib/services/ClassNameExtractionService.spec.d.ts.map +1 -0
  80. package/lib/services/ClassNameExtractionService.spec.js +215 -0
  81. package/lib/services/ClassNameExtractionService.spec.js.map +1 -0
  82. package/lib/services/CodeActionService.spec.js +1 -2
  83. package/lib/services/CodeActionService.spec.js.map +1 -1
  84. package/lib/services/CompletionService.d.ts +121 -0
  85. package/lib/services/CompletionService.d.ts.map +1 -0
  86. package/lib/services/CompletionService.js +573 -0
  87. package/lib/services/CompletionService.js.map +1 -0
  88. package/lib/services/CompletionService.spec.d.ts +2 -0
  89. package/lib/services/CompletionService.spec.d.ts.map +1 -0
  90. package/lib/services/CompletionService.spec.js +1182 -0
  91. package/lib/services/CompletionService.spec.js.map +1 -0
  92. package/lib/services/ConfigSchemaValidator.d.ts +40 -0
  93. package/lib/services/ConfigSchemaValidator.d.ts.map +1 -0
  94. package/lib/services/ConfigSchemaValidator.js +139 -0
  95. package/lib/services/ConfigSchemaValidator.js.map +1 -0
  96. package/lib/services/ConfigSchemaValidator.spec.d.ts +2 -0
  97. package/lib/services/ConfigSchemaValidator.spec.d.ts.map +1 -0
  98. package/lib/services/ConfigSchemaValidator.spec.js +344 -0
  99. package/lib/services/ConfigSchemaValidator.spec.js.map +1 -0
  100. package/lib/services/ConflictClassDetection.spec.js +53 -5
  101. package/lib/services/ConflictClassDetection.spec.js.map +1 -1
  102. package/lib/services/DiagnosticService.d.ts +8 -8
  103. package/lib/services/DiagnosticService.d.ts.map +1 -1
  104. package/lib/services/DiagnosticService.js +29 -13
  105. package/lib/services/DiagnosticService.js.map +1 -1
  106. package/lib/services/DiagnosticService.spec.d.ts +2 -0
  107. package/lib/services/DiagnosticService.spec.d.ts.map +1 -0
  108. package/lib/services/DiagnosticService.spec.js +259 -0
  109. package/lib/services/DiagnosticService.spec.js.map +1 -0
  110. package/lib/services/DuplicateClassDetection.spec.js +20 -21
  111. package/lib/services/DuplicateClassDetection.spec.js.map +1 -1
  112. package/lib/services/FileDiagnosticCache.spec.d.ts +2 -0
  113. package/lib/services/FileDiagnosticCache.spec.d.ts.map +1 -0
  114. package/lib/services/FileDiagnosticCache.spec.js +213 -0
  115. package/lib/services/FileDiagnosticCache.spec.js.map +1 -0
  116. package/lib/services/PerformanceCache.spec.d.ts +2 -0
  117. package/lib/services/PerformanceCache.spec.d.ts.map +1 -0
  118. package/lib/services/PerformanceCache.spec.js +168 -0
  119. package/lib/services/PerformanceCache.spec.js.map +1 -0
  120. package/lib/services/PluginConfigService.d.ts +66 -15
  121. package/lib/services/PluginConfigService.d.ts.map +1 -1
  122. package/lib/services/PluginConfigService.js +230 -73
  123. package/lib/services/PluginConfigService.js.map +1 -1
  124. package/lib/services/PluginConfigService.spec.d.ts +2 -0
  125. package/lib/services/PluginConfigService.spec.d.ts.map +1 -0
  126. package/lib/services/PluginConfigService.spec.js +93 -0
  127. package/lib/services/PluginConfigService.spec.js.map +1 -0
  128. package/lib/services/ValidationService.d.ts +7 -5
  129. package/lib/services/ValidationService.d.ts.map +1 -1
  130. package/lib/services/ValidationService.js +40 -43
  131. package/lib/services/ValidationService.js.map +1 -1
  132. package/lib/services/ValidationService.spec.d.ts +2 -0
  133. package/lib/services/ValidationService.spec.d.ts.map +1 -0
  134. package/lib/services/ValidationService.spec.js +289 -0
  135. package/lib/services/ValidationService.spec.js.map +1 -0
  136. package/lib/utils/FrameworkDetector.d.ts +23 -0
  137. package/lib/utils/FrameworkDetector.d.ts.map +1 -0
  138. package/lib/utils/FrameworkDetector.js +47 -0
  139. package/lib/utils/FrameworkDetector.js.map +1 -0
  140. package/lib/utils/FrameworkDetector.spec.d.ts +2 -0
  141. package/lib/utils/FrameworkDetector.spec.d.ts.map +1 -0
  142. package/lib/utils/FrameworkDetector.spec.js +67 -0
  143. package/lib/utils/FrameworkDetector.spec.js.map +1 -0
  144. package/package.json +11 -4
  145. package/lib/extractors/StringLiteralExtractor.d.ts +0 -12
  146. package/lib/extractors/StringLiteralExtractor.d.ts.map +0 -1
  147. package/lib/extractors/StringLiteralExtractor.js +0 -21
  148. package/lib/extractors/StringLiteralExtractor.js.map +0 -1
  149. package/lib/services/ClassNameExtractionService.original.d.ts +0 -20
  150. package/lib/services/ClassNameExtractionService.original.d.ts.map +0 -1
  151. package/lib/services/ClassNameExtractionService.original.js +0 -48
  152. package/lib/services/ClassNameExtractionService.original.js.map +0 -1
@@ -54,11 +54,27 @@ exports.TAILWIND_EXTRACTABLE_CLASS_CODE = 90003;
54
54
  * Used when classes that affect the same CSS property are used together
55
55
  */
56
56
  exports.TAILWIND_CONFLICT_CODE = 90004;
57
+ /**
58
+ * Convert our severity type to TypeScript's DiagnosticCategory
59
+ */
60
+ function severityToCategory(severity) {
61
+ switch (severity) {
62
+ case 'error':
63
+ return ts.DiagnosticCategory.Error;
64
+ case 'warning':
65
+ return ts.DiagnosticCategory.Warning;
66
+ case 'suggestion':
67
+ return ts.DiagnosticCategory.Suggestion;
68
+ case 'off':
69
+ // This shouldn't be called if severity is 'off', but handle it gracefully
70
+ return ts.DiagnosticCategory.Warning;
71
+ }
72
+ }
57
73
  /**
58
74
  * Service responsible for creating TypeScript diagnostics
59
75
  */
60
76
  class DiagnosticService {
61
- createDiagnostic(classInfo, sourceFile) {
77
+ createDiagnostic(classInfo, sourceFile, severity = 'error') {
62
78
  let messageText = `The class "${classInfo.className}" is not a valid Tailwind class`;
63
79
  // Add context for variable references
64
80
  if (classInfo.variableUsage) {
@@ -69,7 +85,7 @@ class DiagnosticService {
69
85
  start: classInfo.absoluteStart,
70
86
  length: classInfo.length,
71
87
  messageText,
72
- category: ts.DiagnosticCategory.Error,
88
+ category: severityToCategory(severity),
73
89
  code: exports.TAILWIND_DIAGNOSTIC_CODE,
74
90
  source: 'tw-plugin'
75
91
  };
@@ -77,7 +93,7 @@ class DiagnosticService {
77
93
  /**
78
94
  * Create a warning diagnostic for duplicate class
79
95
  */
80
- createDuplicateDiagnostic(classInfo, sourceFile) {
96
+ createDuplicateDiagnostic(classInfo, sourceFile, severity = 'warning') {
81
97
  let messageText = `Duplicate class "${classInfo.className}"`;
82
98
  // Add context for variable references
83
99
  if (classInfo.variableUsage) {
@@ -88,7 +104,7 @@ class DiagnosticService {
88
104
  start: classInfo.absoluteStart,
89
105
  length: classInfo.length,
90
106
  messageText,
91
- category: ts.DiagnosticCategory.Warning,
107
+ category: severityToCategory(severity),
92
108
  code: exports.TAILWIND_DUPLICATE_CODE,
93
109
  source: 'tw-plugin'
94
110
  };
@@ -96,17 +112,17 @@ class DiagnosticService {
96
112
  /**
97
113
  * Create multiple diagnostics from class info array
98
114
  */
99
- createDiagnostics(classInfos, sourceFile) {
100
- return classInfos.map(classInfo => this.createDiagnostic(classInfo, sourceFile));
115
+ createDiagnostics(classInfos, sourceFile, severity = 'error') {
116
+ return classInfos.map(classInfo => this.createDiagnostic(classInfo, sourceFile, severity));
101
117
  }
102
118
  /**
103
119
  * Create multiple duplicate warning diagnostics
104
120
  */
105
- createDuplicateDiagnostics(classInfos, sourceFile) {
106
- return classInfos.map(classInfo => this.createDuplicateDiagnostic(classInfo, sourceFile));
121
+ createDuplicateDiagnostics(classInfos, sourceFile, severity = 'warning') {
122
+ return classInfos.map(classInfo => this.createDuplicateDiagnostic(classInfo, sourceFile, severity));
107
123
  }
108
124
  /**
109
- * Create a warning diagnostic for extractable class (appears in all ternary branches)
125
+ * Create a hint diagnostic for extractable class (appears in all ternary branches)
110
126
  */
111
127
  createExtractableClassDiagnostic(classInfo, sourceFile) {
112
128
  const messageText = `Class "${classInfo.className}" is repeated in both branches. Consider moving it outside the conditional.`;
@@ -129,7 +145,7 @@ class DiagnosticService {
129
145
  /**
130
146
  * Create a warning diagnostic for conflicting class
131
147
  */
132
- createConflictDiagnostic(conflictInfo, sourceFile) {
148
+ createConflictDiagnostic(conflictInfo, sourceFile, severity = 'warning') {
133
149
  const conflictingClassList = conflictInfo.conflictsWith.join(', ');
134
150
  let messageText = `Class "${conflictInfo.classInfo.className}" conflicts with "${conflictingClassList}". Both affect the ${conflictInfo.cssProperty} property.`;
135
151
  // Add context for variable references
@@ -141,7 +157,7 @@ class DiagnosticService {
141
157
  start: conflictInfo.classInfo.absoluteStart,
142
158
  length: conflictInfo.classInfo.length,
143
159
  messageText,
144
- category: ts.DiagnosticCategory.Warning,
160
+ category: severityToCategory(severity),
145
161
  code: exports.TAILWIND_CONFLICT_CODE,
146
162
  source: 'tw-plugin'
147
163
  };
@@ -149,8 +165,8 @@ class DiagnosticService {
149
165
  /**
150
166
  * Create multiple conflict warning diagnostics
151
167
  */
152
- createConflictDiagnostics(conflictInfos, sourceFile) {
153
- return conflictInfos.map(conflictInfo => this.createConflictDiagnostic(conflictInfo, sourceFile));
168
+ createConflictDiagnostics(conflictInfos, sourceFile, severity = 'warning') {
169
+ return conflictInfos.map(conflictInfo => this.createConflictDiagnostic(conflictInfo, sourceFile, severity));
154
170
  }
155
171
  }
156
172
  exports.DiagnosticService = DiagnosticService;
@@ -1 +1 @@
1
- {"version":3,"file":"DiagnosticService.js","sourceRoot":"","sources":["../../src/services/DiagnosticService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mEAAqD;AAMrD;;;GAGG;AACU,QAAA,wBAAwB,GAAG,KAAK,CAAC;AAE9C;;GAEG;AACU,QAAA,uBAAuB,GAAG,KAAK,CAAC;AAE7C;;;GAGG;AACU,QAAA,+BAA+B,GAAG,KAAK,CAAC;AAErD;;;GAGG;AACU,QAAA,sBAAsB,GAAG,KAAK,CAAC;AAE5C;;GAEG;AACH,MAAa,iBAAiB;IAC7B,gBAAgB,CAAC,SAAwB,EAAE,UAAyB;QACnE,IAAI,WAAW,GAAG,cAAc,SAAS,CAAC,SAAS,iCAAiC,CAAC;QAErF,sCAAsC;QACtC,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;YAC7B,WAAW,IAAI,mDAAmD,SAAS,CAAC,aAAa,CAAC,YAAY,aAAa,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;QACxJ,CAAC;QAED,OAAO;YACN,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,SAAS,CAAC,aAAa;YAC9B,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,WAAW;YACX,QAAQ,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK;YACrC,IAAI,EAAE,gCAAwB;YAC9B,MAAM,EAAE,WAAW;SACnB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,yBAAyB,CAAC,SAAwB,EAAE,UAAyB;QAC5E,IAAI,WAAW,GAAG,oBAAoB,SAAS,CAAC,SAAS,GAAG,CAAC;QAE7D,sCAAsC;QACtC,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;YAC7B,WAAW,IAAI,qCAAqC,SAAS,CAAC,aAAa,CAAC,YAAY,kBAAkB,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;QAC/I,CAAC;QAED,OAAO;YACN,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,SAAS,CAAC,aAAa;YAC9B,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,WAAW;YACX,QAAQ,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO;YACvC,IAAI,EAAE,+BAAuB;YAC7B,MAAM,EAAE,WAAW;SACnB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,UAA2B,EAAE,UAAyB;QACvE,OAAO,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;IAClF,CAAC;IAED;;OAEG;IACH,0BAA0B,CACzB,UAA2B,EAC3B,UAAyB;QAEzB,OAAO,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;IAC3F,CAAC;IAED;;OAEG;IACH,gCAAgC,CAC/B,SAAwB,EACxB,UAAyB;QAEzB,MAAM,WAAW,GAAG,UAAU,SAAS,CAAC,SAAS,6EAA6E,CAAC;QAE/H,OAAO;YACN,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,SAAS,CAAC,aAAa;YAC9B,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,WAAW;YACX,QAAQ,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO;YACvC,IAAI,EAAE,uCAA+B;YACrC,MAAM,EAAE,WAAW;SACnB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,iCAAiC,CAChC,UAA2B,EAC3B,UAAyB;QAEzB,OAAO,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CACjC,IAAI,CAAC,gCAAgC,CAAC,SAAS,EAAE,UAAU,CAAC,CAC5D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,wBAAwB,CAAC,YAA0B,EAAE,UAAyB;QAC7E,MAAM,oBAAoB,GAAG,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnE,IAAI,WAAW,GAAG,UAAU,YAAY,CAAC,SAAS,CAAC,SAAS,qBAAqB,oBAAoB,sBAAsB,YAAY,CAAC,WAAW,YAAY,CAAC;QAEhK,sCAAsC;QACtC,IAAI,YAAY,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;YAC1C,WAAW,IAAI,oCAAoC,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC,YAAY,kBAAkB,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;QACxK,CAAC;QAED,OAAO;YACN,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,YAAY,CAAC,SAAS,CAAC,aAAa;YAC3C,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,MAAM;YACrC,WAAW;YACX,QAAQ,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO;YACvC,IAAI,EAAE,8BAAsB;YAC5B,MAAM,EAAE,WAAW;SACnB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,yBAAyB,CACxB,aAA6B,EAC7B,UAAyB;QAEzB,OAAO,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CACvC,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE,UAAU,CAAC,CACvD,CAAC;IACH,CAAC;CACD;AA7HD,8CA6HC"}
1
+ {"version":3,"file":"DiagnosticService.js","sourceRoot":"","sources":["../../src/services/DiagnosticService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mEAAqD;AAMrD;;;GAGG;AACU,QAAA,wBAAwB,GAAG,KAAK,CAAC;AAE9C;;GAEG;AACU,QAAA,uBAAuB,GAAG,KAAK,CAAC;AAE7C;;;GAGG;AACU,QAAA,+BAA+B,GAAG,KAAK,CAAC;AAErD;;;GAGG;AACU,QAAA,sBAAsB,GAAG,KAAK,CAAC;AAE5C;;GAEG;AACH,SAAS,kBAAkB,CAAC,QAA4B;IACvD,QAAQ,QAAQ,EAAE,CAAC;QAClB,KAAK,OAAO;YACX,OAAO,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC;QACpC,KAAK,SAAS;YACb,OAAO,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC;QACtC,KAAK,YAAY;YAChB,OAAO,EAAE,CAAC,kBAAkB,CAAC,UAAU,CAAC;QACzC,KAAK,KAAK;YACT,0EAA0E;YAC1E,OAAO,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC;IACvC,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAa,iBAAiB;IAC7B,gBAAgB,CACf,SAAwB,EACxB,UAAyB,EACzB,WAA+B,OAAO;QAEtC,IAAI,WAAW,GAAG,cAAc,SAAS,CAAC,SAAS,iCAAiC,CAAC;QAErF,sCAAsC;QACtC,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;YAC7B,WAAW,IAAI,mDAAmD,SAAS,CAAC,aAAa,CAAC,YAAY,aAAa,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;QACxJ,CAAC;QAED,OAAO;YACN,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,SAAS,CAAC,aAAa;YAC9B,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,WAAW;YACX,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,CAAC;YACtC,IAAI,EAAE,gCAAwB;YAC9B,MAAM,EAAE,WAAW;SACnB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,yBAAyB,CACxB,SAAwB,EACxB,UAAyB,EACzB,WAA+B,SAAS;QAExC,IAAI,WAAW,GAAG,oBAAoB,SAAS,CAAC,SAAS,GAAG,CAAC;QAE7D,sCAAsC;QACtC,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;YAC7B,WAAW,IAAI,qCAAqC,SAAS,CAAC,aAAa,CAAC,YAAY,kBAAkB,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;QAC/I,CAAC;QAED,OAAO;YACN,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,SAAS,CAAC,aAAa;YAC9B,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,WAAW;YACX,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,CAAC;YACtC,IAAI,EAAE,+BAAuB;YAC7B,MAAM,EAAE,WAAW;SACnB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,iBAAiB,CAChB,UAA2B,EAC3B,UAAyB,EACzB,WAA+B,OAAO;QAEtC,OAAO,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED;;OAEG;IACH,0BAA0B,CACzB,UAA2B,EAC3B,UAAyB,EACzB,WAA+B,SAAS;QAExC,OAAO,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CACjC,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAC/D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,gCAAgC,CAC/B,SAAwB,EACxB,UAAyB;QAEzB,MAAM,WAAW,GAAG,UAAU,SAAS,CAAC,SAAS,6EAA6E,CAAC;QAE/H,OAAO;YACN,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,SAAS,CAAC,aAAa;YAC9B,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,WAAW;YACX,QAAQ,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO;YACvC,IAAI,EAAE,uCAA+B;YACrC,MAAM,EAAE,WAAW;SACnB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,iCAAiC,CAChC,UAA2B,EAC3B,UAAyB;QAEzB,OAAO,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CACjC,IAAI,CAAC,gCAAgC,CAAC,SAAS,EAAE,UAAU,CAAC,CAC5D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,wBAAwB,CACvB,YAA0B,EAC1B,UAAyB,EACzB,WAA+B,SAAS;QAExC,MAAM,oBAAoB,GAAG,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnE,IAAI,WAAW,GAAG,UAAU,YAAY,CAAC,SAAS,CAAC,SAAS,qBAAqB,oBAAoB,sBAAsB,YAAY,CAAC,WAAW,YAAY,CAAC;QAEhK,sCAAsC;QACtC,IAAI,YAAY,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;YAC1C,WAAW,IAAI,oCAAoC,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC,YAAY,kBAAkB,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;QACxK,CAAC;QAED,OAAO;YACN,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,YAAY,CAAC,SAAS,CAAC,aAAa;YAC3C,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,MAAM;YACrC,WAAW;YACX,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,CAAC;YACtC,IAAI,EAAE,8BAAsB;YAC5B,MAAM,EAAE,WAAW;SACnB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,yBAAyB,CACxB,aAA6B,EAC7B,UAAyB,EACzB,WAA+B,SAAS;QAExC,OAAO,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CACvC,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC,CACjE,CAAC;IACH,CAAC;CACD;AAjJD,8CAiJC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=DiagnosticService.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiagnosticService.spec.d.ts","sourceRoot":"","sources":["../../src/services/DiagnosticService.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,259 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const ts = __importStar(require("typescript/lib/tsserverlibrary"));
37
+ const DiagnosticService_1 = require("./DiagnosticService");
38
+ describe('DiagnosticService', () => {
39
+ let service;
40
+ let mockSourceFile;
41
+ beforeEach(() => {
42
+ service = new DiagnosticService_1.DiagnosticService();
43
+ mockSourceFile = ts.createSourceFile('test.tsx', '<div className="flex items-center">Hello</div>', ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
44
+ });
45
+ const createClassNameInfo = (className, overrides = {}) => ({
46
+ className,
47
+ absoluteStart: 15,
48
+ length: className.length,
49
+ line: 1,
50
+ file: 'test.tsx',
51
+ ...overrides
52
+ });
53
+ describe('createDiagnostic', () => {
54
+ it('should create error diagnostic for invalid class', () => {
55
+ const classInfo = createClassNameInfo('invalid-class');
56
+ const diagnostic = service.createDiagnostic(classInfo, mockSourceFile);
57
+ expect(diagnostic.code).toBe(DiagnosticService_1.TAILWIND_DIAGNOSTIC_CODE);
58
+ expect(diagnostic.category).toBe(ts.DiagnosticCategory.Error);
59
+ expect(diagnostic.messageText).toContain('invalid-class');
60
+ expect(diagnostic.messageText).toContain('not a valid Tailwind class');
61
+ expect(diagnostic.start).toBe(15);
62
+ expect(diagnostic.length).toBe('invalid-class'.length);
63
+ expect(diagnostic.source).toBe('tw-plugin');
64
+ });
65
+ it('should create warning diagnostic when severity is warning', () => {
66
+ const classInfo = createClassNameInfo('invalid-class');
67
+ const diagnostic = service.createDiagnostic(classInfo, mockSourceFile, 'warning');
68
+ expect(diagnostic.category).toBe(ts.DiagnosticCategory.Warning);
69
+ });
70
+ it('should create suggestion diagnostic when severity is suggestion', () => {
71
+ const classInfo = createClassNameInfo('invalid-class');
72
+ const diagnostic = service.createDiagnostic(classInfo, mockSourceFile, 'suggestion');
73
+ expect(diagnostic.category).toBe(ts.DiagnosticCategory.Suggestion);
74
+ });
75
+ it('should include variable usage context in message', () => {
76
+ const classInfo = createClassNameInfo('invalid-class', {
77
+ variableUsage: {
78
+ variableName: 'styles',
79
+ usageLine: 10
80
+ }
81
+ });
82
+ const diagnostic = service.createDiagnostic(classInfo, mockSourceFile);
83
+ expect(diagnostic.messageText).toContain('variable "styles"');
84
+ expect(diagnostic.messageText).toContain('line 10');
85
+ });
86
+ });
87
+ describe('createDuplicateDiagnostic', () => {
88
+ it('should create warning diagnostic for duplicate class', () => {
89
+ const classInfo = createClassNameInfo('flex');
90
+ const diagnostic = service.createDuplicateDiagnostic(classInfo, mockSourceFile);
91
+ expect(diagnostic.code).toBe(DiagnosticService_1.TAILWIND_DUPLICATE_CODE);
92
+ expect(diagnostic.category).toBe(ts.DiagnosticCategory.Warning);
93
+ expect(diagnostic.messageText).toContain('Duplicate class');
94
+ expect(diagnostic.messageText).toContain('flex');
95
+ });
96
+ it('should respect custom severity', () => {
97
+ const classInfo = createClassNameInfo('flex');
98
+ const diagnostic = service.createDuplicateDiagnostic(classInfo, mockSourceFile, 'error');
99
+ expect(diagnostic.category).toBe(ts.DiagnosticCategory.Error);
100
+ });
101
+ it('should include variable usage context in message', () => {
102
+ const classInfo = createClassNameInfo('flex', {
103
+ variableUsage: {
104
+ variableName: 'baseStyles',
105
+ usageLine: 5
106
+ }
107
+ });
108
+ const diagnostic = service.createDuplicateDiagnostic(classInfo, mockSourceFile);
109
+ expect(diagnostic.messageText).toContain('variable "baseStyles"');
110
+ expect(diagnostic.messageText).toContain('line 5');
111
+ });
112
+ });
113
+ describe('createDiagnostics', () => {
114
+ it('should create multiple diagnostics from array', () => {
115
+ const classInfos = [createClassNameInfo('invalid1'), createClassNameInfo('invalid2')];
116
+ const diagnostics = service.createDiagnostics(classInfos, mockSourceFile);
117
+ expect(diagnostics).toHaveLength(2);
118
+ expect(diagnostics[0].messageText).toContain('invalid1');
119
+ expect(diagnostics[1].messageText).toContain('invalid2');
120
+ });
121
+ it('should return empty array for empty input', () => {
122
+ const diagnostics = service.createDiagnostics([], mockSourceFile);
123
+ expect(diagnostics).toEqual([]);
124
+ });
125
+ it('should apply severity to all diagnostics', () => {
126
+ const classInfos = [createClassNameInfo('invalid1'), createClassNameInfo('invalid2')];
127
+ const diagnostics = service.createDiagnostics(classInfos, mockSourceFile, 'warning');
128
+ expect(diagnostics[0].category).toBe(ts.DiagnosticCategory.Warning);
129
+ expect(diagnostics[1].category).toBe(ts.DiagnosticCategory.Warning);
130
+ });
131
+ });
132
+ describe('createDuplicateDiagnostics', () => {
133
+ it('should create multiple duplicate diagnostics from array', () => {
134
+ const classInfos = [createClassNameInfo('flex'), createClassNameInfo('flex')];
135
+ const diagnostics = service.createDuplicateDiagnostics(classInfos, mockSourceFile);
136
+ expect(diagnostics).toHaveLength(2);
137
+ diagnostics.forEach(d => {
138
+ expect(d.code).toBe(DiagnosticService_1.TAILWIND_DUPLICATE_CODE);
139
+ });
140
+ });
141
+ });
142
+ describe('createExtractableClassDiagnostic', () => {
143
+ it('should create warning diagnostic for extractable class', () => {
144
+ const classInfo = createClassNameInfo('text-center');
145
+ const diagnostic = service.createExtractableClassDiagnostic(classInfo, mockSourceFile);
146
+ expect(diagnostic.code).toBe(DiagnosticService_1.TAILWIND_EXTRACTABLE_CLASS_CODE);
147
+ expect(diagnostic.category).toBe(ts.DiagnosticCategory.Warning);
148
+ expect(diagnostic.messageText).toContain('text-center');
149
+ expect(diagnostic.messageText).toContain('repeated in both branches');
150
+ expect(diagnostic.messageText).toContain('moving it outside the conditional');
151
+ });
152
+ });
153
+ describe('createExtractableClassDiagnostics', () => {
154
+ it('should create multiple extractable diagnostics from array', () => {
155
+ const classInfos = [createClassNameInfo('flex'), createClassNameInfo('items-center')];
156
+ const diagnostics = service.createExtractableClassDiagnostics(classInfos, mockSourceFile);
157
+ expect(diagnostics).toHaveLength(2);
158
+ diagnostics.forEach(d => {
159
+ expect(d.code).toBe(DiagnosticService_1.TAILWIND_EXTRACTABLE_CLASS_CODE);
160
+ });
161
+ });
162
+ });
163
+ describe('createConflictDiagnostic', () => {
164
+ it('should create warning diagnostic for conflicting classes', () => {
165
+ const conflictInfo = {
166
+ classInfo: createClassNameInfo('text-red-500'),
167
+ conflictsWith: ['text-blue-500', 'text-green-500'],
168
+ cssProperty: 'color'
169
+ };
170
+ const diagnostic = service.createConflictDiagnostic(conflictInfo, mockSourceFile);
171
+ expect(diagnostic.code).toBe(DiagnosticService_1.TAILWIND_CONFLICT_CODE);
172
+ expect(diagnostic.category).toBe(ts.DiagnosticCategory.Warning);
173
+ expect(diagnostic.messageText).toContain('text-red-500');
174
+ expect(diagnostic.messageText).toContain('conflicts with');
175
+ expect(diagnostic.messageText).toContain('text-blue-500, text-green-500');
176
+ expect(diagnostic.messageText).toContain('color property');
177
+ });
178
+ it('should respect custom severity', () => {
179
+ const conflictInfo = {
180
+ classInfo: createClassNameInfo('mt-4'),
181
+ conflictsWith: ['mt-8'],
182
+ cssProperty: 'margin-top'
183
+ };
184
+ const diagnostic = service.createConflictDiagnostic(conflictInfo, mockSourceFile, 'error');
185
+ expect(diagnostic.category).toBe(ts.DiagnosticCategory.Error);
186
+ });
187
+ it('should include variable usage context in message', () => {
188
+ const conflictInfo = {
189
+ classInfo: createClassNameInfo('pt-4', {
190
+ variableUsage: {
191
+ variableName: 'spacing',
192
+ usageLine: 20
193
+ }
194
+ }),
195
+ conflictsWith: ['pt-8'],
196
+ cssProperty: 'padding-top'
197
+ };
198
+ const diagnostic = service.createConflictDiagnostic(conflictInfo, mockSourceFile);
199
+ expect(diagnostic.messageText).toContain('variable "spacing"');
200
+ expect(diagnostic.messageText).toContain('line 20');
201
+ });
202
+ });
203
+ describe('createConflictDiagnostics', () => {
204
+ it('should create multiple conflict diagnostics from array', () => {
205
+ const conflictInfos = [
206
+ {
207
+ classInfo: createClassNameInfo('text-red-500'),
208
+ conflictsWith: ['text-blue-500'],
209
+ cssProperty: 'color'
210
+ },
211
+ {
212
+ classInfo: createClassNameInfo('mt-4'),
213
+ conflictsWith: ['mt-8'],
214
+ cssProperty: 'margin-top'
215
+ }
216
+ ];
217
+ const diagnostics = service.createConflictDiagnostics(conflictInfos, mockSourceFile);
218
+ expect(diagnostics).toHaveLength(2);
219
+ diagnostics.forEach(d => {
220
+ expect(d.code).toBe(DiagnosticService_1.TAILWIND_CONFLICT_CODE);
221
+ });
222
+ });
223
+ });
224
+ describe('diagnostic codes', () => {
225
+ it('should use distinct codes for each diagnostic type', () => {
226
+ expect(DiagnosticService_1.TAILWIND_DIAGNOSTIC_CODE).toBe(90001);
227
+ expect(DiagnosticService_1.TAILWIND_DUPLICATE_CODE).toBe(90002);
228
+ expect(DiagnosticService_1.TAILWIND_EXTRACTABLE_CLASS_CODE).toBe(90003);
229
+ expect(DiagnosticService_1.TAILWIND_CONFLICT_CODE).toBe(90004);
230
+ // Verify they are all unique
231
+ const codes = [
232
+ DiagnosticService_1.TAILWIND_DIAGNOSTIC_CODE,
233
+ DiagnosticService_1.TAILWIND_DUPLICATE_CODE,
234
+ DiagnosticService_1.TAILWIND_EXTRACTABLE_CLASS_CODE,
235
+ DiagnosticService_1.TAILWIND_CONFLICT_CODE
236
+ ];
237
+ expect(new Set(codes).size).toBe(codes.length);
238
+ });
239
+ });
240
+ describe('source file reference', () => {
241
+ it('should reference the source file in diagnostics', () => {
242
+ const classInfo = createClassNameInfo('invalid-class');
243
+ const diagnostic = service.createDiagnostic(classInfo, mockSourceFile);
244
+ expect(diagnostic.file).toBe(mockSourceFile);
245
+ });
246
+ });
247
+ describe('position accuracy', () => {
248
+ it('should preserve absoluteStart and length from classInfo', () => {
249
+ const classInfo = createClassNameInfo('test-class', {
250
+ absoluteStart: 42,
251
+ length: 10
252
+ });
253
+ const diagnostic = service.createDiagnostic(classInfo, mockSourceFile);
254
+ expect(diagnostic.start).toBe(42);
255
+ expect(diagnostic.length).toBe(10);
256
+ });
257
+ });
258
+ });
259
+ //# sourceMappingURL=DiagnosticService.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiagnosticService.spec.js","sourceRoot":"","sources":["../../src/services/DiagnosticService.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mEAAqD;AAIrD,2DAM6B;AAE7B,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAClC,IAAI,OAA0B,CAAC;IAC/B,IAAI,cAA6B,CAAC;IAElC,UAAU,CAAC,GAAG,EAAE;QACf,OAAO,GAAG,IAAI,qCAAiB,EAAE,CAAC;QAClC,cAAc,GAAG,EAAE,CAAC,gBAAgB,CACnC,UAAU,EACV,gDAAgD,EAChD,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,EACJ,EAAE,CAAC,UAAU,CAAC,GAAG,CACjB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,CAC3B,SAAiB,EACjB,YAAoC,EAAE,EACtB,EAAE,CAAC,CAAC;QACpB,SAAS;QACT,aAAa,EAAE,EAAE;QACjB,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,IAAI,EAAE,CAAC;QACP,IAAI,EAAE,UAAU;QAChB,GAAG,SAAS;KACZ,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC3D,MAAM,SAAS,GAAG,mBAAmB,CAAC,eAAe,CAAC,CAAC;YAEvD,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;YAEvE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,4CAAwB,CAAC,CAAC;YACvD,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC9D,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YAC1D,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;YACvE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YACvD,MAAM,CAAE,UAAkC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;YACpE,MAAM,SAAS,GAAG,mBAAmB,CAAC,eAAe,CAAC,CAAC;YAEvD,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;YAElF,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;YAC1E,MAAM,SAAS,GAAG,mBAAmB,CAAC,eAAe,CAAC,CAAC;YAEvD,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;YAErF,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC3D,MAAM,SAAS,GAAG,mBAAmB,CAAC,eAAe,EAAE;gBACtD,aAAa,EAAE;oBACd,YAAY,EAAE,QAAQ;oBACtB,SAAS,EAAE,EAAE;iBACb;aACD,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;YAEvE,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;YAC9D,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QAC1C,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC/D,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAE9C,MAAM,UAAU,GAAG,OAAO,CAAC,yBAAyB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;YAEhF,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,2CAAuB,CAAC,CAAC;YACtD,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAChE,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;YAC5D,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACzC,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAE9C,MAAM,UAAU,GAAG,OAAO,CAAC,yBAAyB,CAAC,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;YAEzF,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC3D,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,EAAE;gBAC7C,aAAa,EAAE;oBACd,YAAY,EAAE,YAAY;oBAC1B,SAAS,EAAE,CAAC;iBACZ;aACD,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,OAAO,CAAC,yBAAyB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;YAEhF,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;YAClE,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACxD,MAAM,UAAU,GAAG,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC;YAEtF,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;YAE1E,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACzD,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACpD,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;YAElE,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YACnD,MAAM,UAAU,GAAG,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC;YAEtF,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,UAAU,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;YAErF,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACpE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAC3C,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YAClE,MAAM,UAAU,GAAG,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;YAE9E,MAAM,WAAW,GAAG,OAAO,CAAC,0BAA0B,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;YAEnF,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACvB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,2CAAuB,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;QACjD,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YACjE,MAAM,SAAS,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;YAErD,MAAM,UAAU,GAAG,OAAO,CAAC,gCAAgC,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;YAEvF,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,mDAA+B,CAAC,CAAC;YAC9D,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAChE,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YACxD,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;YACtE,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,mCAAmC,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAClD,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;YACpE,MAAM,UAAU,GAAG,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC;YAEtF,MAAM,WAAW,GAAG,OAAO,CAAC,iCAAiC,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;YAE1F,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACvB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,mDAA+B,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACzC,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;YACnE,MAAM,YAAY,GAAiB;gBAClC,SAAS,EAAE,mBAAmB,CAAC,cAAc,CAAC;gBAC9C,aAAa,EAAE,CAAC,eAAe,EAAE,gBAAgB,CAAC;gBAClD,WAAW,EAAE,OAAO;aACpB,CAAC;YAEF,MAAM,UAAU,GAAG,OAAO,CAAC,wBAAwB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;YAElF,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,0CAAsB,CAAC,CAAC;YACrD,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAChE,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;YACzD,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YAC3D,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;YAC1E,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACzC,MAAM,YAAY,GAAiB;gBAClC,SAAS,EAAE,mBAAmB,CAAC,MAAM,CAAC;gBACtC,aAAa,EAAE,CAAC,MAAM,CAAC;gBACvB,WAAW,EAAE,YAAY;aACzB,CAAC;YAEF,MAAM,UAAU,GAAG,OAAO,CAAC,wBAAwB,CAAC,YAAY,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;YAE3F,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC3D,MAAM,YAAY,GAAiB;gBAClC,SAAS,EAAE,mBAAmB,CAAC,MAAM,EAAE;oBACtC,aAAa,EAAE;wBACd,YAAY,EAAE,SAAS;wBACvB,SAAS,EAAE,EAAE;qBACb;iBACD,CAAC;gBACF,aAAa,EAAE,CAAC,MAAM,CAAC;gBACvB,WAAW,EAAE,aAAa;aAC1B,CAAC;YAEF,MAAM,UAAU,GAAG,OAAO,CAAC,wBAAwB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;YAElF,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;YAC/D,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QAC1C,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YACjE,MAAM,aAAa,GAAmB;gBACrC;oBACC,SAAS,EAAE,mBAAmB,CAAC,cAAc,CAAC;oBAC9C,aAAa,EAAE,CAAC,eAAe,CAAC;oBAChC,WAAW,EAAE,OAAO;iBACpB;gBACD;oBACC,SAAS,EAAE,mBAAmB,CAAC,MAAM,CAAC;oBACtC,aAAa,EAAE,CAAC,MAAM,CAAC;oBACvB,WAAW,EAAE,YAAY;iBACzB;aACD,CAAC;YAEF,MAAM,WAAW,GAAG,OAAO,CAAC,yBAAyB,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;YAErF,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACvB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,0CAAsB,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC7D,MAAM,CAAC,4CAAwB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7C,MAAM,CAAC,2CAAuB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5C,MAAM,CAAC,mDAA+B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpD,MAAM,CAAC,0CAAsB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE3C,6BAA6B;YAC7B,MAAM,KAAK,GAAG;gBACb,4CAAwB;gBACxB,2CAAuB;gBACvB,mDAA+B;gBAC/B,0CAAsB;aACtB,CAAC;YACF,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YAC1D,MAAM,SAAS,GAAG,mBAAmB,CAAC,eAAe,CAAC,CAAC;YAEvD,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;YAEvE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YAClE,MAAM,SAAS,GAAG,mBAAmB,CAAC,YAAY,EAAE;gBACnD,aAAa,EAAE,EAAE;gBACjB,MAAM,EAAE,EAAE;aACV,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;YAEvE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -34,9 +34,9 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  const ts = __importStar(require("typescript/lib/tsserverlibrary"));
37
- const Logger_1 = require("../utils/Logger");
38
37
  const ClassNameExtractionService_1 = require("./ClassNameExtractionService");
39
38
  const DiagnosticService_1 = require("./DiagnosticService");
39
+ const PluginConfigService_1 = require("./PluginConfigService");
40
40
  const ValidationService_1 = require("./ValidationService");
41
41
  // Mock validator that considers all classes valid (for testing duplicates only)
42
42
  class MockValidator {
@@ -58,13 +58,13 @@ describe('Duplicate Class Detection', () => {
58
58
  let diagnosticService;
59
59
  let extractionService;
60
60
  let mockValidator;
61
- let logger;
61
+ let configService;
62
62
  beforeEach(() => {
63
63
  diagnosticService = new DiagnosticService_1.DiagnosticService();
64
64
  extractionService = new ClassNameExtractionService_1.ClassNameExtractionService();
65
65
  mockValidator = new MockValidator();
66
- logger = new Logger_1.NoOpLogger();
67
- validationService = new ValidationService_1.ValidationService(extractionService, diagnosticService, mockValidator, logger);
66
+ configService = new PluginConfigService_1.PluginConfigService({});
67
+ validationService = new ValidationService_1.ValidationService(extractionService, diagnosticService, mockValidator, configService);
68
68
  });
69
69
  describe('simple string literals', () => {
70
70
  it('should detect duplicate classes in className string', () => {
@@ -177,17 +177,16 @@ describe('Duplicate Class Detection', () => {
177
177
  expect(duplicates.length).toBe(3);
178
178
  expect(duplicates.every(d => d.category === ts.DiagnosticCategory.Warning)).toBe(true);
179
179
  });
180
- it('should show hint when class appears in both branches but NOT at root', () => {
180
+ it('should flag extractable class when class appears in both branches but NOT at root', () => {
181
181
  // Case: clsx('mt-4', isActive ? 'flex bg-blue-500' : 'flex bg-gray-500')
182
- // No root 'flex', but 'flex' in both branches = extractable hint
182
+ // No root 'flex', but 'flex' in both branches = extractable hint (can be moved outside)
183
183
  const sourceCode = "<div className={clsx('mt-4', isActive ? 'flex bg-blue-500' : 'flex bg-gray-500')}>Hello</div>";
184
184
  const sourceFile = ts.createSourceFile('test.tsx', sourceCode, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
185
185
  const diagnostics = validationService.validateFile(ts, sourceFile, ['clsx']);
186
- // Should have 2 extractable warnings (one for each 'flex' in both branches)
187
- const hints = diagnostics.filter(d => d.code === DiagnosticService_1.TAILWIND_EXTRACTABLE_CLASS_CODE);
188
- expect(hints.length).toBe(2);
189
- expect(hints.every(h => h.category === ts.DiagnosticCategory.Warning)).toBe(true);
190
- expect(hints.every(h => h.messageText.includes('repeated in both branches'))).toBe(true);
186
+ // 2 extractable hints - one for each 'flex' in both branches
187
+ const extractable = diagnostics.filter(d => d.code === DiagnosticService_1.TAILWIND_EXTRACTABLE_CLASS_CODE);
188
+ expect(extractable.length).toBe(2);
189
+ expect(extractable.every(d => d.category === ts.DiagnosticCategory.Warning)).toBe(true);
191
190
  });
192
191
  it('should not flag class in only one ternary branch', () => {
193
192
  // Case: clsx('mt-4', isActive ? 'flex bg-blue-500' : 'bg-gray-500')
@@ -207,25 +206,25 @@ describe('Duplicate Class Detection', () => {
207
206
  expect(duplicates.length).toBe(2);
208
207
  expect(duplicates.every(d => d.category === ts.DiagnosticCategory.Warning)).toBe(true);
209
208
  });
210
- it('should handle simple ternary without utility function', () => {
209
+ it('should flag extractable class for simple ternary with same class in both branches', () => {
211
210
  // Case: className={isActive ? 'flex bg-blue-500' : 'flex bg-gray-500'}
211
+ // Same class in both branches = extractable hint (can be moved outside)
212
212
  const sourceCode = "<div className={isActive ? 'flex bg-blue-500' : 'flex bg-gray-500'}>Hello</div>";
213
213
  const sourceFile = ts.createSourceFile('test.tsx', sourceCode, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
214
214
  const diagnostics = validationService.validateFile(ts, sourceFile, []);
215
- // Should have 2 extractable hints (one for each branch)
216
- const hints = diagnostics.filter(d => d.code === DiagnosticService_1.TAILWIND_EXTRACTABLE_CLASS_CODE);
217
- expect(hints.length).toBe(2);
218
- expect(hints.every(h => h.messageText.includes('flex'))).toBe(true);
215
+ // 2 extractable hints - one for each 'flex' in both branches
216
+ const extractable = diagnostics.filter(d => d.code === DiagnosticService_1.TAILWIND_EXTRACTABLE_CLASS_CODE);
217
+ expect(extractable.length).toBe(2);
219
218
  });
220
- it('should handle multiple extractable classes in ternary', () => {
219
+ it('should flag extractable classes for multiple classes appearing in both ternary branches', () => {
221
220
  // Case: className={isActive ? 'flex items-center p-4' : 'flex items-center m-4'}
222
- // Both 'flex' and 'items-center' appear in both branches
221
+ // Both 'flex' and 'items-center' appear in both branches = extractable hints
223
222
  const sourceCode = "<div className={isActive ? 'flex items-center p-4' : 'flex items-center m-4'}>Hello</div>";
224
223
  const sourceFile = ts.createSourceFile('test.tsx', sourceCode, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
225
224
  const diagnostics = validationService.validateFile(ts, sourceFile, []);
226
- const hints = diagnostics.filter(d => d.code === DiagnosticService_1.TAILWIND_EXTRACTABLE_CLASS_CODE);
227
- // 2 classes (flex, items-center) × 2 branches = 4 hints
228
- expect(hints.length).toBe(4);
225
+ // 4 extractable hints - 2 for 'flex' + 2 for 'items-center' (in both branches)
226
+ const extractable = diagnostics.filter(d => d.code === DiagnosticService_1.TAILWIND_EXTRACTABLE_CLASS_CODE);
227
+ expect(extractable.length).toBe(4);
229
228
  });
230
229
  });
231
230
  describe('binary expressions (&&)', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"DuplicateClassDetection.spec.js","sourceRoot":"","sources":["../../src/services/DuplicateClassDetection.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DuplicateClassDetection.spec.js","sourceRoot":"","sources":["../../src/services/DuplicateClassDetection.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=FileDiagnosticCache.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileDiagnosticCache.spec.d.ts","sourceRoot":"","sources":["../../src/services/FileDiagnosticCache.spec.ts"],"names":[],"mappings":""}