tailwind-typescript-plugin 0.0.2-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +42 -0
- package/LICENSE +21 -0
- package/README.md +538 -0
- package/lib/core/interfaces.d.ts +45 -0
- package/lib/core/interfaces.d.ts.map +1 -0
- package/lib/core/interfaces.js +3 -0
- package/lib/core/interfaces.js.map +1 -0
- package/lib/core/types.d.ts +27 -0
- package/lib/core/types.d.ts.map +1 -0
- package/lib/core/types.js +3 -0
- package/lib/core/types.js.map +1 -0
- package/lib/extractors/BaseExtractor.d.ts +20 -0
- package/lib/extractors/BaseExtractor.d.ts.map +1 -0
- package/lib/extractors/BaseExtractor.js +83 -0
- package/lib/extractors/BaseExtractor.js.map +1 -0
- package/lib/extractors/CvaExtractor.d.ts +88 -0
- package/lib/extractors/CvaExtractor.d.ts.map +1 -0
- package/lib/extractors/CvaExtractor.js +425 -0
- package/lib/extractors/CvaExtractor.js.map +1 -0
- package/lib/extractors/ExpressionExtractor.d.ts +16 -0
- package/lib/extractors/ExpressionExtractor.d.ts.map +1 -0
- package/lib/extractors/ExpressionExtractor.js +132 -0
- package/lib/extractors/ExpressionExtractor.js.map +1 -0
- package/lib/extractors/JsxAttributeExtractor.d.ts +20 -0
- package/lib/extractors/JsxAttributeExtractor.d.ts.map +1 -0
- package/lib/extractors/JsxAttributeExtractor.js +107 -0
- package/lib/extractors/JsxAttributeExtractor.js.map +1 -0
- package/lib/extractors/JsxAttributeExtractor.original.d.ts +15 -0
- package/lib/extractors/JsxAttributeExtractor.original.d.ts.map +1 -0
- package/lib/extractors/JsxAttributeExtractor.original.js +84 -0
- package/lib/extractors/JsxAttributeExtractor.original.js.map +1 -0
- package/lib/extractors/StringLiteralExtractor.d.ts +12 -0
- package/lib/extractors/StringLiteralExtractor.d.ts.map +1 -0
- package/lib/extractors/StringLiteralExtractor.js +21 -0
- package/lib/extractors/StringLiteralExtractor.js.map +1 -0
- package/lib/extractors/TailwindVariantsExtractor.d.ts +87 -0
- package/lib/extractors/TailwindVariantsExtractor.d.ts.map +1 -0
- package/lib/extractors/TailwindVariantsExtractor.js +447 -0
- package/lib/extractors/TailwindVariantsExtractor.js.map +1 -0
- package/lib/extractors/TemplateExpressionExtractor.d.ts +14 -0
- package/lib/extractors/TemplateExpressionExtractor.d.ts.map +1 -0
- package/lib/extractors/TemplateExpressionExtractor.js +66 -0
- package/lib/extractors/TemplateExpressionExtractor.js.map +1 -0
- package/lib/index.d.ts +65 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +4 -0
- package/lib/index.js.map +1 -0
- package/lib/infrastructure/TailwindValidator.d.ts +42 -0
- package/lib/infrastructure/TailwindValidator.d.ts.map +1 -0
- package/lib/infrastructure/TailwindValidator.js +152 -0
- package/lib/infrastructure/TailwindValidator.js.map +1 -0
- package/lib/infrastructure/TailwindValidator.spec.d.ts +2 -0
- package/lib/infrastructure/TailwindValidator.spec.d.ts.map +1 -0
- package/lib/infrastructure/TailwindValidator.spec.js +219 -0
- package/lib/infrastructure/TailwindValidator.spec.js.map +1 -0
- package/lib/plugin/TailwindTypescriptPlugin.d.ts +52 -0
- package/lib/plugin/TailwindTypescriptPlugin.d.ts.map +1 -0
- package/lib/plugin/TailwindTypescriptPlugin.js +142 -0
- package/lib/plugin/TailwindTypescriptPlugin.js.map +1 -0
- package/lib/services/ClassNameExtractionService.d.ts +37 -0
- package/lib/services/ClassNameExtractionService.d.ts.map +1 -0
- package/lib/services/ClassNameExtractionService.js +98 -0
- package/lib/services/ClassNameExtractionService.js.map +1 -0
- package/lib/services/ClassNameExtractionService.original.d.ts +20 -0
- package/lib/services/ClassNameExtractionService.original.d.ts.map +1 -0
- package/lib/services/ClassNameExtractionService.original.js +48 -0
- package/lib/services/ClassNameExtractionService.original.js.map +1 -0
- package/lib/services/DiagnosticService.d.ts +14 -0
- package/lib/services/DiagnosticService.d.ts.map +1 -0
- package/lib/services/DiagnosticService.js +61 -0
- package/lib/services/DiagnosticService.js.map +1 -0
- package/lib/services/PerformanceCache.d.ts +15 -0
- package/lib/services/PerformanceCache.d.ts.map +1 -0
- package/lib/services/PerformanceCache.js +44 -0
- package/lib/services/PerformanceCache.js.map +1 -0
- package/lib/services/PluginConfigService.d.ts +22 -0
- package/lib/services/PluginConfigService.d.ts.map +1 -0
- package/lib/services/PluginConfigService.js +86 -0
- package/lib/services/PluginConfigService.js.map +1 -0
- package/lib/services/ValidationService.d.ts +25 -0
- package/lib/services/ValidationService.d.ts.map +1 -0
- package/lib/services/ValidationService.js +50 -0
- package/lib/services/ValidationService.js.map +1 -0
- package/lib/utils/Logger.d.ts +10 -0
- package/lib/utils/Logger.d.ts.map +1 -0
- package/lib/utils/Logger.js +13 -0
- package/lib/utils/Logger.js.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TailwindTypescriptPlugin.js","sourceRoot":"","sources":["../../src/plugin/TailwindTypescriptPlugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as ts from 'typescript/lib/tsserverlibrary';
|
|
2
|
+
import { IClassNameExtractor } from '../core/interfaces';
|
|
3
|
+
import { ClassNameInfo } from '../core/types';
|
|
4
|
+
/**
|
|
5
|
+
* OPTIMIZED: Service responsible for orchestrating class name extraction
|
|
6
|
+
*
|
|
7
|
+
* Performance improvements:
|
|
8
|
+
* 1. Fast path for JSX elements (skip non-JSX nodes early)
|
|
9
|
+
* 2. Fast path for tv() calls (check only call expressions)
|
|
10
|
+
* 3. Fast path for cva() calls (check only call expressions)
|
|
11
|
+
* 4. Single extractor instance (avoid canHandle() overhead)
|
|
12
|
+
* 5. Direct node type checking (faster than polymorphic calls)
|
|
13
|
+
* 6. Reduced function call overhead
|
|
14
|
+
* 7. Conditional extractor execution (skip disabled extractors)
|
|
15
|
+
*/
|
|
16
|
+
export declare class ClassNameExtractionService {
|
|
17
|
+
private readonly enableTailwindVariants;
|
|
18
|
+
private readonly enableClassVarianceAuthority;
|
|
19
|
+
private jsxExtractor;
|
|
20
|
+
private tvExtractor;
|
|
21
|
+
private cvaExtractor;
|
|
22
|
+
constructor(enableTailwindVariants?: boolean, enableClassVarianceAuthority?: boolean);
|
|
23
|
+
/**
|
|
24
|
+
* Extract all class names from a source file (OPTIMIZED)
|
|
25
|
+
*/
|
|
26
|
+
extractFromSourceFile(typescript: typeof ts, sourceFile: ts.SourceFile, utilityFunctions: string[], typeChecker?: ts.TypeChecker): ClassNameInfo[];
|
|
27
|
+
/**
|
|
28
|
+
* Add a custom extractor (for extensibility)
|
|
29
|
+
* Note: This is kept for API compatibility but not used in optimized path
|
|
30
|
+
*/
|
|
31
|
+
addExtractor(_extractor: IClassNameExtractor): void;
|
|
32
|
+
/**
|
|
33
|
+
* Clear caches (useful when files change)
|
|
34
|
+
*/
|
|
35
|
+
clearCaches(): void;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=ClassNameExtractionService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassNameExtractionService.d.ts","sourceRoot":"","sources":["../../src/services/ClassNameExtractionService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAqB,MAAM,eAAe,CAAC;AAKjE;;;;;;;;;;;GAWG;AACH,qBAAa,0BAA0B;IAMrC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,4BAA4B;IAN9C,OAAO,CAAC,YAAY,CAAwB;IAC5C,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,YAAY,CAAsB;gBAGxB,sBAAsB,GAAE,OAAc,EACtC,4BAA4B,GAAE,OAAc;IAQ9D;;OAEG;IACH,qBAAqB,CACpB,UAAU,EAAE,OAAO,EAAE,EACrB,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,gBAAgB,EAAE,MAAM,EAAE,EAC1B,WAAW,CAAC,EAAE,EAAE,CAAC,WAAW,GAC1B,aAAa,EAAE;IAiDlB;;;OAGG;IAEH,YAAY,CAAC,UAAU,EAAE,mBAAmB,GAAG,IAAI;IAMnD;;OAEG;IACH,WAAW,IAAI,IAAI;CAQnB"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ClassNameExtractionService = void 0;
|
|
4
|
+
const CvaExtractor_1 = require("../extractors/CvaExtractor");
|
|
5
|
+
const JsxAttributeExtractor_1 = require("../extractors/JsxAttributeExtractor");
|
|
6
|
+
const TailwindVariantsExtractor_1 = require("../extractors/TailwindVariantsExtractor");
|
|
7
|
+
/**
|
|
8
|
+
* OPTIMIZED: Service responsible for orchestrating class name extraction
|
|
9
|
+
*
|
|
10
|
+
* Performance improvements:
|
|
11
|
+
* 1. Fast path for JSX elements (skip non-JSX nodes early)
|
|
12
|
+
* 2. Fast path for tv() calls (check only call expressions)
|
|
13
|
+
* 3. Fast path for cva() calls (check only call expressions)
|
|
14
|
+
* 4. Single extractor instance (avoid canHandle() overhead)
|
|
15
|
+
* 5. Direct node type checking (faster than polymorphic calls)
|
|
16
|
+
* 6. Reduced function call overhead
|
|
17
|
+
* 7. Conditional extractor execution (skip disabled extractors)
|
|
18
|
+
*/
|
|
19
|
+
class ClassNameExtractionService {
|
|
20
|
+
constructor(enableTailwindVariants = true, enableClassVarianceAuthority = true) {
|
|
21
|
+
this.enableTailwindVariants = enableTailwindVariants;
|
|
22
|
+
this.enableClassVarianceAuthority = enableClassVarianceAuthority;
|
|
23
|
+
// Create extractors once and reuse (avoid recreation overhead)
|
|
24
|
+
this.jsxExtractor = new JsxAttributeExtractor_1.JsxAttributeExtractor();
|
|
25
|
+
this.tvExtractor = enableTailwindVariants ? new TailwindVariantsExtractor_1.TailwindVariantsExtractor() : null;
|
|
26
|
+
this.cvaExtractor = enableClassVarianceAuthority ? new CvaExtractor_1.CvaExtractor() : null;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Extract all class names from a source file (OPTIMIZED)
|
|
30
|
+
*/
|
|
31
|
+
extractFromSourceFile(typescript, sourceFile, utilityFunctions, typeChecker) {
|
|
32
|
+
const classNames = [];
|
|
33
|
+
const context = {
|
|
34
|
+
typescript,
|
|
35
|
+
sourceFile,
|
|
36
|
+
utilityFunctions,
|
|
37
|
+
typeChecker
|
|
38
|
+
};
|
|
39
|
+
// OPTIMIZATION: Direct node type checking in visit function
|
|
40
|
+
// Avoids canHandle() overhead for every node
|
|
41
|
+
const visit = (node) => {
|
|
42
|
+
// FAST PATH 1: Only process JSX opening/self-closing elements
|
|
43
|
+
// This skips ~98% of nodes immediately
|
|
44
|
+
if (typescript.isJsxOpeningElement(node) || typescript.isJsxSelfClosingElement(node)) {
|
|
45
|
+
// Direct extraction without canHandle() check
|
|
46
|
+
const extracted = this.jsxExtractor.extract(node, context);
|
|
47
|
+
if (extracted.length > 0) {
|
|
48
|
+
classNames.push(...extracted);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// FAST PATH 2: Check for variant library calls (tv, cva)
|
|
52
|
+
// Only processes call expressions and only if extractors are enabled
|
|
53
|
+
else if (typescript.isCallExpression(node)) {
|
|
54
|
+
// Try tailwind-variants first (if enabled)
|
|
55
|
+
if (this.tvExtractor) {
|
|
56
|
+
const tvExtracted = this.tvExtractor.extract(node, context);
|
|
57
|
+
if (tvExtracted.length > 0) {
|
|
58
|
+
classNames.push(...tvExtracted);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Try class-variance-authority (if enabled)
|
|
62
|
+
if (this.cvaExtractor) {
|
|
63
|
+
const cvaExtracted = this.cvaExtractor.extract(node, context);
|
|
64
|
+
if (cvaExtracted.length > 0) {
|
|
65
|
+
classNames.push(...cvaExtracted);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// Continue traversing (TypeScript handles this efficiently)
|
|
70
|
+
typescript.forEachChild(node, visit);
|
|
71
|
+
};
|
|
72
|
+
visit(sourceFile);
|
|
73
|
+
return classNames;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Add a custom extractor (for extensibility)
|
|
77
|
+
* Note: This is kept for API compatibility but not used in optimized path
|
|
78
|
+
*/
|
|
79
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
80
|
+
addExtractor(_extractor) {
|
|
81
|
+
// In the optimized version, we could extend this to support
|
|
82
|
+
// multiple extractors while maintaining performance
|
|
83
|
+
console.warn('Custom extractors not yet supported in optimized version');
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Clear caches (useful when files change)
|
|
87
|
+
*/
|
|
88
|
+
clearCaches() {
|
|
89
|
+
if (this.tvExtractor) {
|
|
90
|
+
this.tvExtractor.clearCache();
|
|
91
|
+
}
|
|
92
|
+
if (this.cvaExtractor) {
|
|
93
|
+
this.cvaExtractor.clearCache();
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
exports.ClassNameExtractionService = ClassNameExtractionService;
|
|
98
|
+
//# sourceMappingURL=ClassNameExtractionService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassNameExtractionService.js","sourceRoot":"","sources":["../../src/services/ClassNameExtractionService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as ts from 'typescript/lib/tsserverlibrary';
|
|
2
|
+
import { IClassNameExtractor } from '../core/interfaces';
|
|
3
|
+
import { ClassNameInfo } from '../core/types';
|
|
4
|
+
/**
|
|
5
|
+
* Service responsible for orchestrating class name extraction from source files
|
|
6
|
+
* Follows the Visitor pattern to traverse the AST
|
|
7
|
+
*/
|
|
8
|
+
export declare class ClassNameExtractionService {
|
|
9
|
+
private extractors;
|
|
10
|
+
constructor();
|
|
11
|
+
/**
|
|
12
|
+
* Extract all class names from a source file
|
|
13
|
+
*/
|
|
14
|
+
extractFromSourceFile(typescript: typeof ts, sourceFile: ts.SourceFile, utilityFunctions: string[], typeChecker?: ts.TypeChecker): ClassNameInfo[];
|
|
15
|
+
/**
|
|
16
|
+
* Add a custom extractor (for extensibility)
|
|
17
|
+
*/
|
|
18
|
+
addExtractor(extractor: IClassNameExtractor): void;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=ClassNameExtractionService.original.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassNameExtractionService.original.d.ts","sourceRoot":"","sources":["../../src/services/ClassNameExtractionService.original.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAqB,MAAM,eAAe,CAAC;AAGjE;;;GAGG;AACH,qBAAa,0BAA0B;IACtC,OAAO,CAAC,UAAU,CAAwB;;IAO1C;;OAEG;IACH,qBAAqB,CACpB,UAAU,EAAE,OAAO,EAAE,EACrB,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,gBAAgB,EAAE,MAAM,EAAE,EAC1B,WAAW,CAAC,EAAE,EAAE,CAAC,WAAW,GAC1B,aAAa,EAAE;IA2BlB;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,mBAAmB,GAAG,IAAI;CAGlD"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ClassNameExtractionService = void 0;
|
|
4
|
+
const JsxAttributeExtractor_1 = require("../extractors/JsxAttributeExtractor");
|
|
5
|
+
/**
|
|
6
|
+
* Service responsible for orchestrating class name extraction from source files
|
|
7
|
+
* Follows the Visitor pattern to traverse the AST
|
|
8
|
+
*/
|
|
9
|
+
class ClassNameExtractionService {
|
|
10
|
+
constructor() {
|
|
11
|
+
// Initialize extractors - can be extended with new extractors
|
|
12
|
+
this.extractors = [new JsxAttributeExtractor_1.JsxAttributeExtractor()];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Extract all class names from a source file
|
|
16
|
+
*/
|
|
17
|
+
extractFromSourceFile(typescript, sourceFile, utilityFunctions, typeChecker) {
|
|
18
|
+
const classNames = [];
|
|
19
|
+
const context = {
|
|
20
|
+
typescript,
|
|
21
|
+
sourceFile,
|
|
22
|
+
utilityFunctions,
|
|
23
|
+
typeChecker
|
|
24
|
+
};
|
|
25
|
+
const visit = (node) => {
|
|
26
|
+
// Try each extractor to see if it can handle this node
|
|
27
|
+
for (const extractor of this.extractors) {
|
|
28
|
+
if (extractor.canHandle(node, context)) {
|
|
29
|
+
const extracted = extractor.extract(node, context);
|
|
30
|
+
classNames.push(...extracted);
|
|
31
|
+
break; // Stop after first matching extractor
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// Continue traversing the tree
|
|
35
|
+
typescript.forEachChild(node, visit);
|
|
36
|
+
};
|
|
37
|
+
visit(sourceFile);
|
|
38
|
+
return classNames;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Add a custom extractor (for extensibility)
|
|
42
|
+
*/
|
|
43
|
+
addExtractor(extractor) {
|
|
44
|
+
this.extractors.push(extractor);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.ClassNameExtractionService = ClassNameExtractionService;
|
|
48
|
+
//# sourceMappingURL=ClassNameExtractionService.original.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassNameExtractionService.original.js","sourceRoot":"","sources":["../../src/services/ClassNameExtractionService.original.ts"],"names":[],"mappings":";;;AAIA,+EAA4E;AAE5E;;;GAGG;AACH,MAAa,0BAA0B;IAGtC;QACC,8DAA8D;QAC9D,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,6CAAqB,EAAE,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,qBAAqB,CACpB,UAAqB,EACrB,UAAyB,EACzB,gBAA0B,EAC1B,WAA4B;QAE5B,MAAM,UAAU,GAAoB,EAAE,CAAC;QACvC,MAAM,OAAO,GAAsB;YAClC,UAAU;YACV,UAAU;YACV,gBAAgB;YAChB,WAAW;SACX,CAAC;QAEF,MAAM,KAAK,GAAG,CAAC,IAAa,EAAQ,EAAE;YACrC,uDAAuD;YACvD,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACzC,IAAI,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;oBACxC,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;oBACnD,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;oBAC9B,MAAM,CAAC,sCAAsC;gBAC9C,CAAC;YACF,CAAC;YAED,+BAA+B;YAC/B,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC,CAAC;QAEF,KAAK,CAAC,UAAU,CAAC,CAAC;QAClB,OAAO,UAAU,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,SAA8B;QAC1C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;CACD;AAjDD,gEAiDC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as ts from 'typescript/lib/tsserverlibrary';
|
|
2
|
+
import { IDiagnosticService } from '../core/interfaces';
|
|
3
|
+
import { ClassNameInfo } from '../core/types';
|
|
4
|
+
/**
|
|
5
|
+
* Service responsible for creating TypeScript diagnostics
|
|
6
|
+
*/
|
|
7
|
+
export declare class DiagnosticService implements IDiagnosticService {
|
|
8
|
+
createDiagnostic(classInfo: ClassNameInfo, sourceFile: ts.SourceFile): ts.Diagnostic;
|
|
9
|
+
/**
|
|
10
|
+
* Create multiple diagnostics from class info array
|
|
11
|
+
*/
|
|
12
|
+
createDiagnostics(classInfos: ClassNameInfo[], sourceFile: ts.SourceFile): ts.Diagnostic[];
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=DiagnosticService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiagnosticService.d.ts","sourceRoot":"","sources":["../../src/services/DiagnosticService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C;;GAEG;AACH,qBAAa,iBAAkB,YAAW,kBAAkB;IAC3D,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,UAAU;IAYpF;;OAEG;IACH,iBAAiB,CAAC,UAAU,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,UAAU,EAAE;CAG1F"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.DiagnosticService = void 0;
|
|
37
|
+
const ts = __importStar(require("typescript/lib/tsserverlibrary"));
|
|
38
|
+
/**
|
|
39
|
+
* Service responsible for creating TypeScript diagnostics
|
|
40
|
+
*/
|
|
41
|
+
class DiagnosticService {
|
|
42
|
+
createDiagnostic(classInfo, sourceFile) {
|
|
43
|
+
return {
|
|
44
|
+
file: sourceFile,
|
|
45
|
+
start: classInfo.absoluteStart,
|
|
46
|
+
length: classInfo.length,
|
|
47
|
+
messageText: `The class "${classInfo.className}" is not a valid Tailwind class`,
|
|
48
|
+
category: ts.DiagnosticCategory.Error,
|
|
49
|
+
code: 9999,
|
|
50
|
+
source: 'tw-plugin'
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Create multiple diagnostics from class info array
|
|
55
|
+
*/
|
|
56
|
+
createDiagnostics(classInfos, sourceFile) {
|
|
57
|
+
return classInfos.map(classInfo => this.createDiagnostic(classInfo, sourceFile));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.DiagnosticService = DiagnosticService;
|
|
61
|
+
//# sourceMappingURL=DiagnosticService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiagnosticService.js","sourceRoot":"","sources":["../../src/services/DiagnosticService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mEAAqD;AAKrD;;GAEG;AACH,MAAa,iBAAiB;IAC7B,gBAAgB,CAAC,SAAwB,EAAE,UAAyB;QACnE,OAAO;YACN,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,SAAS,CAAC,aAAa;YAC9B,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,WAAW,EAAE,cAAc,SAAS,CAAC,SAAS,iCAAiC;YAC/E,QAAQ,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK;YACrC,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,WAAW;SACnB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,UAA2B,EAAE,UAAyB;QACvE,OAAO,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;IAClF,CAAC;CACD;AAnBD,8CAmBC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Performance optimization: LRU Cache for validation results
|
|
3
|
+
* Reduces redundant validation calls for the same class names
|
|
4
|
+
*/
|
|
5
|
+
export declare class PerformanceCache<K, V> {
|
|
6
|
+
private cache;
|
|
7
|
+
private maxSize;
|
|
8
|
+
constructor(maxSize?: number);
|
|
9
|
+
get(key: K): V | undefined;
|
|
10
|
+
set(key: K, value: V): void;
|
|
11
|
+
has(key: K): boolean;
|
|
12
|
+
clear(): void;
|
|
13
|
+
get size(): number;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=PerformanceCache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PerformanceCache.d.ts","sourceRoot":"","sources":["../../src/services/PerformanceCache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,gBAAgB,CAAC,CAAC,EAAE,CAAC;IACjC,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,GAAE,MAAa;IAKlC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAa1B,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAY3B,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIpB,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI,MAAM,CAEjB;CACD"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PerformanceCache = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Performance optimization: LRU Cache for validation results
|
|
6
|
+
* Reduces redundant validation calls for the same class names
|
|
7
|
+
*/
|
|
8
|
+
class PerformanceCache {
|
|
9
|
+
constructor(maxSize = 1000) {
|
|
10
|
+
this.cache = new Map();
|
|
11
|
+
this.maxSize = maxSize;
|
|
12
|
+
}
|
|
13
|
+
get(key) {
|
|
14
|
+
if (!this.cache.has(key)) {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
// Move to end (most recently used)
|
|
18
|
+
const value = this.cache.get(key);
|
|
19
|
+
this.cache.delete(key);
|
|
20
|
+
this.cache.set(key, value);
|
|
21
|
+
return value;
|
|
22
|
+
}
|
|
23
|
+
set(key, value) {
|
|
24
|
+
// Remove oldest if at capacity
|
|
25
|
+
if (this.cache.size >= this.maxSize) {
|
|
26
|
+
const firstKey = this.cache.keys().next().value;
|
|
27
|
+
if (firstKey !== undefined) {
|
|
28
|
+
this.cache.delete(firstKey);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
this.cache.set(key, value);
|
|
32
|
+
}
|
|
33
|
+
has(key) {
|
|
34
|
+
return this.cache.has(key);
|
|
35
|
+
}
|
|
36
|
+
clear() {
|
|
37
|
+
this.cache.clear();
|
|
38
|
+
}
|
|
39
|
+
get size() {
|
|
40
|
+
return this.cache.size;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.PerformanceCache = PerformanceCache;
|
|
44
|
+
//# sourceMappingURL=PerformanceCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PerformanceCache.js","sourceRoot":"","sources":["../../src/services/PerformanceCache.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,MAAa,gBAAgB;IAI5B,YAAY,UAAkB,IAAI;QACjC,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;IAED,GAAG,CAAC,GAAM;QACT,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,mCAAmC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAE3B,OAAO,KAAK,CAAC;IACd,CAAC;IAED,GAAG,CAAC,GAAM,EAAE,KAAQ;QACnB,+BAA+B;QAC/B,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAChD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC7B,CAAC;QACF,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,GAAG,CAAC,GAAM;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACxB,CAAC;CACD;AA7CD,4CA6CC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { IPluginConfig } from '../core/interfaces';
|
|
2
|
+
import { Logger } from '../utils/Logger';
|
|
3
|
+
/**
|
|
4
|
+
* Service responsible for managing plugin configuration
|
|
5
|
+
* Follows Single Responsibility Principle
|
|
6
|
+
*/
|
|
7
|
+
export declare class PluginConfigService {
|
|
8
|
+
private readonly logger;
|
|
9
|
+
private utilityFunctions;
|
|
10
|
+
private cssFilePath?;
|
|
11
|
+
private tailwindVariantsEnabled;
|
|
12
|
+
private classVarianceAuthorityEnabled;
|
|
13
|
+
constructor(config: IPluginConfig, logger: Logger);
|
|
14
|
+
private initializeUtilityFunctions;
|
|
15
|
+
getUtilityFunctions(): string[];
|
|
16
|
+
getCssFilePath(): string | undefined;
|
|
17
|
+
hasValidCssPath(): boolean;
|
|
18
|
+
isTailwindVariantsEnabled(): boolean;
|
|
19
|
+
isClassVarianceAuthorityEnabled(): boolean;
|
|
20
|
+
private logExtractorConfig;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=PluginConfigService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginConfigService.d.ts","sourceRoot":"","sources":["../../src/services/PluginConfigService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAgBzC;;;GAGG;AACH,qBAAa,mBAAmB;IAQ9B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPxB,OAAO,CAAC,gBAAgB,CAAW;IACnC,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,uBAAuB,CAAU;IACzC,OAAO,CAAC,6BAA6B,CAAU;gBAG9C,MAAM,EAAE,aAAa,EACJ,MAAM,EAAE,MAAM;IA0BhC,OAAO,CAAC,0BAA0B;IAYlC,mBAAmB,IAAI,MAAM,EAAE;IAI/B,cAAc,IAAI,MAAM,GAAG,SAAS;IAIpC,eAAe,IAAI,OAAO;IAI1B,yBAAyB,IAAI,OAAO;IAIpC,+BAA+B,IAAI,OAAO;IAI1C,OAAO,CAAC,kBAAkB;CAW1B"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PluginConfigService = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Default utility functions to validate
|
|
6
|
+
*/
|
|
7
|
+
const DEFAULT_UTILITY_FUNCTIONS = [
|
|
8
|
+
'clsx',
|
|
9
|
+
'cn',
|
|
10
|
+
'classnames',
|
|
11
|
+
'classNames',
|
|
12
|
+
'cx',
|
|
13
|
+
'cva',
|
|
14
|
+
'twMerge',
|
|
15
|
+
'tv'
|
|
16
|
+
];
|
|
17
|
+
/**
|
|
18
|
+
* Service responsible for managing plugin configuration
|
|
19
|
+
* Follows Single Responsibility Principle
|
|
20
|
+
*/
|
|
21
|
+
class PluginConfigService {
|
|
22
|
+
constructor(config, logger) {
|
|
23
|
+
this.logger = logger;
|
|
24
|
+
this.utilityFunctions = this.initializeUtilityFunctions(config);
|
|
25
|
+
this.cssFilePath = config.globalCss;
|
|
26
|
+
// If ANY variant config is defined, only enable those explicitly set to true
|
|
27
|
+
// If NO variant config is defined, enable both by default
|
|
28
|
+
const variantsConfig = config.variants;
|
|
29
|
+
const hasAnyVariantConfig = variantsConfig &&
|
|
30
|
+
(variantsConfig.tailwindVariants !== undefined ||
|
|
31
|
+
variantsConfig.classVarianceAuthority !== undefined);
|
|
32
|
+
if (hasAnyVariantConfig) {
|
|
33
|
+
// User specified at least one variant - only enable those explicitly set to true
|
|
34
|
+
this.tailwindVariantsEnabled = variantsConfig.tailwindVariants === true;
|
|
35
|
+
this.classVarianceAuthorityEnabled = variantsConfig.classVarianceAuthority === true;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
// No variants configured - enable both by default
|
|
39
|
+
this.tailwindVariantsEnabled = true;
|
|
40
|
+
this.classVarianceAuthorityEnabled = true;
|
|
41
|
+
}
|
|
42
|
+
this.logExtractorConfig();
|
|
43
|
+
}
|
|
44
|
+
initializeUtilityFunctions(config) {
|
|
45
|
+
if (config.utilityFunctions && Array.isArray(config.utilityFunctions)) {
|
|
46
|
+
// Merge user-provided functions with defaults (remove duplicates)
|
|
47
|
+
const merged = [...new Set([...DEFAULT_UTILITY_FUNCTIONS, ...config.utilityFunctions])];
|
|
48
|
+
this.logger.log(`Using utility functions (defaults + custom): ${merged.join(', ')}`);
|
|
49
|
+
return merged;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
this.logger.log(`Using default utility functions: ${DEFAULT_UTILITY_FUNCTIONS.join(', ')}`);
|
|
53
|
+
return DEFAULT_UTILITY_FUNCTIONS;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
getUtilityFunctions() {
|
|
57
|
+
return this.utilityFunctions;
|
|
58
|
+
}
|
|
59
|
+
getCssFilePath() {
|
|
60
|
+
return this.cssFilePath;
|
|
61
|
+
}
|
|
62
|
+
hasValidCssPath() {
|
|
63
|
+
return this.cssFilePath !== undefined && this.cssFilePath.length > 0;
|
|
64
|
+
}
|
|
65
|
+
isTailwindVariantsEnabled() {
|
|
66
|
+
return this.tailwindVariantsEnabled;
|
|
67
|
+
}
|
|
68
|
+
isClassVarianceAuthorityEnabled() {
|
|
69
|
+
return this.classVarianceAuthorityEnabled;
|
|
70
|
+
}
|
|
71
|
+
logExtractorConfig() {
|
|
72
|
+
const enabled = [];
|
|
73
|
+
if (this.tailwindVariantsEnabled)
|
|
74
|
+
enabled.push('tailwind-variants');
|
|
75
|
+
if (this.classVarianceAuthorityEnabled)
|
|
76
|
+
enabled.push('class-variance-authority');
|
|
77
|
+
if (enabled.length === 0) {
|
|
78
|
+
this.logger.log('⚠️ No variant library extractors enabled');
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
this.logger.log(`✓ Enabled variant extractors: ${enabled.join(', ')}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
exports.PluginConfigService = PluginConfigService;
|
|
86
|
+
//# sourceMappingURL=PluginConfigService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginConfigService.js","sourceRoot":"","sources":["../../src/services/PluginConfigService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as ts from 'typescript/lib/tsserverlibrary';
|
|
2
|
+
import { IClassNameValidator } from '../core/interfaces';
|
|
3
|
+
import { Logger } from '../utils/Logger';
|
|
4
|
+
import { ClassNameExtractionService } from './ClassNameExtractionService';
|
|
5
|
+
import { DiagnosticService } from './DiagnosticService';
|
|
6
|
+
/**
|
|
7
|
+
* Service responsible for validating class names and creating diagnostics
|
|
8
|
+
* Orchestrates the validation workflow
|
|
9
|
+
*/
|
|
10
|
+
export declare class ValidationService {
|
|
11
|
+
private readonly extractionService;
|
|
12
|
+
private readonly diagnosticService;
|
|
13
|
+
private readonly validator;
|
|
14
|
+
private readonly logger;
|
|
15
|
+
constructor(extractionService: ClassNameExtractionService, diagnosticService: DiagnosticService, validator: IClassNameValidator, logger: Logger);
|
|
16
|
+
/**
|
|
17
|
+
* Validate a source file and return diagnostics
|
|
18
|
+
*/
|
|
19
|
+
validateFile(typescript: typeof ts, sourceFile: ts.SourceFile, utilityFunctions: string[], typeChecker?: ts.TypeChecker): ts.Diagnostic[];
|
|
20
|
+
/**
|
|
21
|
+
* Filter out valid classes and return only invalid ones
|
|
22
|
+
*/
|
|
23
|
+
private filterInvalidClasses;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=ValidationService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValidationService.d.ts","sourceRoot":"","sources":["../../src/services/ValidationService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD;;;GAGG;AACH,qBAAa,iBAAiB;IAE5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAHN,iBAAiB,EAAE,0BAA0B,EAC7C,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,EAAE,mBAAmB,EAC9B,MAAM,EAAE,MAAM;IAGhC;;OAEG;IACH,YAAY,CACX,UAAU,EAAE,OAAO,EAAE,EACrB,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,gBAAgB,EAAE,MAAM,EAAE,EAC1B,WAAW,CAAC,EAAE,EAAE,CAAC,WAAW,GAC1B,EAAE,CAAC,UAAU,EAAE;IAgClB;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAS5B"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ValidationService = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Service responsible for validating class names and creating diagnostics
|
|
6
|
+
* Orchestrates the validation workflow
|
|
7
|
+
*/
|
|
8
|
+
class ValidationService {
|
|
9
|
+
constructor(extractionService, diagnosticService, validator, logger) {
|
|
10
|
+
this.extractionService = extractionService;
|
|
11
|
+
this.diagnosticService = diagnosticService;
|
|
12
|
+
this.validator = validator;
|
|
13
|
+
this.logger = logger;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Validate a source file and return diagnostics
|
|
17
|
+
*/
|
|
18
|
+
validateFile(typescript, sourceFile, utilityFunctions, typeChecker) {
|
|
19
|
+
if (!this.validator.isInitialized()) {
|
|
20
|
+
this.logger.log(`[ValidationService] Validator not initialized yet for ${sourceFile.fileName}`);
|
|
21
|
+
return [];
|
|
22
|
+
}
|
|
23
|
+
this.logger.log(`[ValidationService] Processing file: ${sourceFile.fileName}`);
|
|
24
|
+
// Extract all class names from the file
|
|
25
|
+
const classNames = this.extractionService.extractFromSourceFile(typescript, sourceFile, utilityFunctions, typeChecker);
|
|
26
|
+
this.logger.log(`[ValidationService] Found ${classNames.length} class names to validate`);
|
|
27
|
+
// Filter invalid class names
|
|
28
|
+
const invalidClasses = this.filterInvalidClasses(classNames);
|
|
29
|
+
if (invalidClasses.length > 0) {
|
|
30
|
+
this.logger.log(`[ValidationService] Returning ${invalidClasses.length} diagnostics`);
|
|
31
|
+
return this.diagnosticService.createDiagnostics(invalidClasses, sourceFile);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
this.logger.log(`[ValidationService] No invalid classes found`);
|
|
35
|
+
return [];
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Filter out valid classes and return only invalid ones
|
|
40
|
+
*/
|
|
41
|
+
filterInvalidClasses(classNames) {
|
|
42
|
+
return classNames.filter(classInfo => {
|
|
43
|
+
const isValid = this.validator.isValidClass(classInfo.className);
|
|
44
|
+
this.logger.log(`[ValidationService] Validating "${classInfo.className}": ${isValid ? 'VALID' : 'INVALID'}`);
|
|
45
|
+
return !isValid;
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.ValidationService = ValidationService;
|
|
50
|
+
//# sourceMappingURL=ValidationService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValidationService.js","sourceRoot":"","sources":["../../src/services/ValidationService.ts"],"names":[],"mappings":";;;AAQA;;;GAGG;AACH,MAAa,iBAAiB;IAC7B,YACkB,iBAA6C,EAC7C,iBAAoC,EACpC,SAA8B,EAC9B,MAAc;QAHd,sBAAiB,GAAjB,iBAAiB,CAA4B;QAC7C,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,cAAS,GAAT,SAAS,CAAqB;QAC9B,WAAM,GAAN,MAAM,CAAQ;IAC7B,CAAC;IAEJ;;OAEG;IACH,YAAY,CACX,UAAqB,EACrB,UAAyB,EACzB,gBAA0B,EAC1B,WAA4B;QAE5B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,GAAG,CACd,yDAAyD,UAAU,CAAC,QAAQ,EAAE,CAC9E,CAAC;YACF,OAAO,EAAE,CAAC;QACX,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,wCAAwC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE/E,wCAAwC;QACxC,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAC9D,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,WAAW,CACX,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,6BAA6B,UAAU,CAAC,MAAM,0BAA0B,CAAC,CAAC;QAE1F,6BAA6B;QAC7B,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAE7D,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iCAAiC,cAAc,CAAC,MAAM,cAAc,CAAC,CAAC;YACtF,OAAO,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;YAChE,OAAO,EAAE,CAAC;QACX,CAAC;IACF,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,UAA2B;QACvD,OAAO,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;YACpC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACjE,IAAI,CAAC,MAAM,CAAC,GAAG,CACd,mCAAmC,SAAS,CAAC,SAAS,MAAM,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAC3F,CAAC;YACF,OAAO,CAAC,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;IACJ,CAAC;CACD;AA5DD,8CA4DC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as ts from 'typescript/lib/tsserverlibrary';
|
|
2
|
+
export interface Logger {
|
|
3
|
+
log(msg: string): void;
|
|
4
|
+
}
|
|
5
|
+
export declare class LoggerImpl implements Logger {
|
|
6
|
+
private readonly info;
|
|
7
|
+
constructor(info: ts.server.PluginCreateInfo);
|
|
8
|
+
log(msg: string): void;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=Logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../src/utils/Logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAErD,MAAM,WAAW,MAAM;IACtB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,qBAAa,UAAW,YAAW,MAAM;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB;IAEtD,GAAG,CAAC,GAAG,EAAE,MAAM;CAGtB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LoggerImpl = void 0;
|
|
4
|
+
class LoggerImpl {
|
|
5
|
+
constructor(info) {
|
|
6
|
+
this.info = info;
|
|
7
|
+
}
|
|
8
|
+
log(msg) {
|
|
9
|
+
this.info.project.projectService.logger.info(`[tailwind-typescript-plugin] ${msg}`);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.LoggerImpl = LoggerImpl;
|
|
13
|
+
//# sourceMappingURL=Logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../src/utils/Logger.ts"],"names":[],"mappings":";;;AAMA,MAAa,UAAU;IACtB,YAA6B,IAAgC;QAAhC,SAAI,GAAJ,IAAI,CAA4B;IAAG,CAAC;IAE1D,GAAG,CAAC,GAAW;QACrB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC;IACrF,CAAC;CACD;AAND,gCAMC"}
|