tailwind-typescript-plugin 0.0.2-beta.1 → 0.0.2-beta.10
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/README.md +83 -3
- package/lib/core/interfaces.d.ts +3 -0
- package/lib/core/interfaces.d.ts.map +1 -1
- package/lib/extractors/CvaExtractor.d.ts +2 -0
- package/lib/extractors/CvaExtractor.d.ts.map +1 -1
- package/lib/extractors/CvaExtractor.js +31 -1
- package/lib/extractors/CvaExtractor.js.map +1 -1
- package/lib/extractors/ExpressionExtractor.d.ts.map +1 -1
- package/lib/extractors/ExpressionExtractor.js +12 -0
- package/lib/extractors/ExpressionExtractor.js.map +1 -1
- package/lib/extractors/JsxAttributeExtractor.d.ts.map +1 -1
- package/lib/extractors/JsxAttributeExtractor.js +4 -1
- package/lib/extractors/JsxAttributeExtractor.js.map +1 -1
- package/lib/extractors/TailwindVariantsExtractor.d.ts +7 -1
- package/lib/extractors/TailwindVariantsExtractor.d.ts.map +1 -1
- package/lib/extractors/TailwindVariantsExtractor.js +38 -3
- package/lib/extractors/TailwindVariantsExtractor.js.map +1 -1
- package/lib/infrastructure/TailwindValidator.css-vars.spec.d.ts +2 -0
- package/lib/infrastructure/TailwindValidator.css-vars.spec.d.ts.map +1 -0
- package/lib/infrastructure/TailwindValidator.css-vars.spec.js +90 -0
- package/lib/infrastructure/TailwindValidator.css-vars.spec.js.map +1 -0
- package/lib/infrastructure/TailwindValidator.d.ts +7 -1
- package/lib/infrastructure/TailwindValidator.d.ts.map +1 -1
- package/lib/infrastructure/TailwindValidator.js +81 -11
- package/lib/infrastructure/TailwindValidator.js.map +1 -1
- package/lib/infrastructure/TailwindValidator.spec.js +36 -0
- package/lib/infrastructure/TailwindValidator.spec.js.map +1 -1
- package/lib/plugin/TailwindTypescriptPlugin.d.ts +2 -0
- package/lib/plugin/TailwindTypescriptPlugin.d.ts.map +1 -1
- package/lib/plugin/TailwindTypescriptPlugin.js +22 -1
- package/lib/plugin/TailwindTypescriptPlugin.js.map +1 -1
- package/lib/services/FileDiagnosticCache.d.ts +50 -0
- package/lib/services/FileDiagnosticCache.d.ts.map +1 -0
- package/lib/services/FileDiagnosticCache.js +87 -0
- package/lib/services/FileDiagnosticCache.js.map +1 -0
- package/lib/services/PluginConfigService.d.ts +5 -0
- package/lib/services/PluginConfigService.d.ts.map +1 -1
- package/lib/services/PluginConfigService.js +17 -0
- package/lib/services/PluginConfigService.js.map +1 -1
- package/lib/services/ValidationService.d.ts +2 -0
- package/lib/services/ValidationService.d.ts.map +1 -1
- package/lib/services/ValidationService.js +24 -14
- package/lib/services/ValidationService.js.map +1 -1
- package/lib/utils/Logger.d.ts +19 -1
- package/lib/utils/Logger.d.ts.map +1 -1
- package/lib/utils/Logger.js +30 -2
- package/lib/utils/Logger.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const fs_1 = __importDefault(require("fs"));
|
|
7
|
+
const os_1 = __importDefault(require("os"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
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
|
+
describe('TailwindValidator - CSS Variables', () => {
|
|
21
|
+
let validator;
|
|
22
|
+
let tempCssFile;
|
|
23
|
+
beforeAll(async () => {
|
|
24
|
+
// Create a temporary CSS file for testing
|
|
25
|
+
const tempDir = fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'tailwind-test-'));
|
|
26
|
+
tempCssFile = path_1.default.join(tempDir, 'global.css');
|
|
27
|
+
fs_1.default.writeFileSync(tempCssFile, '@import "tailwindcss";');
|
|
28
|
+
validator = new TailwindValidator_1.TailwindValidator(tempCssFile, new MockLogger());
|
|
29
|
+
await validator.initialize();
|
|
30
|
+
});
|
|
31
|
+
describe('CSS variable definitions', () => {
|
|
32
|
+
it('should validate CSS variable definition with color', () => {
|
|
33
|
+
expect(validator.isValidClass('[--card-bg:#1e293b]')).toBe(true);
|
|
34
|
+
});
|
|
35
|
+
it('should validate CSS variable definition with size', () => {
|
|
36
|
+
expect(validator.isValidClass('[--card-radius:16px]')).toBe(true);
|
|
37
|
+
});
|
|
38
|
+
it('should validate CSS variable definition with arbitrary name', () => {
|
|
39
|
+
expect(validator.isValidClass('[--my-custom-var:#ff0000]')).toBe(true);
|
|
40
|
+
});
|
|
41
|
+
it('should validate multiple CSS variable definitions', () => {
|
|
42
|
+
expect(validator.isValidClass('[--color-primary:#3b82f6]')).toBe(true);
|
|
43
|
+
expect(validator.isValidClass('[--color-secondary:#8b5cf6]')).toBe(true);
|
|
44
|
+
expect(validator.isValidClass('[--spacing:1rem]')).toBe(true);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
describe('CSS variable usage', () => {
|
|
48
|
+
it('should validate var() in background color', () => {
|
|
49
|
+
expect(validator.isValidClass('bg-[var(--card-bg)]')).toBe(true);
|
|
50
|
+
});
|
|
51
|
+
it('should validate var() in border radius', () => {
|
|
52
|
+
expect(validator.isValidClass('rounded-[var(--card-radius)]')).toBe(true);
|
|
53
|
+
});
|
|
54
|
+
it('should validate var() in text color', () => {
|
|
55
|
+
expect(validator.isValidClass('text-[var(--my-color)]')).toBe(true);
|
|
56
|
+
});
|
|
57
|
+
it('should validate var() in width', () => {
|
|
58
|
+
expect(validator.isValidClass('w-[var(--my-size)]')).toBe(true);
|
|
59
|
+
});
|
|
60
|
+
it('should validate var() in height', () => {
|
|
61
|
+
expect(validator.isValidClass('h-[var(--my-size)]')).toBe(true);
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
describe('combined CSS variables', () => {
|
|
65
|
+
it('should validate all classes from user example', () => {
|
|
66
|
+
const classes = [
|
|
67
|
+
'[--card-bg:#1e293b]',
|
|
68
|
+
'[--card-radius:16px]',
|
|
69
|
+
'bg-[var(--card-bg)]',
|
|
70
|
+
'rounded-[var(--card-radius)]',
|
|
71
|
+
'p-4'
|
|
72
|
+
];
|
|
73
|
+
classes.forEach(className => {
|
|
74
|
+
expect(validator.isValidClass(className)).toBe(true);
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
it('should have no invalid classes in combined example', () => {
|
|
78
|
+
const classes = [
|
|
79
|
+
'[--card-bg:#1e293b]',
|
|
80
|
+
'[--card-radius:16px]',
|
|
81
|
+
'bg-[var(--card-bg)]',
|
|
82
|
+
'rounded-[var(--card-radius)]',
|
|
83
|
+
'p-4'
|
|
84
|
+
];
|
|
85
|
+
const invalid = validator.getInvalidClasses(classes);
|
|
86
|
+
expect(invalid).toEqual([]);
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
//# sourceMappingURL=TailwindValidator.css-vars.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TailwindValidator.css-vars.spec.js","sourceRoot":"","sources":["../../src/infrastructure/TailwindValidator.css-vars.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,20 +11,26 @@ export declare class TailwindValidator implements IClassNameValidator {
|
|
|
11
11
|
private cssFilePath;
|
|
12
12
|
private logger;
|
|
13
13
|
private validationCache;
|
|
14
|
+
private allowedClasses;
|
|
14
15
|
constructor(cssFilePath: string, logger: Logger);
|
|
15
16
|
/**
|
|
16
17
|
* Load the design system and cache the class list
|
|
17
18
|
*/
|
|
18
19
|
initialize(): Promise<void>;
|
|
19
20
|
isInitialized(): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Set custom allowed classes from configuration
|
|
23
|
+
*/
|
|
24
|
+
setAllowedClasses(allowedClasses: string[]): void;
|
|
20
25
|
/**
|
|
21
26
|
* Check if a class name is valid
|
|
22
27
|
* This handles both static classes and arbitrary values (e.g., w-[100px])
|
|
23
|
-
*
|
|
28
|
+
* PERFORMANCE OPTIMIZED: Reduced logging, faster cache checks
|
|
24
29
|
*/
|
|
25
30
|
isValidClass(className: string): boolean;
|
|
26
31
|
/**
|
|
27
32
|
* Validate multiple class names and return invalid ones
|
|
33
|
+
* PERFORMANCE OPTIMIZED: Batch validation for arbitrary values
|
|
28
34
|
*/
|
|
29
35
|
getInvalidClasses(classNames: string[]): string[];
|
|
30
36
|
/**
|
|
@@ -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;AAEzD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAsBzC;;;;GAIG;AACH,qBAAa,iBAAkB,YAAW,mBAAmB;IAC5D,OAAO,CAAC,QAAQ,CAA4B;IAE5C,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,eAAe,CAAoC;
|
|
1
|
+
{"version":3,"file":"TailwindValidator.d.ts","sourceRoot":"","sources":["../../src/infrastructure/TailwindValidator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAsBzC;;;;GAIG;AACH,qBAAa,iBAAkB,YAAW,mBAAmB;IAC5D,OAAO,CAAC,QAAQ,CAA4B;IAE5C,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,eAAe,CAAoC;IAC3D,OAAO,CAAC,cAAc,CAA0B;gBAEpC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAM/C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgEjC,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,IAAI;IASjD;;;;OAIG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IA0CxC;;;OAGG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IA8DjD;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAM7B;;OAEG;IACH,aAAa,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;CAMlD"}
|
|
@@ -15,6 +15,7 @@ const PerformanceCache_1 = require("../services/PerformanceCache");
|
|
|
15
15
|
class TailwindValidator {
|
|
16
16
|
constructor(cssFilePath, logger) {
|
|
17
17
|
this.classSet = null;
|
|
18
|
+
this.allowedClasses = new Set();
|
|
18
19
|
this.cssFilePath = cssFilePath;
|
|
19
20
|
this.logger = logger;
|
|
20
21
|
this.validationCache = new PerformanceCache_1.PerformanceCache(2000);
|
|
@@ -86,49 +87,118 @@ class TailwindValidator {
|
|
|
86
87
|
isInitialized() {
|
|
87
88
|
return this.classSet !== null;
|
|
88
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* Set custom allowed classes from configuration
|
|
92
|
+
*/
|
|
93
|
+
setAllowedClasses(allowedClasses) {
|
|
94
|
+
this.allowedClasses = new Set(allowedClasses);
|
|
95
|
+
// Clear cache when allowed classes change
|
|
96
|
+
this.validationCache.clear();
|
|
97
|
+
if (allowedClasses.length > 0) {
|
|
98
|
+
this.logger.log(`[TailwindValidator] Set ${allowedClasses.length} custom allowed classes`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
89
101
|
/**
|
|
90
102
|
* Check if a class name is valid
|
|
91
103
|
* This handles both static classes and arbitrary values (e.g., w-[100px])
|
|
92
|
-
*
|
|
104
|
+
* PERFORMANCE OPTIMIZED: Reduced logging, faster cache checks
|
|
93
105
|
*/
|
|
94
106
|
isValidClass(className) {
|
|
95
107
|
if (!this.classSet || !this.designSystem) {
|
|
108
|
+
// Only log if logging is enabled (checked internally by logger)
|
|
96
109
|
this.logger.log('[TailwindValidator] Validator not initialized. Call initialize() first.');
|
|
97
110
|
return true; // Assume valid if not initialized
|
|
98
111
|
}
|
|
99
|
-
// Check cache first (
|
|
100
|
-
|
|
101
|
-
|
|
112
|
+
// PERFORMANCE: Check cache first (fastest path)
|
|
113
|
+
const cached = this.validationCache.get(className);
|
|
114
|
+
if (cached !== undefined) {
|
|
115
|
+
return cached;
|
|
102
116
|
}
|
|
103
|
-
//
|
|
117
|
+
// PERFORMANCE: Check custom allowed classes (fast path)
|
|
118
|
+
if (this.allowedClasses.has(className)) {
|
|
119
|
+
this.validationCache.set(className, true);
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
// PERFORMANCE: Check static class list (fast path)
|
|
104
123
|
if (this.classSet.has(className)) {
|
|
105
124
|
this.validationCache.set(className, true);
|
|
106
125
|
return true;
|
|
107
126
|
}
|
|
108
|
-
//
|
|
127
|
+
// Arbitrary value validation (slower path)
|
|
109
128
|
// Use the design system to check if it generates valid CSS
|
|
110
129
|
try {
|
|
111
130
|
const result = this.designSystem.candidatesToCss([className]);
|
|
112
|
-
// If candidatesToCss returns a non-null value, the class is valid
|
|
113
131
|
const isValid = result[0] !== null;
|
|
114
132
|
this.validationCache.set(className, isValid);
|
|
115
133
|
return isValid;
|
|
116
134
|
}
|
|
117
135
|
catch (err) {
|
|
118
|
-
|
|
119
|
-
|
|
136
|
+
// PERFORMANCE: Only log errors if enabled
|
|
137
|
+
if (this.logger.isEnabled()) {
|
|
138
|
+
this.logger.log(`[TailwindValidator] Failed to check class: ${err}`);
|
|
139
|
+
}
|
|
120
140
|
this.validationCache.set(className, false);
|
|
121
141
|
return false;
|
|
122
142
|
}
|
|
123
143
|
}
|
|
124
144
|
/**
|
|
125
145
|
* Validate multiple class names and return invalid ones
|
|
146
|
+
* PERFORMANCE OPTIMIZED: Batch validation for arbitrary values
|
|
126
147
|
*/
|
|
127
148
|
getInvalidClasses(classNames) {
|
|
128
|
-
if (!this.classSet) {
|
|
149
|
+
if (!this.classSet || !this.designSystem) {
|
|
129
150
|
return [];
|
|
130
151
|
}
|
|
131
|
-
|
|
152
|
+
// PERFORMANCE: Separate classes into categories for efficient batch processing
|
|
153
|
+
const invalidClasses = [];
|
|
154
|
+
const uncachedArbitraryValues = [];
|
|
155
|
+
for (const className of classNames) {
|
|
156
|
+
// Check cache first
|
|
157
|
+
const cached = this.validationCache.get(className);
|
|
158
|
+
if (cached !== undefined) {
|
|
159
|
+
if (!cached) {
|
|
160
|
+
invalidClasses.push(className);
|
|
161
|
+
}
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
// Check allowed classes
|
|
165
|
+
if (this.allowedClasses.has(className)) {
|
|
166
|
+
this.validationCache.set(className, true);
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
// Check static class list
|
|
170
|
+
if (this.classSet.has(className)) {
|
|
171
|
+
this.validationCache.set(className, true);
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
// Needs arbitrary value validation
|
|
175
|
+
uncachedArbitraryValues.push(className);
|
|
176
|
+
}
|
|
177
|
+
// PERFORMANCE: Batch validate arbitrary values if any exist
|
|
178
|
+
if (uncachedArbitraryValues.length > 0) {
|
|
179
|
+
try {
|
|
180
|
+
const results = this.designSystem.candidatesToCss(uncachedArbitraryValues);
|
|
181
|
+
for (let i = 0; i < uncachedArbitraryValues.length; i++) {
|
|
182
|
+
const className = uncachedArbitraryValues[i];
|
|
183
|
+
const isValid = results[i] !== null;
|
|
184
|
+
this.validationCache.set(className, isValid);
|
|
185
|
+
if (!isValid) {
|
|
186
|
+
invalidClasses.push(className);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
catch (err) {
|
|
191
|
+
if (this.logger.isEnabled()) {
|
|
192
|
+
this.logger.log(`[TailwindValidator] Failed to batch validate: ${err}`);
|
|
193
|
+
}
|
|
194
|
+
// On error, mark all as invalid
|
|
195
|
+
for (const className of uncachedArbitraryValues) {
|
|
196
|
+
this.validationCache.set(className, false);
|
|
197
|
+
invalidClasses.push(className);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return invalidClasses;
|
|
132
202
|
}
|
|
133
203
|
/**
|
|
134
204
|
* Reload the design system (useful when CSS file changes)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TailwindValidator.js","sourceRoot":"","sources":["../../src/infrastructure/TailwindValidator.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AAGxB,mEAAgE;AAuBhE;;;;GAIG;AACH,MAAa,iBAAiB;
|
|
1
|
+
{"version":3,"file":"TailwindValidator.js","sourceRoot":"","sources":["../../src/infrastructure/TailwindValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,9 @@ class MockLogger {
|
|
|
13
13
|
log(_message) {
|
|
14
14
|
// Silent during tests
|
|
15
15
|
}
|
|
16
|
+
isEnabled() {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
16
19
|
}
|
|
17
20
|
describe('TailwindValidator', () => {
|
|
18
21
|
let validator;
|
|
@@ -206,6 +209,39 @@ describe('TailwindValidator', () => {
|
|
|
206
209
|
expect(invalid).toEqual([]);
|
|
207
210
|
});
|
|
208
211
|
});
|
|
212
|
+
describe('setAllowedClasses', () => {
|
|
213
|
+
it('should allow custom classes when set', () => {
|
|
214
|
+
validator.setAllowedClasses(['my-custom-class', 'another-custom']);
|
|
215
|
+
expect(validator.isValidClass('my-custom-class')).toBe(true);
|
|
216
|
+
expect(validator.isValidClass('another-custom')).toBe(true);
|
|
217
|
+
});
|
|
218
|
+
it('should allow custom classes alongside Tailwind classes', () => {
|
|
219
|
+
validator.setAllowedClasses(['custom-button', 'custom-input']);
|
|
220
|
+
expect(validator.isValidClass('custom-button')).toBe(true);
|
|
221
|
+
expect(validator.isValidClass('flex')).toBe(true);
|
|
222
|
+
expect(validator.isValidClass('bg-blue-500')).toBe(true);
|
|
223
|
+
expect(validator.isValidClass('invalid-class')).toBe(false);
|
|
224
|
+
});
|
|
225
|
+
it('should clear validation cache when setting allowed classes', () => {
|
|
226
|
+
// First call - will be cached
|
|
227
|
+
expect(validator.isValidClass('my-custom')).toBe(false);
|
|
228
|
+
// Set as allowed
|
|
229
|
+
validator.setAllowedClasses(['my-custom']);
|
|
230
|
+
// Should now be valid (cache cleared)
|
|
231
|
+
expect(validator.isValidClass('my-custom')).toBe(true);
|
|
232
|
+
});
|
|
233
|
+
it('should work with getInvalidClasses', () => {
|
|
234
|
+
validator.setAllowedClasses(['app-specific-class', 'project-util']);
|
|
235
|
+
const classes = ['flex', 'app-specific-class', 'invalid-one', 'project-util', 'invalid-two'];
|
|
236
|
+
const invalid = validator.getInvalidClasses(classes);
|
|
237
|
+
expect(invalid).toEqual(['invalid-one', 'invalid-two']);
|
|
238
|
+
});
|
|
239
|
+
it('should handle empty allowed classes array', () => {
|
|
240
|
+
validator.setAllowedClasses([]);
|
|
241
|
+
expect(validator.isValidClass('flex')).toBe(true);
|
|
242
|
+
expect(validator.isValidClass('custom-class')).toBe(false);
|
|
243
|
+
});
|
|
244
|
+
});
|
|
209
245
|
describe('reload', () => {
|
|
210
246
|
it('should reload the design system', async () => {
|
|
211
247
|
const wasBefore = validator.isInitialized();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TailwindValidator.spec.js","sourceRoot":"","sources":["../../src/infrastructure/TailwindValidator.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TailwindValidator.spec.js","sourceRoot":"","sources":["../../src/infrastructure/TailwindValidator.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,7 @@ export declare class TailwindTypescriptPlugin {
|
|
|
21
21
|
private validator;
|
|
22
22
|
private validationService;
|
|
23
23
|
private configService;
|
|
24
|
+
private diagnosticCache;
|
|
24
25
|
private initializationPromise;
|
|
25
26
|
constructor(typescript: typeof ts);
|
|
26
27
|
/**
|
|
@@ -38,6 +39,7 @@ export declare class TailwindTypescriptPlugin {
|
|
|
38
39
|
private createLanguageServiceProxy;
|
|
39
40
|
/**
|
|
40
41
|
* Create the getSemanticDiagnostics method with Tailwind validation
|
|
42
|
+
* PERFORMANCE OPTIMIZED with file-level caching
|
|
41
43
|
*/
|
|
42
44
|
private createGetSemanticDiagnostics;
|
|
43
45
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TailwindTypescriptPlugin.d.ts","sourceRoot":"","sources":["../../src/plugin/TailwindTypescriptPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"TailwindTypescriptPlugin.d.ts","sourceRoot":"","sources":["../../src/plugin/TailwindTypescriptPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAYrD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,wBAAwB;IAQxB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAPvC,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,qBAAqB,CAA8B;gBAE9B,UAAU,EAAE,OAAO,EAAE;IAElD;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,GAAG,EAAE,CAAC,eAAe;IAmB5D;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgD3B;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAgBlC;;;OAGG;IACH,OAAO,CAAC,4BAA4B,CA+CjC;IAEH;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAe1B;;OAEG;IACH,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;CAGhD"}
|
|
@@ -9,6 +9,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
9
9
|
const TailwindValidator_1 = require("../infrastructure/TailwindValidator");
|
|
10
10
|
const ClassNameExtractionService_1 = require("../services/ClassNameExtractionService");
|
|
11
11
|
const DiagnosticService_1 = require("../services/DiagnosticService");
|
|
12
|
+
const FileDiagnosticCache_1 = require("../services/FileDiagnosticCache");
|
|
12
13
|
const PluginConfigService_1 = require("../services/PluginConfigService");
|
|
13
14
|
const ValidationService_1 = require("../services/ValidationService");
|
|
14
15
|
const Logger_1 = require("../utils/Logger");
|
|
@@ -34,6 +35,7 @@ class TailwindTypescriptPlugin {
|
|
|
34
35
|
this.initializationPromise = null;
|
|
35
36
|
/**
|
|
36
37
|
* Create the getSemanticDiagnostics method with Tailwind validation
|
|
38
|
+
* PERFORMANCE OPTIMIZED with file-level caching
|
|
37
39
|
*/
|
|
38
40
|
this.createGetSemanticDiagnostics = (info) => (fileName) => {
|
|
39
41
|
this.logger.log(`[getSemanticDiagnostics] Getting semantic diagnostics for ${fileName}`);
|
|
@@ -49,10 +51,20 @@ class TailwindTypescriptPlugin {
|
|
|
49
51
|
if (!sourceFile) {
|
|
50
52
|
return prior;
|
|
51
53
|
}
|
|
54
|
+
// PERFORMANCE: Check file-level cache first
|
|
55
|
+
const fileContent = sourceFile.getFullText();
|
|
56
|
+
const cachedDiagnostics = this.diagnosticCache.get(fileName, fileContent);
|
|
57
|
+
if (cachedDiagnostics !== undefined) {
|
|
58
|
+
this.logger.log(`[CACHE HIT] Returning cached diagnostics for ${fileName}`);
|
|
59
|
+
return [...prior, ...cachedDiagnostics];
|
|
60
|
+
}
|
|
61
|
+
this.logger.log(`[CACHE MISS] Validating ${fileName}`);
|
|
52
62
|
// Get fresh type checker from current program (always up-to-date)
|
|
53
63
|
const typeChecker = program.getTypeChecker();
|
|
54
64
|
// Validate and get diagnostics
|
|
55
65
|
const tailwindDiagnostics = this.validationService.validateFile(this.typescript, sourceFile, this.configService.getUtilityFunctions(), typeChecker);
|
|
66
|
+
// PERFORMANCE: Cache the result
|
|
67
|
+
this.diagnosticCache.set(fileName, fileContent, tailwindDiagnostics);
|
|
56
68
|
return [...prior, ...tailwindDiagnostics];
|
|
57
69
|
};
|
|
58
70
|
}
|
|
@@ -60,10 +72,14 @@ class TailwindTypescriptPlugin {
|
|
|
60
72
|
* Create the plugin proxy for TypeScript Language Service
|
|
61
73
|
*/
|
|
62
74
|
create(info) {
|
|
63
|
-
|
|
75
|
+
// PERFORMANCE: Use NoOpLogger by default, only enable if configured
|
|
76
|
+
const enableLogging = (info.config || {}).enableLogging === true;
|
|
77
|
+
this.logger = enableLogging ? new Logger_1.LoggerImpl(info, true) : new Logger_1.NoOpLogger();
|
|
64
78
|
this.logger.log('============= Plugin Starting =============');
|
|
65
79
|
// Initialize configuration service
|
|
66
80
|
this.configService = new PluginConfigService_1.PluginConfigService(info.config || {}, this.logger);
|
|
81
|
+
// PERFORMANCE: Initialize file-level diagnostic cache
|
|
82
|
+
this.diagnosticCache = new FileDiagnosticCache_1.FileDiagnosticCache(100);
|
|
67
83
|
// Initialize validator if CSS file is configured
|
|
68
84
|
this.initializeValidator(info);
|
|
69
85
|
// Create language service proxy
|
|
@@ -90,6 +106,11 @@ class TailwindTypescriptPlugin {
|
|
|
90
106
|
const extractionService = new ClassNameExtractionService_1.ClassNameExtractionService(this.configService.isTailwindVariantsEnabled(), this.configService.isClassVarianceAuthorityEnabled());
|
|
91
107
|
const diagnosticService = new DiagnosticService_1.DiagnosticService();
|
|
92
108
|
this.validationService = new ValidationService_1.ValidationService(extractionService, diagnosticService, this.validator, this.logger);
|
|
109
|
+
// Set allowed classes from config
|
|
110
|
+
const allowedClasses = this.configService.getAllowedClasses();
|
|
111
|
+
if (allowedClasses.length > 0) {
|
|
112
|
+
this.validator.setAllowedClasses(allowedClasses);
|
|
113
|
+
}
|
|
93
114
|
// Start async initialization
|
|
94
115
|
this.initializationPromise = this.validator
|
|
95
116
|
.initialize()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TailwindTypescriptPlugin.js","sourceRoot":"","sources":["../../src/plugin/TailwindTypescriptPlugin.ts"],"names":[],"mappings":";;;;;;AACA,4CAAoB;AACpB,gDAAwB;AAExB,2EAAwE;AACxE,uFAAoF;AACpF,qEAAkE;AAClE,yEAAsE;AACtE,qEAAkE;AAClE,
|
|
1
|
+
{"version":3,"file":"TailwindTypescriptPlugin.js","sourceRoot":"","sources":["../../src/plugin/TailwindTypescriptPlugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import * as ts from 'typescript/lib/tsserverlibrary';
|
|
2
|
+
/**
|
|
3
|
+
* Cache for file-level diagnostics
|
|
4
|
+
*
|
|
5
|
+
* PERFORMANCE OPTIMIZATION:
|
|
6
|
+
* - Caches complete diagnostic results per file
|
|
7
|
+
* - Uses file content hash as key (detects actual changes)
|
|
8
|
+
* - LRU eviction (keep most recently used files)
|
|
9
|
+
* - Provides 95%+ speedup for unchanged files
|
|
10
|
+
*
|
|
11
|
+
* Strategy:
|
|
12
|
+
* - On file validation, check if content hash matches cached hash
|
|
13
|
+
* - If match: return cached diagnostics instantly (no AST parsing, no validation)
|
|
14
|
+
* - If no match: validate fully and cache result
|
|
15
|
+
*/
|
|
16
|
+
export declare class FileDiagnosticCache {
|
|
17
|
+
private cache;
|
|
18
|
+
private maxSize;
|
|
19
|
+
constructor(maxSize?: number);
|
|
20
|
+
/**
|
|
21
|
+
* Get cached diagnostics for a file
|
|
22
|
+
* Returns undefined if not cached or content changed
|
|
23
|
+
*/
|
|
24
|
+
get(fileName: string, fileContent: string): ts.Diagnostic[] | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Cache diagnostics for a file
|
|
27
|
+
*/
|
|
28
|
+
set(fileName: string, fileContent: string, diagnostics: ts.Diagnostic[]): void;
|
|
29
|
+
/**
|
|
30
|
+
* Invalidate cache for a specific file
|
|
31
|
+
*/
|
|
32
|
+
invalidate(fileName: string): void;
|
|
33
|
+
/**
|
|
34
|
+
* Clear entire cache
|
|
35
|
+
*/
|
|
36
|
+
clear(): void;
|
|
37
|
+
/**
|
|
38
|
+
* Get cache statistics
|
|
39
|
+
*/
|
|
40
|
+
getStats(): {
|
|
41
|
+
size: number;
|
|
42
|
+
maxSize: number;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Hash file content for comparison
|
|
46
|
+
* Uses MD5 for speed (security not needed here)
|
|
47
|
+
*/
|
|
48
|
+
private hashContent;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=FileDiagnosticCache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileDiagnosticCache.d.ts","sourceRoot":"","sources":["../../src/services/FileDiagnosticCache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAGrD;;;;;;;;;;;;;GAaG;AACH,qBAAa,mBAAmB;IAC/B,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,GAAE,MAAY;IAKjC;;;OAGG;IACH,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,EAAE,GAAG,SAAS;IAevE;;OAEG;IACH,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,UAAU,EAAE,GAAG,IAAI;IAkB9E;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIlC;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAO7C;;;OAGG;IACH,OAAO,CAAC,WAAW;CAGnB"}
|