tailwind-typescript-plugin 1.4.1-beta.2 → 1.4.1-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.
Files changed (108) hide show
  1. package/CHANGELOG.md +123 -0
  2. package/README.md +375 -77
  3. package/lib/core/interfaces.d.ts +23 -12
  4. package/lib/core/interfaces.d.ts.map +1 -1
  5. package/lib/core/types.d.ts +112 -1
  6. package/lib/core/types.d.ts.map +1 -1
  7. package/lib/extractors/BaseExtractor.d.ts +49 -2
  8. package/lib/extractors/BaseExtractor.d.ts.map +1 -1
  9. package/lib/extractors/BaseExtractor.js +184 -5
  10. package/lib/extractors/BaseExtractor.js.map +1 -1
  11. package/lib/extractors/CvaExtractor.js +1 -1
  12. package/lib/extractors/CvaExtractor.js.map +1 -1
  13. package/lib/extractors/ExpressionExtractor.d.ts.map +1 -1
  14. package/lib/extractors/ExpressionExtractor.js +35 -5
  15. package/lib/extractors/ExpressionExtractor.js.map +1 -1
  16. package/lib/extractors/JsxAttributeExtractor.d.ts +2 -1
  17. package/lib/extractors/JsxAttributeExtractor.d.ts.map +1 -1
  18. package/lib/extractors/JsxAttributeExtractor.js +15 -8
  19. package/lib/extractors/JsxAttributeExtractor.js.map +1 -1
  20. package/lib/extractors/SvelteAttributeExtractor.d.ts +17 -0
  21. package/lib/extractors/SvelteAttributeExtractor.d.ts.map +1 -0
  22. package/lib/extractors/SvelteAttributeExtractor.js +27 -0
  23. package/lib/extractors/SvelteAttributeExtractor.js.map +1 -0
  24. package/lib/extractors/TailwindVariantsExtractor.d.ts.map +1 -1
  25. package/lib/extractors/TailwindVariantsExtractor.js +1 -5
  26. package/lib/extractors/TailwindVariantsExtractor.js.map +1 -1
  27. package/lib/extractors/VariableReferenceExtractor.d.ts.map +1 -1
  28. package/lib/extractors/VariableReferenceExtractor.js +21 -0
  29. package/lib/extractors/VariableReferenceExtractor.js.map +1 -1
  30. package/lib/extractors/VueAttributeExtractor.d.ts +119 -0
  31. package/lib/extractors/VueAttributeExtractor.d.ts.map +1 -0
  32. package/lib/extractors/VueAttributeExtractor.js +911 -0
  33. package/lib/extractors/VueAttributeExtractor.js.map +1 -0
  34. package/lib/extractors/VueExpressionExtractor.d.ts +21 -0
  35. package/lib/extractors/VueExpressionExtractor.d.ts.map +1 -0
  36. package/lib/extractors/VueExpressionExtractor.js +51 -0
  37. package/lib/extractors/VueExpressionExtractor.js.map +1 -0
  38. package/lib/infrastructure/TailwindConflictDetector.d.ts +28 -18
  39. package/lib/infrastructure/TailwindConflictDetector.d.ts.map +1 -1
  40. package/lib/infrastructure/TailwindConflictDetector.js +216 -486
  41. package/lib/infrastructure/TailwindConflictDetector.js.map +1 -1
  42. package/lib/infrastructure/TailwindValidator.css-vars.spec.js +1 -11
  43. package/lib/infrastructure/TailwindValidator.css-vars.spec.js.map +1 -1
  44. package/lib/infrastructure/TailwindValidator.d.ts +16 -3
  45. package/lib/infrastructure/TailwindValidator.d.ts.map +1 -1
  46. package/lib/infrastructure/TailwindValidator.js +83 -24
  47. package/lib/infrastructure/TailwindValidator.js.map +1 -1
  48. package/lib/infrastructure/TailwindValidator.spec.js +50 -17
  49. package/lib/infrastructure/TailwindValidator.spec.js.map +1 -1
  50. package/lib/plugin/TailwindTypescriptPlugin.d.ts +18 -1
  51. package/lib/plugin/TailwindTypescriptPlugin.d.ts.map +1 -1
  52. package/lib/plugin/TailwindTypescriptPlugin.js +124 -55
  53. package/lib/plugin/TailwindTypescriptPlugin.js.map +1 -1
  54. package/lib/services/ClassNameExtractionService.d.ts +21 -5
  55. package/lib/services/ClassNameExtractionService.d.ts.map +1 -1
  56. package/lib/services/ClassNameExtractionService.js +76 -14
  57. package/lib/services/ClassNameExtractionService.js.map +1 -1
  58. package/lib/services/ClassNameExtractionService.spec.d.ts +2 -0
  59. package/lib/services/ClassNameExtractionService.spec.d.ts.map +1 -0
  60. package/lib/services/ClassNameExtractionService.spec.js +222 -0
  61. package/lib/services/ClassNameExtractionService.spec.js.map +1 -0
  62. package/lib/services/CodeActionService.spec.js +1 -2
  63. package/lib/services/CodeActionService.spec.js.map +1 -1
  64. package/lib/services/CompletionService.d.ts +121 -0
  65. package/lib/services/CompletionService.d.ts.map +1 -0
  66. package/lib/services/CompletionService.js +573 -0
  67. package/lib/services/CompletionService.js.map +1 -0
  68. package/lib/services/CompletionService.spec.d.ts +2 -0
  69. package/lib/services/CompletionService.spec.d.ts.map +1 -0
  70. package/lib/services/CompletionService.spec.js +1182 -0
  71. package/lib/services/CompletionService.spec.js.map +1 -0
  72. package/lib/services/ConflictClassDetection.spec.js +26 -21
  73. package/lib/services/ConflictClassDetection.spec.js.map +1 -1
  74. package/lib/services/DiagnosticService.d.ts +8 -8
  75. package/lib/services/DiagnosticService.d.ts.map +1 -1
  76. package/lib/services/DiagnosticService.js +29 -13
  77. package/lib/services/DiagnosticService.js.map +1 -1
  78. package/lib/services/DuplicateClassDetection.spec.js +61 -81
  79. package/lib/services/DuplicateClassDetection.spec.js.map +1 -1
  80. package/lib/services/PluginConfigService.d.ts +47 -15
  81. package/lib/services/PluginConfigService.d.ts.map +1 -1
  82. package/lib/services/PluginConfigService.js +203 -75
  83. package/lib/services/PluginConfigService.js.map +1 -1
  84. package/lib/services/PluginConfigService.spec.d.ts +2 -0
  85. package/lib/services/PluginConfigService.spec.d.ts.map +1 -0
  86. package/lib/services/PluginConfigService.spec.js +93 -0
  87. package/lib/services/PluginConfigService.spec.js.map +1 -0
  88. package/lib/services/ValidationService.d.ts +8 -5
  89. package/lib/services/ValidationService.d.ts.map +1 -1
  90. package/lib/services/ValidationService.js +49 -49
  91. package/lib/services/ValidationService.js.map +1 -1
  92. package/lib/utils/FrameworkDetector.d.ts +24 -0
  93. package/lib/utils/FrameworkDetector.d.ts.map +1 -0
  94. package/lib/utils/FrameworkDetector.js +52 -0
  95. package/lib/utils/FrameworkDetector.js.map +1 -0
  96. package/lib/utils/FrameworkDetector.spec.d.ts +2 -0
  97. package/lib/utils/FrameworkDetector.spec.d.ts.map +1 -0
  98. package/lib/utils/FrameworkDetector.spec.js +75 -0
  99. package/lib/utils/FrameworkDetector.spec.js.map +1 -0
  100. package/package.json +4 -2
  101. package/lib/extractors/StringLiteralExtractor.d.ts +0 -12
  102. package/lib/extractors/StringLiteralExtractor.d.ts.map +0 -1
  103. package/lib/extractors/StringLiteralExtractor.js +0 -21
  104. package/lib/extractors/StringLiteralExtractor.js.map +0 -1
  105. package/lib/services/ClassNameExtractionService.original.d.ts +0 -20
  106. package/lib/services/ClassNameExtractionService.original.d.ts.map +0 -1
  107. package/lib/services/ClassNameExtractionService.original.js +0 -48
  108. package/lib/services/ClassNameExtractionService.original.js.map +0 -1
