tailwind-typescript-plugin 1.4.1-beta.3 → 1.4.1-beta.31
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 +155 -0
- package/README.md +369 -71
- package/lib/core/interfaces.d.ts +40 -13
- package/lib/core/interfaces.d.ts.map +1 -1
- package/lib/core/types.d.ts +112 -1
- package/lib/core/types.d.ts.map +1 -1
- package/lib/extractors/BaseExtractor.d.ts +56 -3
- package/lib/extractors/BaseExtractor.d.ts.map +1 -1
- package/lib/extractors/BaseExtractor.js +194 -5
- package/lib/extractors/BaseExtractor.js.map +1 -1
- package/lib/extractors/BaseExtractor.spec.d.ts +2 -0
- package/lib/extractors/BaseExtractor.spec.d.ts.map +1 -0
- package/lib/extractors/BaseExtractor.spec.js +421 -0
- package/lib/extractors/BaseExtractor.spec.js.map +1 -0
- package/lib/extractors/CvaExtractor.js +1 -1
- package/lib/extractors/CvaExtractor.js.map +1 -1
- package/lib/extractors/CvaExtractor.spec.d.ts +2 -0
- package/lib/extractors/CvaExtractor.spec.d.ts.map +1 -0
- package/lib/extractors/CvaExtractor.spec.js +1177 -0
- package/lib/extractors/CvaExtractor.spec.js.map +1 -0
- package/lib/extractors/ExpressionExtractor.d.ts.map +1 -1
- package/lib/extractors/ExpressionExtractor.js +35 -5
- package/lib/extractors/ExpressionExtractor.js.map +1 -1
- package/lib/extractors/ExpressionExtractor.spec.d.ts +2 -0
- package/lib/extractors/ExpressionExtractor.spec.d.ts.map +1 -0
- package/lib/extractors/ExpressionExtractor.spec.js +316 -0
- package/lib/extractors/ExpressionExtractor.spec.js.map +1 -0
- package/lib/extractors/JsxAttributeExtractor.d.ts +7 -1
- package/lib/extractors/JsxAttributeExtractor.d.ts.map +1 -1
- package/lib/extractors/JsxAttributeExtractor.js +21 -8
- package/lib/extractors/JsxAttributeExtractor.js.map +1 -1
- package/lib/extractors/JsxAttributeExtractor.spec.d.ts +2 -0
- package/lib/extractors/JsxAttributeExtractor.spec.d.ts.map +1 -0
- package/lib/extractors/JsxAttributeExtractor.spec.js +430 -0
- package/lib/extractors/JsxAttributeExtractor.spec.js.map +1 -0
- package/lib/extractors/TailwindVariantsExtractor.d.ts.map +1 -1
- package/lib/extractors/TailwindVariantsExtractor.js +1 -5
- package/lib/extractors/TailwindVariantsExtractor.js.map +1 -1
- package/lib/extractors/TailwindVariantsExtractor.spec.d.ts +2 -0
- package/lib/extractors/TailwindVariantsExtractor.spec.d.ts.map +1 -0
- package/lib/extractors/TailwindVariantsExtractor.spec.js +1407 -0
- package/lib/extractors/TailwindVariantsExtractor.spec.js.map +1 -0
- package/lib/extractors/TemplateExpressionExtractor.spec.d.ts +2 -0
- package/lib/extractors/TemplateExpressionExtractor.spec.d.ts.map +1 -0
- package/lib/extractors/TemplateExpressionExtractor.spec.js +240 -0
- package/lib/extractors/TemplateExpressionExtractor.spec.js.map +1 -0
- package/lib/extractors/VariableReferenceExtractor.d.ts.map +1 -1
- package/lib/extractors/VariableReferenceExtractor.js +21 -0
- package/lib/extractors/VariableReferenceExtractor.js.map +1 -1
- package/lib/extractors/VariableReferenceExtractor.spec.d.ts +2 -0
- package/lib/extractors/VariableReferenceExtractor.spec.d.ts.map +1 -0
- package/lib/extractors/VariableReferenceExtractor.spec.js +138 -0
- package/lib/extractors/VariableReferenceExtractor.spec.js.map +1 -0
- package/lib/extractors/VueAttributeExtractor.d.ts +202 -0
- package/lib/extractors/VueAttributeExtractor.d.ts.map +1 -0
- package/lib/extractors/VueAttributeExtractor.js +1691 -0
- package/lib/extractors/VueAttributeExtractor.js.map +1 -0
- package/lib/extractors/VueExpressionExtractor.d.ts +34 -0
- package/lib/extractors/VueExpressionExtractor.d.ts.map +1 -0
- package/lib/extractors/VueExpressionExtractor.js +171 -0
- package/lib/extractors/VueExpressionExtractor.js.map +1 -0
- package/lib/infrastructure/TailwindValidator.css-vars.spec.js +1 -11
- package/lib/infrastructure/TailwindValidator.css-vars.spec.js.map +1 -1
- package/lib/infrastructure/TailwindValidator.d.ts +10 -3
- package/lib/infrastructure/TailwindValidator.d.ts.map +1 -1
- package/lib/infrastructure/TailwindValidator.js +68 -28
- package/lib/infrastructure/TailwindValidator.js.map +1 -1
- package/lib/infrastructure/TailwindValidator.spec.js +50 -17
- package/lib/infrastructure/TailwindValidator.spec.js.map +1 -1
- package/lib/plugin/TailwindTypescriptPlugin.d.ts +22 -1
- package/lib/plugin/TailwindTypescriptPlugin.d.ts.map +1 -1
- package/lib/plugin/TailwindTypescriptPlugin.js +133 -50
- package/lib/plugin/TailwindTypescriptPlugin.js.map +1 -1
- package/lib/services/ClassNameExtractionService.d.ts +27 -6
- package/lib/services/ClassNameExtractionService.d.ts.map +1 -1
- package/lib/services/ClassNameExtractionService.js +80 -17
- package/lib/services/ClassNameExtractionService.js.map +1 -1
- package/lib/services/ClassNameExtractionService.spec.d.ts +2 -0
- package/lib/services/ClassNameExtractionService.spec.d.ts.map +1 -0
- package/lib/services/ClassNameExtractionService.spec.js +215 -0
- package/lib/services/ClassNameExtractionService.spec.js.map +1 -0
- package/lib/services/CodeActionService.spec.js +1 -2
- package/lib/services/CodeActionService.spec.js.map +1 -1
- package/lib/services/CompletionService.d.ts +121 -0
- package/lib/services/CompletionService.d.ts.map +1 -0
- package/lib/services/CompletionService.js +573 -0
- package/lib/services/CompletionService.js.map +1 -0
- package/lib/services/CompletionService.spec.d.ts +2 -0
- package/lib/services/CompletionService.spec.d.ts.map +1 -0
- package/lib/services/CompletionService.spec.js +1182 -0
- package/lib/services/CompletionService.spec.js.map +1 -0
- package/lib/services/ConfigSchemaValidator.d.ts +40 -0
- package/lib/services/ConfigSchemaValidator.d.ts.map +1 -0
- package/lib/services/ConfigSchemaValidator.js +139 -0
- package/lib/services/ConfigSchemaValidator.js.map +1 -0
- package/lib/services/ConfigSchemaValidator.spec.d.ts +2 -0
- package/lib/services/ConfigSchemaValidator.spec.d.ts.map +1 -0
- package/lib/services/ConfigSchemaValidator.spec.js +344 -0
- package/lib/services/ConfigSchemaValidator.spec.js.map +1 -0
- package/lib/services/ConflictClassDetection.spec.js +53 -5
- package/lib/services/ConflictClassDetection.spec.js.map +1 -1
- package/lib/services/DiagnosticService.d.ts +8 -8
- package/lib/services/DiagnosticService.d.ts.map +1 -1
- package/lib/services/DiagnosticService.js +29 -13
- package/lib/services/DiagnosticService.js.map +1 -1
- package/lib/services/DiagnosticService.spec.d.ts +2 -0
- package/lib/services/DiagnosticService.spec.d.ts.map +1 -0
- package/lib/services/DiagnosticService.spec.js +259 -0
- package/lib/services/DiagnosticService.spec.js.map +1 -0
- package/lib/services/DuplicateClassDetection.spec.js +20 -21
- package/lib/services/DuplicateClassDetection.spec.js.map +1 -1
- package/lib/services/FileDiagnosticCache.spec.d.ts +2 -0
- package/lib/services/FileDiagnosticCache.spec.d.ts.map +1 -0
- package/lib/services/FileDiagnosticCache.spec.js +213 -0
- package/lib/services/FileDiagnosticCache.spec.js.map +1 -0
- package/lib/services/PerformanceCache.spec.d.ts +2 -0
- package/lib/services/PerformanceCache.spec.d.ts.map +1 -0
- package/lib/services/PerformanceCache.spec.js +168 -0
- package/lib/services/PerformanceCache.spec.js.map +1 -0
- package/lib/services/PluginConfigService.d.ts +66 -15
- package/lib/services/PluginConfigService.d.ts.map +1 -1
- package/lib/services/PluginConfigService.js +230 -73
- package/lib/services/PluginConfigService.js.map +1 -1
- package/lib/services/PluginConfigService.spec.d.ts +2 -0
- package/lib/services/PluginConfigService.spec.d.ts.map +1 -0
- package/lib/services/PluginConfigService.spec.js +93 -0
- package/lib/services/PluginConfigService.spec.js.map +1 -0
- package/lib/services/ValidationService.d.ts +7 -5
- package/lib/services/ValidationService.d.ts.map +1 -1
- package/lib/services/ValidationService.js +40 -43
- package/lib/services/ValidationService.js.map +1 -1
- package/lib/services/ValidationService.spec.d.ts +2 -0
- package/lib/services/ValidationService.spec.d.ts.map +1 -0
- package/lib/services/ValidationService.spec.js +289 -0
- package/lib/services/ValidationService.spec.js.map +1 -0
- package/lib/utils/FrameworkDetector.d.ts +23 -0
- package/lib/utils/FrameworkDetector.d.ts.map +1 -0
- package/lib/utils/FrameworkDetector.js +47 -0
- package/lib/utils/FrameworkDetector.js.map +1 -0
- package/lib/utils/FrameworkDetector.spec.d.ts +2 -0
- package/lib/utils/FrameworkDetector.spec.d.ts.map +1 -0
- package/lib/utils/FrameworkDetector.spec.js +67 -0
- package/lib/utils/FrameworkDetector.spec.js.map +1 -0
- package/package.json +11 -4
- package/lib/extractors/StringLiteralExtractor.d.ts +0 -12
- package/lib/extractors/StringLiteralExtractor.d.ts.map +0 -1
- package/lib/extractors/StringLiteralExtractor.js +0 -21
- package/lib/extractors/StringLiteralExtractor.js.map +0 -1
- package/lib/services/ClassNameExtractionService.original.d.ts +0 -20
- package/lib/services/ClassNameExtractionService.original.d.ts.map +0 -1
- package/lib/services/ClassNameExtractionService.original.js +0 -48
- package/lib/services/ClassNameExtractionService.original.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValidationService.js","sourceRoot":"","sources":["../../src/services/ValidationService.ts"],"names":[],"mappings":";;;AAIA,yFAAoG;AAKpG;;;GAGG;AACH,MAAa,iBAAiB;IAG7B,YACkB,iBAA6C,EAC7C,iBAAoC,EACpC,SAA8B,EAC9B,
|
|
1
|
+
{"version":3,"file":"ValidationService.js","sourceRoot":"","sources":["../../src/services/ValidationService.ts"],"names":[],"mappings":";;;AAIA,yFAAoG;AAKpG;;;GAGG;AACH,MAAa,iBAAiB;IAG7B,YACkB,iBAA6C,EAC7C,iBAAoC,EACpC,SAA8B,EAC9B,aAAkC,EACnD,WAA0B;QAJT,sBAAiB,GAAjB,iBAAiB,CAA4B;QAC7C,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,cAAS,GAAT,SAAS,CAAqB;QAC9B,kBAAa,GAAb,aAAa,CAAqB;QAGnD,IAAI,CAAC,gBAAgB,GAAG,IAAI,mDAAwB,EAAE,CAAC;QACvD,IAAI,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACnD,CAAC;IACF,CAAC;IAED;;;OAGG;IACH,YAAY,CACX,UAAqB,EACrB,UAAyB,EACzB,gBAAmC,EACnC,WAA4B;QAE5B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,CAAC;YACrC,OAAO,EAAE,CAAC;QACX,CAAC;QAED,wCAAwC;QACxC,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAC9D,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CACvC,CAAC;QAEF,MAAM,WAAW,GAAoB,EAAE,CAAC;QAExC,mDAAmD;QACnD,IAAI,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,EAAE,CAAC;YAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;YAC5D,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;gBACxB,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;gBAC7D,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/B,WAAW,CAAC,IAAI,CACf,GAAG,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,cAAc,EAAE,UAAU,EAAE,QAAQ,CAAC,CACjF,CAAC;gBACH,CAAC;YACF,CAAC;QACF,CAAC;QAED,sDAAsD;QACtD,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,EAAE,CAAC;YACxC,2CAA2C;YAC3C,MAAM,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;YAErF,mBAAmB;YACnB,IAAI,IAAI,CAAC,aAAa,CAAC,wBAAwB,EAAE,EAAE,CAAC;gBACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,0BAA0B,EAAE,CAAC;gBACjE,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;oBACxB,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC/B,WAAW,CAAC,IAAI,CACf,GAAG,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,CACnD,cAAc,EACd,UAAU,EACV,QAAQ,CACR,CACD,CAAC;oBACH,CAAC;gBACF,CAAC;YACF,CAAC;YAED,8EAA8E;YAC9E,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnC,WAAW,CAAC,IAAI,CACf,GAAG,IAAI,CAAC,iBAAiB,CAAC,iCAAiC,CAC1D,kBAAkB,EAClB,UAAU,CACV,CACD,CAAC;YACH,CAAC;YAED,sBAAsB;YACtB,IAAI,IAAI,CAAC,aAAa,CAAC,2BAA2B,EAAE,EAAE,CAAC;gBACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,6BAA6B,EAAE,CAAC;gBACpE,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;oBACxB,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;oBAClE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC1B,WAAW,CAAC,IAAI,CACf,GAAG,IAAI,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CACpF,CAAC;oBACH,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC;QAED,OAAO,WAAW,CAAC;IACpB,CAAC;IAED;;;OAGG;IACK,oBAAoB,CAAC,UAA2B;QACvD,OAAO,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED;;;OAGG;IACK,oBAAoB,CAAC,UAA2B;QAIvD,MAAM,cAAc,GAAoB,EAAE,CAAC;QAC3C,MAAM,kBAAkB,GAAoB,EAAE,CAAC;QAE/C,+BAA+B;QAC/B,MAAM,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAC;QAEvD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACpC,qEAAqE;YACrE,8EAA8E;YAC9E,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,IAAI,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;YAElE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC1B,CAAC;YACD,WAAW,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC;QAED,sCAAsC;QACtC,KAAK,MAAM,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5C,4BAA4B;YAC5B,MAAM,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAC;YACvD,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;gBACjC,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;gBACtC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBACjC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gBAChC,CAAC;gBACD,WAAW,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7C,CAAC;YAED,iDAAiD;YACjD,KAAK,MAAM,CAAC,EAAE,WAAW,CAAC,IAAI,WAAW,EAAE,CAAC;gBAC3C,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBAC7B,SAAS;gBACV,CAAC;gBAED,kDAAkD;gBAClD,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;gBACpE,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;gBAErE,+DAA+D;gBAC/D,4DAA4D;gBAC5D,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxD,cAAc,CAAC,IAAI,CAAC,GAAG,WAAW,EAAE,GAAG,aAAa,CAAC,CAAC;gBACvD,CAAC;gBAED,8DAA8D;gBAC9D,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,qCAAqC;oBACrC,cAAc,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;gBACrC,CAAC;gBAED,2DAA2D;gBAC3D,yDAAyD;gBACzD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC1D,sBAAsB;oBACtB,MAAM,SAAS,GAAG,IAAI,GAAG,EAA6D,CAAC;oBAEvF,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE,CAAC;wBACvC,MAAM,QAAQ,GAAG,SAAS,CAAC,mBAAoB,CAAC;wBAChD,mDAAmD;wBACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;wBAC7D,IAAI,KAAK,EAAE,CAAC;4BACX,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC;4BACpC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gCAC/B,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;4BACnD,CAAC;4BACD,SAAS,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,MAA0B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBACvE,CAAC;oBACF,CAAC;oBAED,qBAAqB;oBACrB,KAAK,MAAM,CAAC,EAAE,QAAQ,CAAC,IAAI,SAAS,EAAE,CAAC;wBACtC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAC3D,8DAA8D;4BAC9D,mEAAmE;4BACnE,yDAAyD;4BACzD,kBAAkB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;wBAC9D,CAAC;6BAAM,CAAC;4BACP,qEAAqE;4BACrE,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gCAC9B,cAAc,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;4BACvC,CAAC;4BACD,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gCAC/B,cAAc,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;4BACxC,CAAC;wBACF,CAAC;oBACF,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC;QAED,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;IAC/C,CAAC;CACD;AAnND,8CAmNC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValidationService.spec.d.ts","sourceRoot":"","sources":["../../src/services/ValidationService.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,289 @@
|
|
|
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 ClassNameExtractionService_1 = require("./ClassNameExtractionService");
|
|
38
|
+
const DiagnosticService_1 = require("./DiagnosticService");
|
|
39
|
+
const PluginConfigService_1 = require("./PluginConfigService");
|
|
40
|
+
const ValidationService_1 = require("./ValidationService");
|
|
41
|
+
describe('ValidationService', () => {
|
|
42
|
+
let validationService;
|
|
43
|
+
let mockValidator;
|
|
44
|
+
let extractionService;
|
|
45
|
+
let diagnosticService;
|
|
46
|
+
let configService;
|
|
47
|
+
const createSourceFile = (code, fileName = 'test.tsx') => {
|
|
48
|
+
return ts.createSourceFile(fileName, code, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
|
|
49
|
+
};
|
|
50
|
+
beforeEach(() => {
|
|
51
|
+
// Create mock validator
|
|
52
|
+
mockValidator = {
|
|
53
|
+
isValidClass: jest.fn((className) => {
|
|
54
|
+
// Common valid Tailwind classes
|
|
55
|
+
const validClasses = [
|
|
56
|
+
'flex',
|
|
57
|
+
'items-center',
|
|
58
|
+
'justify-center',
|
|
59
|
+
'text-red-500',
|
|
60
|
+
'text-blue-500',
|
|
61
|
+
'bg-white',
|
|
62
|
+
'p-4',
|
|
63
|
+
'mt-4',
|
|
64
|
+
'mt-8',
|
|
65
|
+
'hidden',
|
|
66
|
+
'block'
|
|
67
|
+
];
|
|
68
|
+
return validClasses.includes(className);
|
|
69
|
+
}),
|
|
70
|
+
isInitialized: jest.fn(() => true),
|
|
71
|
+
setAllowedClasses: jest.fn()
|
|
72
|
+
};
|
|
73
|
+
// Create real services
|
|
74
|
+
extractionService = new ClassNameExtractionService_1.ClassNameExtractionService(false, false);
|
|
75
|
+
diagnosticService = new DiagnosticService_1.DiagnosticService();
|
|
76
|
+
configService = new PluginConfigService_1.PluginConfigService({});
|
|
77
|
+
validationService = new ValidationService_1.ValidationService(extractionService, diagnosticService, mockValidator, configService);
|
|
78
|
+
});
|
|
79
|
+
describe('validateFile', () => {
|
|
80
|
+
it('should return empty array when validator is not initialized', () => {
|
|
81
|
+
mockValidator.isInitialized.mockReturnValue(false);
|
|
82
|
+
const sourceFile = createSourceFile('<div className="flex">Hello</div>');
|
|
83
|
+
const diagnostics = validationService.validateFile(ts, sourceFile, []);
|
|
84
|
+
expect(diagnostics).toEqual([]);
|
|
85
|
+
});
|
|
86
|
+
it('should detect invalid Tailwind classes', () => {
|
|
87
|
+
const sourceFile = createSourceFile('<div className="invalid-class">Hello</div>');
|
|
88
|
+
const diagnostics = validationService.validateFile(ts, sourceFile, []);
|
|
89
|
+
expect(diagnostics.length).toBeGreaterThan(0);
|
|
90
|
+
expect(diagnostics[0].code).toBe(DiagnosticService_1.TAILWIND_DIAGNOSTIC_CODE);
|
|
91
|
+
expect(diagnostics[0].messageText).toContain('invalid-class');
|
|
92
|
+
});
|
|
93
|
+
it('should not report valid Tailwind classes', () => {
|
|
94
|
+
const sourceFile = createSourceFile('<div className="flex items-center">Hello</div>');
|
|
95
|
+
const diagnostics = validationService.validateFile(ts, sourceFile, []);
|
|
96
|
+
// Filter to only validation errors (not duplicate/conflict warnings)
|
|
97
|
+
const validationErrors = diagnostics.filter(d => d.code === DiagnosticService_1.TAILWIND_DIAGNOSTIC_CODE);
|
|
98
|
+
expect(validationErrors).toHaveLength(0);
|
|
99
|
+
});
|
|
100
|
+
it('should detect multiple invalid classes', () => {
|
|
101
|
+
const sourceFile = createSourceFile('<div className="invalid1 flex invalid2">Hello</div>');
|
|
102
|
+
const diagnostics = validationService.validateFile(ts, sourceFile, []);
|
|
103
|
+
const validationErrors = diagnostics.filter(d => d.code === DiagnosticService_1.TAILWIND_DIAGNOSTIC_CODE);
|
|
104
|
+
expect(validationErrors.length).toBe(2);
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
describe('duplicate class detection', () => {
|
|
108
|
+
it('should detect duplicate classes within same attribute', () => {
|
|
109
|
+
const sourceFile = createSourceFile('<div className="flex flex">Hello</div>');
|
|
110
|
+
const diagnostics = validationService.validateFile(ts, sourceFile, []);
|
|
111
|
+
const duplicateWarnings = diagnostics.filter(d => d.code === DiagnosticService_1.TAILWIND_DUPLICATE_CODE);
|
|
112
|
+
expect(duplicateWarnings.length).toBeGreaterThan(0);
|
|
113
|
+
});
|
|
114
|
+
it('should not flag classes in different attributes as duplicates', () => {
|
|
115
|
+
const sourceFile = createSourceFile(`
|
|
116
|
+
<div className="flex">
|
|
117
|
+
<span className="flex">Hello</span>
|
|
118
|
+
</div>
|
|
119
|
+
`);
|
|
120
|
+
const diagnostics = validationService.validateFile(ts, sourceFile, []);
|
|
121
|
+
const duplicateWarnings = diagnostics.filter(d => d.code === DiagnosticService_1.TAILWIND_DUPLICATE_CODE);
|
|
122
|
+
expect(duplicateWarnings).toHaveLength(0);
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
describe('validation configuration', () => {
|
|
126
|
+
it('should respect validation disabled config', () => {
|
|
127
|
+
const disabledConfigService = new PluginConfigService_1.PluginConfigService({
|
|
128
|
+
validation: { enabled: false }
|
|
129
|
+
});
|
|
130
|
+
const service = new ValidationService_1.ValidationService(extractionService, diagnosticService, mockValidator, disabledConfigService);
|
|
131
|
+
const sourceFile = createSourceFile('<div className="invalid-class">Hello</div>');
|
|
132
|
+
const diagnostics = service.validateFile(ts, sourceFile, []);
|
|
133
|
+
const validationErrors = diagnostics.filter(d => d.code === DiagnosticService_1.TAILWIND_DIAGNOSTIC_CODE);
|
|
134
|
+
expect(validationErrors).toHaveLength(0);
|
|
135
|
+
});
|
|
136
|
+
it('should respect validation severity config', () => {
|
|
137
|
+
const warningConfigService = new PluginConfigService_1.PluginConfigService({
|
|
138
|
+
validation: { severity: 'warning' }
|
|
139
|
+
});
|
|
140
|
+
const service = new ValidationService_1.ValidationService(extractionService, diagnosticService, mockValidator, warningConfigService);
|
|
141
|
+
const sourceFile = createSourceFile('<div className="invalid-class">Hello</div>');
|
|
142
|
+
const diagnostics = service.validateFile(ts, sourceFile, []);
|
|
143
|
+
const validationErrors = diagnostics.filter(d => d.code === DiagnosticService_1.TAILWIND_DIAGNOSTIC_CODE);
|
|
144
|
+
expect(validationErrors.length).toBeGreaterThan(0);
|
|
145
|
+
expect(validationErrors[0].category).toBe(ts.DiagnosticCategory.Warning);
|
|
146
|
+
});
|
|
147
|
+
it('should not report when severity is off', () => {
|
|
148
|
+
const offConfigService = new PluginConfigService_1.PluginConfigService({
|
|
149
|
+
validation: { severity: 'off' }
|
|
150
|
+
});
|
|
151
|
+
const service = new ValidationService_1.ValidationService(extractionService, diagnosticService, mockValidator, offConfigService);
|
|
152
|
+
const sourceFile = createSourceFile('<div className="invalid-class">Hello</div>');
|
|
153
|
+
const diagnostics = service.validateFile(ts, sourceFile, []);
|
|
154
|
+
const validationErrors = diagnostics.filter(d => d.code === DiagnosticService_1.TAILWIND_DIAGNOSTIC_CODE);
|
|
155
|
+
expect(validationErrors).toHaveLength(0);
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
describe('lint configuration', () => {
|
|
159
|
+
it('should respect lint disabled config', () => {
|
|
160
|
+
const disabledLintConfigService = new PluginConfigService_1.PluginConfigService({
|
|
161
|
+
lint: { enabled: false }
|
|
162
|
+
});
|
|
163
|
+
const service = new ValidationService_1.ValidationService(extractionService, diagnosticService, mockValidator, disabledLintConfigService);
|
|
164
|
+
const sourceFile = createSourceFile('<div className="flex flex">Hello</div>');
|
|
165
|
+
const diagnostics = service.validateFile(ts, sourceFile, []);
|
|
166
|
+
const duplicateWarnings = diagnostics.filter(d => d.code === DiagnosticService_1.TAILWIND_DUPLICATE_CODE);
|
|
167
|
+
expect(duplicateWarnings).toHaveLength(0);
|
|
168
|
+
});
|
|
169
|
+
it('should respect repeated classes disabled config', () => {
|
|
170
|
+
const configService = new PluginConfigService_1.PluginConfigService({
|
|
171
|
+
lint: {
|
|
172
|
+
enabled: true,
|
|
173
|
+
repeatedClasses: { enabled: false }
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
const service = new ValidationService_1.ValidationService(extractionService, diagnosticService, mockValidator, configService);
|
|
177
|
+
const sourceFile = createSourceFile('<div className="flex flex">Hello</div>');
|
|
178
|
+
const diagnostics = service.validateFile(ts, sourceFile, []);
|
|
179
|
+
const duplicateWarnings = diagnostics.filter(d => d.code === DiagnosticService_1.TAILWIND_DUPLICATE_CODE);
|
|
180
|
+
expect(duplicateWarnings).toHaveLength(0);
|
|
181
|
+
});
|
|
182
|
+
it('should respect repeated classes severity config', () => {
|
|
183
|
+
const configService = new PluginConfigService_1.PluginConfigService({
|
|
184
|
+
lint: {
|
|
185
|
+
repeatedClasses: { severity: 'error' }
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
const service = new ValidationService_1.ValidationService(extractionService, diagnosticService, mockValidator, configService);
|
|
189
|
+
const sourceFile = createSourceFile('<div className="flex flex">Hello</div>');
|
|
190
|
+
const diagnostics = service.validateFile(ts, sourceFile, []);
|
|
191
|
+
const duplicateWarnings = diagnostics.filter(d => d.code === DiagnosticService_1.TAILWIND_DUPLICATE_CODE);
|
|
192
|
+
expect(duplicateWarnings.length).toBeGreaterThan(0);
|
|
193
|
+
expect(duplicateWarnings[0].category).toBe(ts.DiagnosticCategory.Error);
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
describe('custom class attributes', () => {
|
|
197
|
+
it('should extract from custom class attributes', () => {
|
|
198
|
+
const customConfigService = new PluginConfigService_1.PluginConfigService({
|
|
199
|
+
classAttributes: ['colorStyles']
|
|
200
|
+
});
|
|
201
|
+
const service = new ValidationService_1.ValidationService(extractionService, diagnosticService, mockValidator, customConfigService);
|
|
202
|
+
const sourceFile = createSourceFile('<View colorStyles="invalid-custom-class">Hello</View>');
|
|
203
|
+
const diagnostics = service.validateFile(ts, sourceFile, []);
|
|
204
|
+
const validationErrors = diagnostics.filter(d => d.code === DiagnosticService_1.TAILWIND_DIAGNOSTIC_CODE);
|
|
205
|
+
expect(validationErrors.length).toBeGreaterThan(0);
|
|
206
|
+
expect(validationErrors[0].messageText).toContain('invalid-custom-class');
|
|
207
|
+
});
|
|
208
|
+
it('should still extract from default attributes when custom ones are added', () => {
|
|
209
|
+
const customConfigService = new PluginConfigService_1.PluginConfigService({
|
|
210
|
+
classAttributes: ['customStyles']
|
|
211
|
+
});
|
|
212
|
+
const service = new ValidationService_1.ValidationService(extractionService, diagnosticService, mockValidator, customConfigService);
|
|
213
|
+
const sourceFile = createSourceFile('<div className="invalid-class">Hello</div>');
|
|
214
|
+
const diagnostics = service.validateFile(ts, sourceFile, []);
|
|
215
|
+
const validationErrors = diagnostics.filter(d => d.code === DiagnosticService_1.TAILWIND_DIAGNOSTIC_CODE);
|
|
216
|
+
expect(validationErrors.length).toBeGreaterThan(0);
|
|
217
|
+
});
|
|
218
|
+
});
|
|
219
|
+
describe('JSX expressions', () => {
|
|
220
|
+
it('should validate classes in string literals', () => {
|
|
221
|
+
const sourceFile = createSourceFile("<div className={'invalid-expr'}>Hello</div>");
|
|
222
|
+
const diagnostics = validationService.validateFile(ts, sourceFile, []);
|
|
223
|
+
const validationErrors = diagnostics.filter(d => d.code === DiagnosticService_1.TAILWIND_DIAGNOSTIC_CODE);
|
|
224
|
+
expect(validationErrors.length).toBeGreaterThan(0);
|
|
225
|
+
});
|
|
226
|
+
it('should validate classes in template literals', () => {
|
|
227
|
+
const sourceFile = createSourceFile('<div className={`flex invalid-template`}>Hello</div>');
|
|
228
|
+
const diagnostics = validationService.validateFile(ts, sourceFile, []);
|
|
229
|
+
const validationErrors = diagnostics.filter(d => d.code === DiagnosticService_1.TAILWIND_DIAGNOSTIC_CODE);
|
|
230
|
+
expect(validationErrors.length).toBeGreaterThan(0);
|
|
231
|
+
expect(validationErrors[0].messageText).toContain('invalid-template');
|
|
232
|
+
});
|
|
233
|
+
it('should validate classes in ternary expressions', () => {
|
|
234
|
+
const sourceFile = createSourceFile("<div className={true ? 'flex' : 'invalid-ternary'}>Hello</div>");
|
|
235
|
+
const diagnostics = validationService.validateFile(ts, sourceFile, []);
|
|
236
|
+
const validationErrors = diagnostics.filter(d => d.code === DiagnosticService_1.TAILWIND_DIAGNOSTIC_CODE);
|
|
237
|
+
expect(validationErrors.length).toBeGreaterThan(0);
|
|
238
|
+
expect(validationErrors[0].messageText).toContain('invalid-ternary');
|
|
239
|
+
});
|
|
240
|
+
});
|
|
241
|
+
describe('empty and edge cases', () => {
|
|
242
|
+
it('should handle empty className', () => {
|
|
243
|
+
const sourceFile = createSourceFile('<div className="">Hello</div>');
|
|
244
|
+
const diagnostics = validationService.validateFile(ts, sourceFile, []);
|
|
245
|
+
expect(diagnostics).toHaveLength(0);
|
|
246
|
+
});
|
|
247
|
+
it('should handle elements without className', () => {
|
|
248
|
+
const sourceFile = createSourceFile('<div>Hello</div>');
|
|
249
|
+
const diagnostics = validationService.validateFile(ts, sourceFile, []);
|
|
250
|
+
expect(diagnostics).toHaveLength(0);
|
|
251
|
+
});
|
|
252
|
+
it('should handle multiple elements', () => {
|
|
253
|
+
const sourceFile = createSourceFile(`
|
|
254
|
+
<div className="invalid1">
|
|
255
|
+
<span className="flex">
|
|
256
|
+
<p className="invalid2">Hello</p>
|
|
257
|
+
</span>
|
|
258
|
+
</div>
|
|
259
|
+
`);
|
|
260
|
+
const diagnostics = validationService.validateFile(ts, sourceFile, []);
|
|
261
|
+
const validationErrors = diagnostics.filter(d => d.code === DiagnosticService_1.TAILWIND_DIAGNOSTIC_CODE);
|
|
262
|
+
expect(validationErrors.length).toBe(2);
|
|
263
|
+
});
|
|
264
|
+
it('should handle self-closing elements', () => {
|
|
265
|
+
const sourceFile = createSourceFile('<img className="invalid-self-closing" />');
|
|
266
|
+
const diagnostics = validationService.validateFile(ts, sourceFile, []);
|
|
267
|
+
const validationErrors = diagnostics.filter(d => d.code === DiagnosticService_1.TAILWIND_DIAGNOSTIC_CODE);
|
|
268
|
+
expect(validationErrors.length).toBeGreaterThan(0);
|
|
269
|
+
});
|
|
270
|
+
});
|
|
271
|
+
describe('file type support', () => {
|
|
272
|
+
it('should validate TSX files', () => {
|
|
273
|
+
const sourceFile = createSourceFile('<div className="invalid-class">Hello</div>', 'Component.tsx');
|
|
274
|
+
const diagnostics = validationService.validateFile(ts, sourceFile, []);
|
|
275
|
+
expect(diagnostics.length).toBeGreaterThan(0);
|
|
276
|
+
});
|
|
277
|
+
it('should validate JSX files', () => {
|
|
278
|
+
const sourceFile = ts.createSourceFile('Component.jsx', '<div className="invalid-class">Hello</div>', ts.ScriptTarget.Latest, true, ts.ScriptKind.JSX);
|
|
279
|
+
const diagnostics = validationService.validateFile(ts, sourceFile, []);
|
|
280
|
+
expect(diagnostics.length).toBeGreaterThan(0);
|
|
281
|
+
});
|
|
282
|
+
it('should return empty for unsupported file types', () => {
|
|
283
|
+
const sourceFile = ts.createSourceFile('styles.css', '.class { color: red; }', ts.ScriptTarget.Latest, true);
|
|
284
|
+
const diagnostics = validationService.validateFile(ts, sourceFile, []);
|
|
285
|
+
expect(diagnostics).toHaveLength(0);
|
|
286
|
+
});
|
|
287
|
+
});
|
|
288
|
+
});
|
|
289
|
+
//# sourceMappingURL=ValidationService.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValidationService.spec.js","sourceRoot":"","sources":["../../src/services/ValidationService.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Supported frameworks for class name extraction
|
|
3
|
+
*/
|
|
4
|
+
export declare enum Framework {
|
|
5
|
+
JSX = "jsx",
|
|
6
|
+
VUE = "vue"
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Detects the framework based on file extension
|
|
10
|
+
* Assumes pre-processors like @vue/language-tools are configured
|
|
11
|
+
*
|
|
12
|
+
* @param fileName - The file name or path
|
|
13
|
+
* @returns The detected framework or null if not supported
|
|
14
|
+
*/
|
|
15
|
+
export declare function detectFramework(fileName: string): Framework | null;
|
|
16
|
+
/**
|
|
17
|
+
* Checks if a file should be validated based on its extension
|
|
18
|
+
*
|
|
19
|
+
* @param fileName - The file name or path
|
|
20
|
+
* @returns True if the file should be validated
|
|
21
|
+
*/
|
|
22
|
+
export declare function isSupportedFile(fileName: string): boolean;
|
|
23
|
+
//# sourceMappingURL=FrameworkDetector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FrameworkDetector.d.ts","sourceRoot":"","sources":["../../src/utils/FrameworkDetector.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,SAAS;IACpB,GAAG,QAAQ;IACX,GAAG,QAAQ;CACX;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAmBlE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzD"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Framework = void 0;
|
|
4
|
+
exports.detectFramework = detectFramework;
|
|
5
|
+
exports.isSupportedFile = isSupportedFile;
|
|
6
|
+
/**
|
|
7
|
+
* Supported frameworks for class name extraction
|
|
8
|
+
*/
|
|
9
|
+
var Framework;
|
|
10
|
+
(function (Framework) {
|
|
11
|
+
Framework["JSX"] = "jsx";
|
|
12
|
+
Framework["VUE"] = "vue";
|
|
13
|
+
})(Framework || (exports.Framework = Framework = {}));
|
|
14
|
+
/**
|
|
15
|
+
* Detects the framework based on file extension
|
|
16
|
+
* Assumes pre-processors like @vue/language-tools are configured
|
|
17
|
+
*
|
|
18
|
+
* @param fileName - The file name or path
|
|
19
|
+
* @returns The detected framework or null if not supported
|
|
20
|
+
*/
|
|
21
|
+
function detectFramework(fileName) {
|
|
22
|
+
// Vue Single File Components (including virtual .vue.ts files from Volar)
|
|
23
|
+
if (fileName.endsWith('.vue') || fileName.includes('.vue.')) {
|
|
24
|
+
return Framework.VUE;
|
|
25
|
+
}
|
|
26
|
+
// JSX/TSX files (React, Solid, etc.)
|
|
27
|
+
if (fileName.endsWith('.tsx') || fileName.endsWith('.jsx')) {
|
|
28
|
+
return Framework.JSX;
|
|
29
|
+
}
|
|
30
|
+
// Plain TS/JS files might contain JSX if configured
|
|
31
|
+
// We'll treat them as potential JSX files
|
|
32
|
+
if (fileName.endsWith('.ts') || fileName.endsWith('.js')) {
|
|
33
|
+
return Framework.JSX;
|
|
34
|
+
}
|
|
35
|
+
// Unsupported file type
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Checks if a file should be validated based on its extension
|
|
40
|
+
*
|
|
41
|
+
* @param fileName - The file name or path
|
|
42
|
+
* @returns True if the file should be validated
|
|
43
|
+
*/
|
|
44
|
+
function isSupportedFile(fileName) {
|
|
45
|
+
return detectFramework(fileName) !== null;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=FrameworkDetector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FrameworkDetector.js","sourceRoot":"","sources":["../../src/utils/FrameworkDetector.ts"],"names":[],"mappings":";;;AAeA,0CAmBC;AAQD,0CAEC;AA5CD;;GAEG;AACH,IAAY,SAGX;AAHD,WAAY,SAAS;IACpB,wBAAW,CAAA;IACX,wBAAW,CAAA;AACZ,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB;AAED;;;;;;GAMG;AACH,SAAgB,eAAe,CAAC,QAAgB;IAC/C,0EAA0E;IAC1E,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7D,OAAO,SAAS,CAAC,GAAG,CAAC;IACtB,CAAC;IAED,qCAAqC;IACrC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5D,OAAO,SAAS,CAAC,GAAG,CAAC;IACtB,CAAC;IAED,oDAAoD;IACpD,0CAA0C;IAC1C,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1D,OAAO,SAAS,CAAC,GAAG,CAAC;IACtB,CAAC;IAED,wBAAwB;IACxB,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,QAAgB;IAC/C,OAAO,eAAe,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FrameworkDetector.spec.d.ts","sourceRoot":"","sources":["../../src/utils/FrameworkDetector.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const FrameworkDetector_1 = require("./FrameworkDetector");
|
|
4
|
+
describe('FrameworkDetector', () => {
|
|
5
|
+
describe('detectFramework', () => {
|
|
6
|
+
it('should detect JSX framework for .tsx files', () => {
|
|
7
|
+
expect((0, FrameworkDetector_1.detectFramework)('App.tsx')).toBe(FrameworkDetector_1.Framework.JSX);
|
|
8
|
+
expect((0, FrameworkDetector_1.detectFramework)('/src/components/Button.tsx')).toBe(FrameworkDetector_1.Framework.JSX);
|
|
9
|
+
});
|
|
10
|
+
it('should detect JSX framework for .jsx files', () => {
|
|
11
|
+
expect((0, FrameworkDetector_1.detectFramework)('App.jsx')).toBe(FrameworkDetector_1.Framework.JSX);
|
|
12
|
+
expect((0, FrameworkDetector_1.detectFramework)('/src/components/Button.jsx')).toBe(FrameworkDetector_1.Framework.JSX);
|
|
13
|
+
});
|
|
14
|
+
it('should detect JSX framework for .ts files', () => {
|
|
15
|
+
expect((0, FrameworkDetector_1.detectFramework)('utils.ts')).toBe(FrameworkDetector_1.Framework.JSX);
|
|
16
|
+
expect((0, FrameworkDetector_1.detectFramework)('/src/lib/helpers.ts')).toBe(FrameworkDetector_1.Framework.JSX);
|
|
17
|
+
});
|
|
18
|
+
it('should detect JSX framework for .js files', () => {
|
|
19
|
+
expect((0, FrameworkDetector_1.detectFramework)('utils.js')).toBe(FrameworkDetector_1.Framework.JSX);
|
|
20
|
+
expect((0, FrameworkDetector_1.detectFramework)('/src/lib/helpers.js')).toBe(FrameworkDetector_1.Framework.JSX);
|
|
21
|
+
});
|
|
22
|
+
it('should detect Vue framework for .vue files', () => {
|
|
23
|
+
expect((0, FrameworkDetector_1.detectFramework)('App.vue')).toBe(FrameworkDetector_1.Framework.VUE);
|
|
24
|
+
expect((0, FrameworkDetector_1.detectFramework)('/src/components/Button.vue')).toBe(FrameworkDetector_1.Framework.VUE);
|
|
25
|
+
});
|
|
26
|
+
it('should return null for unsupported file types', () => {
|
|
27
|
+
expect((0, FrameworkDetector_1.detectFramework)('styles.css')).toBeNull();
|
|
28
|
+
expect((0, FrameworkDetector_1.detectFramework)('index.html')).toBeNull();
|
|
29
|
+
expect((0, FrameworkDetector_1.detectFramework)('config.json')).toBeNull();
|
|
30
|
+
expect((0, FrameworkDetector_1.detectFramework)('README.md')).toBeNull();
|
|
31
|
+
});
|
|
32
|
+
it('should handle files with multiple dots in name', () => {
|
|
33
|
+
expect((0, FrameworkDetector_1.detectFramework)('Button.test.tsx')).toBe(FrameworkDetector_1.Framework.JSX);
|
|
34
|
+
expect((0, FrameworkDetector_1.detectFramework)('App.stories.tsx')).toBe(FrameworkDetector_1.Framework.JSX);
|
|
35
|
+
expect((0, FrameworkDetector_1.detectFramework)('Component.spec.vue')).toBe(FrameworkDetector_1.Framework.VUE);
|
|
36
|
+
});
|
|
37
|
+
it('should handle absolute paths', () => {
|
|
38
|
+
expect((0, FrameworkDetector_1.detectFramework)('/Users/dev/project/src/App.tsx')).toBe(FrameworkDetector_1.Framework.JSX);
|
|
39
|
+
expect((0, FrameworkDetector_1.detectFramework)('/Users/dev/project/src/App.vue')).toBe(FrameworkDetector_1.Framework.VUE);
|
|
40
|
+
});
|
|
41
|
+
it('should handle Windows paths', () => {
|
|
42
|
+
expect((0, FrameworkDetector_1.detectFramework)('C:\\Users\\dev\\project\\src\\App.tsx')).toBe(FrameworkDetector_1.Framework.JSX);
|
|
43
|
+
expect((0, FrameworkDetector_1.detectFramework)('C:\\Users\\dev\\project\\src\\App.vue')).toBe(FrameworkDetector_1.Framework.VUE);
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
describe('isSupportedFile', () => {
|
|
47
|
+
it('should return true for JSX files', () => {
|
|
48
|
+
expect((0, FrameworkDetector_1.isSupportedFile)('App.tsx')).toBe(true);
|
|
49
|
+
expect((0, FrameworkDetector_1.isSupportedFile)('App.jsx')).toBe(true);
|
|
50
|
+
expect((0, FrameworkDetector_1.isSupportedFile)('utils.ts')).toBe(true);
|
|
51
|
+
expect((0, FrameworkDetector_1.isSupportedFile)('utils.js')).toBe(true);
|
|
52
|
+
});
|
|
53
|
+
it('should return true for Vue files', () => {
|
|
54
|
+
expect((0, FrameworkDetector_1.isSupportedFile)('App.vue')).toBe(true);
|
|
55
|
+
expect((0, FrameworkDetector_1.isSupportedFile)('/src/components/Button.vue')).toBe(true);
|
|
56
|
+
});
|
|
57
|
+
it('should return false for unsupported files', () => {
|
|
58
|
+
expect((0, FrameworkDetector_1.isSupportedFile)('styles.css')).toBe(false);
|
|
59
|
+
expect((0, FrameworkDetector_1.isSupportedFile)('index.html')).toBe(false);
|
|
60
|
+
expect((0, FrameworkDetector_1.isSupportedFile)('config.json')).toBe(false);
|
|
61
|
+
expect((0, FrameworkDetector_1.isSupportedFile)('README.md')).toBe(false);
|
|
62
|
+
expect((0, FrameworkDetector_1.isSupportedFile)('image.png')).toBe(false);
|
|
63
|
+
expect((0, FrameworkDetector_1.isSupportedFile)('App.svelte')).toBe(false);
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
//# sourceMappingURL=FrameworkDetector.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FrameworkDetector.spec.js","sourceRoot":"","sources":["../../src/utils/FrameworkDetector.spec.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tailwind-typescript-plugin",
|
|
3
|
-
"version": "1.4.1-beta.
|
|
3
|
+
"version": "1.4.1-beta.31",
|
|
4
4
|
"description": "TypeScript Language Service plugin that validates Tailwind CSS class names in JSX/TSX files. Catches typos and invalid classes in real-time with support for tailwind-variants and class-variance-authority.",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -13,7 +13,11 @@
|
|
|
13
13
|
"scripts": {
|
|
14
14
|
"build": "tsc",
|
|
15
15
|
"watch": "tsc --watch",
|
|
16
|
-
"test": "jest",
|
|
16
|
+
"test": "jest --testPathPattern=src/",
|
|
17
|
+
"test:integration": "cd e2e && npm test",
|
|
18
|
+
"test:integration:ui": "cd e2e && npm run test:ui",
|
|
19
|
+
"test:integration:headed": "cd e2e && npm run test:headed",
|
|
20
|
+
"test:all": "npm test && npm run test:integration",
|
|
17
21
|
"lint": "eslint src --ext .ts,.tsx,.json --quiet --cache",
|
|
18
22
|
"tsc": "tsc --noEmit",
|
|
19
23
|
"prepare": "npm run build",
|
|
@@ -73,17 +77,20 @@
|
|
|
73
77
|
"eslint-plugin-react-hooks": "^5.2.0",
|
|
74
78
|
"eslint-plugin-storybook": "^9.0.16",
|
|
75
79
|
"jest": "^29.7.0",
|
|
80
|
+
"postcss": "^8.5.6",
|
|
76
81
|
"prettier": "^3.5.3",
|
|
77
82
|
"semantic-release": "^24.2.9",
|
|
83
|
+
"tailwindcss": "^4.1.17",
|
|
78
84
|
"ts-jest": "^29.4.5",
|
|
79
85
|
"ts-node": "^10.9.2",
|
|
80
86
|
"typescript": "^5.7.2"
|
|
81
87
|
},
|
|
82
88
|
"peerDependencies": {
|
|
89
|
+
"postcss": "^8.0.0",
|
|
90
|
+
"tailwindcss": "^4.0.0",
|
|
83
91
|
"typescript": ">=4.0.0"
|
|
84
92
|
},
|
|
85
93
|
"dependencies": {
|
|
86
|
-
"
|
|
87
|
-
"tailwindcss": "^4.1.17"
|
|
94
|
+
"zod": "^3.25.76"
|
|
88
95
|
}
|
|
89
96
|
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import * as ts from 'typescript/lib/tsserverlibrary';
|
|
2
|
-
import { ClassNameInfo, ExtractionContext } from '../core/types';
|
|
3
|
-
import { BaseExtractor } from './BaseExtractor';
|
|
4
|
-
/**
|
|
5
|
-
* Extracts class names from string literals
|
|
6
|
-
* Example: 'flex items-center'
|
|
7
|
-
*/
|
|
8
|
-
export declare class StringLiteralExtractor extends BaseExtractor {
|
|
9
|
-
canHandle(node: ts.Node, context: ExtractionContext): boolean;
|
|
10
|
-
extract(node: ts.Node, context: ExtractionContext): ClassNameInfo[];
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=StringLiteralExtractor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StringLiteralExtractor.d.ts","sourceRoot":"","sources":["../../src/extractors/StringLiteralExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,aAAa;IACxD,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO;IAI7D,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,iBAAiB,GAAG,aAAa,EAAE;CAOnE"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StringLiteralExtractor = void 0;
|
|
4
|
-
const BaseExtractor_1 = require("./BaseExtractor");
|
|
5
|
-
/**
|
|
6
|
-
* Extracts class names from string literals
|
|
7
|
-
* Example: 'flex items-center'
|
|
8
|
-
*/
|
|
9
|
-
class StringLiteralExtractor extends BaseExtractor_1.BaseExtractor {
|
|
10
|
-
canHandle(node, context) {
|
|
11
|
-
return context.typescript.isStringLiteral(node);
|
|
12
|
-
}
|
|
13
|
-
extract(node, context) {
|
|
14
|
-
if (!context.typescript.isStringLiteral(node)) {
|
|
15
|
-
return [];
|
|
16
|
-
}
|
|
17
|
-
return this.extractFromStringLiteral(node, context);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
exports.StringLiteralExtractor = StringLiteralExtractor;
|
|
21
|
-
//# sourceMappingURL=StringLiteralExtractor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StringLiteralExtractor.js","sourceRoot":"","sources":["../../src/extractors/StringLiteralExtractor.ts"],"names":[],"mappings":";;;AAGA,mDAAgD;AAEhD;;;GAGG;AACH,MAAa,sBAAuB,SAAQ,6BAAa;IACxD,SAAS,CAAC,IAAa,EAAE,OAA0B;QAClD,OAAO,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,CAAC,IAAa,EAAE,OAA0B;QAChD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,OAAO,EAAE,CAAC;QACX,CAAC;QAED,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;CACD;AAZD,wDAYC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
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
|