tailwind-typescript-plugin 1.4.1-beta.12 → 1.4.1-beta.13

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 +6 -0
  2. package/README.md +212 -143
  3. package/lib/core/interfaces.d.ts +17 -12
  4. package/lib/core/interfaces.d.ts.map +1 -1
  5. package/lib/core/types.d.ts +75 -0
  6. package/lib/core/types.d.ts.map +1 -1
  7. package/lib/infrastructure/TailwindValidator.css-vars.spec.js +1 -11
  8. package/lib/infrastructure/TailwindValidator.css-vars.spec.js.map +1 -1
  9. package/lib/infrastructure/TailwindValidator.d.ts +1 -3
  10. package/lib/infrastructure/TailwindValidator.d.ts.map +1 -1
  11. package/lib/infrastructure/TailwindValidator.js +6 -26
  12. package/lib/infrastructure/TailwindValidator.js.map +1 -1
  13. package/lib/infrastructure/TailwindValidator.spec.js +7 -17
  14. package/lib/infrastructure/TailwindValidator.spec.js.map +1 -1
  15. package/lib/plugin/TailwindTypescriptPlugin.d.ts +0 -1
  16. package/lib/plugin/TailwindTypescriptPlugin.d.ts.map +1 -1
  17. package/lib/plugin/TailwindTypescriptPlugin.js +26 -60
  18. package/lib/plugin/TailwindTypescriptPlugin.js.map +1 -1
  19. package/lib/services/CodeActionService.spec.js +1 -2
  20. package/lib/services/CodeActionService.spec.js.map +1 -1
  21. package/lib/services/CompletionService.d.ts +1 -3
  22. package/lib/services/CompletionService.d.ts.map +1 -1
  23. package/lib/services/CompletionService.js +1 -12
  24. package/lib/services/CompletionService.js.map +1 -1
  25. package/lib/services/CompletionService.spec.js +11 -12
  26. package/lib/services/CompletionService.spec.js.map +1 -1
  27. package/lib/services/ConflictClassDetection.spec.js +5 -5
  28. package/lib/services/ConflictClassDetection.spec.js.map +1 -1
  29. package/lib/services/DiagnosticService.d.ts +8 -8
  30. package/lib/services/DiagnosticService.d.ts.map +1 -1
  31. package/lib/services/DiagnosticService.js +29 -13
  32. package/lib/services/DiagnosticService.js.map +1 -1
  33. package/lib/services/DuplicateClassDetection.spec.js +20 -21
  34. package/lib/services/DuplicateClassDetection.spec.js.map +1 -1
  35. package/lib/services/PluginConfigService.d.ts +38 -15
  36. package/lib/services/PluginConfigService.d.ts.map +1 -1
  37. package/lib/services/PluginConfigService.js +182 -82
  38. package/lib/services/PluginConfigService.js.map +1 -1
  39. package/lib/services/ValidationService.d.ts +5 -4
  40. package/lib/services/ValidationService.d.ts.map +1 -1
  41. package/lib/services/ValidationService.js +39 -42
  42. package/lib/services/ValidationService.js.map +1 -1
  43. package/package.json +1 -1
@@ -2,108 +2,208 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PluginConfigService = void 0;
4
4
  /**
5
- * Default utility functions to validate with precise import sources
6
- * Note: cva and tv are NOT included here - they are variant functions
7
- * handled by dedicated extractors (CvaExtractor, TailwindVariantsExtractor)
8
- * Note: 'cn' is a simple string since it's typically a custom wrapper (e.g., shadcn pattern)
5
+ * Default utilities configuration
6
+ * Key is function name, value is import source ("*" = any source, "off" = disabled)
9
7
  */
10
- const DEFAULT_UTILITY_FUNCTIONS = [
11
- { name: 'clsx', from: 'clsx' },
12
- 'cn',
13
- { name: 'classnames', from: 'classnames' },
14
- { name: 'classNames', from: 'classnames' },
15
- { name: 'cx', from: 'classnames' },
16
- { name: 'twMerge', from: 'tailwind-merge' }
17
- ];
8
+ const DEFAULT_UTILITIES = {
9
+ cn: '*', // Custom wrapper pattern (e.g., shadcn), any source
10
+ clsx: 'clsx',
11
+ classnames: 'classnames',
12
+ classNames: 'classnames',
13
+ cx: 'classnames',
14
+ twMerge: 'tailwind-merge'
15
+ };
16
+ /**
17
+ * Default variants configuration
18
+ */
19
+ const DEFAULT_VARIANTS = {
20
+ tailwindVariants: true,
21
+ classVarianceAuthority: true
22
+ };
23
+ /**
24
+ * Default validation configuration
25
+ */
26
+ const DEFAULT_VALIDATION = {
27
+ enabled: true,
28
+ severity: 'error',
29
+ allowedClasses: []
30
+ };
31
+ /**
32
+ * Default lint configuration
33
+ */
34
+ const DEFAULT_LINT = {
35
+ enabled: true,
36
+ conflictingClasses: {
37
+ enabled: true,
38
+ severity: 'warning'
39
+ },
40
+ repeatedClasses: {
41
+ enabled: true,
42
+ severity: 'warning'
43
+ }
44
+ };
18
45
  /**
19
46
  * Service responsible for managing plugin configuration
20
47
  * Follows Single Responsibility Principle
21
48
  */