@@ -1,12 +1,12 @@
1
1
  import * as ts from 'typescript/lib/tsserverlibrary';
2
2
  export declare class TailwindTypescriptPlugin {
3
3
  private readonly typescript;
4
- private logger;
5
4
  private validator;
6
5
  private validationService;
7
6
  private configService;
8
7
  private diagnosticCache;
9
8
  private codeActionService;
9
+ private completionService;
10
10
  private initializationPromise;
11
11
  private cssFileWatcher;
12
12
  private cssFilePath;
@@ -60,5 +60,22 @@ export declare class TailwindTypescriptPlugin {
60
60
  * Create the getEditsForRefactor method to handle Tailwind refactor actions
61
61
  */
62
62
  private createGetEditsForRefactor;
63
+ /**
64
+ * Create the getCompletionsAtPosition method with Tailwind class completions
65
+ */
66
+ private createGetCompletionsAtPosition;
67
+ /**
68
+ * Create the getCompletionEntryDetails method with CSS documentation
69
+ */
70
+ private createGetCompletionEntryDetails;
71
+ /**
72
+ * Create the getQuickInfoAtPosition method with Tailwind hover information
73
+ */
74
+ private createGetQuickInfoAtPosition;
75
+ /**
76
+ * Clean up resources when the plugin is disposed
77
+ * This closes file watchers and other resources that would otherwise keep the process alive
78
+ */
79
+ dispose(): void;
63
80
  }
64
81
  //# sourceMappingURL=TailwindTypescriptPlugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TailwindTypescriptPlugin.d.ts","sourceRoot":"","sources":["../../src/plugin/TailwindTypescriptPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAarD,qBAAa,wBAAwB;IAWxB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAVvC,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,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,qBAAqB,CAA8B;IAC3D,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,WAAW,CAAuB;gBAEb,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;IAsD3B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAyC3B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAoE1B;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IA2ClC;;;OAGG;IACH,OAAO,CAAC,4BAA4B,CA+CjC;IAEH;;OAEG;IACH,OAAO,CAAC,4BAA4B,CAuEjC;IAEH;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAmB1B;;OAEG;IACH,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAIhD;;;OAGG;IACH,OAAO,CAAC,4BAA4B,CA2GjC;IAEH;;OAEG;IACH,OAAO,CAAC,yBAAyB,CAsG9B;CACH"}
1
+ {"version":3,"file":"TailwindTypescriptPlugin.d.ts","sourceRoot":"","sources":["../../src/plugin/TailwindTypescriptPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAcrD,qBAAa,wBAAwB;IAWxB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAVvC,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,qBAAqB,CAA8B;IAC3D,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,WAAW,CAAuB;gBAEb,UAAU,EAAE,OAAO,EAAE;IAElD;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,GAAG,EAAE,CAAC,eAAe;IAc5D;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA2D3B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAoC3B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA+D1B;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAoDlC;;;OAGG;IACH,OAAO,CAAC,4BAA4B,CA0CjC;IAEH;;OAEG;IACH,OAAO,CAAC,4BAA4B,CAkDjC;IAEH;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;IACH,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAIhD;;;OAGG;IACH,OAAO,CAAC,4BAA4B,CA2GjC;IAEH;;OAEG;IACH,OAAO,CAAC,yBAAyB,CAsG9B;IAEH;;OAEG;IACH,OAAO,CAAC,8BAA8B,CA2CnC;IAEH;;OAEG;IACH,OAAO,CAAC,+BAA+B,CAkEpC;IAEH;;OAEG;IACH,OAAO,CAAC,4BAA4B,CAiCjC;IAEH;;;OAGG;IACH,OAAO,IAAI,IAAI;CAMf"}
@@ -9,11 +9,12 @@ 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 CodeActionService_1 = require("../services/CodeActionService");
12
+ const CompletionService_1 = require("../services/CompletionService");
12
13
  const DiagnosticService_1 = require("../services/DiagnosticService");
13
14
  const FileDiagnosticCache_1 = require("../services/FileDiagnosticCache");
14
15
  const PluginConfigService_1 = require("../services/PluginConfigService");
15
16
  const ValidationService_1 = require("../services/ValidationService");
16
- const Logger_1 = require("../utils/Logger");
17
+ const FrameworkDetector_1 = require("../utils/FrameworkDetector");
17
18
  class TailwindTypescriptPlugin {
18
19
  constructor(typescript) {
19
20
  this.typescript = typescript;
@@ -25,7 +26,6 @@ class TailwindTypescriptPlugin {
25
26
  * PERFORMANCE OPTIMIZED with file-level caching
26
27
  */
27
28
  this.createGetSemanticDiagnostics = (info) => (fileName) => {
28
- this.logger.log(`[getSemanticDiagnostics] Getting semantic diagnostics for ${fileName}`);
29
29
  // Get original TypeScript diagnostics
30
30
  const prior = info.languageService.getSemanticDiagnostics(fileName);
31
31
  // Skip if validator not initialized or not a JSX/TSX file
@@ -42,10 +42,8 @@ class TailwindTypescriptPlugin {
42
42
  const fileContent = sourceFile.getFullText();
43
43
  const cachedDiagnostics = this.diagnosticCache.get(fileName, fileContent);
44
44
  if (cachedDiagnostics !== undefined) {
45
- this.logger.log(`[CACHE HIT] Returning cached diagnostics for ${fileName}`);
46
45
  return [...prior, ...cachedDiagnostics];
47
46
  }
48
- this.logger.log(`[CACHE MISS] Validating ${fileName}`);
49
47
  // Get fresh type checker from current program (always up-to-date)
50
48
  const typeChecker = program.getTypeChecker();
51
49
  // Validate and get diagnostics
@@ -58,21 +56,12 @@ class TailwindTypescriptPlugin {
58
56
  * Create the getCodeFixesAtPosition method with Tailwind quick fixes
59
57
  */
60
58
  this.createGetCodeFixesAtPosition = (info) => (fileName, start, end, errorCodes, formatOptions, preferences) => {
61
- this.logger.log(`[getCodeFixesAtPosition] fileName=${fileName}, start=${start}, end=${end}, errorCodes=${errorCodes.join(',')}`);
62
59
  // Get original TypeScript code fixes
63
60
  const prior = info.languageService.getCodeFixesAtPosition(fileName, start, end, errorCodes, formatOptions, preferences);
64
61
  // Skip if code action service not initialized or not a supported file
65
62
  if (!this.codeActionService || !this.shouldValidateFile(fileName)) {
66
- this.logger.log('[getCodeFixesAtPosition] Skipping - service not initialized or unsupported file');
67
63
  return prior;
68
64
  }
69
- // Check if any of our error codes are requested
70
- const supportedCodes = this.codeActionService.getSupportedErrorCodes();
71
- const hasOurErrorCode = errorCodes.some(code => supportedCodes.includes(code));
72
- if (!hasOurErrorCode) {
73
- this.logger.log(`[getCodeFixesAtPosition] No matching error codes. Requested: ${errorCodes.join(',')}, Supported: ${supportedCodes.join(',')}`);
74
- // Still try to provide fixes - the error code check might not be necessary for all IDEs
75
- }
76
65
  // Get source file
77
66
  const program = info.languageService.getProgram();
78
67
  if (!program) {
@@ -84,10 +73,8 @@ class TailwindTypescriptPlugin {
84
73
  }
85
74
  // Get all diagnostics for this file (including cached Tailwind diagnostics)
86
75
  const allDiagnostics = this.diagnosticCache.get(fileName, sourceFile.getFullText()) || [];
87
- this.logger.log(`[getCodeFixesAtPosition] Found ${allDiagnostics.length} cached diagnostics`);
88
76
  // Get Tailwind quick fixes
89
77
  const tailwindFixes = this.codeActionService.getCodeActions(this.typescript, fileName, start, end, allDiagnostics, sourceFile);
90
- this.logger.log(`[getCodeFixesAtPosition] Generated ${tailwindFixes.length} Tailwind fixes`);
91
78
  return [...prior, ...tailwindFixes];
92
79
  };
93
80
  /**
@@ -251,17 +238,91 @@ class TailwindTypescriptPlugin {
251
238
  }
252
239
  return undefined;
253
240
  };
241
+ /**
242
+ * Create the getCompletionsAtPosition method with Tailwind class completions
243
+ */
244
+ this.createGetCompletionsAtPosition = (info) => (fileName, position, options) => {
245
+ // Get original TypeScript completions
246
+ const prior = info.languageService.getCompletionsAtPosition(fileName, position, options);
247
+ // Skip if completion service not initialized, not a supported file, or editor/autocomplete disabled
248
+ if (!this.completionService ||
249
+ !this.shouldValidateFile(fileName) ||
250
+ !this.configService.isAutocompleteEnabled()) {
251
+ return prior;
252
+ }
253
+ // Get source file
254
+ const program = info.languageService.getProgram();
255
+ if (!program) {
256
+ return prior;
257
+ }
258
+ const sourceFile = program.getSourceFile(fileName);
259
+ if (!sourceFile) {
260
+ return prior;
261
+ }
262
+ // Get Tailwind completions
263
+ const tailwindCompletions = this.completionService.getCompletionsAtPosition(this.typescript, sourceFile, position, prior);
264
+ if (!tailwindCompletions) {
265
+ return prior;
266
+ }
267
+ return tailwindCompletions;
268
+ };
269
+ /**
270
+ * Create the getCompletionEntryDetails method with CSS documentation
271
+ */
272
+ this.createGetCompletionEntryDetails = (info) => (fileName, position, entryName, formatOptions, source, preferences, data) => {
273
+ // Get source file
274
+ const program = info.languageService.getProgram();
275
+ if (!program) {
276
+ return info.languageService.getCompletionEntryDetails(fileName, position, entryName, formatOptions, source, preferences, data);
277
+ }
278
+ const sourceFile = program.getSourceFile(fileName);
279
+ if (!sourceFile) {
280
+ return info.languageService.getCompletionEntryDetails(fileName, position, entryName, formatOptions, source, preferences, data);
281
+ }
282
+ // Try to get Tailwind completion details first
283
+ if (this.completionService &&
284
+ this.shouldValidateFile(fileName) &&
285
+ this.configService.isAutocompleteEnabled()) {
286
+ const tailwindDetails = this.completionService.getCompletionEntryDetails(this.typescript, sourceFile, position, entryName);
287
+ if (tailwindDetails) {
288
+ return tailwindDetails;
289
+ }
290
+ }
291
+ // Fall back to original TypeScript completion details
292
+ return info.languageService.getCompletionEntryDetails(fileName, position, entryName, formatOptions, source, preferences, data);
293
+ };
294
+ /**
295
+ * Create the getQuickInfoAtPosition method with Tailwind hover information
296
+ */
297
+ this.createGetQuickInfoAtPosition = (info) => (fileName, position) => {
298
+ // Get source file
299
+ const program = info.languageService.getProgram();
300
+ if (!program) {
301
+ return info.languageService.getQuickInfoAtPosition(fileName, position);
302
+ }
303
+ const sourceFile = program.getSourceFile(fileName);
304
+ if (!sourceFile) {
305
+ return info.languageService.getQuickInfoAtPosition(fileName, position);
306
+ }
307
+ // Try to get Tailwind hover info first (only if hover is enabled)
308
+ if (this.completionService &&
309
+ this.shouldValidateFile(fileName) &&
310
+ this.configService.isHoverEnabled()) {
311
+ const tailwindInfo = this.completionService.getQuickInfoAtPosition(this.typescript, sourceFile, position);
312
+ if (tailwindInfo) {
313
+ return tailwindInfo;
314
+ }
315
+ }
316
+ // Fall back to original TypeScript quick info
317
+ return info.languageService.getQuickInfoAtPosition(fileName, position);
318
+ };
254
319
  }
255
320
  /**
256
321
  * Create the plugin proxy for TypeScript Language Service
257
322
  */
258
323
  create(info) {
259
- // PERFORMANCE: Use NoOpLogger by default, only enable if configured
260
- const enableLogging = (info.config || {}).enableLogging === true;
261
- this.logger = enableLogging ? new Logger_1.LoggerImpl(info, true) : new Logger_1.NoOpLogger();
262
- this.logger.log('============= Plugin Starting =============');
263
324
  // Initialize configuration service
264
- this.configService = new PluginConfigService_1.PluginConfigService(info.config || {}, this.logger);
325
+ this.configService = new PluginConfigService_1.PluginConfigService(info.config || {});
265
326
  // PERFORMANCE: Initialize file-level diagnostic cache
266
327
  this.diagnosticCache = new FileDiagnosticCache_1.FileDiagnosticCache(100);
267
328
  // Initialize validator if CSS file is configured
@@ -274,25 +335,30 @@ class TailwindTypescriptPlugin {
274
335
  */
275
336
  initializeValidator(info) {
276
337
  if (!this.configService.hasValidCssPath()) {
277
- this.logger.log('No CSS file configured');
278
338
  return;
279
339
  }
280
340
  const projectRoot = info.project.getCurrentDirectory();
281
341
  const relativeCssPath = this.configService.getCssFilePath();
282
342
  const absoluteCssPath = path_1.default.resolve(projectRoot, relativeCssPath);
283
343
  if (!fs_1.default.existsSync(absoluteCssPath)) {
284
- this.logger.log(`CSS file not found at: ${absoluteCssPath}`);
285
344
  return;
286
345
  }
287
346
  this.cssFilePath = absoluteCssPath;
288
- this.logger.log(`CSS file found, initializing Tailwind validator...`);
289
- this.validator = new TailwindValidator_1.TailwindValidator(absoluteCssPath, this.logger);
347
+ this.validator = new TailwindValidator_1.TailwindValidator(absoluteCssPath);
290
348
  // Initialize services with config flags
291
349
  const extractionService = new ClassNameExtractionService_1.ClassNameExtractionService(this.configService.isTailwindVariantsEnabled(), this.configService.isClassVarianceAuthorityEnabled());
292
350
  const diagnosticService = new DiagnosticService_1.DiagnosticService();
293
- this.validationService = new ValidationService_1.ValidationService(extractionService, diagnosticService, this.validator, this.logger);
351
+ this.validationService = new ValidationService_1.ValidationService(extractionService, diagnosticService, this.validator, this.configService, this.validator // Pass as CSS provider for conflict detection
352
+ );
294
353
  // Initialize code action service for quick fixes
295
354
  this.codeActionService = new CodeActionService_1.CodeActionService(this.validator);
355
+ // Initialize completion service for Tailwind class autocompletion
356
+ const completionConfig = {
357
+ utilityFunctions: this.configService.getUtilityFunctions(),
358
+ tailwindVariantsEnabled: this.configService.isTailwindVariantsEnabled(),
359
+ classVarianceAuthorityEnabled: this.configService.isClassVarianceAuthorityEnabled()
360
+ };
361
+ this.completionService = new CompletionService_1.CompletionService(this.validator, completionConfig);
296
362
  // Set allowed classes from config
297
363
  const allowedClasses = this.configService.getAllowedClasses();
298
364
  if (allowedClasses.length > 0) {
@@ -302,12 +368,11 @@ class TailwindTypescriptPlugin {
302
368
  this.initializationPromise = this.validator
303
369
  .initialize()
304
370
  .then(() => {
305
- this.logger.log('Tailwind validator initialized');
306
371
  // Set up file watcher after successful initialization
307
372
  this.setupCssFileWatcher(info);
308
373
  })
309
- .catch(error => {
310
- this.logger.log(`Failed to initialize Tailwind validator: ${error}`);
374
+ .catch(() => {
375
+ // Initialization failed - validator won't be ready
311
376
  });
312
377
  }
313
378
  /**
@@ -323,29 +388,26 @@ class TailwindTypescriptPlugin {
323
388
  this.cssFileWatcher.close();
324
389
  this.cssFileWatcher = null;
325
390
  }
326
- this.logger.log(`[CSSWatcher] Setting up file watcher for: ${this.cssFilePath}`);
327
391
  // Debounce timer to avoid multiple reloads for rapid changes
328
392
  let debounceTimer = null;
329
393
  try {
330
- this.cssFileWatcher = fs_1.default.watch(this.cssFilePath, (eventType, filename) => {
394
+ this.cssFileWatcher = fs_1.default.watch(this.cssFilePath, eventType => {
331
395
  if (eventType === 'change') {
332
396
  // Debounce: wait 300ms after last change before reloading
333
397
  if (debounceTimer) {
334
398
  clearTimeout(debounceTimer);
335
399
  }
336
400
  debounceTimer = setTimeout(() => {
337
- this.logger.log(`[CSSWatcher] CSS file changed: ${filename}`);
338
401
  this.reloadDesignSystem(info);
339
402
  }, 300);
340
403
  }
341
404
  });
342
- this.cssFileWatcher.on('error', error => {
343
- this.logger.log(`[CSSWatcher] Watcher error: ${error}`);
405
+ this.cssFileWatcher.on('error', () => {
406
+ // Watcher error - silently ignore
344
407
  });
345
- this.logger.log('[CSSWatcher] File watcher set up successfully');
346
408
  }
347
- catch (error) {
348
- this.logger.log(`[CSSWatcher] Failed to set up file watcher: ${error}`);
409
+ catch {
410
+ // Failed to set up file watcher - silently ignore
349
411
  }
350
412
  }
351
413
  /**
@@ -353,15 +415,16 @@ class TailwindTypescriptPlugin {
353
415
  * Clears all caches and re-initializes the validator
354
416
  */
355
417
  reloadDesignSystem(info) {
356
- this.logger.log('[CSSWatcher] Reloading design system...');
357
418
  // Clear the diagnostic cache - all files need revalidation
358
419
  this.diagnosticCache.clear();
359
- this.logger.log('[CSSWatcher] Diagnostic cache cleared');
420
+ // Clear the completion service cache
421
+ if (this.completionService) {
422
+ this.completionService.clearCache();
423
+ }
360
424
  // Reload the validator (this clears its internal cache too)
361
425
  this.validator
362
426
  .reload()
363
427
  .then(() => {
364
- this.logger.log('[CSSWatcher] Design system reloaded successfully');
365
428
  // Notify TypeScript that the project has changed to trigger re-validation
366
429
  try {
367
430
  // Use 'any' to access internal APIs that aren't in the public type definitions
@@ -370,12 +433,10 @@ class TailwindTypescriptPlugin {
370
433
  // Mark project as dirty - this is the most reliable way to trigger updates
371
434
  if (project && typeof project.markAsDirty === 'function') {
372
435
  project.markAsDirty();
373
- this.logger.log('[CSSWatcher] Marked project as dirty');
374
436
  }
375
437
  // Update the project graph to reflect changes
376
438
  if (project && typeof project.updateGraph === 'function') {
377
439
  project.updateGraph();
378
- this.logger.log('[CSSWatcher] Updated project graph');
379
440
  }
380
441
  // Access the project service to trigger diagnostic refresh
381
442
  // This is the internal API that actually notifies the editor
@@ -386,12 +447,10 @@ class TailwindTypescriptPlugin {
386
447
  if (typeof projectService.delayUpdateProjectGraphAndEnsureProjectStructureForOpenFiles ===
387
448
  'function') {
388
449
  projectService.delayUpdateProjectGraphAndEnsureProjectStructureForOpenFiles();
389
- this.logger.log('[CSSWatcher] Triggered delayed project update');
390
450
  }
391
451
  // Send custom event to trigger diagnostic refresh in some editors
392
452
  if (typeof projectService.sendProjectsUpdatedInBackgroundEvent === 'function') {
393
453
  projectService.sendProjectsUpdatedInBackgroundEvent();
394
- this.logger.log('[CSSWatcher] Sent projects updated event');
395
454
  }
396
455
  }
397
456
  // Try refreshDiagnostics if available (may work in some TS versions)
@@ -399,15 +458,14 @@ class TailwindTypescriptPlugin {
399
458
  if (project && typeof project.refreshDiagnostics === 'function') {
400
459
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
401
460
  project.refreshDiagnostics();
402
- this.logger.log('[CSSWatcher] Called refreshDiagnostics');
403
461
  }
404
462
  }
405
- catch (error) {
406
- this.logger.log(`[CSSWatcher] Error notifying project of changes: ${error}`);
463
+ catch {
464
+ // Error notifying project of changes - silently ignore
407
465
  }
408
466
  })
409
- .catch(error => {
410
- this.logger.log(`[CSSWatcher] Failed to reload design system: ${error}`);
467
+ .catch(() => {
468
+ // Failed to reload design system - silently ignore
411
469
  });
412
470
  }
413
471
  /**
@@ -445,6 +503,12 @@ class TailwindTypescriptPlugin {
445
503
  proxy.getApplicableRefactors = this.createGetApplicableRefactors(info);
446
504
  // Override getEditsForRefactor to handle our refactors
447
505
  proxy.getEditsForRefactor = this.createGetEditsForRefactor(info);
506
+ // Override getCompletionsAtPosition to provide Tailwind class completions
507
+ proxy.getCompletionsAtPosition = this.createGetCompletionsAtPosition(info);
508
+ // Override getCompletionEntryDetails to provide CSS documentation for completions
509
+ proxy.getCompletionEntryDetails = this.createGetCompletionEntryDetails(info);
510
+ // Override getQuickInfoAtPosition to provide hover information for Tailwind classes
511
+ proxy.getQuickInfoAtPosition = this.createGetQuickInfoAtPosition(info);
448
512
  return proxy;
449
513
  }
450
514
  /**
@@ -452,15 +516,10 @@ class TailwindTypescriptPlugin {
452
516
  */
453
517
  shouldValidateFile(fileName) {
454
518
  if (!this.validator || !this.validator.isInitialized()) {
455
- this.logger.log(`[shouldValidateFile] Validator not initialized yet for ${fileName}`);
456
519
  return false;
457
520
  }
458
- // Process .ts, .tsx, .js, and .jsx files
459
- const isSupportedFile = fileName.endsWith('.ts') ||
460
- fileName.endsWith('.tsx') ||
461
- fileName.endsWith('.js') ||
462
- fileName.endsWith('.jsx');
463
- if (!isSupportedFile) {
521
+ // Process supported framework files (.ts, .tsx, .js, .jsx, .vue, .svelte)
522
+ if (!(0, FrameworkDetector_1.isSupportedFile)(fileName)) {
464
523
  return false;
465
524
  }
466
525
  return true;
@@ -471,6 +530,16 @@ class TailwindTypescriptPlugin {
471
530
  getInitializationPromise() {
472
531
  return this.initializationPromise;
473
532
  }
533
+ /**
534
+ * Clean up resources when the plugin is disposed
535
+ * This closes file watchers and other resources that would otherwise keep the process alive
536
+ */
537
+ dispose() {
538
+ if (this.cssFileWatcher) {
539
+ this.cssFileWatcher.close();
540
+ this.cssFileWatcher = null;
541
+ }
542
+ }
474
543
  }
475
544
  exports.TailwindTypescriptPlugin = TailwindTypescriptPlugin;
476
545
  //# sourceMappingURL=TailwindTypescriptPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TailwindTypescriptPlugin.js","sourceRoot":"","sources":["../../src/plugin/TailwindTypescriptPlugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TailwindTypescriptPlugin.js","sourceRoot":"","sources":["../../src/plugin/TailwindTypescriptPlugin.ts"],"names":[],"mappings":"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"}
@@ -1,29 +1,45 @@
1
1
  import * as ts from 'typescript/lib/tsserverlibrary';
2
2
  import { IClassNameExtractor } from '../core/interfaces';
3
- import { ClassNameInfo } from '../core/types';
3
+ import { ClassNameInfo, UtilityFunction } from '../core/types';
4
4
  /**
5
5
  * OPTIMIZED: Service responsible for orchestrating class name extraction
6
6
  *
7
7
  * Performance improvements:
8
- * 1. Fast path for JSX elements (skip non-JSX nodes early)
8
+ * 1. Fast path for framework-specific elements (skip non-matching nodes early)
9
9
  * 2. Fast path for tv() calls (check only call expressions)
10
10
  * 3. Fast path for cva() calls (check only call expressions)
11
- * 4. Single extractor instance (avoid canHandle() overhead)
11
+ * 4. Lazy initialization - only creates extractors when needed (memory efficient)
12
12
  * 5. Direct node type checking (faster than polymorphic calls)
13
13
  * 6. Reduced function call overhead
14
14
  * 7. Conditional extractor execution (skip disabled extractors)
15
+ * 8. Framework detection per file (route to appropriate extractor)
16
+ *
17
+ * SOLID Principles:
18
+ * - Single Responsibility: Only orchestrates extraction, doesn't own all extractors
19
+ * - Open/Closed: Can add new frameworks without modifying constructor
20
+ * - Dependency Inversion: Uses IClassNameExtractor interface
15
21
  */
16
22
  export declare class ClassNameExtractionService {
17
23
  private readonly enableTailwindVariants;
18
24
  private readonly enableClassVarianceAuthority;
19
- private jsxExtractor;
25
+ private frameworkExtractors;
20
26
  private tvExtractor;
21
27
  private cvaExtractor;
22
28
  constructor(enableTailwindVariants?: boolean, enableClassVarianceAuthority?: boolean);
29
+ /**
30
+ * Factory method to create the appropriate extractor for a framework
31
+ * Follows Factory Pattern for object creation
32
+ */
33
+ private createFrameworkExtractor;
34
+ /**
35
+ * Gets the extractor for a framework, creating it lazily if needed
36
+ * This ensures we only instantiate extractors we actually use
37
+ */
38
+ private getFrameworkExtractor;
23
39
  /**
24
40
  * Extract all class names from a source file (OPTIMIZED)
25
41
  */
26
- extractFromSourceFile(typescript: typeof ts, sourceFile: ts.SourceFile, utilityFunctions: string[], typeChecker?: ts.TypeChecker): ClassNameInfo[];
42
+ extractFromSourceFile(typescript: typeof ts, sourceFile: ts.SourceFile, utilityFunctions: UtilityFunction[], typeChecker?: ts.TypeChecker, classAttributes?: string[]): ClassNameInfo[];
27
43
  /**
28
44
  * Add a custom extractor (for extensibility)
29
45
  * Note: This is kept for API compatibility but not used in optimized path
@@ -1 +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"}
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,eAAe,EAAE,MAAM,eAAe,CAAC;AAQlF;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,0BAA0B;IASrC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,4BAA4B;IAR9C,OAAO,CAAC,mBAAmB,CAA6C;IAGxE,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,YAAY,CAAsB;gBAGxB,sBAAsB,GAAE,OAAc,EACtC,4BAA4B,GAAE,OAAc;IAQ9D;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAahC;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAO7B;;OAEG;IACH,qBAAqB,CACpB,UAAU,EAAE,OAAO,EAAE,EACrB,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,gBAAgB,EAAE,eAAe,EAAE,EACnC,WAAW,CAAC,EAAE,EAAE,CAAC,WAAW,EAC5B,eAAe,CAAC,EAAE,MAAM,EAAE,GACxB,aAAa,EAAE;IA8ElB;;;OAGG;IAEH,YAAY,CAAC,UAAU,EAAE,mBAAmB,GAAG,IAAI;IAMnD;;OAEG;IACH,WAAW,IAAI,IAAI;CAQnB"}