tailwind-typescript-plugin 1.4.0-beta.23 → 1.4.0-beta.25

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 (94) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/lib/core/interfaces.d.ts +17 -1
  3. package/lib/core/interfaces.d.ts.map +1 -1
  4. package/lib/extractors/BaseExtractor.d.ts +7 -1
  5. package/lib/extractors/BaseExtractor.d.ts.map +1 -1
  6. package/lib/extractors/BaseExtractor.js +10 -0
  7. package/lib/extractors/BaseExtractor.js.map +1 -1
  8. package/lib/extractors/BaseExtractor.spec.d.ts +2 -0
  9. package/lib/extractors/BaseExtractor.spec.d.ts.map +1 -0
  10. package/lib/extractors/BaseExtractor.spec.js +421 -0
  11. package/lib/extractors/BaseExtractor.spec.js.map +1 -0
  12. package/lib/extractors/CvaExtractor.spec.d.ts +2 -0
  13. package/lib/extractors/CvaExtractor.spec.d.ts.map +1 -0
  14. package/lib/extractors/CvaExtractor.spec.js +1177 -0
  15. package/lib/extractors/CvaExtractor.spec.js.map +1 -0
  16. package/lib/extractors/ExpressionExtractor.spec.d.ts +2 -0
  17. package/lib/extractors/ExpressionExtractor.spec.d.ts.map +1 -0
  18. package/lib/extractors/ExpressionExtractor.spec.js +316 -0
  19. package/lib/extractors/ExpressionExtractor.spec.js.map +1 -0
  20. package/lib/extractors/JsxAttributeExtractor.d.ts +5 -0
  21. package/lib/extractors/JsxAttributeExtractor.d.ts.map +1 -1
  22. package/lib/extractors/JsxAttributeExtractor.js +6 -0
  23. package/lib/extractors/JsxAttributeExtractor.js.map +1 -1
  24. package/lib/extractors/JsxAttributeExtractor.spec.d.ts +2 -0
  25. package/lib/extractors/JsxAttributeExtractor.spec.d.ts.map +1 -0
  26. package/lib/extractors/JsxAttributeExtractor.spec.js +430 -0
  27. package/lib/extractors/JsxAttributeExtractor.spec.js.map +1 -0
  28. package/lib/extractors/TailwindVariantsExtractor.spec.d.ts +2 -0
  29. package/lib/extractors/TailwindVariantsExtractor.spec.d.ts.map +1 -0
  30. package/lib/extractors/TailwindVariantsExtractor.spec.js +1407 -0
  31. package/lib/extractors/TailwindVariantsExtractor.spec.js.map +1 -0
  32. package/lib/extractors/TemplateExpressionExtractor.spec.d.ts +2 -0
  33. package/lib/extractors/TemplateExpressionExtractor.spec.d.ts.map +1 -0
  34. package/lib/extractors/TemplateExpressionExtractor.spec.js +240 -0
  35. package/lib/extractors/TemplateExpressionExtractor.spec.js.map +1 -0
  36. package/lib/extractors/VariableReferenceExtractor.spec.d.ts +2 -0
  37. package/lib/extractors/VariableReferenceExtractor.spec.d.ts.map +1 -0
  38. package/lib/extractors/VariableReferenceExtractor.spec.js +138 -0
  39. package/lib/extractors/VariableReferenceExtractor.spec.js.map +1 -0
  40. package/lib/extractors/VueAttributeExtractor.d.ts +6 -0
  41. package/lib/extractors/VueAttributeExtractor.d.ts.map +1 -1
  42. package/lib/extractors/VueAttributeExtractor.js +7 -0
  43. package/lib/extractors/VueAttributeExtractor.js.map +1 -1
  44. package/lib/plugin/TailwindTypescriptPlugin.d.ts +9 -0
  45. package/lib/plugin/TailwindTypescriptPlugin.d.ts.map +1 -1
  46. package/lib/plugin/TailwindTypescriptPlugin.js +36 -11
  47. package/lib/plugin/TailwindTypescriptPlugin.js.map +1 -1
  48. package/lib/services/ClassNameExtractionService.d.ts +8 -3
  49. package/lib/services/ClassNameExtractionService.d.ts.map +1 -1
  50. package/lib/services/ClassNameExtractionService.js +26 -25
  51. package/lib/services/ClassNameExtractionService.js.map +1 -1
  52. package/lib/services/ClassNameExtractionService.spec.js +0 -7
  53. package/lib/services/ClassNameExtractionService.spec.js.map +1 -1
  54. package/lib/services/ConfigSchemaValidator.d.ts +40 -0
  55. package/lib/services/ConfigSchemaValidator.d.ts.map +1 -0
  56. package/lib/services/ConfigSchemaValidator.js +139 -0
  57. package/lib/services/ConfigSchemaValidator.js.map +1 -0
  58. package/lib/services/ConfigSchemaValidator.spec.d.ts +2 -0
  59. package/lib/services/ConfigSchemaValidator.spec.d.ts.map +1 -0
  60. package/lib/services/ConfigSchemaValidator.spec.js +344 -0
  61. package/lib/services/ConfigSchemaValidator.spec.js.map +1 -0
  62. package/lib/services/ConflictClassDetection.spec.js +48 -0
  63. package/lib/services/ConflictClassDetection.spec.js.map +1 -1
  64. package/lib/services/DiagnosticService.spec.d.ts +2 -0
  65. package/lib/services/DiagnosticService.spec.d.ts.map +1 -0
  66. package/lib/services/DiagnosticService.spec.js +259 -0
  67. package/lib/services/DiagnosticService.spec.js.map +1 -0
  68. package/lib/services/FileDiagnosticCache.spec.d.ts +2 -0
  69. package/lib/services/FileDiagnosticCache.spec.d.ts.map +1 -0
  70. package/lib/services/FileDiagnosticCache.spec.js +213 -0
  71. package/lib/services/FileDiagnosticCache.spec.js.map +1 -0
  72. package/lib/services/PerformanceCache.spec.d.ts +2 -0
  73. package/lib/services/PerformanceCache.spec.d.ts.map +1 -0
  74. package/lib/services/PerformanceCache.spec.js +168 -0
  75. package/lib/services/PerformanceCache.spec.js.map +1 -0
  76. package/lib/services/PluginConfigService.d.ts +19 -0
  77. package/lib/services/PluginConfigService.d.ts.map +1 -1
  78. package/lib/services/PluginConfigService.js +29 -0
  79. package/lib/services/PluginConfigService.js.map +1 -1
  80. package/lib/services/ValidationService.spec.d.ts +2 -0
  81. package/lib/services/ValidationService.spec.d.ts.map +1 -0
  82. package/lib/services/ValidationService.spec.js +289 -0
  83. package/lib/services/ValidationService.spec.js.map +1 -0
  84. package/lib/utils/FrameworkDetector.d.ts +1 -2
  85. package/lib/utils/FrameworkDetector.d.ts.map +1 -1
  86. package/lib/utils/FrameworkDetector.js +0 -5
  87. package/lib/utils/FrameworkDetector.js.map +1 -1
  88. package/lib/utils/FrameworkDetector.spec.js +1 -9
  89. package/lib/utils/FrameworkDetector.spec.js.map +1 -1
  90. package/package.json +10 -3
  91. package/lib/extractors/SvelteAttributeExtractor.d.ts +0 -17
  92. package/lib/extractors/SvelteAttributeExtractor.d.ts.map +0 -1
  93. package/lib/extractors/SvelteAttributeExtractor.js +0 -27
  94. package/lib/extractors/SvelteAttributeExtractor.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,33 @@