22
49
  class PluginConfigService {
23
- constructor(config, logger) {
24
- this.logger = logger;
25
- this.loggingEnabled = config.enableLogging === true;
26
- this.utilityFunctions = this.initializeUtilityFunctions(config);
50
+ constructor(config) {
27
51
  this.cssFilePath = config.globalCss;
28
- this.allowedClasses = this.initializeAllowedClasses(config);
29
- // If ANY variant config is defined, only enable those explicitly set to true
30
- // If NO variant config is defined, enable both by default
31
- const variantsConfig = config.variants;
32
- const hasAnyVariantConfig = variantsConfig &&
33
- (variantsConfig.tailwindVariants !== undefined ||
34
- variantsConfig.classVarianceAuthority !== undefined);
35
- if (hasAnyVariantConfig) {
36
- // User specified at least one variant - only enable those explicitly set to true
37
- this.tailwindVariantsEnabled = variantsConfig.tailwindVariants === true;
38
- this.classVarianceAuthorityEnabled = variantsConfig.classVarianceAuthority === true;
39
- }
40
- else {
41
- // No variants configured - enable both by default
42
- this.tailwindVariantsEnabled = true;
43
- this.classVarianceAuthorityEnabled = true;
44
- }
45
- this.logExtractorConfig();
46
- }
47
- initializeUtilityFunctions(config) {
48
- // Helper to get the name from a UtilityFunction
49
- const getName = (f) => (typeof f === 'string' ? f : f.name);
50
- if (config.utilityFunctions && Array.isArray(config.utilityFunctions)) {
51
- // Merge user-provided functions with defaults (remove duplicates by name)
52
- const userFunctions = config.utilityFunctions;
53
- const userFunctionNames = new Set(userFunctions.map(getName));
54
- // Only include defaults that aren't overridden by user config
55
- const nonOverriddenDefaults = DEFAULT_UTILITY_FUNCTIONS.filter(def => !userFunctionNames.has(getName(def)));
56
- const merged = [...nonOverriddenDefaults, ...userFunctions];
57
- this.logger.log(`Using utility functions (defaults + custom): ${merged.map(getName).join(', ')}`);
58
- return merged;
59
- }
60
- else {
61
- this.logger.log(`Using default utility functions: ${DEFAULT_UTILITY_FUNCTIONS.map(getName).join(', ')}`);
62
- return DEFAULT_UTILITY_FUNCTIONS;
52
+ // Initialize configuration with backwards compatibility
53
+ this.utilitiesConfig = this.initializeUtilities(config);
54
+ this.variantsConfig = this.initializeVariants(config);
55
+ this.validationConfig = this.initializeValidation(config);
56
+ this.lintConfig = this.initializeLint(config);
57
+ this.editorConfig = this.initializeEditor(config);
58
+ // Convert to legacy format for extractors
59
+ this.utilityFunctionsLegacy = this.convertToLegacyFormat(this.utilitiesConfig);
60
+ }
61
+ initializeUtilities(config) {
62
+ if (config.libraries?.utilities) {
63
+ // Merge with defaults (user config overrides defaults)
64
+ return { ...DEFAULT_UTILITIES, ...config.libraries.utilities };
63
65
  }
66
+ return { ...DEFAULT_UTILITIES };
64
67
  }
65
- initializeAllowedClasses(config) {
66
- if (config.allowedClasses && Array.isArray(config.allowedClasses)) {
67
- this.logger.log(`Custom allowed classes: ${config.allowedClasses.join(', ')}`);
68
- return config.allowedClasses;
68
+ initializeVariants(config) {
69
+ if (config.libraries?.variants) {
70
+ const userVariants = config.libraries.variants;
71
+ const hasAnyConfig = userVariants.tailwindVariants !== undefined ||
72
+ userVariants.classVarianceAuthority !== undefined;
73
+ if (hasAnyConfig) {
74
+ // User specified at least one - only enable those explicitly set to true
75
+ return {
76
+ tailwindVariants: userVariants.tailwindVariants === true,
77
+ classVarianceAuthority: userVariants.classVarianceAuthority === true
78
+ };
79
+ }
69
80
  }
70
- else {
71
- return [];
81
+ return { ...DEFAULT_VARIANTS };
82
+ }
83
+ initializeValidation(config) {
84
+ const validation = config.validation || {};
85
+ return {
86
+ enabled: validation.enabled !== false, // default true
87
+ severity: validation.severity || DEFAULT_VALIDATION.severity,
88
+ allowedClasses: validation.allowedClasses || []
89
+ };
90
+ }
91
+ initializeLint(config) {
92
+ const lint = config.lint || {};
93
+ return {
94
+ enabled: lint.enabled !== false, // default true
95
+ conflictingClasses: {
96
+ enabled: lint.conflictingClasses?.enabled !== false, // default true
97
+ severity: lint.conflictingClasses?.severity || DEFAULT_LINT.conflictingClasses.severity
98
+ },
99
+ repeatedClasses: {
100
+ enabled: lint.repeatedClasses?.enabled !== false, // default true
101
+ severity: lint.repeatedClasses?.severity || DEFAULT_LINT.repeatedClasses.severity
102
+ }
103
+ };
104
+ }
105
+ initializeEditor(config) {
106
+ const editor = config.editor || {};
107
+ return {
108
+ enabled: editor.enabled !== false, // default true
109
+ autocomplete: {
110
+ enabled: editor.autocomplete?.enabled !== false // default true
111
+ },
112
+ hover: {
113
+ enabled: editor.hover?.enabled !== false // default true
114
+ }
115
+ };
116
+ }
117
+ /**
118
+ * Convert new utilities config to legacy UtilityFunction[] format
119
+ * This is needed for backwards compatibility with extractors
120
+ */
121
+ convertToLegacyFormat(utilities) {
122
+ const result = [];
123
+ for (const [name, source] of Object.entries(utilities)) {
124
+ if (source === 'off') {
125
+ continue; // Skip disabled utilities
126
+ }
127
+ if (source === '*') {
128
+ result.push(name); // Simple string = any source
129
+ }
130
+ else {
131
+ result.push({ name, from: source });
132
+ }
72
133
  }
134
+ return result;
73
135
  }
74
- getUtilityFunctions() {
75
- return this.utilityFunctions;
136
+ // ---- Getters for utilities ----
137
+ getUtilitiesConfig() {
138
+ return this.utilitiesConfig;
76
139
  }
77
- getCssFilePath() {
78
- return this.cssFilePath;
140
+ /**
141
+ * Get utility functions in legacy format (for extractors)
142
+ */
143
+ getUtilityFunctions() {
144
+ return this.utilityFunctionsLegacy;
79
145
  }
80
- hasValidCssPath() {
81
- return this.cssFilePath !== undefined && this.cssFilePath.length > 0;
146
+ // ---- Getters for variants ----
147
+ getVariantsConfig() {
148
+ return this.variantsConfig;
82
149
  }
83
150
  isTailwindVariantsEnabled() {
84
- return this.tailwindVariantsEnabled;
151
+ return this.variantsConfig.tailwindVariants === true;
85
152
  }
86
153
  isClassVarianceAuthorityEnabled() {
87
- return this.classVarianceAuthorityEnabled;
154
+ return this.variantsConfig.classVarianceAuthority === true;
155
+ }
156
+ // ---- Getters for validation ----
157
+ getValidationConfig() {
158
+ return this.validationConfig;
159
+ }
160
+ isValidationEnabled() {
161
+ return this.validationConfig.enabled;
162
+ }
163
+ getValidationSeverity() {
164
+ return this.validationConfig.severity;
88
165
  }
89
166
  getAllowedClasses() {
90
- return this.allowedClasses;
91
- }
92
- isLoggingEnabled() {
93
- return this.loggingEnabled;
94
- }
95
- logExtractorConfig() {
96
- const enabled = [];
97
- if (this.tailwindVariantsEnabled)
98
- enabled.push('tailwind-variants');
99
- if (this.classVarianceAuthorityEnabled)
100
- enabled.push('class-variance-authority');
101
- if (enabled.length === 0) {
102
- this.logger.log('⚠️ No variant library extractors enabled');
103
- }
104
- else {
105
- this.logger.log(`✓ Enabled variant extractors: ${enabled.join(', ')}`);
106
- }
167
+ return this.validationConfig.allowedClasses;
168
+ }
169
+ // ---- Getters for lint ----
170
+ getLintConfig() {
171
+ return this.lintConfig;
172
+ }
173
+ isLintEnabled() {
174
+ return this.lintConfig.enabled !== false;
175
+ }
176
+ isConflictingClassesEnabled() {
177
+ return this.isLintEnabled() && this.lintConfig.conflictingClasses?.enabled !== false;
178
+ }
179
+ getConflictingClassesSeverity() {
180
+ return this.lintConfig.conflictingClasses?.severity || 'warning';
181
+ }
182
+ isRepeatedClassesEnabled() {
183
+ return this.isLintEnabled() && this.lintConfig.repeatedClasses?.enabled !== false;
184
+ }
185
+ getRepeatedClassesSeverity() {
186
+ return this.lintConfig.repeatedClasses?.severity || 'warning';
187
+ }
188
+ // ---- Getters for editor ----
189
+ getEditorConfig() {
190
+ return this.editorConfig;
191
+ }
192
+ isEditorEnabled() {
193
+ return this.editorConfig.enabled !== false;
194
+ }
195
+ isAutocompleteEnabled() {
196
+ return this.isEditorEnabled() && this.editorConfig.autocomplete?.enabled !== false;
197
+ }
198
+ isHoverEnabled() {
199
+ return this.isEditorEnabled() && this.editorConfig.hover?.enabled !== false;
200
+ }
201
+ // ---- Getters for global settings ----
202
+ getCssFilePath() {
203
+ return this.cssFilePath;
204
+ }
205
+ hasValidCssPath() {
206
+ return this.cssFilePath !== undefined && this.cssFilePath.length > 0;
107
207
  }
108
208
  }
109
209
  exports.PluginConfigService = PluginConfigService;
@@ -1 +1 @@
1
- {"version":3,"file":"PluginConfigService.js","sourceRoot":"","sources":["../../src/services/PluginConfigService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PluginConfigService.js","sourceRoot":"","sources":["../../src/services/PluginConfigService.ts"],"names":[],"mappings":";;;AAWA;;;GAGG;AACH,MAAM,iBAAiB,GAAoB;IAC1C,EAAE,EAAE,GAAG,EAAE,oDAAoD;IAC7D,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,YAAY;IACxB,EAAE,EAAE,YAAY;IAChB,OAAO,EAAE,gBAAgB;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,gBAAgB,GAAmB;IACxC,gBAAgB,EAAE,IAAI;IACtB,sBAAsB,EAAE,IAAI;CAC5B,CAAC;AAEF;;GAEG;AACH,MAAM,kBAAkB,GAEpB;IACH,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,OAAO;IACjB,cAAc,EAAE,EAAE;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,YAAY,GAAe;IAChC,OAAO,EAAE,IAAI;IACb,kBAAkB,EAAE;QACnB,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,SAAS;KACnB;IACD,eAAe,EAAE;QAChB,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,SAAS;KACnB;CACD,CAAC;AAEF;;;GAGG;AACH,MAAa,mBAAmB;IAa/B,YAAY,MAAqB;QAChC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC;QAEpC,wDAAwD;QACxD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAElD,0CAA0C;QAC1C,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAChF,CAAC;IAEO,mBAAmB,CAAC,MAAqB;QAChD,IAAI,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC;YACjC,uDAAuD;YACvD,OAAO,EAAE,GAAG,iBAAiB,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QAChE,CAAC;QAED,OAAO,EAAE,GAAG,iBAAiB,EAAE,CAAC;IACjC,CAAC;IAEO,kBAAkB,CAAC,MAAqB;QAC/C,IAAI,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC;YAChC,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;YAC/C,MAAM,YAAY,GACjB,YAAY,CAAC,gBAAgB,KAAK,SAAS;gBAC3C,YAAY,CAAC,sBAAsB,KAAK,SAAS,CAAC;YAEnD,IAAI,YAAY,EAAE,CAAC;gBAClB,yEAAyE;gBACzE,OAAO;oBACN,gBAAgB,EAAE,YAAY,CAAC,gBAAgB,KAAK,IAAI;oBACxD,sBAAsB,EAAE,YAAY,CAAC,sBAAsB,KAAK,IAAI;iBACpE,CAAC;YACH,CAAC;QACF,CAAC;QAED,OAAO,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAChC,CAAC;IAEO,oBAAoB,CAAC,MAAqB;QAKjD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAE3C,OAAO;YACN,OAAO,EAAE,UAAU,CAAC,OAAO,KAAK,KAAK,EAAE,eAAe;YACtD,QAAQ,EAAE,UAAU,CAAC,QAAQ,IAAI,kBAAkB,CAAC,QAAQ;YAC5D,cAAc,EAAE,UAAU,CAAC,cAAc,IAAI,EAAE;SAC/C,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,MAAqB;QAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QAE/B,OAAO;YACN,OAAO,EAAE,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,eAAe;YAChD,kBAAkB,EAAE;gBACnB,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,OAAO,KAAK,KAAK,EAAE,eAAe;gBACpE,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,IAAI,YAAY,CAAC,kBAAmB,CAAC,QAAQ;aACxF;YACD,eAAe,EAAE;gBAChB,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,KAAK,KAAK,EAAE,eAAe;gBACjE,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,IAAI,YAAY,CAAC,eAAgB,CAAC,QAAQ;aAClF;SACD,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,MAAqB;QAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;QAEnC,OAAO;YACN,OAAO,EAAE,MAAM,CAAC,OAAO,KAAK,KAAK,EAAE,eAAe;YAClD,YAAY,EAAE;gBACb,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE,OAAO,KAAK,KAAK,CAAC,eAAe;aAC/D;YACD,KAAK,EAAE;gBACN,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,CAAC,eAAe;aACxD;SACD,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,qBAAqB,CAAC,SAA0B;QACvD,MAAM,MAAM,GAAsB,EAAE,CAAC;QAErC,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACxD,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACtB,SAAS,CAAC,0BAA0B;YACrC,CAAC;YACD,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,6BAA6B;YACjD,CAAC;iBAAM,CAAC;gBACP,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YACrC,CAAC;QACF,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAED,kCAAkC;IAElC,kBAAkB;QACjB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,mBAAmB;QAClB,OAAO,IAAI,CAAC,sBAAsB,CAAC;IACpC,CAAC;IAED,iCAAiC;IAEjC,iBAAiB;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC5B,CAAC;IAED,yBAAyB;QACxB,OAAO,IAAI,CAAC,cAAc,CAAC,gBAAgB,KAAK,IAAI,CAAC;IACtD,CAAC;IAED,+BAA+B;QAC9B,OAAO,IAAI,CAAC,cAAc,CAAC,sBAAsB,KAAK,IAAI,CAAC;IAC5D,CAAC;IAED,mCAAmC;IAEnC,mBAAmB;QAClB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC9B,CAAC;IAED,mBAAmB;QAClB,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;IACtC,CAAC;IAED,qBAAqB;QACpB,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;IACvC,CAAC;IAED,iBAAiB;QAChB,OAAO,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC;IAC7C,CAAC;IAED,6BAA6B;IAE7B,aAAa;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IAED,aAAa;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,KAAK,CAAC;IAC1C,CAAC;IAED,2BAA2B;QAC1B,OAAO,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,OAAO,KAAK,KAAK,CAAC;IACtF,CAAC;IAED,6BAA6B;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,QAAQ,IAAI,SAAS,CAAC;IAClE,CAAC;IAED,wBAAwB;QACvB,OAAO,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,OAAO,KAAK,KAAK,CAAC;IACnF,CAAC;IAED,0BAA0B;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,QAAQ,IAAI,SAAS,CAAC;IAC/D,CAAC;IAED,+BAA+B;IAE/B,eAAe;QACd,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IAED,eAAe;QACd,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,KAAK,KAAK,CAAC;IAC5C,CAAC;IAED,qBAAqB;QACpB,OAAO,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,KAAK,KAAK,CAAC;IACpF,CAAC;IAED,cAAc;QACb,OAAO,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,CAAC;IAC7E,CAAC;IAED,wCAAwC;IAExC,cAAc;QACb,OAAO,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IAED,eAAe;QACd,OAAO,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IACtE,CAAC;CACD;AA1ND,kDA0NC"}
@@ -2,9 +2,9 @@ import * as ts from 'typescript/lib/tsserverlibrary';
2
2
  import { IClassNameValidator } from '../core/interfaces';
3
3
  import { UtilityFunction } from '../core/types';
4
4
  import { ICssProvider } from '../infrastructure/TailwindConflictDetector';
5
- import { Logger } from '../utils/Logger';
6
5
  import { ClassNameExtractionService } from './ClassNameExtractionService';
7
6
  import { DiagnosticService } from './DiagnosticService';
7
+ import { PluginConfigService } from './PluginConfigService';
8
8
  /**
9
9
  * Service responsible for validating class names and creating diagnostics
10
10
  * Orchestrates the validation workflow
@@ -13,9 +13,9 @@ export declare class ValidationService {
13
13
  private readonly extractionService;
14
14
  private readonly diagnosticService;
15
15
  private readonly validator;
16
- private readonly logger;
16
+ private readonly configService;
17
17
  private readonly conflictDetector;
18
- constructor(extractionService: ClassNameExtractionService, diagnosticService: DiagnosticService, validator: IClassNameValidator, logger: Logger, cssProvider?: ICssProvider);
18
+ constructor(extractionService: ClassNameExtractionService, diagnosticService: DiagnosticService, validator: IClassNameValidator, configService: PluginConfigService, cssProvider?: ICssProvider);
19
19
  /**
20
20
  * Validate a source file and return diagnostics
21
21
  * PERFORMANCE OPTIMIZED: Minimal logging overhead
@@ -27,7 +27,8 @@ export declare class ValidationService {
27
27
  */
28
28
  private filterInvalidClasses;
29
29
  /**
30
- * Result of duplicate detection with separate categories
30
+ * Find duplicate and extractable classes within the same attribute
31
+ * Returns true duplicates and extractable classes (same class in both ternary branches)
31
32
  */
32
33
  private findDuplicateClasses;
33
34
  }
@@ -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;AACzD,OAAO,EAAiB,eAAe,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,YAAY,EAA4B,MAAM,4CAA4C,CAAC;AACpG,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;IAI5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IANxB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA2B;gBAG1C,iBAAiB,EAAE,0BAA0B,EAC7C,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,EAAE,mBAAmB,EAC9B,MAAM,EAAE,MAAM,EAC/B,WAAW,CAAC,EAAE,YAAY;IAQ3B;;;OAGG;IACH,YAAY,CACX,UAAU,EAAE,OAAO,EAAE,EACrB,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,gBAAgB,EAAE,eAAe,EAAE,EACnC,WAAW,CAAC,EAAE,EAAE,CAAC,WAAW,GAC1B,EAAE,CAAC,UAAU,EAAE;IA4ElB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAM5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAiG5B"}
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;AACzD,OAAO,EAAiB,eAAe,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,YAAY,EAA4B,MAAM,4CAA4C,CAAC;AACpG,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;GAGG;AACH,qBAAa,iBAAiB;IAI5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAN/B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA2B;gBAG1C,iBAAiB,EAAE,0BAA0B,EAC7C,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,EAAE,mBAAmB,EAC9B,aAAa,EAAE,mBAAmB,EACnD,WAAW,CAAC,EAAE,YAAY;IAQ3B;;;OAGG;IACH,YAAY,CACX,UAAU,EAAE,OAAO,EAAE,EACrB,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,gBAAgB,EAAE,eAAe,EAAE,EACnC,WAAW,CAAC,EAAE,EAAE,CAAC,WAAW,GAC1B,EAAE,CAAC,UAAU,EAAE;IA4ElB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAI5B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;CAiG5B"}
@@ -7,11 +7,11 @@ const TailwindConflictDetector_1 = require("../infrastructure/TailwindConflictDe
7
7
  * Orchestrates the validation workflow
8
8
  */
9
9
  class ValidationService {
10
- constructor(extractionService, diagnosticService, validator, logger, cssProvider) {
10
+ constructor(extractionService, diagnosticService, validator, configService, cssProvider) {
11
11
  this.extractionService = extractionService;
12
12
  this.diagnosticService = diagnosticService;
13
13
  this.validator = validator;
14
- this.logger = logger;
14
+ this.configService = configService;
15
15
  this.conflictDetector = new TailwindConflictDetector_1.TailwindConflictDetector();
16
16
  if (cssProvider) {
17
17
  this.conflictDetector.setCssProvider(cssProvider);
@@ -23,50 +23,48 @@ class ValidationService {
23
23
  */
24
24
  validateFile(typescript, sourceFile, utilityFunctions, typeChecker) {
25
25
  if (!this.validator.isInitialized()) {
26
- this.logger.log(`[ValidationService] Validator not initialized yet for ${sourceFile.fileName}`);
27
26
  return [];
28
27
  }
29
- // PERFORMANCE: Only log if enabled
30
- if (this.logger.isEnabled()) {
31
- this.logger.log(`[ValidationService] Processing file: ${sourceFile.fileName}`);
32
- }
33
28
  // Extract all class names from the file
34
29
  const classNames = this.extractionService.extractFromSourceFile(typescript, sourceFile, utilityFunctions, typeChecker);
35
- // PERFORMANCE: Only log if enabled
36
- if (this.logger.isEnabled()) {
37
- this.logger.log(`[ValidationService] Found ${classNames.length} class names to validate`);
30
+ const diagnostics = [];
31
+ // Validation diagnostics (invalid class detection)
32
+ if (this.configService.isValidationEnabled()) {
33
+ const severity = this.configService.getValidationSeverity();
34
+ if (severity !== 'off') {
35
+ const invalidClasses = this.filterInvalidClasses(classNames);
36
+ if (invalidClasses.length > 0) {
37
+ diagnostics.push(...this.diagnosticService.createDiagnostics(invalidClasses, sourceFile, severity));
38
+ }
39
+ }
38
40
  }
39
- // Filter invalid class names
40
- const invalidClasses = this.filterInvalidClasses(classNames);
41
- // Detect duplicate classes (only for valid classes, to avoid double-reporting)
42
- const { trueDuplicates, extractableClasses } = this.findDuplicateClasses(classNames);
43
- // Detect conflicting classes (only for valid, non-duplicate classes)
44
- const conflicts = this.conflictDetector.findConflicts(classNames);
45
- // PERFORMANCE: Only log if enabled
46
- if (this.logger.isEnabled()) {
47
- const totalIssues = invalidClasses.length +
48
- trueDuplicates.length +
49
- extractableClasses.length +
50
- conflicts.length;
51
- if (totalIssues > 0) {
52
- this.logger.log(`[ValidationService] Returning ${invalidClasses.length} invalid + ${trueDuplicates.length} duplicate + ${extractableClasses.length} extractable + ${conflicts.length} conflict diagnostics`);
41
+ // Lint diagnostics (only if lint is enabled globally)
42
+ if (this.configService.isLintEnabled()) {
43
+ // Detect duplicate and extractable classes
44
+ const { trueDuplicates, extractableClasses } = this.findDuplicateClasses(classNames);
45
+ // Repeated classes
46
+ if (this.configService.isRepeatedClassesEnabled()) {
47
+ const severity = this.configService.getRepeatedClassesSeverity();
48
+ if (severity !== 'off') {
49
+ if (trueDuplicates.length > 0) {
50
+ diagnostics.push(...this.diagnosticService.createDuplicateDiagnostics(trueDuplicates, sourceFile, severity));
51
+ }
52
+ }
53
53
  }
54
- else {
55
- this.logger.log(`[ValidationService] No issues found`);
54
+ // Extractable classes (always enabled when lint is enabled, no config option)
55
+ if (extractableClasses.length > 0) {
56
+ diagnostics.push(...this.diagnosticService.createExtractableClassDiagnostics(extractableClasses, sourceFile));
57
+ }
58
+ // Conflicting classes
59
+ if (this.configService.isConflictingClassesEnabled()) {
60
+ const severity = this.configService.getConflictingClassesSeverity();
61
+ if (severity !== 'off') {
62
+ const conflicts = this.conflictDetector.findConflicts(classNames);
63
+ if (conflicts.length > 0) {
64
+ diagnostics.push(...this.diagnosticService.createConflictDiagnostics(conflicts, sourceFile, severity));
65
+ }
66
+ }
56
67
  }
57
- }
58
- const diagnostics = [];
59
- if (invalidClasses.length > 0) {
60
- diagnostics.push(...this.diagnosticService.createDiagnostics(invalidClasses, sourceFile));
61
- }
62
- if (trueDuplicates.length > 0) {
63
- diagnostics.push(...this.diagnosticService.createDuplicateDiagnostics(trueDuplicates, sourceFile));
64
- }
65
- if (extractableClasses.length > 0) {
66
- diagnostics.push(...this.diagnosticService.createExtractableClassDiagnostics(extractableClasses, sourceFile));
67
- }
68
- if (conflicts.length > 0) {
69
- diagnostics.push(...this.diagnosticService.createConflictDiagnostics(conflicts, sourceFile));
70
68
  }
71
69
  return diagnostics;
72
70
  }
@@ -75,12 +73,11 @@ class ValidationService {
75
73
  * PERFORMANCE OPTIMIZED: No logging in hot path
76
74
  */
77
75
  filterInvalidClasses(classNames) {
78
- // PERFORMANCE: Skip logging each class validation (hot path)
79
- // This method is called for every class in every file
80
76
  return classNames.filter(classInfo => !this.validator.isValidClass(classInfo.className));
81
77
  }
82
78
  /**
83
- * Result of duplicate detection with separate categories
79
+ * Find duplicate and extractable classes within the same attribute
80
+ * Returns true duplicates and extractable classes (same class in both ternary branches)
84
81
  */
85
82
  findDuplicateClasses(classNames) {
86
83
  const trueDuplicates = [];
@@ -1 +1 @@
1
- {"version":3,"file":"ValidationService.js","sourceRoot":"","sources":["../../src/services/ValidationService.ts"],"names":[],"mappings":";;;AAIA,yFAAoG;AAKpG;;;GAGG;AACH,MAAa,iBAAiB;IAG7B,YACkB,iBAA6C,EAC7C,iBAAoC,EACpC,SAA8B,EAC9B,MAAc,EAC/B,WAA0B;QAJT,sBAAiB,GAAjB,iBAAiB,CAA4B;QAC7C,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,cAAS,GAAT,SAAS,CAAqB;QAC9B,WAAM,GAAN,MAAM,CAAQ;QAG/B,IAAI,CAAC,gBAAgB,GAAG,IAAI,mDAAwB,EAAE,CAAC;QACvD,IAAI,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACnD,CAAC;IACF,CAAC;IAED;;;OAGG;IACH,YAAY,CACX,UAAqB,EACrB,UAAyB,EACzB,gBAAmC,EACnC,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,+EAA+E;QAC/E,MAAM,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAErF,qEAAqE;QACrE,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAElE,mCAAmC;QACnC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;YAC7B,MAAM,WAAW,GAChB,cAAc,CAAC,MAAM;gBACrB,cAAc,CAAC,MAAM;gBACrB,kBAAkB,CAAC,MAAM;gBACzB,SAAS,CAAC,MAAM,CAAC;YAClB,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;gBACrB,IAAI,CAAC,MAAM,CAAC,GAAG,CACd,iCAAiC,cAAc,CAAC,MAAM,cAAc,cAAc,CAAC,MAAM,gBAAgB,kBAAkB,CAAC,MAAM,kBAAkB,SAAS,CAAC,MAAM,uBAAuB,CAC3L,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YACxD,CAAC;QACF,CAAC;QAED,MAAM,WAAW,GAAoB,EAAE,CAAC;QAExC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;QAC3F,CAAC;QAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,WAAW,CAAC,IAAI,CACf,GAAG,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,cAAc,EAAE,UAAU,CAAC,CAChF,CAAC;QACH,CAAC;QAED,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,WAAW,CAAC,IAAI,CACf,GAAG,IAAI,CAAC,iBAAiB,CAAC,iCAAiC,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAC3F,CAAC;QACH,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;QAC9F,CAAC;QAED,OAAO,WAAW,CAAC;IACpB,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;IAED;;OAEG;IACK,oBAAoB,CAAC,UAA2B;QAIvD,MAAM,cAAc,GAAoB,EAAE,CAAC;QAC3C,MAAM,kBAAkB,GAAoB,EAAE,CAAC;QAE/C,+BAA+B;QAC/B,MAAM,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAC;QAEvD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACpC,qEAAqE;YACrE,8EAA8E;YAC9E,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,IAAI,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;YAElE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC1B,CAAC;YACD,WAAW,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC;QAED,sCAAsC;QACtC,KAAK,MAAM,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5C,4BAA4B;YAC5B,MAAM,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAC;YACvD,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;gBACjC,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;gBACtC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBACjC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gBAChC,CAAC;gBACD,WAAW,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7C,CAAC;YAED,iDAAiD;YACjD,KAAK,MAAM,CAAC,EAAE,WAAW,CAAC,IAAI,WAAW,EAAE,CAAC;gBAC3C,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBAC7B,SAAS;gBACV,CAAC;gBAED,kDAAkD;gBAClD,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;gBACpE,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;gBAErE,+DAA+D;gBAC/D,4DAA4D;gBAC5D,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxD,cAAc,CAAC,IAAI,CAAC,GAAG,WAAW,EAAE,GAAG,aAAa,CAAC,CAAC;gBACvD,CAAC;gBAED,8DAA8D;gBAC9D,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,qCAAqC;oBACrC,cAAc,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;gBACrC,CAAC;gBAED,2DAA2D;gBAC3D,yDAAyD;gBACzD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC1D,sBAAsB;oBACtB,MAAM,SAAS,GAAG,IAAI,GAAG,EAA6D,CAAC;oBAEvF,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE,CAAC;wBACvC,MAAM,QAAQ,GAAG,SAAS,CAAC,mBAAoB,CAAC;wBAChD,mDAAmD;wBACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;wBAC7D,IAAI,KAAK,EAAE,CAAC;4BACX,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC;4BACpC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gCAC/B,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;4BACnD,CAAC;4BACD,SAAS,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,MAA0B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBACvE,CAAC;oBACF,CAAC;oBAED,qBAAqB;oBACrB,KAAK,MAAM,CAAC,EAAE,QAAQ,CAAC,IAAI,SAAS,EAAE,CAAC;wBACtC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAC3D,8DAA8D;4BAC9D,mEAAmE;4BACnE,yDAAyD;4BACzD,kBAAkB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;wBAC9D,CAAC;6BAAM,CAAC;4BACP,qEAAqE;4BACrE,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gCAC9B,cAAc,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;4BACvC,CAAC;4BACD,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gCAC/B,cAAc,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;4BACxC,CAAC;wBACF,CAAC;oBACF,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC;QAED,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;IAC/C,CAAC;CACD;AAnND,8CAmNC"}
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.4.1-beta.12",
3
+ "version": "1.4.1-beta.13",
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",