tailwind-typescript-plugin 1.4.0-beta.2 → 1.4.0-beta.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +129 -0
- package/README.md +403 -77
- package/lib/core/interfaces.d.ts +23 -12
- package/lib/core/interfaces.d.ts.map +1 -1
- package/lib/core/types.d.ts +112 -1
- package/lib/core/types.d.ts.map +1 -1
- package/lib/extractors/BaseExtractor.d.ts +49 -2
- package/lib/extractors/BaseExtractor.d.ts.map +1 -1
- package/lib/extractors/BaseExtractor.js +184 -5
- package/lib/extractors/BaseExtractor.js.map +1 -1
- package/lib/extractors/CvaExtractor.js +1 -1
- package/lib/extractors/CvaExtractor.js.map +1 -1
- package/lib/extractors/ExpressionExtractor.d.ts.map +1 -1
- package/lib/extractors/ExpressionExtractor.js +35 -5
- package/lib/extractors/ExpressionExtractor.js.map +1 -1
- package/lib/extractors/JsxAttributeExtractor.d.ts +2 -1
- package/lib/extractors/JsxAttributeExtractor.d.ts.map +1 -1
- package/lib/extractors/JsxAttributeExtractor.js +15 -8
- package/lib/extractors/JsxAttributeExtractor.js.map +1 -1
- package/lib/extractors/SvelteAttributeExtractor.d.ts +17 -0
- package/lib/extractors/SvelteAttributeExtractor.d.ts.map +1 -0
- package/lib/extractors/SvelteAttributeExtractor.js +27 -0
- package/lib/extractors/SvelteAttributeExtractor.js.map +1 -0
- package/lib/extractors/TailwindVariantsExtractor.d.ts.map +1 -1
- package/lib/extractors/TailwindVariantsExtractor.js +1 -5
- package/lib/extractors/TailwindVariantsExtractor.js.map +1 -1
- package/lib/extractors/VariableReferenceExtractor.d.ts.map +1 -1
- package/lib/extractors/VariableReferenceExtractor.js +21 -0
- package/lib/extractors/VariableReferenceExtractor.js.map +1 -1
- package/lib/extractors/VueAttributeExtractor.d.ts +119 -0
- package/lib/extractors/VueAttributeExtractor.d.ts.map +1 -0
- package/lib/extractors/VueAttributeExtractor.js +911 -0
- package/lib/extractors/VueAttributeExtractor.js.map +1 -0
- package/lib/extractors/VueExpressionExtractor.d.ts +21 -0
- package/lib/extractors/VueExpressionExtractor.d.ts.map +1 -0
- package/lib/extractors/VueExpressionExtractor.js +51 -0
- package/lib/extractors/VueExpressionExtractor.js.map +1 -0
- package/lib/infrastructure/TailwindConflictDetector.d.ts +28 -18
- package/lib/infrastructure/TailwindConflictDetector.d.ts.map +1 -1
- package/lib/infrastructure/TailwindConflictDetector.js +216 -486
- package/lib/infrastructure/TailwindConflictDetector.js.map +1 -1
- package/lib/infrastructure/TailwindValidator.css-vars.spec.js +1 -11
- package/lib/infrastructure/TailwindValidator.css-vars.spec.js.map +1 -1
- package/lib/infrastructure/TailwindValidator.d.ts +16 -3
- package/lib/infrastructure/TailwindValidator.d.ts.map +1 -1
- package/lib/infrastructure/TailwindValidator.js +83 -24
- package/lib/infrastructure/TailwindValidator.js.map +1 -1
- package/lib/infrastructure/TailwindValidator.spec.js +196 -12
- package/lib/infrastructure/TailwindValidator.spec.js.map +1 -1
- package/lib/plugin/TailwindTypescriptPlugin.d.ts +30 -1
- package/lib/plugin/TailwindTypescriptPlugin.d.ts.map +1 -1
- package/lib/plugin/TailwindTypescriptPlugin.js +209 -35
- package/lib/plugin/TailwindTypescriptPlugin.js.map +1 -1
- package/lib/services/ClassNameExtractionService.d.ts +21 -5
- package/lib/services/ClassNameExtractionService.d.ts.map +1 -1
- package/lib/services/ClassNameExtractionService.js +76 -14
- package/lib/services/ClassNameExtractionService.js.map +1 -1
- package/lib/services/ClassNameExtractionService.spec.d.ts +2 -0
- package/lib/services/ClassNameExtractionService.spec.d.ts.map +1 -0
- package/lib/services/ClassNameExtractionService.spec.js +222 -0
- package/lib/services/ClassNameExtractionService.spec.js.map +1 -0
- package/lib/services/CodeActionService.spec.js +1 -2
- package/lib/services/CodeActionService.spec.js.map +1 -1
- package/lib/services/CompletionService.d.ts +121 -0
- package/lib/services/CompletionService.d.ts.map +1 -0
- package/lib/services/CompletionService.js +573 -0
- package/lib/services/CompletionService.js.map +1 -0
- package/lib/services/CompletionService.spec.d.ts +2 -0
- package/lib/services/CompletionService.spec.d.ts.map +1 -0
- package/lib/services/CompletionService.spec.js +1182 -0
- package/lib/services/CompletionService.spec.js.map +1 -0
- package/lib/services/ConflictClassDetection.spec.js +26 -21
- package/lib/services/ConflictClassDetection.spec.js.map +1 -1
- package/lib/services/DiagnosticService.d.ts +8 -8
- package/lib/services/DiagnosticService.d.ts.map +1 -1
- package/lib/services/DiagnosticService.js +29 -13
- package/lib/services/DiagnosticService.js.map +1 -1
- package/lib/services/DuplicateClassDetection.spec.js +61 -81
- package/lib/services/DuplicateClassDetection.spec.js.map +1 -1
- package/lib/services/PluginConfigService.d.ts +47 -15
- package/lib/services/PluginConfigService.d.ts.map +1 -1
- package/lib/services/PluginConfigService.js +203 -75
- package/lib/services/PluginConfigService.js.map +1 -1
- package/lib/services/PluginConfigService.spec.d.ts +2 -0
- package/lib/services/PluginConfigService.spec.d.ts.map +1 -0
- package/lib/services/PluginConfigService.spec.js +93 -0
- package/lib/services/PluginConfigService.spec.js.map +1 -0
- package/lib/services/ValidationService.d.ts +8 -5
- package/lib/services/ValidationService.d.ts.map +1 -1
- package/lib/services/ValidationService.js +49 -49
- package/lib/services/ValidationService.js.map +1 -1
- package/lib/utils/FrameworkDetector.d.ts +24 -0
- package/lib/utils/FrameworkDetector.d.ts.map +1 -0
- package/lib/utils/FrameworkDetector.js +52 -0
- package/lib/utils/FrameworkDetector.js.map +1 -0
- package/lib/utils/FrameworkDetector.spec.d.ts +2 -0
- package/lib/utils/FrameworkDetector.spec.d.ts.map +1 -0
- package/lib/utils/FrameworkDetector.spec.js +75 -0
- package/lib/utils/FrameworkDetector.spec.js.map +1 -0
- package/package.json +4 -2
- package/lib/extractors/StringLiteralExtractor.d.ts +0 -12
- package/lib/extractors/StringLiteralExtractor.d.ts.map +0 -1
- package/lib/extractors/StringLiteralExtractor.js +0 -21
- package/lib/extractors/StringLiteralExtractor.js.map +0 -1
- package/lib/services/ClassNameExtractionService.original.d.ts +0 -20
- package/lib/services/ClassNameExtractionService.original.d.ts.map +0 -1
- package/lib/services/ClassNameExtractionService.original.js +0 -48
- package/lib/services/ClassNameExtractionService.original.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TailwindConflictDetector.js","sourceRoot":"","sources":["../../src/infrastructure/TailwindConflictDetector.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TailwindConflictDetector.js","sourceRoot":"","sources":["../../src/infrastructure/TailwindConflictDetector.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,16 +7,6 @@ const fs_1 = __importDefault(require("fs"));
|
|
|
7
7
|
const os_1 = __importDefault(require("os"));
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
9
|
const TailwindValidator_1 = require("./TailwindValidator");
|
|
10
|
-
// Mock logger for testing
|
|
11
|
-
class MockLogger {
|
|
12
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
13
|
-
log(_message) {
|
|
14
|
-
// Silent during tests
|
|
15
|
-
}
|
|
16
|
-
isEnabled() {
|
|
17
|
-
return false;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
10
|
describe('TailwindValidator - CSS Variables', () => {
|
|
21
11
|
let validator;
|
|
22
12
|
let tempCssFile;
|
|
@@ -25,7 +15,7 @@ describe('TailwindValidator - CSS Variables', () => {
|
|
|
25
15
|
const tempDir = fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'tailwind-test-'));
|
|
26
16
|
tempCssFile = path_1.default.join(tempDir, 'global.css');
|
|
27
17
|
fs_1.default.writeFileSync(tempCssFile, '@import "tailwindcss";');
|
|
28
|
-
validator = new TailwindValidator_1.TailwindValidator(tempCssFile
|
|
18
|
+
validator = new TailwindValidator_1.TailwindValidator(tempCssFile);
|
|
29
19
|
await validator.initialize();
|
|
30
20
|
});
|
|
31
21
|
describe('CSS variable definitions', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TailwindValidator.css-vars.spec.js","sourceRoot":"","sources":["../../src/infrastructure/TailwindValidator.css-vars.spec.ts"],"names":[],"mappings":";;;;;AAAA,4CAAoB;AACpB,4CAAoB;AACpB,gDAAwB;
|
|
1
|
+
{"version":3,"file":"TailwindValidator.css-vars.spec.js","sourceRoot":"","sources":["../../src/infrastructure/TailwindValidator.css-vars.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { IClassNameValidator } from '../core/interfaces';
|
|
2
|
-
import { Logger } from '../utils/Logger';
|
|
3
2
|
/**
|
|
4
3
|
* Class validator for Tailwind CSS v4
|
|
5
4
|
* This loads the design system once and caches it for validation
|
|
@@ -9,10 +8,10 @@ export declare class TailwindValidator implements IClassNameValidator {
|
|
|
9
8
|
private classSet;
|
|
10
9
|
private designSystem;
|
|
11
10
|
private cssFilePath;
|
|
12
|
-
private logger;
|
|
13
11
|
private validationCache;
|
|
14
12
|
private allowedClasses;
|
|
15
|
-
|
|
13
|
+
private allowedPatterns;
|
|
14
|
+
constructor(cssFilePath: string);
|
|
16
15
|
/**
|
|
17
16
|
* Load the design system and cache the class list
|
|
18
17
|
*/
|
|
@@ -20,8 +19,16 @@ export declare class TailwindValidator implements IClassNameValidator {
|
|
|
20
19
|
isInitialized(): boolean;
|
|
21
20
|
/**
|
|
22
21
|
* Set custom allowed classes from configuration
|
|
22
|
+
* Supports exact matches and wildcard patterns:
|
|
23
|
+
* - "custom-*" matches anything starting with "custom-"
|
|
24
|
+
* - "*-icon" matches anything ending with "-icon"
|
|
25
|
+
* - "*-component-*" matches anything containing "-component-"
|
|
23
26
|
*/
|
|
24
27
|
setAllowedClasses(allowedClasses: string[]): void;
|
|
28
|
+
/**
|
|
29
|
+
* Check if a class name matches any allowed pattern
|
|
30
|
+
*/
|
|
31
|
+
private matchesAllowedPattern;
|
|
25
32
|
/**
|
|
26
33
|
* Check if a class name is valid
|
|
27
34
|
* This handles both static classes and arbitrary values (e.g., w-[100px])
|
|
@@ -58,5 +65,11 @@ export declare class TailwindValidator implements IClassNameValidator {
|
|
|
58
65
|
* Get all valid class names (for completions or other purposes)
|
|
59
66
|
*/
|
|
60
67
|
getAllClasses(): string[];
|
|
68
|
+
/**
|
|
69
|
+
* Get the generated CSS for a list of class names.
|
|
70
|
+
* Uses Tailwind's candidatesToCss to generate the actual CSS output.
|
|
71
|
+
* Returns an array of CSS strings (or null for invalid classes) in the same order as input.
|
|
72
|
+
*/
|
|
73
|
+
getCssForClasses(classNames: string[]): (string | null)[];
|
|
61
74
|
}
|
|
62
75
|
//# sourceMappingURL=TailwindValidator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TailwindValidator.d.ts","sourceRoot":"","sources":["../../src/infrastructure/TailwindValidator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"TailwindValidator.d.ts","sourceRoot":"","sources":["../../src/infrastructure/TailwindValidator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAuBzD;;;;GAIG;AACH,qBAAa,iBAAkB,YAAW,mBAAmB;IAC5D,OAAO,CAAC,QAAQ,CAA4B;IAE5C,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,eAAe,CAAoC;IAC3D,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,eAAe,CAA0E;gBAErF,WAAW,EAAE,MAAM;IAK/B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA2DjC,aAAa,IAAI,OAAO;IAIxB;;;;;;OAMG;IACH,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,IAAI;IA8BjD;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAiB7B;;;;OAIG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IA0CxC;;;OAGG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAiEjD;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAM7B;;OAEG;IACH,aAAa,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAOlD;;;OAGG;IACH,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,GAAE,MAAU,GAAG,MAAM,EAAE;IAwB7E;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA4B3B;;OAEG;IACH,aAAa,IAAI,MAAM,EAAE;IAOzB;;;;OAIG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE;CAWzD"}
|
|
@@ -13,11 +13,11 @@ const PerformanceCache_1 = require("../services/PerformanceCache");
|
|
|
13
13
|
* Implements IClassNameValidator for dependency inversion
|
|
14
14
|
*/
|
|
15
15
|
class TailwindValidator {
|
|
16
|
-
constructor(cssFilePath
|
|
16
|
+
constructor(cssFilePath) {
|
|
17
17
|
this.classSet = null;
|
|
18
18
|
this.allowedClasses = new Set();
|
|
19
|
+
this.allowedPatterns = [];
|
|
19
20
|
this.cssFilePath = cssFilePath;
|
|
20
|
-
this.logger = logger;
|
|
21
21
|
this.validationCache = new PerformanceCache_1.PerformanceCache(2000);
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
@@ -27,7 +27,6 @@ class TailwindValidator {
|
|
|
27
27
|
if (this.classSet !== null) {
|
|
28
28
|
return; // Already initialized
|
|
29
29
|
}
|
|
30
|
-
this.logger.log(`[TailwindValidator] Loading design system from: ${this.cssFilePath}`);
|
|
31
30
|
try {
|
|
32
31
|
// Load the design system with full API access
|
|
33
32
|
const tailwindcss = require('tailwindcss');
|
|
@@ -54,8 +53,7 @@ class TailwindValidator {
|
|
|
54
53
|
content: fs_1.default.readFileSync(resolvedPath, 'utf-8')
|
|
55
54
|
};
|
|
56
55
|
}
|
|
57
|
-
catch
|
|
58
|
-
this.logger.log(`[TailwindValidator] Failed to load stylesheet: ${err}`);
|
|
56
|
+
catch {
|
|
59
57
|
return { base, content: '' };
|
|
60
58
|
}
|
|
61
59
|
},
|
|
@@ -65,8 +63,7 @@ class TailwindValidator {
|
|
|
65
63
|
const module = require(resolvedPath);
|
|
66
64
|
return { base: path_1.default.dirname(resolvedPath), module };
|
|
67
65
|
}
|
|
68
|
-
catch
|
|
69
|
-
this.logger.log(`[TailwindValidator] Failed to load module: ${err}`);
|
|
66
|
+
catch {
|
|
70
67
|
if (resourceType === 'config') {
|
|
71
68
|
return { base, module: {} };
|
|
72
69
|
}
|
|
@@ -80,7 +77,6 @@ class TailwindValidator {
|
|
|
80
77
|
this.classSet = new Set(this.designSystem.getClassList().map(([className]) => className));
|
|
81
78
|
}
|
|
82
79
|
catch (error) {
|
|
83
|
-
this.logger.log(`[TailwindValidator] Failed to load design system: ${error}`);
|
|
84
80
|
throw error;
|
|
85
81
|
}
|
|
86
82
|
}
|
|
@@ -89,14 +85,60 @@ class TailwindValidator {
|
|
|
89
85
|
}
|
|
90
86
|
/**
|
|
91
87
|
* Set custom allowed classes from configuration
|
|
88
|
+
* Supports exact matches and wildcard patterns:
|
|
89
|
+
* - "custom-*" matches anything starting with "custom-"
|
|
90
|
+
* - "*-icon" matches anything ending with "-icon"
|
|
91
|
+
* - "*-component-*" matches anything containing "-component-"
|
|
92
92
|
*/
|
|
93
93
|
setAllowedClasses(allowedClasses) {
|
|
94
|
-
|
|
94
|
+
const exactClasses = [];
|
|
95
|
+
const patterns = [];
|
|
96
|
+
for (const entry of allowedClasses) {
|
|
97
|
+
const startsWithWildcard = entry.startsWith('*');
|
|
98
|
+
const endsWithWildcard = entry.endsWith('*');
|
|
99
|
+
if (startsWithWildcard && endsWithWildcard && entry.length > 2) {
|
|
100
|
+
// *something* -> contains match
|
|
101
|
+
patterns.push({ pattern: entry.slice(1, -1), type: 'contains' });
|
|
102
|
+
}
|
|
103
|
+
else if (endsWithWildcard && entry.length > 1) {
|
|
104
|
+
// something* -> prefix match
|
|
105
|
+
patterns.push({ pattern: entry.slice(0, -1), type: 'prefix' });
|
|
106
|
+
}
|
|
107
|
+
else if (startsWithWildcard && entry.length > 1) {
|
|
108
|
+
// *something -> suffix match
|
|
109
|
+
patterns.push({ pattern: entry.slice(1), type: 'suffix' });
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
// Exact match (including lone "*" which we treat as exact)
|
|
113
|
+
exactClasses.push(entry);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
this.allowedClasses = new Set(exactClasses);
|
|
117
|
+
this.allowedPatterns = patterns;
|
|
95
118
|
// Clear cache when allowed classes change
|
|
96
119
|
this.validationCache.clear();
|
|
97
|
-
|
|
98
|
-
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Check if a class name matches any allowed pattern
|
|
123
|
+
*/
|
|
124
|
+
matchesAllowedPattern(className) {
|
|
125
|
+
for (const { pattern, type } of this.allowedPatterns) {
|
|
126
|
+
switch (type) {
|
|
127
|
+
case 'prefix':
|
|
128
|
+
if (className.startsWith(pattern))
|
|
129
|
+
return true;
|
|
130
|
+
break;
|
|
131
|
+
case 'suffix':
|
|
132
|
+
if (className.endsWith(pattern))
|
|
133
|
+
return true;
|
|
134
|
+
break;
|
|
135
|
+
case 'contains':
|
|
136
|
+
if (className.includes(pattern))
|
|
137
|
+
return true;
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
99
140
|
}
|
|
141
|
+
return false;
|
|
100
142
|
}
|
|
101
143
|
/**
|
|
102
144
|
* Check if a class name is valid
|
|
@@ -105,8 +147,6 @@ class TailwindValidator {
|
|
|
105
147
|
*/
|
|
106
148
|
isValidClass(className) {
|
|
107
149
|
if (!this.classSet || !this.designSystem) {
|
|
108
|
-
// Only log if logging is enabled (checked internally by logger)
|
|
109
|
-
this.logger.log('[TailwindValidator] Validator not initialized. Call initialize() first.');
|
|
110
150
|
return true; // Assume valid if not initialized
|
|
111
151
|
}
|
|
112
152
|
// PERFORMANCE: Check cache first (fastest path)
|
|
@@ -114,11 +154,16 @@ class TailwindValidator {
|
|
|
114
154
|
if (cached !== undefined) {
|
|
115
155
|
return cached;
|
|
116
156
|
}
|
|
117
|
-
// PERFORMANCE: Check custom allowed classes (fast path)
|
|
157
|
+
// PERFORMANCE: Check custom allowed classes (fast path - exact match)
|
|
118
158
|
if (this.allowedClasses.has(className)) {
|
|
119
159
|
this.validationCache.set(className, true);
|
|
120
160
|
return true;
|
|
121
161
|
}
|
|
162
|
+
// Check allowed patterns (slightly slower path)
|
|
163
|
+
if (this.allowedPatterns.length > 0 && this.matchesAllowedPattern(className)) {
|
|
164
|
+
this.validationCache.set(className, true);
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
122
167
|
// PERFORMANCE: Check static class list (fast path)
|
|
123
168
|
if (this.classSet.has(className)) {
|
|
124
169
|
this.validationCache.set(className, true);
|
|
@@ -132,11 +177,7 @@ class TailwindValidator {
|
|
|
132
177
|
this.validationCache.set(className, isValid);
|
|
133
178
|
return isValid;
|
|
134
179
|
}
|
|
135
|
-
catch
|
|
136
|
-
// PERFORMANCE: Only log errors if enabled
|
|
137
|
-
if (this.logger.isEnabled()) {
|
|
138
|
-
this.logger.log(`[TailwindValidator] Failed to check class: ${err}`);
|
|
139
|
-
}
|
|
180
|
+
catch {
|
|
140
181
|
this.validationCache.set(className, false);
|
|
141
182
|
return false;
|
|
142
183
|
}
|
|
@@ -161,11 +202,16 @@ class TailwindValidator {
|
|
|
161
202
|
}
|
|
162
203
|
continue;
|
|
163
204
|
}
|
|
164
|
-
// Check allowed classes
|
|
205
|
+
// Check allowed classes (exact match)
|
|
165
206
|
if (this.allowedClasses.has(className)) {
|
|
166
207
|
this.validationCache.set(className, true);
|
|
167
208
|
continue;
|
|
168
209
|
}
|
|
210
|
+
// Check allowed patterns
|
|
211
|
+
if (this.allowedPatterns.length > 0 && this.matchesAllowedPattern(className)) {
|
|
212
|
+
this.validationCache.set(className, true);
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
169
215
|
// Check static class list
|
|
170
216
|
if (this.classSet.has(className)) {
|
|
171
217
|
this.validationCache.set(className, true);
|
|
@@ -187,10 +233,7 @@ class TailwindValidator {
|
|
|
187
233
|
}
|
|
188
234
|
}
|
|
189
235
|
}
|
|
190
|
-
catch
|
|
191
|
-
if (this.logger.isEnabled()) {
|
|
192
|
-
this.logger.log(`[TailwindValidator] Failed to batch validate: ${err}`);
|
|
193
|
-
}
|
|
236
|
+
catch {
|
|
194
237
|
// On error, mark all as invalid
|
|
195
238
|
for (const className of uncachedArbitraryValues) {
|
|
196
239
|
this.validationCache.set(className, false);
|
|
@@ -276,6 +319,22 @@ class TailwindValidator {
|
|
|
276
319
|
}
|
|
277
320
|
return Array.from(this.classSet);
|
|
278
321
|
}
|
|
322
|
+
/**
|
|
323
|
+
* Get the generated CSS for a list of class names.
|
|
324
|
+
* Uses Tailwind's candidatesToCss to generate the actual CSS output.
|
|
325
|
+
* Returns an array of CSS strings (or null for invalid classes) in the same order as input.
|
|
326
|
+
*/
|
|
327
|
+
getCssForClasses(classNames) {
|
|
328
|
+
if (!this.designSystem) {
|
|
329
|
+
return classNames.map(() => null);
|
|
330
|
+
}
|
|
331
|
+
try {
|
|
332
|
+
return this.designSystem.candidatesToCss(classNames);
|
|
333
|
+
}
|
|
334
|
+
catch {
|
|
335
|
+
return classNames.map(() => null);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
279
338
|
}
|
|
280
339
|
exports.TailwindValidator = TailwindValidator;
|
|
281
340
|
//# sourceMappingURL=TailwindValidator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TailwindValidator.js","sourceRoot":"","sources":["../../src/infrastructure/TailwindValidator.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AAGxB,mEAAgE;
|
|
1
|
+
{"version":3,"file":"TailwindValidator.js","sourceRoot":"","sources":["../../src/infrastructure/TailwindValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,16 +7,6 @@ const fs_1 = __importDefault(require("fs"));
|
|
|
7
7
|
const os_1 = __importDefault(require("os"));
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
9
|
const TailwindValidator_1 = require("./TailwindValidator");
|
|
10
|
-
// Mock logger for testing
|
|
11
|
-
class MockLogger {
|
|
12
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
13
|
-
log(_message) {
|
|
14
|
-
// Silent during tests
|
|
15
|
-
}
|
|
16
|
-
isEnabled() {
|
|
17
|
-
return false;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
10
|
describe('TailwindValidator', () => {
|
|
21
11
|
let validator;
|
|
22
12
|
let tempCssFile;
|
|
@@ -25,7 +15,7 @@ describe('TailwindValidator', () => {
|
|
|
25
15
|
const tempDir = fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'tailwind-test-'));
|
|
26
16
|
tempCssFile = path_1.default.join(tempDir, 'global.css');
|
|
27
17
|
fs_1.default.writeFileSync(tempCssFile, '@import "tailwindcss";');
|
|
28
|
-
validator = new TailwindValidator_1.TailwindValidator(tempCssFile
|
|
18
|
+
validator = new TailwindValidator_1.TailwindValidator(tempCssFile);
|
|
29
19
|
await validator.initialize();
|
|
30
20
|
});
|
|
31
21
|
describe('initialization', () => {
|
|
@@ -132,7 +122,7 @@ describe('TailwindValidator', () => {
|
|
|
132
122
|
--color-custom-blue: oklch(0.5 0.2 240);
|
|
133
123
|
}`;
|
|
134
124
|
fs_1.default.writeFileSync(customCssFile, cssContent);
|
|
135
|
-
customValidator = new TailwindValidator_1.TailwindValidator(customCssFile
|
|
125
|
+
customValidator = new TailwindValidator_1.TailwindValidator(customCssFile);
|
|
136
126
|
await customValidator.initialize();
|
|
137
127
|
});
|
|
138
128
|
it('should validate custom background colors', () => {
|
|
@@ -241,6 +231,49 @@ describe('TailwindValidator', () => {
|
|
|
241
231
|
expect(validator.isValidClass('flex')).toBe(true);
|
|
242
232
|
expect(validator.isValidClass('custom-class')).toBe(false);
|
|
243
233
|
});
|
|
234
|
+
it('should support prefix wildcard patterns (custom-*)', () => {
|
|
235
|
+
validator.setAllowedClasses(['custom-*']);
|
|
236
|
+
expect(validator.isValidClass('custom-button')).toBe(true);
|
|
237
|
+
expect(validator.isValidClass('custom-card')).toBe(true);
|
|
238
|
+
expect(validator.isValidClass('custom-')).toBe(true);
|
|
239
|
+
expect(validator.isValidClass('mycustom-button')).toBe(false);
|
|
240
|
+
expect(validator.isValidClass('not-matching')).toBe(false);
|
|
241
|
+
});
|
|
242
|
+
it('should support suffix wildcard patterns (*-icon)', () => {
|
|
243
|
+
validator.setAllowedClasses(['*-icon']);
|
|
244
|
+
expect(validator.isValidClass('arrow-icon')).toBe(true);
|
|
245
|
+
expect(validator.isValidClass('close-icon')).toBe(true);
|
|
246
|
+
expect(validator.isValidClass('-icon')).toBe(true);
|
|
247
|
+
expect(validator.isValidClass('arrow-icons')).toBe(false);
|
|
248
|
+
expect(validator.isValidClass('icon-arrow')).toBe(false);
|
|
249
|
+
});
|
|
250
|
+
it('should support contains wildcard patterns (*-component-*)', () => {
|
|
251
|
+
validator.setAllowedClasses(['*-component-*']);
|
|
252
|
+
expect(validator.isValidClass('app-component-header')).toBe(true);
|
|
253
|
+
expect(validator.isValidClass('main-component-footer')).toBe(true);
|
|
254
|
+
expect(validator.isValidClass('-component-')).toBe(true);
|
|
255
|
+
expect(validator.isValidClass('component-header')).toBe(false);
|
|
256
|
+
expect(validator.isValidClass('app-component')).toBe(false);
|
|
257
|
+
});
|
|
258
|
+
it('should support mixed exact and pattern classes', () => {
|
|
259
|
+
validator.setAllowedClasses(['exact-match', 'custom-*', '*-icon']);
|
|
260
|
+
expect(validator.isValidClass('exact-match')).toBe(true);
|
|
261
|
+
expect(validator.isValidClass('custom-button')).toBe(true);
|
|
262
|
+
expect(validator.isValidClass('arrow-icon')).toBe(true);
|
|
263
|
+
expect(validator.isValidClass('exact-match-extra')).toBe(false);
|
|
264
|
+
expect(validator.isValidClass('unknown')).toBe(false);
|
|
265
|
+
});
|
|
266
|
+
it('should treat lone * as exact match', () => {
|
|
267
|
+
validator.setAllowedClasses(['*']);
|
|
268
|
+
expect(validator.isValidClass('*')).toBe(true);
|
|
269
|
+
expect(validator.isValidClass('anything')).toBe(false);
|
|
270
|
+
});
|
|
271
|
+
it('should work with getInvalidClasses and patterns', () => {
|
|
272
|
+
validator.setAllowedClasses(['custom-*', '*-icon']);
|
|
273
|
+
const classes = ['custom-btn', 'arrow-icon', 'invalid-one', 'flex'];
|
|
274
|
+
const invalid = validator.getInvalidClasses(classes);
|
|
275
|
+
expect(invalid).toEqual(['invalid-one']);
|
|
276
|
+
});
|
|
244
277
|
});
|
|
245
278
|
describe('reload', () => {
|
|
246
279
|
it('should reload the design system', async () => {
|
|
@@ -250,6 +283,157 @@ describe('TailwindValidator', () => {
|
|
|
250
283
|
expect(wasBefore).toBe(true);
|
|
251
284
|
expect(isAfter).toBe(true);
|
|
252
285
|
});
|
|
286
|
+
it('should clear validation cache on reload', async () => {
|
|
287
|
+
// First, validate a class to populate the cache
|
|
288
|
+
expect(validator.isValidClass('flex')).toBe(true);
|
|
289
|
+
const statsBefore = validator.getCacheStats();
|
|
290
|
+
expect(statsBefore.size).toBeGreaterThan(0);
|
|
291
|
+
// Reload should clear the cache
|
|
292
|
+
await validator.reload();
|
|
293
|
+
// Cache should be cleared after reload
|
|
294
|
+
const statsAfter = validator.getCacheStats();
|
|
295
|
+
expect(statsAfter.size).toBe(0);
|
|
296
|
+
});
|
|
297
|
+
it('should recognize new classes after reload with updated CSS', async () => {
|
|
298
|
+
// Create a new validator with a CSS file we can modify
|
|
299
|
+
const reloadTempDir = fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'tailwind-reload-'));
|
|
300
|
+
const reloadCssFile = path_1.default.join(reloadTempDir, 'reload-test.css');
|
|
301
|
+
// Start with basic Tailwind
|
|
302
|
+
fs_1.default.writeFileSync(reloadCssFile, '@import "tailwindcss";');
|
|
303
|
+
const reloadValidator = new TailwindValidator_1.TailwindValidator(reloadCssFile);
|
|
304
|
+
await reloadValidator.initialize();
|
|
305
|
+
// Custom class should be invalid initially
|
|
306
|
+
expect(reloadValidator.isValidClass('custom-reload-class')).toBe(false);
|
|
307
|
+
// Update CSS to add custom utility
|
|
308
|
+
fs_1.default.writeFileSync(reloadCssFile, `@import "tailwindcss";
|
|
309
|
+
|
|
310
|
+
@utility custom-reload-class {
|
|
311
|
+
display: flex;
|
|
312
|
+
align-items: center;
|
|
313
|
+
}`);
|
|
314
|
+
// Reload the validator
|
|
315
|
+
await reloadValidator.reload();
|
|
316
|
+
// Now the custom class should be valid
|
|
317
|
+
expect(reloadValidator.isValidClass('custom-reload-class')).toBe(true);
|
|
318
|
+
// Clean up
|
|
319
|
+
fs_1.default.rmSync(reloadTempDir, { recursive: true });
|
|
320
|
+
});
|
|
321
|
+
it('should recognize new theme colors after reload', async () => {
|
|
322
|
+
// Create a new validator with a CSS file we can modify
|
|
323
|
+
const reloadTempDir = fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'tailwind-theme-reload-'));
|
|
324
|
+
const reloadCssFile = path_1.default.join(reloadTempDir, 'theme-reload-test.css');
|
|
325
|
+
// Start with basic Tailwind
|
|
326
|
+
fs_1.default.writeFileSync(reloadCssFile, '@import "tailwindcss";');
|
|
327
|
+
const reloadValidator = new TailwindValidator_1.TailwindValidator(reloadCssFile);
|
|
328
|
+
await reloadValidator.initialize();
|
|
329
|
+
// Custom color should be invalid initially
|
|
330
|
+
expect(reloadValidator.isValidClass('bg-pepe')).toBe(false);
|
|
331
|
+
expect(reloadValidator.isValidClass('text-pepe')).toBe(false);
|
|
332
|
+
// Update CSS to add custom theme color (Tailwind v4 syntax)
|
|
333
|
+
fs_1.default.writeFileSync(reloadCssFile, `@import "tailwindcss";
|
|
334
|
+
|
|
335
|
+
@theme {
|
|
336
|
+
--color-pepe: #ff0000;
|
|
337
|
+
}`);
|
|
338
|
+
// Reload the validator
|
|
339
|
+
await reloadValidator.reload();
|
|
340
|
+
// Now the custom color classes should be valid
|
|
341
|
+
expect(reloadValidator.isValidClass('bg-pepe')).toBe(true);
|
|
342
|
+
expect(reloadValidator.isValidClass('text-pepe')).toBe(true);
|
|
343
|
+
expect(reloadValidator.isValidClass('border-pepe')).toBe(true);
|
|
344
|
+
// Clean up
|
|
345
|
+
fs_1.default.rmSync(reloadTempDir, { recursive: true });
|
|
346
|
+
});
|
|
347
|
+
it('should handle multiple reloads correctly', async () => {
|
|
348
|
+
// Create a new validator with a CSS file we can modify
|
|
349
|
+
const reloadTempDir = fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'tailwind-multi-reload-'));
|
|
350
|
+
const reloadCssFile = path_1.default.join(reloadTempDir, 'multi-reload-test.css');
|
|
351
|
+
// Start with basic Tailwind
|
|
352
|
+
fs_1.default.writeFileSync(reloadCssFile, '@import "tailwindcss";');
|
|
353
|
+
const reloadValidator = new TailwindValidator_1.TailwindValidator(reloadCssFile);
|
|
354
|
+
await reloadValidator.initialize();
|
|
355
|
+
// First reload: add custom-class-1
|
|
356
|
+
fs_1.default.writeFileSync(reloadCssFile, `@import "tailwindcss";
|
|
357
|
+
|
|
358
|
+
@utility custom-class-1 {
|
|
359
|
+
display: flex;
|
|
360
|
+
}`);
|
|
361
|
+
await reloadValidator.reload();
|
|
362
|
+
expect(reloadValidator.isValidClass('custom-class-1')).toBe(true);
|
|
363
|
+
expect(reloadValidator.isValidClass('custom-class-2')).toBe(false);
|
|
364
|
+
// Second reload: add custom-class-2, keep custom-class-1
|
|
365
|
+
fs_1.default.writeFileSync(reloadCssFile, `@import "tailwindcss";
|
|
366
|
+
|
|
367
|
+
@utility custom-class-1 {
|
|
368
|
+
display: flex;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
@utility custom-class-2 {
|
|
372
|
+
display: grid;
|
|
373
|
+
}`);
|
|
374
|
+
await reloadValidator.reload();
|
|
375
|
+
expect(reloadValidator.isValidClass('custom-class-1')).toBe(true);
|
|
376
|
+
expect(reloadValidator.isValidClass('custom-class-2')).toBe(true);
|
|
377
|
+
// Third reload: remove custom-class-1, keep custom-class-2
|
|
378
|
+
fs_1.default.writeFileSync(reloadCssFile, `@import "tailwindcss";
|
|
379
|
+
|
|
380
|
+
@utility custom-class-2 {
|
|
381
|
+
display: grid;
|
|
382
|
+
}`);
|
|
383
|
+
await reloadValidator.reload();
|
|
384
|
+
expect(reloadValidator.isValidClass('custom-class-1')).toBe(false);
|
|
385
|
+
expect(reloadValidator.isValidClass('custom-class-2')).toBe(true);
|
|
386
|
+
// Clean up
|
|
387
|
+
fs_1.default.rmSync(reloadTempDir, { recursive: true });
|
|
388
|
+
});
|
|
389
|
+
it('should preserve standard Tailwind classes after reload', async () => {
|
|
390
|
+
// Create a new validator
|
|
391
|
+
const reloadTempDir = fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'tailwind-preserve-'));
|
|
392
|
+
const reloadCssFile = path_1.default.join(reloadTempDir, 'preserve-test.css');
|
|
393
|
+
fs_1.default.writeFileSync(reloadCssFile, '@import "tailwindcss";');
|
|
394
|
+
const reloadValidator = new TailwindValidator_1.TailwindValidator(reloadCssFile);
|
|
395
|
+
await reloadValidator.initialize();
|
|
396
|
+
// Standard classes should be valid
|
|
397
|
+
expect(reloadValidator.isValidClass('flex')).toBe(true);
|
|
398
|
+
expect(reloadValidator.isValidClass('items-center')).toBe(true);
|
|
399
|
+
expect(reloadValidator.isValidClass('bg-blue-500')).toBe(true);
|
|
400
|
+
// Reload
|
|
401
|
+
await reloadValidator.reload();
|
|
402
|
+
// Standard classes should still be valid
|
|
403
|
+
expect(reloadValidator.isValidClass('flex')).toBe(true);
|
|
404
|
+
expect(reloadValidator.isValidClass('items-center')).toBe(true);
|
|
405
|
+
expect(reloadValidator.isValidClass('bg-blue-500')).toBe(true);
|
|
406
|
+
// Clean up
|
|
407
|
+
fs_1.default.rmSync(reloadTempDir, { recursive: true });
|
|
408
|
+
});
|
|
409
|
+
it('should work with getInvalidClasses after reload', async () => {
|
|
410
|
+
// Create a new validator
|
|
411
|
+
const reloadTempDir = fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'tailwind-invalid-reload-'));
|
|
412
|
+
const reloadCssFile = path_1.default.join(reloadTempDir, 'invalid-reload-test.css');
|
|
413
|
+
fs_1.default.writeFileSync(reloadCssFile, '@import "tailwindcss";');
|
|
414
|
+
const reloadValidator = new TailwindValidator_1.TailwindValidator(reloadCssFile);
|
|
415
|
+
await reloadValidator.initialize();
|
|
416
|
+
// Before reload: custom-valid should be invalid
|
|
417
|
+
let invalidClasses = reloadValidator.getInvalidClasses([
|
|
418
|
+
'flex',
|
|
419
|
+
'custom-valid',
|
|
420
|
+
'items-center'
|
|
421
|
+
]);
|
|
422
|
+
expect(invalidClasses).toContain('custom-valid');
|
|
423
|
+
// Add custom utility
|
|
424
|
+
fs_1.default.writeFileSync(reloadCssFile, `@import "tailwindcss";
|
|
425
|
+
|
|
426
|
+
@utility custom-valid {
|
|
427
|
+
display: block;
|
|
428
|
+
}`);
|
|
429
|
+
await reloadValidator.reload();
|
|
430
|
+
// After reload: custom-valid should be valid
|
|
431
|
+
invalidClasses = reloadValidator.getInvalidClasses(['flex', 'custom-valid', 'items-center']);
|
|
432
|
+
expect(invalidClasses).not.toContain('custom-valid');
|
|
433
|
+
expect(invalidClasses.length).toBe(0);
|
|
434
|
+
// Clean up
|
|
435
|
+
fs_1.default.rmSync(reloadTempDir, { recursive: true });
|
|
436
|
+
});
|
|
253
437
|
});
|
|
254
438
|
describe('getSimilarClasses', () => {
|
|
255
439
|
it('should suggest similar classes for typos', () => {
|