1
+ ## [1.4.0-beta.25](https://github.com/IvanRodriCalleja/tailwind-typescript-plugin/compare/v1.4.0-beta.24...v1.4.0-beta.25) (2026-02-18)
2
+
3
+ ### ✨ Features
4
+
5
+ * add e2e test ([4f021c9](https://github.com/IvanRodriCalleja/tailwind-typescript-plugin/commit/4f021c9cfa82209a6c8bfca1a831d25092c736f7))
6
+
7
+ ### ✅ Tests
8
+
9
+ * **conflict-detection:** add tests for nested prefix handling ([302f2ff](https://github.com/IvanRodriCalleja/tailwind-typescript-plugin/commit/302f2ffe5f19041802a83fc8d3a6a54c66f8c507))
10
+
11
+ ### 🔧 Chores
12
+
13
+ * add node filter optimization for extractors ([0e419b9](https://github.com/IvanRodriCalleja/tailwind-typescript-plugin/commit/0e419b9e797930673c5a6db679cc85c2c7c9178f))
14
+ * improve error handling ([80566b2](https://github.com/IvanRodriCalleja/tailwind-typescript-plugin/commit/80566b2de85161642dde3fce51b5b1bc910ea1ea))
15
+ * move postcss and tailwindcss to peer dependencies ([9127e95](https://github.com/IvanRodriCalleja/tailwind-typescript-plugin/commit/9127e95738c85192e4fc16190b9a650ba1f4c333))
16
+
17
+ ## [1.4.0-beta.24](https://github.com/IvanRodriCalleja/tailwind-typescript-plugin/compare/v1.4.0-beta.23...v1.4.0-beta.24) (2026-01-02)
18
+
19
+ ### ✨ Features
20
+
21
+ * add configuration schema validation with Zod ([bfd395e](https://github.com/IvanRodriCalleja/tailwind-typescript-plugin/commit/bfd395e2cbe29b628990bfa3ac97e0aee3b47aae))
22
+
23
+ ### ✅ Tests
24
+
25
+ * add comprehensive test coverage for extractors and services ([7839ba9](https://github.com/IvanRodriCalleja/tailwind-typescript-plugin/commit/7839ba964add0a91fdee3b31db9711dcdf47c4ed))
26
+
27
+ ### 🔧 Chores
28
+
29
+ * remove Svelte support ([edce4d6](https://github.com/IvanRodriCalleja/tailwind-typescript-plugin/commit/edce4d61cf37bef6224181552d9e56cc0e020472))
30
+
1
31
  ## [1.4.0-beta.23](https://github.com/IvanRodriCalleja/tailwind-typescript-plugin/compare/v1.4.0-beta.22...v1.4.0-beta.23) (2025-12-29)
2
32
 
3
33
  ### ✨ Features
@@ -1,12 +1,28 @@
1
1
  import * as ts from 'typescript/lib/tsserverlibrary';
2
2
  import { ClassAttributesConfig, ClassNameInfo, EditorConfig, ExtractionContext, LibrariesConfig, LintConfig, ValidationConfig } from './types';
3
+ /**
4
+ * Type for node filter functions used by extractors
5
+ * Returns true if the node might contain class names worth extracting
6
+ */
7
+ export type NodeFilterFn = (node: ts.Node, typescript: typeof ts) => boolean;
3
8
  /**
4
9
  * Base interface for class name extractors
5
10
  * Follows the Strategy pattern for extensibility
6
11
  */
7
12
  export interface IClassNameExtractor {
8
13
  /**
9
- * Determines if this extractor can handle the given node
14
+ * Returns a fast filter function to pre-screen nodes before calling canHandle().
15
+ * This enables ~95-98% of nodes to be skipped with a simple type check,
16
+ * avoiding the overhead of polymorphic canHandle() calls.
17
+ *
18
+ * Each extractor defines its own filter based on the node types it handles:
19
+ * - JSX: Only JsxOpeningElement or JsxSelfClosingElement nodes
20
+ * - Vue: Only CallExpression nodes (Volar transforms templates to calls)
21
+ */
22
+ getNodeFilter(): NodeFilterFn;
23
+ /**
24
+ * Determines if this extractor can handle the given node.
25
+ * Called only after getNodeFilter() returns true.
10
26
  */
11
27
  canHandle(node: ts.Node, context: ExtractionContext): boolean;
12
28
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/core/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAErD,OAAO,EACN,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IACnC;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC;IAE9D;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,iBAAiB,GAAG,aAAa,EAAE,CAAC;CACpE;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IACzC,aAAa,IAAI,OAAO,CAAC;IACzB,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAClD;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAE5B;;OAEG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAE9B;;OAEG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB;;;;OAIG;IACH,eAAe,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC;CACrF"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/core/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAErD,OAAO,EACN,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAE7E;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IACnC;;;;;;;;OAQG;IACH,aAAa,IAAI,YAAY,CAAC;IAE9B;;;OAGG;IACH,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC;IAE9D;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,iBAAiB,GAAG,aAAa,EAAE,CAAC;CACpE;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IACzC,aAAa,IAAI,OAAO,CAAC;IACzB,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAClD;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAE5B;;OAEG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAE9B;;OAEG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB;;;;OAIG;IACH,eAAe,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC;CACrF"}
@@ -1,5 +1,5 @@
1
1
  import * as ts from 'typescript/lib/tsserverlibrary';
2
- import { IClassNameExtractor } from '../core/interfaces';
2
+ import { IClassNameExtractor, NodeFilterFn } from '../core/interfaces';
3
3
  import { ClassNameInfo, ExtractionContext, UtilityFunction } from '../core/types';
4
4
  /**
5
5
  * Abstract base class for all extractors
@@ -16,6 +16,12 @@ export declare abstract class BaseExtractor implements IClassNameExtractor {
16
16
  * Maps filename -> (namespace identifier -> module specifier)
17
17
  */
18
18
  private namespaceImportCache;
19
+ /**
20
+ * Returns a fast filter function to pre-screen nodes.
21
+ * Default implementation accepts all nodes (no filtering).
22
+ * Framework-specific extractors should override this for optimization.
23
+ */
24
+ getNodeFilter(): NodeFilterFn;
19
25
  abstract canHandle(node: ts.Node, context: ExtractionContext): boolean;
20
26
  abstract extract(node: ts.Node, context: ExtractionContext): ClassNameInfo[];
21
27
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"BaseExtractor.d.ts","sourceRoot":"","sources":["../../src/extractors/BaseExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAclF;;;GAGG;AACH,8BAAsB,aAAc,YAAW,mBAAmB;IACjE;;;OAGG;IACH,OAAO,CAAC,WAAW,CAAgC;IAEnD;;;OAGG;IACH,OAAO,CAAC,oBAAoB,CAAyC;IAErE,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO;IACtE,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,iBAAiB,GAAG,aAAa,EAAE;IAE5E;;;OAGG;IACH,SAAS,CAAC,wBAAwB,CACjC,OAAO,EAAE,EAAE,CAAC,aAAa,GAAG,EAAE,CAAC,6BAA6B,EAC5D,OAAO,EAAE,iBAAiB,GACxB,aAAa,EAAE;IA0BlB;;;OAGG;IACH,SAAS,CAAC,0BAA0B,CACnC,cAAc,EAAE,EAAE,CAAC,cAAc,EACjC,gBAAgB,EAAE,eAAe,EAAE,EACnC,OAAO,CAAC,EAAE,iBAAiB,GACzB,OAAO;IAyDV;;;;;;OAMG;IACH,SAAS,CAAC,cAAc,CACvB,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,iBAAiB,GACxB,OAAO;IAYV;;;OAGG;IACH,SAAS,CAAC,uBAAuB,CAChC,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,iBAAiB,GACxB,OAAO;IAYV;;;OAGG;IACH,OAAO,CAAC,YAAY;IAcpB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAc7B;;OAEG;IACH,OAAO,CAAC,eAAe;IAsDvB;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAKxB;;;OAGG;IACH,SAAS,CAAC,qBAAqB,CAC9B,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,eAAe,EAAE,GACjC,OAAO;CASV"}
1
+ {"version":3,"file":"BaseExtractor.d.ts","sourceRoot":"","sources":["../../src/extractors/BaseExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAclF;;;GAGG;AACH,8BAAsB,aAAc,YAAW,mBAAmB;IACjE;;;OAGG;IACH,OAAO,CAAC,WAAW,CAAgC;IAEnD;;;OAGG;IACH,OAAO,CAAC,oBAAoB,CAAyC;IAErE;;;;OAIG;IACH,aAAa,IAAI,YAAY;IAM7B,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO;IACtE,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,iBAAiB,GAAG,aAAa,EAAE;IAE5E;;;OAGG;IACH,SAAS,CAAC,wBAAwB,CACjC,OAAO,EAAE,EAAE,CAAC,aAAa,GAAG,EAAE,CAAC,6BAA6B,EAC5D,OAAO,EAAE,iBAAiB,GACxB,aAAa,EAAE;IA0BlB;;;OAGG;IACH,SAAS,CAAC,0BAA0B,CACnC,cAAc,EAAE,EAAE,CAAC,cAAc,EACjC,gBAAgB,EAAE,eAAe,EAAE,EACnC,OAAO,CAAC,EAAE,iBAAiB,GACzB,OAAO;IAyDV;;;;;;OAMG;IACH,SAAS,CAAC,cAAc,CACvB,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,iBAAiB,GACxB,OAAO;IAYV;;;OAGG;IACH,SAAS,CAAC,uBAAuB,CAChC,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,iBAAiB,GACxB,OAAO;IAYV;;;OAGG;IACH,OAAO,CAAC,YAAY;IAcpB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAc7B;;OAEG;IACH,OAAO,CAAC,eAAe;IAsDvB;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAKxB;;;OAGG;IACH,SAAS,CAAC,qBAAqB,CAC9B,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,eAAe,EAAE,GACjC,OAAO;CASV"}
@@ -52,6 +52,16 @@ class BaseExtractor {
52
52
  */
53
53
  this.namespaceImportCache = new Map();
54
54
  }
55
+ /**
56
+ * Returns a fast filter function to pre-screen nodes.
57
+ * Default implementation accepts all nodes (no filtering).
58
+ * Framework-specific extractors should override this for optimization.
59
+ */
60
+ getNodeFilter() {
61
+ // Default: accept all nodes (no pre-filtering)
62
+ // Framework extractors (JSX, Vue) override this for ~95-98% skip rates
63
+ return () => true;
64
+ }
55
65
  /**
56
66
  * Helper method to create ClassNameInfo from a string literal
57
67
  * Handles both single-line and multiline strings with various whitespace
@@ -1 +1 @@
1
- {"version":3,"file":"BaseExtractor.js","sourceRoot":"","sources":["../../src/extractors/BaseExtractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseExtractor.js","sourceRoot":"","sources":["../../src/extractors/BaseExtractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=BaseExtractor.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseExtractor.spec.d.ts","sourceRoot":"","sources":["../../src/extractors/BaseExtractor.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,421 @@
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
+ const ts = __importStar(require("typescript/lib/tsserverlibrary"));
37
+ const BaseExtractor_1 = require("./BaseExtractor");
38
+ // Create a concrete implementation for testing
39
+ class TestExtractor extends BaseExtractor_1.BaseExtractor {
40
+ canHandle(node) {
41
+ return ts.isStringLiteral(node);
42
+ }
43
+ extract(node, context) {
44
+ if (ts.isStringLiteral(node) || ts.isNoSubstitutionTemplateLiteral(node)) {
45
+ return this.extractFromStringLiteral(node, context);
46
+ }
47
+ return [];
48
+ }
49
+ // Expose protected methods for testing
50
+ testShouldValidateFunctionCall(callExpression, utilityFunctions, context) {
51
+ return this.shouldValidateFunctionCall(callExpression, utilityFunctions, context);
52
+ }
53
+ testIsImportedFrom(functionName, expectedModule, context) {
54
+ return this.isImportedFrom(functionName, expectedModule, context);
55
+ }
56
+ testIsNamespaceImportedFrom(objectName, expectedModule, context) {
57
+ return this.isNamespaceImportedFrom(objectName, expectedModule, context);
58
+ }
59
+ testIsUtilityFunctionName(functionName, utilityFunctions) {
60
+ return this.isUtilityFunctionName(functionName, utilityFunctions);
61
+ }
62
+ }
63
+ describe('BaseExtractor', () => {
64
+ let extractor;
65
+ const createContext = (code, overrides = {}) => {
66
+ const sourceFile = ts.createSourceFile('test.tsx', code, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
67
+ return {
68
+ typescript: ts,
69
+ sourceFile,
70
+ utilityFunctions: [],
71
+ ...overrides
72
+ };
73
+ };
74
+ const findCallExpression = (sourceFile) => {
75
+ let result;
76
+ const visit = (node) => {
77
+ if (ts.isCallExpression(node)) {
78
+ result = node;
79
+ return;
80
+ }
81
+ ts.forEachChild(node, visit);
82
+ };
83
+ visit(sourceFile);
84
+ return result;
85
+ };
86
+ const findStringLiteral = (sourceFile) => {
87
+ let result;
88
+ const visit = (node) => {
89
+ if (ts.isStringLiteral(node)) {
90
+ result = node;
91
+ return;
92
+ }
93
+ ts.forEachChild(node, visit);
94
+ };
95
+ visit(sourceFile);
96
+ return result;
97
+ };
98
+ beforeEach(() => {
99
+ extractor = new TestExtractor();
100
+ });
101
+ describe('extractFromStringLiteral', () => {
102
+ it('should extract single class name', () => {
103
+ const code = 'const x = "flex";';
104
+ const context = createContext(code);
105
+ const literal = findStringLiteral(context.sourceFile);
106
+ const classes = extractor.extract(literal, context);
107
+ expect(classes).toHaveLength(1);
108
+ expect(classes[0].className).toBe('flex');
109
+ });
110
+ it('should extract multiple class names separated by spaces', () => {
111
+ const code = 'const x = "flex items-center justify-between";';
112
+ const context = createContext(code);
113
+ const literal = findStringLiteral(context.sourceFile);
114
+ const classes = extractor.extract(literal, context);
115
+ expect(classes).toHaveLength(3);
116
+ expect(classes.map(c => c.className)).toEqual(['flex', 'items-center', 'justify-between']);
117
+ });
118
+ it('should handle multiple whitespace between classes', () => {
119
+ const code = 'const x = "flex items-center";';
120
+ const context = createContext(code);
121
+ const literal = findStringLiteral(context.sourceFile);
122
+ const classes = extractor.extract(literal, context);
123
+ expect(classes).toHaveLength(2);
124
+ });
125
+ it('should handle newlines in string', () => {
126
+ const code = 'const x = "flex items-center justify-between";';
127
+ const context = createContext(code);
128
+ const literal = findStringLiteral(context.sourceFile);
129
+ const classes = extractor.extract(literal, context);
130
+ expect(classes).toHaveLength(3);
131
+ });
132
+ it('should handle tabs in string', () => {
133
+ const code = 'const x = "flex\titems-center";';
134
+ const context = createContext(code);
135
+ const literal = findStringLiteral(context.sourceFile);
136
+ const classes = extractor.extract(literal, context);
137
+ expect(classes).toHaveLength(2);
138
+ });
139
+ it('should return empty array for empty string', () => {
140
+ const code = 'const x = "";';
141
+ const context = createContext(code);
142
+ const literal = findStringLiteral(context.sourceFile);
143
+ const classes = extractor.extract(literal, context);
144
+ expect(classes).toHaveLength(0);
145
+ });
146
+ it('should return empty array for whitespace-only string', () => {
147
+ const code = 'const x = " ";';
148
+ const context = createContext(code);
149
+ const literal = findStringLiteral(context.sourceFile);
150
+ const classes = extractor.extract(literal, context);
151
+ expect(classes).toHaveLength(0);
152
+ });
153
+ it('should set correct absoluteStart for each class', () => {
154
+ const code = 'const x = "flex items-center";';
155
+ const context = createContext(code);
156
+ const literal = findStringLiteral(context.sourceFile);
157
+ const classes = extractor.extract(literal, context);
158
+ expect(context.sourceFile.text.substring(classes[0].absoluteStart, classes[0].absoluteStart + classes[0].length)).toBe('flex');
159
+ expect(context.sourceFile.text.substring(classes[1].absoluteStart, classes[1].absoluteStart + classes[1].length)).toBe('items-center');
160
+ });
161
+ it('should set correct line number', () => {
162
+ const code = 'const x = "flex";';
163
+ const context = createContext(code);
164
+ const literal = findStringLiteral(context.sourceFile);
165
+ const classes = extractor.extract(literal, context);
166
+ expect(classes[0].line).toBe(1);
167
+ });
168
+ it('should set correct file name', () => {
169
+ const code = 'const x = "flex";';
170
+ const context = createContext(code);
171
+ const literal = findStringLiteral(context.sourceFile);
172
+ const classes = extractor.extract(literal, context);
173
+ expect(classes[0].file).toBe('test.tsx');
174
+ });
175
+ });
176
+ describe('shouldValidateFunctionCall', () => {
177
+ it('should return true for matching simple function name', () => {
178
+ const code = "clsx('flex')";
179
+ const context = createContext(code);
180
+ const callExpr = findCallExpression(context.sourceFile);
181
+ const result = extractor.testShouldValidateFunctionCall(callExpr, ['clsx']);
182
+ expect(result).toBe(true);
183
+ });
184
+ it('should return false for non-matching function name', () => {
185
+ const code = "unknownFn('flex')";
186
+ const context = createContext(code);
187
+ const callExpr = findCallExpression(context.sourceFile);
188
+ const result = extractor.testShouldValidateFunctionCall(callExpr, ['clsx']);
189
+ expect(result).toBe(false);
190
+ });
191
+ it('should return true for utility function with matching import', () => {
192
+ const code = `
193
+ import { clsx } from 'clsx';
194
+ clsx('flex');
195
+ `;
196
+ const context = createContext(code);
197
+ const callExpr = findCallExpression(context.sourceFile);
198
+ const result = extractor.testShouldValidateFunctionCall(callExpr, [{ name: 'clsx', from: 'clsx' }], context);
199
+ expect(result).toBe(true);
200
+ });
201
+ it('should return false for utility function with non-matching import', () => {
202
+ const code = `
203
+ import { clsx } from 'other-package';
204
+ clsx('flex');
205
+ `;
206
+ const context = createContext(code);
207
+ const callExpr = findCallExpression(context.sourceFile);
208
+ const result = extractor.testShouldValidateFunctionCall(callExpr, [{ name: 'clsx', from: 'clsx' }], context);
209
+ expect(result).toBe(false);
210
+ });
211
+ it('should handle aliased imports', () => {
212
+ const code = `
213
+ import { clsx as cx } from 'clsx';
214
+ cx('flex');
215
+ `;
216
+ const context = createContext(code);
217
+ const callExpr = findCallExpression(context.sourceFile);
218
+ const result = extractor.testShouldValidateFunctionCall(callExpr, [{ name: 'cx', from: 'clsx' }], context);
219
+ expect(result).toBe(true);
220
+ });
221
+ it('should handle default imports', () => {
222
+ const code = `
223
+ import clsx from 'clsx';
224
+ clsx('flex');
225
+ `;
226
+ const context = createContext(code);
227
+ const callExpr = findCallExpression(context.sourceFile);
228
+ const result = extractor.testShouldValidateFunctionCall(callExpr, [{ name: 'clsx', from: 'clsx' }], context);
229
+ expect(result).toBe(true);
230
+ });
231
+ it('should handle namespace imports', () => {
232
+ const code = `
233
+ import * as utils from 'clsx';
234
+ utils.clsx('flex');
235
+ `;
236
+ const context = createContext(code);
237
+ const callExpr = findCallExpression(context.sourceFile);
238
+ const result = extractor.testShouldValidateFunctionCall(callExpr, [{ name: 'clsx', from: 'clsx' }], context);
239
+ expect(result).toBe(true);
240
+ });
241
+ it('should handle member expressions with property access', () => {
242
+ const code = `
243
+ import * as lib from 'my-lib';
244
+ lib.cn('flex');
245
+ `;
246
+ const context = createContext(code);
247
+ const callExpr = findCallExpression(context.sourceFile);
248
+ const result = extractor.testShouldValidateFunctionCall(callExpr, [{ name: 'cn', from: 'my-lib' }], context);
249
+ expect(result).toBe(true);
250
+ });
251
+ it('should return true without context when config specifies import', () => {
252
+ const code = "clsx('flex')";
253
+ const context = createContext(code);
254
+ const callExpr = findCallExpression(context.sourceFile);
255
+ const result = extractor.testShouldValidateFunctionCall(callExpr, [{ name: 'clsx', from: 'clsx' }]
256
+ // No context passed
257
+ );
258
+ expect(result).toBe(true);
259
+ });
260
+ it('should handle subpath imports', () => {
261
+ const code = `
262
+ import { tv } from 'tailwind-variants/lite';
263
+ tv('flex');
264
+ `;
265
+ const context = createContext(code);
266
+ const callExpr = findCallExpression(context.sourceFile);
267
+ const result = extractor.testShouldValidateFunctionCall(callExpr, [{ name: 'tv', from: 'tailwind-variants' }], context);
268
+ expect(result).toBe(true);
269
+ });
270
+ });
271
+ describe('isImportedFrom', () => {
272
+ it('should return true for matching named import', () => {
273
+ const code = `
274
+ import { clsx } from 'clsx';
275
+ clsx('flex');
276
+ `;
277
+ const context = createContext(code);
278
+ const result = extractor.testIsImportedFrom('clsx', 'clsx', context);
279
+ expect(result).toBe(true);
280
+ });
281
+ it('should return false for non-existent import', () => {
282
+ const code = `
283
+ import { other } from 'clsx';
284
+ `;
285
+ const context = createContext(code);
286
+ const result = extractor.testIsImportedFrom('clsx', 'clsx', context);
287
+ expect(result).toBe(false);
288
+ });
289
+ it('should return false for wrong module', () => {
290
+ const code = `
291
+ import { clsx } from 'wrong-module';
292
+ `;
293
+ const context = createContext(code);
294
+ const result = extractor.testIsImportedFrom('clsx', 'clsx', context);
295
+ expect(result).toBe(false);
296
+ });
297
+ it('should handle subpath matches', () => {
298
+ const code = `
299
+ import { tv } from 'tailwind-variants/lite';
300
+ `;
301
+ const context = createContext(code);
302
+ const result = extractor.testIsImportedFrom('tv', 'tailwind-variants', context);
303
+ expect(result).toBe(true);
304
+ });
305
+ });
306
+ describe('isNamespaceImportedFrom', () => {
307
+ it('should return true for matching namespace import', () => {
308
+ const code = `
309
+ import * as utils from 'clsx';
310
+ `;
311
+ const context = createContext(code);
312
+ const result = extractor.testIsNamespaceImportedFrom('utils', 'clsx', context);
313
+ expect(result).toBe(true);
314
+ });
315
+ it('should return false for non-existent namespace import', () => {
316
+ const code = `
317
+ import * as other from 'clsx';
318
+ `;
319
+ const context = createContext(code);
320
+ const result = extractor.testIsNamespaceImportedFrom('utils', 'clsx', context);
321
+ expect(result).toBe(false);
322
+ });
323
+ it('should return false for wrong module', () => {
324
+ const code = `
325
+ import * as utils from 'wrong-module';
326
+ `;
327
+ const context = createContext(code);
328
+ const result = extractor.testIsNamespaceImportedFrom('utils', 'clsx', context);
329
+ expect(result).toBe(false);
330
+ });
331
+ it('should handle subpath matches', () => {
332
+ const code = `
333
+ import * as tv from 'tailwind-variants/lite';
334
+ `;
335
+ const context = createContext(code);
336
+ const result = extractor.testIsNamespaceImportedFrom('tv', 'tailwind-variants', context);
337
+ expect(result).toBe(true);
338
+ });
339
+ });
340
+ describe('isUtilityFunctionName', () => {
341
+ it('should return true for matching simple string', () => {
342
+ const result = extractor.testIsUtilityFunctionName('clsx', ['clsx', 'cn']);
343
+ expect(result).toBe(true);
344
+ });
345
+ it('should return true for matching config object', () => {
346
+ const result = extractor.testIsUtilityFunctionName('clsx', [
347
+ { name: 'clsx', from: 'clsx' },
348
+ { name: 'cn', from: '@/lib/utils' }
349
+ ]);
350
+ expect(result).toBe(true);
351
+ });
352
+ it('should return false for non-matching function name', () => {
353
+ const result = extractor.testIsUtilityFunctionName('unknown', ['clsx', 'cn']);
354
+ expect(result).toBe(false);
355
+ });
356
+ it('should return false for empty array', () => {
357
+ const result = extractor.testIsUtilityFunctionName('clsx', []);
358
+ expect(result).toBe(false);
359
+ });
360
+ });
361
+ describe('import caching', () => {
362
+ it('should cache import mappings', () => {
363
+ const code = `
364
+ import { clsx } from 'clsx';
365
+ clsx('flex');
366
+ `;
367
+ const context = createContext(code);
368
+ // Call twice to test caching
369
+ extractor.testIsImportedFrom('clsx', 'clsx', context);
370
+ const result = extractor.testIsImportedFrom('clsx', 'clsx', context);
371
+ expect(result).toBe(true);
372
+ });
373
+ it('should clear cache when clearImportCache is called', () => {
374
+ const code = `
375
+ import { clsx } from 'clsx';
376
+ `;
377
+ const context = createContext(code);
378
+ extractor.testIsImportedFrom('clsx', 'clsx', context);
379
+ extractor.clearImportCache();
380
+ // Should rebuild cache
381
+ const result = extractor.testIsImportedFrom('clsx', 'clsx', context);
382
+ expect(result).toBe(true);
383
+ });
384
+ });
385
+ describe('edge cases', () => {
386
+ it('should handle imports without import clause', () => {
387
+ const code = `
388
+ import 'side-effect-module';
389
+ `;
390
+ const context = createContext(code);
391
+ const result = extractor.testIsImportedFrom('anything', 'side-effect-module', context);
392
+ expect(result).toBe(false);
393
+ });
394
+ it('should handle non-string module specifiers', () => {
395
+ // This is technically invalid but should not crash
396
+ const code = `
397
+ import { clsx } from 'clsx';
398
+ `;
399
+ const context = createContext(code);
400
+ expect(() => extractor.testIsImportedFrom('clsx', 'clsx', context)).not.toThrow();
401
+ });
402
+ it('should handle mixed import types', () => {
403
+ const code = `
404
+ import defaultExport, { named } from 'module';
405
+ import * as ns from 'other-module';
406
+ `;
407
+ const context = createContext(code);
408
+ expect(extractor.testIsImportedFrom('defaultExport', 'module', context)).toBe(true);
409
+ expect(extractor.testIsImportedFrom('named', 'module', context)).toBe(true);
410
+ expect(extractor.testIsNamespaceImportedFrom('ns', 'other-module', context)).toBe(true);
411
+ });
412
+ it('should handle call expression without identifier', () => {
413
+ const code = "(function() {})('flex')";
414
+ const context = createContext(code);
415
+ const callExpr = findCallExpression(context.sourceFile);
416
+ const result = extractor.testShouldValidateFunctionCall(callExpr, ['clsx']);
417
+ expect(result).toBe(false);
418
+ });
419
+ });
420
+ });
421
+ //# sourceMappingURL=BaseExtractor.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseExtractor.spec.js","sourceRoot":"","sources":["../../src/extractors/BaseExtractor.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=CvaExtractor.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CvaExtractor.spec.d.ts","sourceRoot":"","sources":["../../src/extractors/CvaExtractor.spec.ts"],"names":[],"mappings":""}