{"_id":"eslint-plugin-tailwind-canonical-classes","_rev":"16-97582109376e1e605611535f0ffad815","name":"eslint-plugin-tailwind-canonical-classes","dist-tags":{"latest":"1.4.1"},"versions":{"1.0.0":{"name":"eslint-plugin-tailwind-canonical-classes","version":"1.0.0","keywords":["eslint","eslint-plugin","tailwind","tailwindcss","canonical","lint","css"],"author":{"name":"Maisonnat Maxence","email":"maisonnatmax@gmail.com"},"license":"MIT","_id":"eslint-plugin-tailwind-canonical-classes@1.0.0","maintainers":[{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"}],"homepage":"https://github.com/maxencemaisonnat/eslint-plugin-tailwind-canonical-classes#readme","bugs":{"url":"https://github.com/maxencemaisonnat/eslint-plugin-tailwind-canonical-classes/issues"},"dist":{"shasum":"3cf400775f1fd0d48b94b820d4b6d8b04b72e1e3","tarball":"https://registry.npmjs.org/eslint-plugin-tailwind-canonical-classes/-/eslint-plugin-tailwind-canonical-classes-1.0.0.tgz","fileCount":5,"integrity":"sha512-lxpoB0LXCDc+U/ScgPS2iGERL/QQQQ/JihnrHYMToCmJUPvQjeWLqmAW4/e6XR/XuS38GKl3p2aibneF9SaIDQ==","signatures":[{"sig":"MEUCIBFnNS3TBoxLH2HeDqidV7UBONMhUVQAJ5yrCrnll3ACAiEA7z84Chkat39/PSDqeaKiirGdk+ualRcFfqysKRpZl2A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14749},"main":"index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./index.js","./rule":"./lib/tailwind-canonical-classes.js"},"gitHead":"da921fd2997e8d506ad8825ebe6de421247d3984","_npmUser":{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"},"repository":{"url":"git+https://github.com/maxencemaisonnat/eslint-plugin-tailwind-canonical-classes.git","type":"git"},"_npmVersion":"11.6.0","description":"ESLint plugin to enforce canonical Tailwind CSS class names using Tailwind CSS v4's canonicalization API","directories":{},"_nodeVersion":"24.10.0","dependencies":{"@tailwindcss/node":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0"},"peerDependencies":{"eslint":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-tailwind-canonical-classes_1.0.0_1762964963331_0.15613953190023633","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"eslint-plugin-tailwind-canonical-classes","version":"1.0.1","keywords":["eslint","eslint-plugin","tailwind","tailwindcss","canonical","lint","css"],"author":{"name":"Maisonnat Maxence","email":"maisonnatmax@gmail.com"},"license":"MIT","_id":"eslint-plugin-tailwind-canonical-classes@1.0.1","maintainers":[{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"}],"homepage":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes#readme","bugs":{"url":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes/issues"},"dist":{"shasum":"2170e6fc889470a9545bca2f1327769c4d672d44","tarball":"https://registry.npmjs.org/eslint-plugin-tailwind-canonical-classes/-/eslint-plugin-tailwind-canonical-classes-1.0.1.tgz","fileCount":5,"integrity":"sha512-Y0ODc6NNLPBKFioT/jYftrUm2Bn/QoIe+tMsDvl1glIopfW5pEaJlaqdqrgVfDn1/AM0zsSKH/QCEBa2hP3sxA==","signatures":[{"sig":"MEUCIGI5Hy+Q+ZSBzlaBHpURZyu/K3Bzxf48pzUcDFQqi+w+AiEA8zKnS5c/gvs7KYH/7gR4CH91IJ2aR6CKJJrGcMgcYLA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14731},"main":"index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./index.js","./rule":"./lib/tailwind-canonical-classes.js"},"gitHead":"71c4c111f99feaa9cbbf5729a26e32286c904594","_npmUser":{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"},"repository":{"url":"git+https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes.git","type":"git"},"_npmVersion":"11.6.0","description":"ESLint plugin to enforce canonical Tailwind CSS class names using Tailwind CSS v4's canonicalization API","directories":{},"_nodeVersion":"24.10.0","dependencies":{"@tailwindcss/node":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0"},"peerDependencies":{"eslint":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-tailwind-canonical-classes_1.0.1_1762965200970_0.49688327711132296","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"eslint-plugin-tailwind-canonical-classes","version":"1.0.2","keywords":["eslint","eslint-plugin","tailwind","tailwindcss","canonical","lint","css"],"author":{"name":"Maisonnat Maxence","email":"maisonnatmax@gmail.com"},"license":"MIT","_id":"eslint-plugin-tailwind-canonical-classes@1.0.2","maintainers":[{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"}],"homepage":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes#readme","bugs":{"url":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes/issues"},"dist":{"shasum":"0c4ab2341ebd98493eba62f76c1af77a9a8dec97","tarball":"https://registry.npmjs.org/eslint-plugin-tailwind-canonical-classes/-/eslint-plugin-tailwind-canonical-classes-1.0.2.tgz","fileCount":6,"integrity":"sha512-tVISSBU7KjGjq7np1DFGcn2+S48M9M/2Oua2DMzm8j8apeqap7FZXvrlucwp62u0klci2y1akycrGTTIh3RHTg==","signatures":[{"sig":"MEUCIHAV5GnacjYvnBspVehOEiUD5rp7QgxLIRuNih7bm1ncAiEArPlgjTtKUqg5czjC/rh3PK4r2s7SH67xU6QVUqI0rSQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15063},"main":"index.js","type":"module","types":"index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./index.d.ts","default":"./index.js"},"./rule":{"types":"./lib/tailwind-canonical-classes.d.ts","default":"./lib/tailwind-canonical-classes.js"}},"gitHead":"c852c201d4b65d02086e8546edaca8b511753477","_npmUser":{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"},"repository":{"url":"git+https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes.git","type":"git"},"_npmVersion":"11.6.0","description":"ESLint plugin to enforce canonical Tailwind CSS class names using Tailwind CSS v4's canonicalization API","directories":{},"_nodeVersion":"24.10.0","dependencies":{"@tailwindcss/node":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0"},"peerDependencies":{"eslint":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-tailwind-canonical-classes_1.0.2_1762965866179_0.04876647683206503","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"eslint-plugin-tailwind-canonical-classes","version":"1.0.3","keywords":["eslint","eslint-plugin","tailwind","tailwindcss","canonical","lint","css"],"author":{"name":"Maisonnat Maxence","email":"maisonnatmax@gmail.com"},"license":"MIT","_id":"eslint-plugin-tailwind-canonical-classes@1.0.3","maintainers":[{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"}],"homepage":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes#readme","bugs":{"url":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes/issues"},"dist":{"shasum":"4b00acc55d7e7084996a3355948827789e862cd1","tarball":"https://registry.npmjs.org/eslint-plugin-tailwind-canonical-classes/-/eslint-plugin-tailwind-canonical-classes-1.0.3.tgz","fileCount":7,"integrity":"sha512-Ycj9Rer2qRU1xM6lPpB6Kb6QqO1Ly6f360jlkyAT7kQuDz9kn3XKV4d0VnoWuePAHUp/YBxCP+INLi4NT3qD/A==","signatures":[{"sig":"MEUCIB5v+siZ2qvqY34iYAakEt8vuw9nXgwZ/PX6S1/V7bMTAiEA0MdzxGwh+nepc2ve0IULotE6RT0Cz/4hjpB0ri2unyc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15293},"main":"index.js","type":"module","types":"index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./index.d.ts","default":"./index.js"},"./rule":{"types":"./lib/tailwind-canonical-classes.d.ts","default":"./lib/tailwind-canonical-classes.js"}},"gitHead":"e0eba26ff404878bc2c3f3ac63e6711b284a2930","_npmUser":{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"},"repository":{"url":"git+https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes.git","type":"git"},"_npmVersion":"11.6.0","description":"ESLint plugin to enforce canonical Tailwind CSS class names using Tailwind CSS v4's canonicalization API","directories":{},"_nodeVersion":"24.10.0","dependencies":{"@tailwindcss/node":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0"},"peerDependencies":{"eslint":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-tailwind-canonical-classes_1.0.3_1762966169404_0.3493830760655947","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"eslint-plugin-tailwind-canonical-classes","version":"1.0.6","keywords":["eslint","eslint-plugin","tailwind","tailwindcss","canonical","lint","css"],"author":{"name":"Maisonnat Maxence","email":"maisonnatmax@gmail.com"},"license":"MIT","_id":"eslint-plugin-tailwind-canonical-classes@1.0.6","maintainers":[{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"}],"homepage":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes#readme","bugs":{"url":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes/issues"},"dist":{"shasum":"3aeb0c8169d1d262fa1ea9a217a6e8fa5c71456c","tarball":"https://registry.npmjs.org/eslint-plugin-tailwind-canonical-classes/-/eslint-plugin-tailwind-canonical-classes-1.0.6.tgz","fileCount":7,"integrity":"sha512-HkYcdCnoC6O8K44OMWzHijCoKQkV7jEYteA2fF9pTvXgUZ5JqHsNA4L039kgel5KIJTjM+PJwluMFthEaKT5nA==","signatures":[{"sig":"MEUCIQCcbSG3RZ9trWP0aGQxz8p2rlX2FCd2A6zlJspyz6Yb3gIgWoeugEGF3JoaIwb6QG0qfNl9WwGPss3qpKV3zM/cUa8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/eslint-plugin-tailwind-canonical-classes@1.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15287},"main":"index.js","type":"module","types":"index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./index.d.ts","default":"./index.js"},"./rule":{"types":"./lib/tailwind-canonical-classes.d.ts","default":"./lib/tailwind-canonical-classes.js"}},"gitHead":"74f469a6c4cbacce9e2cd5dfb3a26f2d3badbc4b","_npmUser":{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"},"repository":{"url":"git+https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes.git","type":"git"},"_npmVersion":"10.8.2","description":"ESLint plugin to enforce canonical Tailwind CSS class names using Tailwind CSS v4's canonicalization API","directories":{},"_nodeVersion":"18.20.8","dependencies":{"@tailwindcss/node":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0"},"peerDependencies":{"eslint":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-tailwind-canonical-classes_1.0.6_1763397081349_0.04863518478850826","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"eslint-plugin-tailwind-canonical-classes","version":"1.0.7","keywords":["eslint","eslint-plugin","tailwind","tailwindcss","canonical","lint","css"],"author":{"name":"Maisonnat Maxence","email":"maisonnatmax@gmail.com"},"license":"MIT","_id":"eslint-plugin-tailwind-canonical-classes@1.0.7","maintainers":[{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"}],"homepage":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes#readme","bugs":{"url":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes/issues"},"dist":{"shasum":"5f4aba392ac0687c5fbbffe2efa177747aafb754","tarball":"https://registry.npmjs.org/eslint-plugin-tailwind-canonical-classes/-/eslint-plugin-tailwind-canonical-classes-1.0.7.tgz","fileCount":7,"integrity":"sha512-lDBrLyFmqE6iey+N74qlz5PUkfAbOpyglVYctqU3ZGI4aOPGv/+RXCD9JoC8K+LNvG1Go9hVJze+u2xah3JpAA==","signatures":[{"sig":"MEUCIQDflSPxfVAxbzaNVNR+Py55uRQq3Ya5SKP9svWvQATcHgIgL6fb58qJUs+7gkZoLABIZZ/U5V1IJQuNUHLJ1nHG0b8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/eslint-plugin-tailwind-canonical-classes@1.0.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15398},"main":"index.js","type":"module","types":"index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./index.d.ts","default":"./index.js"},"./rule":{"types":"./lib/tailwind-canonical-classes.d.ts","default":"./lib/tailwind-canonical-classes.js"}},"gitHead":"35f0ff836bd7538bb7ba97f4d28e5340e092e11f","_npmUser":{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"},"repository":{"url":"git+https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes.git","type":"git"},"_npmVersion":"10.8.2","description":"ESLint plugin to enforce canonical Tailwind CSS class names using Tailwind CSS v4's canonicalization API","directories":{},"_nodeVersion":"18.20.8","dependencies":{"@tailwindcss/node":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0"},"peerDependencies":{"eslint":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-tailwind-canonical-classes_1.0.7_1763397291356_0.8028253290665162","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"eslint-plugin-tailwind-canonical-classes","version":"1.0.8","keywords":["eslint","eslint-plugin","tailwind","tailwindcss","canonical","lint","css"],"author":{"name":"Maisonnat Maxence","email":"maisonnatmax@gmail.com"},"license":"MIT","_id":"eslint-plugin-tailwind-canonical-classes@1.0.8","maintainers":[{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"}],"homepage":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes#readme","bugs":{"url":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes/issues"},"dist":{"shasum":"935bc442206955c2e537cf02e62ebb231051c14f","tarball":"https://registry.npmjs.org/eslint-plugin-tailwind-canonical-classes/-/eslint-plugin-tailwind-canonical-classes-1.0.8.tgz","fileCount":7,"integrity":"sha512-UG4vYzMRGaZPkwRULQl7ccMbWZ33RIEDCanv1FXDJ2cvdOXyeZ9H+QjgxXWcOyhFP6TZgKN/Ukjt7MLAOF3vtw==","signatures":[{"sig":"MEQCIFQExDr9spproS1nVkfJzELOlL+/GJ99l761Fl0auAxaAiBkubMNna3UPTQyeyMmN+G5p7g2/yEkW7RRDODoVUfbcg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16477},"main":"index.js","type":"module","types":"index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./index.d.ts","default":"./index.js"},"./rule":{"types":"./lib/tailwind-canonical-classes.d.ts","default":"./lib/tailwind-canonical-classes.js"}},"gitHead":"02a76e2bd7c4d4bf9f2210fed343680b1b2ea43e","_npmUser":{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"},"repository":{"url":"git+https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes.git","type":"git"},"_npmVersion":"11.6.0","description":"ESLint plugin to enforce canonical Tailwind CSS class names using Tailwind CSS v4's canonicalization API","directories":{},"_nodeVersion":"24.10.0","dependencies":{"@tailwindcss/node":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0"},"peerDependencies":{"eslint":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-tailwind-canonical-classes_1.0.8_1763398122142_0.590127618841441","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"eslint-plugin-tailwind-canonical-classes","version":"1.0.10","keywords":["eslint","eslint-plugin","tailwind","tailwindcss","canonical","lint","css"],"author":{"name":"Maisonnat Maxence","email":"maisonnatmax@gmail.com"},"license":"MIT","_id":"eslint-plugin-tailwind-canonical-classes@1.0.10","maintainers":[{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"}],"homepage":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes#readme","bugs":{"url":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes/issues"},"dist":{"shasum":"1a765fbd61868ed77b4aedfb825d2493ee626f6b","tarball":"https://registry.npmjs.org/eslint-plugin-tailwind-canonical-classes/-/eslint-plugin-tailwind-canonical-classes-1.0.10.tgz","fileCount":9,"integrity":"sha512-1OC7duaxow0A4ZOc1zhBUVN+9Kl8+PZsT+W6ZB6igZ0RvJJmcJcX4UHi9SUuWGR+e5qOvETDC0fLIaX317OLVA==","signatures":[{"sig":"MEQCIFBA2GVWfVd2eHjGJ3Wwqz01bw3+9Gr2oulTGP2Ml16AAiB4bNPQozol4l1CwyqTnoUfbMAwJXUuKa4CP5VYNyl4XA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21531},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./rule":{"types":"./lib/rules/tailwind-canonical-classes.d.ts","default":"./lib/rules/tailwind-canonical-classes.js"}},"gitHead":"36f92c52ff26f191bc599cc1321c95d47a0f5a9f","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator",["@semantic-release/changelog",{"changelogFile":"CHANGELOG.md"}],"@semantic-release/npm",["@semantic-release/git",{"assets":["package.json","package-lock.json","CHANGELOG.md"],"message":"chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"}],"@semantic-release/github"],"branches":["main"]},"scripts":{"test":"npm run build && vitest","build":"tsc","release":"semantic-release","test:run":"npm run build && vitest run","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"},"repository":{"url":"git+https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes.git","type":"git"},"_npmVersion":"10.9.4","description":"ESLint plugin to enforce canonical Tailwind CSS class names using Tailwind CSS v4's canonicalization API","directories":{},"_nodeVersion":"20.19.6","dependencies":{"synckit":"^0.9.3","@tailwindcss/node":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","vitest":"^4.0.16","typescript":"^5.0.0","@types/node":"^20.0.0","semantic-release":"^24.0.0","@babel/preset-react":"^7.28.5","@babel/eslint-parser":"^7.28.5","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^9.2.6","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"eslint":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-tailwind-canonical-classes_1.0.10_1766228197253_0.48314175399834647","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"eslint-plugin-tailwind-canonical-classes","version":"1.1.0","keywords":["eslint","eslint-plugin","tailwind","tailwindcss","canonical","lint","css"],"author":{"name":"Maisonnat Maxence","email":"maisonnatmax@gmail.com"},"license":"MIT","_id":"eslint-plugin-tailwind-canonical-classes@1.1.0","maintainers":[{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"}],"homepage":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes#readme","bugs":{"url":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes/issues"},"dist":{"shasum":"52849f89924748cc35429fa15fda1200a8cf50f1","tarball":"https://registry.npmjs.org/eslint-plugin-tailwind-canonical-classes/-/eslint-plugin-tailwind-canonical-classes-1.1.0.tgz","fileCount":9,"integrity":"sha512-iUULawmR5OsXvbJlFQhDg49SoZVplPml0qdz2cJalMvm5IF27tcqCIvP6SqxZEaVBdZjOcivWqF9dtXwrC78ag==","signatures":[{"sig":"MEYCIQCvj6NigVbTPRdZ7O0Cbzkj5i4r/FUmcXVcY7GOmKcORAIhALSURnU8LhflL7M6GLNfrNqhGjsUkKnKuwmfHi2cPdgP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29657},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./rule":{"types":"./lib/rules/tailwind-canonical-classes.d.ts","default":"./lib/rules/tailwind-canonical-classes.js"}},"gitHead":"59f28988dc7506a426266a21b197e6917d669fc6","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator",["@semantic-release/changelog",{"changelogFile":"CHANGELOG.md"}],"@semantic-release/npm",["@semantic-release/git",{"assets":["package.json","package-lock.json","CHANGELOG.md"],"message":"chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"}],"@semantic-release/github"],"branches":["main"]},"scripts":{"test":"npm run build && vitest","build":"tsc","release":"semantic-release","test:run":"npm run build && vitest run","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"},"repository":{"url":"git+https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes.git","type":"git"},"_npmVersion":"10.9.4","description":"ESLint plugin to enforce canonical Tailwind CSS class names using Tailwind CSS v4's canonicalization API","directories":{},"_nodeVersion":"20.19.6","dependencies":{"synckit":"^0.9.3","@tailwindcss/node":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","vitest":"^4.0.16","typescript":"^5.0.0","@types/node":"^20.0.0","semantic-release":"^24.0.0","@babel/preset-react":"^7.28.5","@babel/eslint-parser":"^7.28.5","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^9.2.6","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"eslint":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-tailwind-canonical-classes_1.1.0_1766240775162_0.0579436114858809","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"eslint-plugin-tailwind-canonical-classes","version":"1.2.0","keywords":["eslint","eslint-plugin","tailwind","tailwindcss","canonical","lint","css"],"author":{"name":"Maisonnat Maxence","email":"maisonnatmax@gmail.com"},"license":"MIT","_id":"eslint-plugin-tailwind-canonical-classes@1.2.0","maintainers":[{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"}],"homepage":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes#readme","bugs":{"url":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes/issues"},"dist":{"shasum":"2aa61cb4286e086a23a7e197b6d9c54954a67db7","tarball":"https://registry.npmjs.org/eslint-plugin-tailwind-canonical-classes/-/eslint-plugin-tailwind-canonical-classes-1.2.0.tgz","fileCount":9,"integrity":"sha512-kp7wpwv0kxPeJp+fCQoRD8z9qbCMP1fenY4qeI3CURGygPDD3MNMwLqcs4srb/U4sQ2+W6OIexN4/sKONxuuYA==","signatures":[{"sig":"MEQCIGN7Ux6RkLyL2k0Uf3B4LnaUlZo7BZcQ0wFpwZKEJH1PAiAfzit2SjNYfbZR3SgU3GocnXpDjo2p5Kh4V2IjzHnEGg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28725},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./rule":{"types":"./lib/rules/tailwind-canonical-classes.d.ts","default":"./lib/rules/tailwind-canonical-classes.js"}},"gitHead":"6e0859a064af26f7a7fdb47a604416a7063c80f4","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator",["@semantic-release/changelog",{"changelogFile":"CHANGELOG.md"}],"@semantic-release/npm",["@semantic-release/git",{"assets":["package.json","package-lock.json","CHANGELOG.md"],"message":"chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"}],"@semantic-release/github"],"branches":["main"]},"scripts":{"test":"npm run build && vitest","build":"tsc","release":"semantic-release","test:run":"npm run build && vitest run","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"},"repository":{"url":"git+https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes.git","type":"git"},"_npmVersion":"11.10.0","description":"ESLint plugin to enforce canonical Tailwind CSS class names using Tailwind CSS v4's canonicalization API","directories":{},"_nodeVersion":"22.21.1","dependencies":{"synckit":"^0.9.3","@tailwindcss/node":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","vitest":"^4.0.16","typescript":"^5.0.0","@types/node":"^20.0.0","semantic-release":"^24.0.0","@babel/preset-react":"^7.28.5","@babel/eslint-parser":"^7.28.5","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^9.2.6","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"eslint":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-tailwind-canonical-classes_1.2.0_1771254696054_0.6335224331545115","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"eslint-plugin-tailwind-canonical-classes","version":"1.3.0","keywords":["eslint","eslint-plugin","tailwind","tailwindcss","canonical","lint","css"],"author":{"name":"Maisonnat Maxence","email":"maisonnatmax@gmail.com"},"license":"MIT","_id":"eslint-plugin-tailwind-canonical-classes@1.3.0","maintainers":[{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"}],"homepage":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes#readme","bugs":{"url":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes/issues"},"dist":{"shasum":"a5ab1cef7975bb5b31a29af631fa663591b3deb8","tarball":"https://registry.npmjs.org/eslint-plugin-tailwind-canonical-classes/-/eslint-plugin-tailwind-canonical-classes-1.3.0.tgz","fileCount":9,"integrity":"sha512-L/nMkiRW08+Ip1IjoRelw5jqpKOEuA1khyv59JHKetXXfwcSLP4Yl4BeEVs01fkxGZMK2A8t+9wEjFPJa568Gg==","signatures":[{"sig":"MEUCIQDLYqp2W4K2BsQcVpWqhvqsKHLO7yXf7hUoOtBaQ/ba5gIgSAfGAdf09Bn95TY+I4TniADExK6qgiK9Ki/66sC07Gs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30271},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./rule":{"types":"./lib/rules/tailwind-canonical-classes.d.ts","default":"./lib/rules/tailwind-canonical-classes.js"}},"gitHead":"4c8c83920739508becee25707d55add00b3463bf","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator",["@semantic-release/changelog",{"changelogFile":"CHANGELOG.md"}],"@semantic-release/npm",["@semantic-release/git",{"assets":["package.json","package-lock.json","CHANGELOG.md"],"message":"chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"}],"@semantic-release/github"],"branches":["main"]},"scripts":{"test":"npm run build && vitest","build":"tsc","release":"semantic-release","test:run":"npm run build && vitest run","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"},"repository":{"url":"git+https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes.git","type":"git"},"_npmVersion":"10.9.4","description":"ESLint plugin to enforce canonical Tailwind CSS class names using Tailwind CSS v4's canonicalization API","directories":{},"_nodeVersion":"20.20.0","dependencies":{"synckit":"^0.9.3","@tailwindcss/node":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","vitest":"^4.0.16","typescript":"^5.0.0","@types/node":"^20.0.0","semantic-release":"^24.0.0","@babel/preset-react":"^7.28.5","@babel/eslint-parser":"^7.28.5","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^9.2.6","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"eslint":"^8.0.0 || ^9.0.0 || ^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-tailwind-canonical-classes_1.3.0_1773217256072_0.4119481938551024","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"eslint-plugin-tailwind-canonical-classes","version":"1.3.1","keywords":["eslint","eslint-plugin","tailwind","tailwindcss","canonical","lint","css"],"author":{"name":"Maisonnat Maxence","email":"maisonnatmax@gmail.com"},"license":"MIT","_id":"eslint-plugin-tailwind-canonical-classes@1.3.1","maintainers":[{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"}],"homepage":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes#readme","bugs":{"url":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes/issues"},"dist":{"shasum":"366436397b0e994a199bfeb1769ca5144622f95c","tarball":"https://registry.npmjs.org/eslint-plugin-tailwind-canonical-classes/-/eslint-plugin-tailwind-canonical-classes-1.3.1.tgz","fileCount":9,"integrity":"sha512-j4gaGbxR8HkZ/NAGDhLq20nQsU+lkuu9a0OQQEzg8GFLWc+I5lfXKZFASikj5DzFYzC6gbkbU+h5AlVvOLV6Yg==","signatures":[{"sig":"MEUCIBifVBZR+zMT8BMQRfHlMZNaqROLZAhSZwzGybMLXuWiAiEAvM1ZwSI50gbGsPfs9Lrrrc49ZKXqB3gJllFagaeusso=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30271},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./rule":{"types":"./lib/rules/tailwind-canonical-classes.d.ts","default":"./lib/rules/tailwind-canonical-classes.js"}},"gitHead":"340b8f544f7d3a770aa63ee1ddb5df8ad063bd52","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator",["@semantic-release/changelog",{"changelogFile":"CHANGELOG.md"}],"@semantic-release/npm",["@semantic-release/git",{"assets":["package.json","package-lock.json","CHANGELOG.md"],"message":"chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"}],"@semantic-release/github"],"branches":["main"]},"scripts":{"test":"npm run build && vitest","build":"tsc","release":"semantic-release","test:run":"npm run build && vitest run","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"},"repository":{"url":"git+https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes.git","type":"git"},"_npmVersion":"10.9.4","description":"ESLint plugin to enforce canonical Tailwind CSS class names using Tailwind CSS v4's canonicalization API","directories":{},"_nodeVersion":"20.20.0","dependencies":{"synckit":"^0.9.3","@tailwindcss/node":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","vitest":"^4.0.16","typescript":"^5.0.0","@types/node":"^20.0.0","semantic-release":"^24.0.0","@babel/preset-react":"^7.28.5","@babel/eslint-parser":"^7.28.5","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^9.2.6","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"eslint":"^8.0.0 || ^9.0.0 || ^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-tailwind-canonical-classes_1.3.1_1773217636869_0.4670191548830396","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"eslint-plugin-tailwind-canonical-classes","version":"1.3.2","keywords":["eslint","eslint-plugin","tailwind","tailwindcss","canonical","lint","css"],"author":{"name":"Maisonnat Maxence","email":"maisonnatmax@gmail.com"},"license":"MIT","_id":"eslint-plugin-tailwind-canonical-classes@1.3.2","maintainers":[{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"}],"homepage":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes#readme","bugs":{"url":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes/issues"},"dist":{"shasum":"e9bab6a7ede7b0b100577e56db79de3fdda42239","tarball":"https://registry.npmjs.org/eslint-plugin-tailwind-canonical-classes/-/eslint-plugin-tailwind-canonical-classes-1.3.2.tgz","fileCount":9,"integrity":"sha512-9K7J8jXQVjITQP2d0vVbHL5e3Zmx3vDPq20P+0MynovsVa7c1GfLXUXZMEr3CuUs4I/MKaPF0H6cMB+B6zVIog==","signatures":[{"sig":"MEUCIQCDhPJikpnPpORLN/ymu6EJCzktUO539+vtx/XQRPZ7mwIgLcpKKkildVlGXYXCsLCgLau58Lek1dACQGrlSt+Wsz0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31393},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./rule":{"types":"./lib/rules/tailwind-canonical-classes.d.ts","default":"./lib/rules/tailwind-canonical-classes.js"}},"gitHead":"f22bd4fdd9a2e7638044cdb945e56f7544451dfb","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator",["@semantic-release/changelog",{"changelogFile":"CHANGELOG.md"}],"@semantic-release/npm",["@semantic-release/git",{"assets":["package.json","package-lock.json","CHANGELOG.md"],"message":"chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"}],"@semantic-release/github"],"branches":["main"]},"scripts":{"test":"npm run build && vitest","build":"tsc","release":"semantic-release","test:run":"npm run build && vitest run","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"},"repository":{"url":"git+https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes.git","type":"git"},"_npmVersion":"10.9.4","description":"ESLint plugin to enforce canonical Tailwind CSS class names using Tailwind CSS v4's canonicalization API","directories":{},"_nodeVersion":"20.20.1","dependencies":{"synckit":"^0.9.3","@tailwindcss/node":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","vitest":"^4.0.16","typescript":"^5.0.0","@types/node":"^20.0.0","semantic-release":"^24.0.0","@babel/preset-react":"^7.28.5","@babel/eslint-parser":"^7.28.5","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^9.2.6","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"eslint":"^8.0.0 || ^9.0.0 || ^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-tailwind-canonical-classes_1.3.2_1774855592074_0.17173386086303521","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"eslint-plugin-tailwind-canonical-classes","version":"1.3.3","keywords":["eslint","eslint-plugin","tailwind","tailwindcss","canonical","lint","css"],"author":{"name":"Maisonnat Maxence","email":"maisonnatmax@gmail.com"},"license":"MIT","_id":"eslint-plugin-tailwind-canonical-classes@1.3.3","maintainers":[{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"}],"homepage":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes#readme","bugs":{"url":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes/issues"},"dist":{"shasum":"04cfe8f5dd2f94c9f518fb7c21f0d0ca9d83f5e0","tarball":"https://registry.npmjs.org/eslint-plugin-tailwind-canonical-classes/-/eslint-plugin-tailwind-canonical-classes-1.3.3.tgz","fileCount":9,"integrity":"sha512-JNnbtGVEydbdi27qKOdZ/qgJPpdKwFymn+MEAWuiXy1KxNlB4duly9Xq4/6AnqBGrW1IE5iC47AVpXyu3KZMfw==","signatures":[{"sig":"MEUCIQCao5ICAb9Mq4K1kq/3TGcho+MJ7T/0g54MQ1IWeLun1QIgUSGJEfYBa7m9xtszpoelhgdy+JWP0Nd+ww5Fmy0YaY0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31801},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./rule":{"types":"./lib/rules/tailwind-canonical-classes.d.ts","default":"./lib/rules/tailwind-canonical-classes.js"}},"gitHead":"a06f8d1b5f3e3477b61f1a5f9c525ee9da863c40","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator",["@semantic-release/changelog",{"changelogFile":"CHANGELOG.md"}],"@semantic-release/npm",["@semantic-release/git",{"assets":["package.json","package-lock.json","CHANGELOG.md"],"message":"chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"}],"@semantic-release/github"],"branches":["main"]},"scripts":{"test":"npm run build && vitest","build":"tsc","release":"semantic-release","test:run":"npm run build && vitest run","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"},"repository":{"url":"git+https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes.git","type":"git"},"_npmVersion":"10.9.4","description":"ESLint plugin to enforce canonical Tailwind CSS class names using Tailwind CSS v4's canonicalization API","directories":{},"_nodeVersion":"20.20.2","dependencies":{"synckit":"^0.9.3","@tailwindcss/node":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","vitest":"^4.0.16","typescript":"^5.0.0","@types/node":"^20.0.0","semantic-release":"^24.0.0","@babel/preset-react":"^7.28.5","@babel/eslint-parser":"^7.28.5","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^9.2.6","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"eslint":"^8.0.0 || ^9.0.0 || ^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-tailwind-canonical-classes_1.3.3_1777273710561_0.7267138793863683","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"eslint-plugin-tailwind-canonical-classes","version":"1.4.0","keywords":["eslint","eslint-plugin","tailwind","tailwindcss","canonical","lint","css"],"author":{"name":"Maisonnat Maxence","email":"maisonnatmax@gmail.com"},"license":"MIT","_id":"eslint-plugin-tailwind-canonical-classes@1.4.0","maintainers":[{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"}],"homepage":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes#readme","bugs":{"url":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes/issues"},"dist":{"shasum":"0a3f249e2c3b8d451c3e70f9cea79ad9c6a5698e","tarball":"https://registry.npmjs.org/eslint-plugin-tailwind-canonical-classes/-/eslint-plugin-tailwind-canonical-classes-1.4.0.tgz","fileCount":27,"integrity":"sha512-MGBZkPsF92/2zA6RQ6HWcvPufHKbnoP5PYK8VHdBqJI4xcM1Ekr3HjPghcOa3PZBXEXW/rvVJeGenjnr42MIyw==","signatures":[{"sig":"MEUCIBtRTWUw5QIkYaMfY8y8ws6QXq+gJNuugO8PXHfZsC2rAiEA/X0IPAmkeUOSOF2gXlQyMPaodD72NWnkh73S8/iJukI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/eslint-plugin-tailwind-canonical-classes@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":42439},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./rule":{"types":"./lib/rules/tailwind-canonical-classes.d.ts","default":"./lib/rules/tailwind-canonical-classes.js"}},"gitHead":"4c5ad9138b461b02fb2206ab2486d1b278404f35","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator",["@semantic-release/changelog",{"changelogFile":"CHANGELOG.md"}],"@semantic-release/npm",["@semantic-release/git",{"assets":["package.json","package-lock.json","CHANGELOG.md"],"message":"chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"}],"@semantic-release/github"],"branches":["main"]},"scripts":{"test":"npm run build && vitest","build":"tsc","release":"semantic-release","test:run":"npm run build && vitest run","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4a07de01-f632-4255-b881-3475e61663c0"}},"repository":{"url":"git+https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes.git","type":"git"},"_npmVersion":"11.18.0","description":"ESLint plugin to enforce canonical Tailwind CSS class names using Tailwind CSS v4's canonicalization API","directories":{},"_nodeVersion":"24.18.0","dependencies":{"synckit":"^0.9.3","@tailwindcss/node":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","svelte":"^5.56.5","vitest":"^4.0.16","typescript":"^5.0.0","@types/node":"^20.0.0","semantic-release":"^25.0.7","vue-eslint-parser":"^10.4.1","@babel/preset-react":"^7.28.5","@babel/eslint-parser":"^7.28.5","svelte-eslint-parser":"^1.8.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"eslint":"^8.0.0 || ^9.0.0 || ^10.0.0","vue-eslint-parser":"^9.0.0 || ^10.0.0","svelte-eslint-parser":"^1.0.0"},"peerDependenciesMeta":{"vue-eslint-parser":{"optional":true},"svelte-eslint-parser":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-tailwind-canonical-classes_1.4.0_1784115904798_0.7386059214508176","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"eslint-plugin-tailwind-canonical-classes","version":"1.4.1","description":"ESLint plugin to enforce canonical Tailwind CSS class names using Tailwind CSS v4's canonicalization API","type":"module","main":"lib/index.js","types":"lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./rule":{"types":"./lib/rules/tailwind-canonical-classes.d.ts","default":"./lib/rules/tailwind-canonical-classes.js"}},"keywords":["eslint","eslint-plugin","tailwind","tailwindcss","canonical","lint","css"],"author":{"name":"Maisonnat Maxence","email":"maisonnatmax@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes.git"},"bugs":{"url":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes/issues"},"homepage":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes#readme","engines":{"node":">=18.0.0"},"scripts":{"build":"tsc","build:watch":"tsc --watch","test":"npm run build && vitest","test:run":"npm run build && vitest run","prepublishOnly":"npm run build","release":"semantic-release"},"peerDependencies":{"eslint":"^8.0.0 || ^9.0.0 || ^10.0.0","svelte-eslint-parser":"^1.0.0","vue-eslint-parser":"^9.0.0 || ^10.0.0"},"peerDependenciesMeta":{"svelte-eslint-parser":{"optional":true},"vue-eslint-parser":{"optional":true}},"dependencies":{"@tailwindcss/node":"^4.3.2","synckit":"^0.11.13"},"devDependencies":{"@babel/core":"^8.0.1","@babel/eslint-parser":"^8.0.1","@babel/preset-react":"^8.0.1","@semantic-release/changelog":"^6.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.9","@semantic-release/npm":"^13.1.5","@types/node":"^22.0.0","eslint":"^10.0.0","semantic-release":"^25.0.7","svelte":"^5.56.5","svelte-eslint-parser":"^1.8.0","typescript":"^5.9.3","vitest":"^4.1.10","vue-eslint-parser":"^10.4.1"},"release":{"branches":["main"],"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator",["@semantic-release/changelog",{"changelogFile":"CHANGELOG.md"}],"@semantic-release/npm",["@semantic-release/git",{"assets":["package.json","package-lock.json","CHANGELOG.md"],"message":"chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"}],"@semantic-release/github"]},"gitHead":"ae5ee254acca0046fb02afa7acc7e48882b16c06","_id":"eslint-plugin-tailwind-canonical-classes@1.4.1","_nodeVersion":"24.18.0","_npmVersion":"11.18.0","dist":{"integrity":"sha512-uDh6PfDrTBbrTuC6kkOy+jiThGIcZaSALBggSL0hYq/ekt6SEY64+kKvcTalcAxT20DQZ8qsOXHydU/DNKlVKw==","shasum":"ee320394fa6f6ce4c358971c1cf88202b4e94392","tarball":"https://registry.npmjs.org/eslint-plugin-tailwind-canonical-classes/-/eslint-plugin-tailwind-canonical-classes-1.4.1.tgz","fileCount":27,"unpackedSize":43311,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/eslint-plugin-tailwind-canonical-classes@1.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBin6vZ+vCfLLi6yIjIG3+6ckjYJqpWCZQg2WXnP/r1oAiA1DSIH5E1cKuFvNceH7gyu7lPwEfo+mrwEsWltVTSEnQ=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4a07de01-f632-4255-b881-3475e61663c0"}},"directories":{},"maintainers":[{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eslint-plugin-tailwind-canonical-classes_1.4.1_1784116934037_0.8791430569147618"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-12T16:29:23.330Z","modified":"2026-07-15T12:02:14.491Z","1.0.0":"2025-11-12T16:29:23.520Z","1.0.1":"2025-11-12T16:33:21.171Z","1.0.2":"2025-11-12T16:44:26.358Z","1.0.3":"2025-11-12T16:49:29.568Z","1.0.6":"2025-11-17T16:31:21.553Z","1.0.7":"2025-11-17T16:34:51.547Z","1.0.8":"2025-11-17T16:48:42.340Z","1.0.10":"2025-12-20T10:56:37.409Z","1.1.0":"2025-12-20T14:26:15.305Z","1.2.0":"2026-02-16T15:11:36.201Z","1.3.0":"2026-03-11T08:20:56.199Z","1.3.1":"2026-03-11T08:27:17.023Z","1.3.2":"2026-03-30T07:26:32.220Z","1.3.3":"2026-04-27T07:08:30.690Z","1.4.0":"2026-07-15T11:45:04.962Z","1.4.1":"2026-07-15T12:02:14.181Z"},"bugs":{"url":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes/issues"},"author":{"name":"Maisonnat Maxence","email":"maisonnatmax@gmail.com"},"license":"MIT","homepage":"https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes#readme","keywords":["eslint","eslint-plugin","tailwind","tailwindcss","canonical","lint","css"],"repository":{"type":"git","url":"git+https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes.git"},"description":"ESLint plugin to enforce canonical Tailwind CSS class names using Tailwind CSS v4's canonicalization API","maintainers":[{"name":"maisonnat_maxence","email":"maisonnatmax@gmail.com"}],"readme":"# eslint-plugin-tailwind-canonical-classes\n\n[![npm version](https://img.shields.io/npm/v/eslint-plugin-tailwind-canonical-classes.svg)](https://www.npmjs.com/package/eslint-plugin-tailwind-canonical-classes)\n[![npm downloads](https://img.shields.io/npm/dm/eslint-plugin-tailwind-canonical-classes.svg)](https://www.npmjs.com/package/eslint-plugin-tailwind-canonical-classes)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Node.js Version](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen.svg)](https://nodejs.org/)\n\n> ESLint plugin to enforce canonical Tailwind CSS class names using Tailwind CSS v4's canonicalization API.\n\n## 📋 Table of Contents\n\n- [Features](#-features)\n- [Installation](#-installation)\n- [Quick Start](#-quick-start)\n- [Configuration](#-configuration)\n- [Options](#-options)\n- [Usage Examples](#-usage-examples)\n- [How It Works](#-how-it-works)\n- [Limitations](#-limitations)\n- [Troubleshooting](#-troubleshooting)\n- [Contributing](#-contributing)\n- [License](#-license)\n- [Related Links](#-related-links)\n\n## ✨ Features\n\n- 🔍 **Automatic Detection**: Automatically detects non-canonical Tailwind CSS class names in JSX/TSX, Svelte, and Vue files\n- 🔧 **Auto-fix Support**: Automatically fixes non-canonical classes using ESLint's auto-fix feature\n- 🎯 **Tailwind CSS v4 Integration**: Uses Tailwind CSS v4's official `canonicalizeCandidates` API\n- 📝 **Multiple Format Support**: Works with string literals, template literals, and JSX expressions\n- 🛠️ **Utility Function Support**: Detects and fixes classes in utility functions like `cn()`, `clsx()`, `classNames()`, `twMerge()`, and `cva()`\n- ⚡ **Zero Config**: Minimal configuration required to get started\n\n## 📦 Installation\n\nInstall the plugin and its peer dependency:\n\n```bash\nnpm install --save-dev eslint-plugin-tailwind-canonical-classes @tailwindcss/node\n```\n\nOr with yarn:\n\n```bash\nyarn add -D eslint-plugin-tailwind-canonical-classes @tailwindcss/node\n```\n\nOr with pnpm:\n\n```bash\npnpm add -D eslint-plugin-tailwind-canonical-classes @tailwindcss/node\n```\n\n### Requirements\n\n- **Node.js** >= 18.0.0\n- **ESLint** 8, 9, or 10\n- **Tailwind CSS** v4\n- **@tailwindcss/node** package\n- **svelte-eslint-parser** (optional, required for Svelte support)\n- **vue-eslint-parser** (optional, required for Vue support)\n\n### ESLint Version Compatibility\n\n| ESLint Version | Flat Config (`eslint.config.*`) | Legacy Config (`.eslintrc.*`) |\n|:--------------:|:-------------------------------:|:-----------------------------:|\n| 8.x            | Supported                       | Supported                     |\n| 9.x            | Supported                       | Supported                     |\n| 10.x           | Supported                       | **Not available** (removed by ESLint) |\n\n> **Note:** ESLint 10 removes `.eslintrc` support entirely. If you are upgrading to ESLint 10, you must migrate to flat config.\n\n## 🚀 Quick Start\n\n1. **Install the plugin** (see [Installation](#-installation))\n\n2. **Add to your ESLint config** (`eslint.config.mjs`):\n\n   ```javascript\n   import tailwindCanonicalClasses from 'eslint-plugin-tailwind-canonical-classes';\n\n   export default [\n     ...tailwindCanonicalClasses.configs['flat/recommended'],\n     {\n       rules: {\n         'tailwind-canonical-classes/tailwind-canonical-classes': [\n           'warn',\n           {\n             cssPath: './app/styles/globals.css',\n           },\n         ],\n       },\n     },\n   ];\n   ```\n\n3. **Run ESLint**:\n   ```bash\n   npx eslint . --fix\n   ```\n\n## ⚙️ Configuration\n\n### Flat Config (ESLint 8+) — Recommended\n\nUsing the built-in `flat/recommended` config:\n\n```javascript\nimport tailwindCanonicalClasses from 'eslint-plugin-tailwind-canonical-classes';\n\nexport default [\n  ...tailwindCanonicalClasses.configs['flat/recommended'],\n  {\n    rules: {\n      'tailwind-canonical-classes/tailwind-canonical-classes': [\n        'warn', // or 'error'\n        {\n          cssPath: './app/styles/globals.css', // Required\n          rootFontSize: 16, // Optional, default: 16\n          calleeFunctions: ['cn', 'clsx'], // Optional, default: ['cn', 'clsx', 'classNames', 'twMerge', 'cva']\n        },\n      ],\n    },\n  },\n];\n```\n\n### Svelte (Flat Config)\n\nInstall the Svelte parser alongside the plugin:\n\n```bash\nnpm install --save-dev svelte-eslint-parser\n```\n\nThen extend the built-in config:\n\n```javascript\nimport tailwindCanonicalClasses from 'eslint-plugin-tailwind-canonical-classes';\n\nexport default [\n  ...tailwindCanonicalClasses.configs['flat/svelte'],\n  {\n    rules: {\n      'tailwind-canonical-classes/tailwind-canonical-classes': [\n        'warn',\n        {\n          cssPath: './src/app.css',\n        },\n      ],\n    },\n  },\n];\n```\n\n### Vue (Flat Config)\n\nInstall the Vue parser alongside the plugin:\n\n```bash\nnpm install --save-dev vue-eslint-parser\n```\n\nThen extend the built-in config:\n\n```javascript\nimport tailwindCanonicalClasses from 'eslint-plugin-tailwind-canonical-classes';\n\nexport default [\n  ...tailwindCanonicalClasses.configs['flat/vue'],\n  {\n    rules: {\n      'tailwind-canonical-classes/tailwind-canonical-classes': [\n        'warn',\n        {\n          cssPath: './src/style.css',\n        },\n      ],\n    },\n  },\n];\n```\n\nOr with manual plugin registration:\n\n```javascript\nimport tailwindCanonicalClasses from 'eslint-plugin-tailwind-canonical-classes';\n\nexport default [\n  {\n    plugins: {\n      'tailwind-canonical-classes': tailwindCanonicalClasses,\n    },\n    rules: {\n      'tailwind-canonical-classes/tailwind-canonical-classes': [\n        'warn',\n        {\n          cssPath: './app/styles/globals.css',\n        },\n      ],\n    },\n  },\n];\n```\n\n### Legacy Config (.eslintrc.js) — ESLint 8/9 only\n\n> **Deprecated:** Legacy config (`.eslintrc`) is not supported by ESLint 10. Migrate to flat config above.\n\n```javascript\nmodule.exports = {\n  plugins: ['tailwind-canonical-classes'],\n  rules: {\n    'tailwind-canonical-classes/tailwind-canonical-classes': [\n      'warn',\n      {\n        cssPath: './app/styles/globals.css',\n        rootFontSize: 16,\n        calleeFunctions: ['cn', 'clsx'],\n      },\n    ],\n  },\n};\n```\n\n## 📖 Options\n\n### `cssPath` (required)\n\n- **Type**: `string`\n- **Description**: Path to your Tailwind CSS file\n- **Supported formats**:\n  - Relative path: Resolved relative to your project root (where ESLint config is located)\n  - Absolute path: Full filesystem path to your CSS file\n\n**Examples**:\n```javascript\ncssPath: './app/styles/globals.css'        // Relative to project root\ncssPath: './src/index.css'                // Another relative example\ncssPath: '/absolute/path/to/styles.css'    // Absolute path\n```\n\n### `rootFontSize` (optional)\n\n- **Type**: `number`\n- **Default**: `16`\n- **Description**: Root font size in pixels for rem calculations. This should match your CSS root font size setting.\n\n**Example**:\n```javascript\nrootFontSize: 16  // Default (16px = 1rem)\nrootFontSize: 14  // If your root font size is 14px\n```\n\n### `calleeFunctions` (optional)\n\n- **Type**: `string[]`\n- **Default**: `['cn', 'clsx', 'classNames', 'twMerge', 'cva']`\n- **Description**: Array of utility function names to check for Tailwind classes. The plugin will detect and canonicalize classes passed as string arguments to these functions.\n\n**Example**:\n```javascript\ncalleeFunctions: ['cn', 'clsx']  // Only check cn() and clsx()\ncalleeFunctions: ['customFn']    // Check a custom utility function\n```\n\n## 💡 Usage Examples\n\n### Basic Example\n\n**Before:**\n```tsx\n<div className=\"p-4px m-2rem\">Content</div>\n```\n\n**After auto-fix:**\n```tsx\n<div className=\"p-1 m-8\">Content</div>\n```\n\n### Supported Formats\n\nThe plugin supports various class name formats:\n\n1. **String literals**:\n   ```tsx\n   <div className=\"p-4 m-2\">Content</div>\n   ```\n\n2. **Template literals** (static parts only):\n   ```tsx\n   <div className={`p-4 ${someVar}`}>Content</div>\n   // Only \"p-4\" will be checked, dynamic parts are skipped\n   ```\n\n3. **JSX expression containers**:\n   ```tsx\n   <div className={\"p-4px\"}>Content</div>\n   ```\n\n4. **Utility functions** (e.g., `cn()`, `clsx()`, `classNames()`, `twMerge()`, `cva()`):\n   ```tsx\n   <div className={cn(\"p-4px\", \"m-2rem\")}>Content</div>\n   <div className={clsx(\"w-[16px]\", condition && \"hidden\")}>Content</div>\n   // Only string literal arguments are checked; dynamic expressions are skipped\n   ```\n\n### Real-world Example\n\n```tsx\n// Before\nfunction Card({ children }) {\n  return (\n    <div className=\"p-16px m-2rem rounded-8px shadow-lg\">\n      {children}\n    </div>\n  );\n}\n\n// After auto-fix\nfunction Card({ children }) {\n  return (\n    <div className=\"p-4 m-8 rounded-2 shadow-lg\">\n      {children}\n    </div>\n  );\n}\n```\n\n### Utility Function Example\n\n```tsx\n// Before\nimport { cn } from '@/lib/utils';\n\nfunction Button({ variant, className }) {\n  return (\n    <button className={cn(\"w-[16px]\", \"h-[32px]\", className)}>\n      Click me\n    </button>\n  );\n}\n\n// After auto-fix\nimport { cn } from '@/lib/utils';\n\nfunction Button({ variant, className }) {\n  return (\n    <button className={cn(\"w-4\", \"h-8\", className)}>\n      Click me\n    </button>\n  );\n}\n```\n\n## 🔧 How It Works\n\n1. **Load Design System**: The plugin loads your Tailwind CSS file using `@tailwindcss/node`'s worker API\n2. **Extract Classes**: It extracts class names from:\n   - JSX `className` attributes (string literals, template literals, JSX expressions)\n   - Standalone script-level utility function calls (e.g. `cn()`, `clsx()`) outside class attributes\n   - Svelte `class` attributes (static literals and mustache `cn()` / `clsx()` calls)\n   - Vue `class`, `:class`, and `v-bind:class` attributes (static literals and `cn()` / `clsx()` calls)\n   - Utility function calls inside class attributes — only string literal arguments are checked\n3. **Canonicalize**: For each class, it uses Tailwind's `canonicalizeCandidates` to find the canonical form\n4. **Report & Fix**: If a non-canonical class is found, it reports an error/warning and can auto-fix it\n\n## ⚠️ Limitations\n\n- **Static classes only**: Only works with static class names (no dynamic expressions)\n- **Tailwind CSS v4 required**: Requires Tailwind CSS v4 (not compatible with v3)\n- **CSS file accessibility**: CSS file must be accessible from the ESLint process\n- **Template literals**: Template literals with expressions are partially supported (only static parts are checked)\n- **Utility functions**: Only string literal arguments are checked; dynamic expressions, variables, and conditional logic within utility functions are skipped\n- **Framework parsers**: `flat/svelte` and `flat/vue` require `svelte-eslint-parser` and `vue-eslint-parser` respectively\n- **Vue `:class` object/array forms**: Object and array `:class` bindings (for example `{ 'w-4': true }` or `['w-4', dynamic]`) are skipped\n\n## 🐛 Troubleshooting\n\n### Plugin not detecting classes\n\n**Problem**: The plugin isn't reporting any issues with non-canonical classes.\n\n**Solutions**:\n1. Verify your `cssPath` is correct and points to a valid Tailwind CSS file\n2. Ensure the CSS file is accessible from where ESLint runs\n3. Check that your Tailwind CSS file contains valid Tailwind directives (`@import \"tailwindcss\"` or similar)\n4. Verify ESLint is processing your JSX/TSX files (check your ESLint config includes these file types)\n\n### Path resolution issues\n\n**Problem**: ESLint can't find your CSS file.\n\n**Solutions**:\n- Use an absolute path if relative paths aren't working\n- Ensure the path is relative to your ESLint config file location\n- Check file permissions\n\n### Auto-fix not working\n\n**Problem**: ESLint reports issues but doesn't auto-fix them.\n\n**Solutions**:\n- Run ESLint with the `--fix` flag: `npx eslint . --fix`\n- Ensure your editor's ESLint extension has auto-fix enabled\n- Check that the rule severity is set to `'warn'` or `'error'` (not `'off'`)\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'feat: add some amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n### Development Setup\n\n```bash\n# Clone the repository\ngit clone https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes.git\ncd eslint-plugin-tailwind-canonical-classes\n\n# Install dependencies\nnpm install\n\n# Build the project\nnpm run build\n\n# Run tests\nnpm test\n```\n\n### Release Process\n\nThis project uses [semantic-release](https://github.com/semantic-release/semantic-release) for automated version management and npm publishing. Releases are automatically triggered when commits are pushed to the `main` branch.\n\n**Commit Message Format**:\n- `fix:` - Patch release (1.0.8 → 1.0.9)\n- `feat:` - Minor release (1.0.8 → 1.1.0)\n- `feat!:` or `BREAKING CHANGE:` - Major release (1.0.8 → 2.0.0)\n\n## 📄 License\n\nMIT © [Maisonnat Maxence](https://github.com/MaisonnatM)\n\n## 🔗 Related Links\n\n- [Tailwind CSS v4 Documentation](https://tailwindcss.com/)\n- [ESLint Documentation](https://eslint.org/)\n- [npm Package](https://www.npmjs.com/package/eslint-plugin-tailwind-canonical-classes)\n- [GitHub Repository](https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes)\n- [Report an Issue](https://github.com/MaisonnatM/eslint-plugin-tailwind-canonical-classes/issues)\n\n","readmeFilename":"README.md"}