{"_id":"@druxax/lint","_rev":"8-01c860da7f15ba0976964a207a219012","name":"@druxax/lint","dist-tags":{"latest":"1.0.7"},"versions":{"1.0.0":{"name":"@druxax/lint","version":"1.0.0","keywords":["eslint","recommended","rules","js","ts","jsx","tsx"],"author":{"name":"Andrey Smirnov"},"license":"MIT","_id":"@druxax/lint@1.0.0","maintainers":[{"name":"druxa","email":"druxa.xz@gmail.com"}],"dist":{"shasum":"f07ab279708f834422fa6fab985baba9da252f92","tarball":"https://registry.npmjs.org/@druxax/lint/-/lint-1.0.0.tgz","fileCount":11,"integrity":"sha512-qDn2OOclJei5aPlyo+ImalpIrp7sGoZ8nMJJMtaZvAvSf6cNUwGqznivxUBzOktqT4hDvucckJwfpsawz1pELg==","signatures":[{"sig":"MEYCIQDZwCnj2qRTBkY+NdIlAuMe5Wi50rdWO81uZys6HAhXtQIhAIXb6kghLkPh1NplEcPviB2d+pi3cd+h2ABvhai/C7zV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4263},"type":"module","exports":{".":"./index.js","./js":"./js.js","./ts":"./ts.js","./jsx":"./jsx.js","./tsx":"./tsx.js"},"gitHead":"727da22a299644d50ce1cd5d2e6ee75b36e0daa4","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"druxa","email":"druxa.xz@gmail.com"},"_npmVersion":"10.9.4","description":"Check js, ts, jsx, tsx files with recommended rules\"","directories":{},"_nodeVersion":"22.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"eslint":"^9.0.0","globals":"^16.0.0","prettier":"^3.0.0","@eslint/js":"^9.0.0","typescript-eslint":"^8.0.0","eslint-plugin-react":"^7.0.0","eslint-config-prettier":"^10.0.0","eslint-plugin-prettier":"^5.0.0","eslint-plugin-react-hooks":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lint_1.0.0_1761687571551_0.7407478685806479","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@druxax/lint","version":"1.0.1","keywords":["eslint","recommended","rules","js","ts","jsx","tsx"],"author":{"name":"Andrey Smirnov"},"license":"MIT","_id":"@druxax/lint@1.0.1","maintainers":[{"name":"druxa","email":"druxa.xz@gmail.com"}],"dist":{"shasum":"f15225f6cb0bd1c47b3cbd5188cc33b54830411a","tarball":"https://registry.npmjs.org/@druxax/lint/-/lint-1.0.1.tgz","fileCount":11,"integrity":"sha512-b2WmYribUYbHO01xsM2UaDtEQWrYxNGwlJZC9LhsQTDLsyrKX4HIA+tlnjUIqHMitJA3XqYR6m5aRzgkpWJtnA==","signatures":[{"sig":"MEUCIQC/ZDA7CAKB/9+kjPMFn3QSbF4APrFaWg6Hit/JE/RrEAIgb2c0xl9eOlms3cNi449XQxwSnK0wbZurCSUqYtQ0mRE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4274},"type":"module","exports":{".":"./src/index.js","./js":"./src/js.js","./ts":"./src/ts.js","./jsx":"./src/jsx.js","./tsx":"./src/tsx.js"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"druxa","email":"druxa.xz@gmail.com"},"_npmVersion":"10.9.4","description":"Check js, ts, jsx, tsx files with recommended rules\"","directories":{},"_nodeVersion":"22.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"eslint":"^9.0.0","globals":"^16.0.0","prettier":"^3.0.0","@eslint/js":"^9.0.0","typescript-eslint":"^8.0.0","eslint-plugin-react":"^7.0.0","eslint-config-prettier":"^10.0.0","eslint-plugin-prettier":"^5.0.0","eslint-plugin-react-hooks":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lint_1.0.1_1761690744314_0.12939503238934114","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@druxax/lint","version":"1.0.2","keywords":["eslint","recommended","rules","js","ts","jsx","tsx"],"author":{"name":"Andrey Smirnov"},"license":"MIT","_id":"@druxax/lint@1.0.2","maintainers":[{"name":"druxa","email":"druxa.xz@gmail.com"}],"dist":{"shasum":"d5b479a7585fb5a11b60aaebd2f5fb2c5aa58ae1","tarball":"https://registry.npmjs.org/@druxax/lint/-/lint-1.0.2.tgz","fileCount":15,"integrity":"sha512-Ub5GQL3Yc/34Wi5d1nb91Vhp0uNTqiS/P9figcz2XEvA3S+mD9MedtxHEKDRW8FwQ3a/aLAZeumO4vHt92JBpw==","signatures":[{"sig":"MEYCIQDxKEHJrPL4gEfHlK/fOtwrz+DP5Ilvqe1GswO1K8eWeAIhAMkmznDryioRLVoA+DVwqW0ubDvG1RFVcPXJHPSb0bBj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88887},"type":"module","exports":{".":"./src/index.js","./js":"./src/js.js","./ts":"./src/ts.js","./jsx":"./src/jsx.js","./tsx":"./src/tsx.js","./druxax/jsx":"./src/customRules/druxax/jsx.js","./druxax/tsx":"./src/customRules/druxax/tsx.js"},"scripts":{"build":"vite build"},"_npmUser":{"name":"druxa","email":"druxa.xz@gmail.com"},"_npmVersion":"10.9.4","description":"Check js, ts, jsx, tsx files with recommended rules\"","directories":{},"_nodeVersion":"22.21.1","dependencies":{"vite":"^7.1.12"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"eslint":"^9.0.0","globals":"^16.0.0","prettier":"^3.0.0","@eslint/js":"^9.0.0","typescript-eslint":"^8.0.0","eslint-plugin-react":"^7.0.0","eslint-config-prettier":"^10.0.0","eslint-plugin-prettier":"^5.0.0","eslint-plugin-react-hooks":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lint_1.0.2_1761917324755_0.5125706986103502","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@druxax/lint","version":"1.0.3","keywords":["eslint","recommended","rules","js","ts","jsx","tsx"],"author":{"name":"Andrey Smirnov"},"license":"MIT","_id":"@druxax/lint@1.0.3","maintainers":[{"name":"druxa","email":"druxa.xz@gmail.com"}],"dist":{"shasum":"3b3b5f25e8d036017b544bf72494708301c3e57f","tarball":"https://registry.npmjs.org/@druxax/lint/-/lint-1.0.3.tgz","fileCount":15,"integrity":"sha512-uvQSasc3HEkwEaRVlxm/KnE2LafFd9s/cCpln+NwnJuSLGOo1PMFMzx4rZEhKD/J418X1YDyDX1rusYxLWtscw==","signatures":[{"sig":"MEYCIQDkb5Q6iBHhnUIyaPU09BE+liMS34y9I7h4oD0y1tvhigIhAODjBjTbcT135H39lsmHRdoCKiWCiJnCAZ2rZMvX28R9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88887},"type":"module","exports":{".":"./src/index.js","./js":"./src/js.js","./ts":"./src/ts.js","./jsx":"./src/jsx.js","./tsx":"./src/tsx.js","./druxax/jsx":"./src/customRules/druxax/jsx.js","./druxax/tsx":"./src/customRules/druxax/tsx.js"},"scripts":{"build":"vite build"},"_npmUser":{"name":"druxa","email":"druxa.xz@gmail.com"},"_npmVersion":"10.9.4","description":"Check js, ts, jsx, tsx files with recommended rules\"","directories":{},"_nodeVersion":"22.21.1","dependencies":{"vite":"^7.1.12"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"eslint":"^9.0.0","globals":"^16.0.0","prettier":"^3.0.0","@eslint/js":"^9.0.0","typescript-eslint":"^8.0.0","eslint-plugin-react":"^7.0.0","eslint-config-prettier":"^10.0.0","eslint-plugin-prettier":"^5.0.0","eslint-plugin-react-hooks":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lint_1.0.3_1761917822211_0.15693358424937554","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@druxax/lint","version":"1.0.4","keywords":["eslint","recommended","rules","js","ts","jsx","tsx"],"author":{"name":"Andrey Smirnov"},"license":"MIT","_id":"@druxax/lint@1.0.4","maintainers":[{"name":"druxa","email":"druxa.xz@gmail.com"}],"dist":{"shasum":"0b1d16114d85fdc721343814f8edb83e15a74886","tarball":"https://registry.npmjs.org/@druxax/lint/-/lint-1.0.4.tgz","fileCount":15,"integrity":"sha512-t77YfPHsLDxprJkGNc5Z4/Xt9tzRP3eP+W1BTRMR62QTjwb1/9gEckKuAgXAocsGfjs4ZHyaWKlr9URbNgKC/Q==","signatures":[{"sig":"MEUCIBupalC2S4+b0Knlji2WCO1i4mnlIGilRPBFOQY884JDAiEA+9UNuHNok3zg5htif2qTww9iqQ8fcU+pfUm5BzThCJ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88887},"type":"module","exports":{".":"./src/index.js","./js":"./src/js.js","./ts":"./src/ts.js","./jsx":"./src/jsx.js","./tsx":"./src/tsx.js","./druxax/jsx":"./src/customRules/druxax/jsx.js","./druxax/tsx":"./src/customRules/druxax/tsx.js"},"scripts":{"build":"vite build"},"_npmUser":{"name":"druxa","email":"druxa.xz@gmail.com"},"_npmVersion":"10.9.4","description":"Check js, ts, jsx, tsx files with recommended rules\"","directories":{},"_nodeVersion":"22.21.1","dependencies":{"vite":"^7.1.12"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"eslint":"^9.0.0","globals":"^16.0.0","prettier":"^3.0.0","@eslint/js":"^9.0.0","typescript-eslint":"^8.0.0","eslint-plugin-react":"^7.0.0","eslint-config-prettier":"^10.0.0","eslint-plugin-prettier":"^5.0.0","eslint-plugin-react-hooks":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lint_1.0.4_1761929554579_0.65798751616138","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@druxax/lint","version":"1.0.5","keywords":["eslint","recommended","rules","js","ts","jsx","tsx"],"author":{"name":"Andrey Smirnov"},"license":"MIT","_id":"@druxax/lint@1.0.5","maintainers":[{"name":"druxa","email":"druxa.xz@gmail.com"}],"dist":{"shasum":"f1d6cdc4af448c4bfea028138f6840f94d8b192a","tarball":"https://registry.npmjs.org/@druxax/lint/-/lint-1.0.5.tgz","fileCount":16,"integrity":"sha512-7ycKHrcFfp7JTNYvk1gTxwUBeNtc0evRiN5j7tzlrrpTRu4zRs5yobesIxpZ6EGqTG+fitugThcdxVDwvjKhuA==","signatures":[{"sig":"MEYCIQD7fxIIYe29z5H9ssiQyHqD8mSf/fNpGkyU5gUsXscWjwIhANkNtKjX1jvlLoKLnABgr9ZqI7xEpiX1wtwvoS5ox5sg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89041},"type":"module","exports":{".":"./src/index.js","./js":"./src/js.js","./ts":"./src/ts.js","./jsx":"./src/jsx.js","./tsx":"./src/tsx.js","./druxax":"./src/customRules/druxax/index.js","./druxax/jsx":"./src/customRules/druxax/jsx.js","./druxax/tsx":"./src/customRules/druxax/tsx.js"},"scripts":{"build":"vite build"},"_npmUser":{"name":"druxa","email":"druxa.xz@gmail.com"},"_npmVersion":"10.9.4","description":"Check js, ts, jsx, tsx files with recommended rules\"","directories":{},"_nodeVersion":"22.21.1","dependencies":{"vite":"^7.1.12"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"eslint":"^9.0.0","globals":"^16.0.0","prettier":"^3.0.0","@eslint/js":"^9.0.0","typescript-eslint":"^8.0.0","eslint-plugin-react":"^7.0.0","eslint-config-prettier":"^10.0.0","eslint-plugin-prettier":"^5.0.0","eslint-plugin-react-hooks":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lint_1.0.5_1761930236935_0.7713190212776295","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@druxax/lint","version":"1.0.6","keywords":["eslint","eslint-config","javascript","typescript","jsx","tsx","react","reactjs","linting","code-quality","prettier","eslint-config-prettier","typescript-eslint","react-hooks","eslint-plugin-react","code-style","static-analysis","eslint-flat-config","eslint-v9"],"author":{"name":"Andrey Smirnov"},"license":"MIT","_id":"@druxax/lint@1.0.6","maintainers":[{"name":"druxa","email":"druxa.xz@gmail.com"}],"homepage":"https://github.com/druxax/lint#readme","bugs":{"url":"https://github.com/druxax/lint/issues"},"dist":{"shasum":"a8a1884989a5043903d1549ce1fba5469b457292","tarball":"https://registry.npmjs.org/@druxax/lint/-/lint-1.0.6.tgz","fileCount":17,"integrity":"sha512-vca2S2QE4FgQ/giNZUFoev4VmSYeZK3r+DvIfm/U+QKW4PiIQFHuBGkcII1vAB9EbNVW/jMhk/kT3szJqFSyPg==","signatures":[{"sig":"MEUCIGCNRf7gpBIvEkDOorZUH4M5XUL+zRp3MoX73XiBkg15AiEAjMjpUyNsGKJ8TSVa9pjLG1ZA8/m9zQ0GwkISeQCqQSY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13829},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./js":"./src/js.js","./ts":"./src/ts.js","./jsx":"./src/jsx.js","./tsx":"./src/tsx.js","./druxax":"./src/customRules/druxax/index.js","./druxax/jsx":"./src/customRules/druxax/jsx.js","./druxax/tsx":"./src/customRules/druxax/tsx.js"},"gitHead":"0b9ed14ffee45b30325b5db0069abdefb51c1a51","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"druxa","email":"druxa.xz@gmail.com"},"repository":{"url":"git+https://github.com/druxax/lint.git","type":"git"},"_npmVersion":"10.9.4","description":"🚀 Ultimate ESLint Configuration: JavaScript & TypeScript Linting for React, JSX, TSX. Pre-configured with Prettier, React Hooks, and TypeScript support. ESLint 9 Flat Config ready!","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"eslint":"^9.0.0","globals":"^16.0.0","prettier":"^3.0.0","@eslint/js":"^9.0.0","typescript-eslint":"^8.0.0","eslint-plugin-react":"^7.0.0","eslint-config-prettier":"^10.0.0","eslint-plugin-prettier":"^5.0.0","eslint-plugin-react-hooks":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lint_1.0.6_1762374353140_0.16314671009513115","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@druxax/lint","version":"1.0.7","description":"🚀 Ultimate ESLint Configuration: JavaScript & TypeScript Linting for React, JSX, TSX. Pre-configured with Prettier, React Hooks, and TypeScript support. ESLint 9 Flat Config ready!","keywords":["eslint","eslint-config","javascript","typescript","jsx","tsx","react","reactjs","linting","code-quality","prettier","eslint-config-prettier","typescript-eslint","react-hooks","eslint-plugin-react","code-style","static-analysis","eslint-flat-config","eslint-v9"],"author":{"name":"Andrey Smirnov"},"license":"MIT","type":"module","main":"./src/index.js","engines":{"node":">=18.0.0"},"repository":{"type":"git","url":"git+https://github.com/druxax/lint.git"},"bugs":{"url":"https://github.com/druxax/lint/issues"},"homepage":"https://github.com/druxax/lint#readme","peerDependencies":{"@eslint/js":"^9.0.0","eslint":"^9.0.0","eslint-config-prettier":"^10.0.0","eslint-plugin-prettier":"^5.0.0","eslint-plugin-react":"^7.0.0","eslint-plugin-react-hooks":"^7.0.0","globals":"^16.0.0","prettier":"^3.0.0","typescript-eslint":"^8.0.0"},"exports":{".":"./src/index.js","./jsx":"./src/jsx.js","./tsx":"./src/tsx.js","./js":"./src/js.js","./ts":"./src/ts.js","./druxax":"./src/customRules/druxax/index.js","./druxax/jsx":"./src/customRules/druxax/jsx.js","./druxax/tsx":"./src/customRules/druxax/tsx.js"},"publishConfig":{"access":"public"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_id":"@druxax/lint@1.0.7","gitHead":"6566463e682766f974ddc3e9e1704bb3d7dd729b","_nodeVersion":"22.21.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-OK5ABJr7qbVHHjFB3kV33IipmlNh+r03/NIAFUK1pixmtMvf5YcjdeBLFVlNI9c2wQ+npncMGJbKoni4ylInKg==","shasum":"d35f29c09890a70cd0c6bf83382f7ba1e9b19dcd","tarball":"https://registry.npmjs.org/@druxax/lint/-/lint-1.0.7.tgz","fileCount":17,"unpackedSize":14393,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDqIEdB9WOLUexzZ+HaqCcj8SVZF0Tj3vmnUU9oSXz7VAIhAOq1sBpJKwLhh/2SJ3e5kkXVw8Nfr901pT1Dj98BZABs"}]},"_npmUser":{"name":"druxa","email":"druxa.xz@gmail.com"},"directories":{},"maintainers":[{"name":"druxa","email":"druxa.xz@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/lint_1.0.7_1762375383692_0.5298270122219906"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-28T21:39:31.432Z","modified":"2025-11-05T20:43:04.068Z","1.0.0":"2025-10-28T21:39:31.764Z","1.0.1":"2025-10-28T22:32:24.546Z","1.0.2":"2025-10-31T13:28:44.944Z","1.0.3":"2025-10-31T13:37:02.408Z","1.0.4":"2025-10-31T16:52:34.756Z","1.0.5":"2025-10-31T17:03:57.199Z","1.0.6":"2025-11-05T20:25:53.344Z","1.0.7":"2025-11-05T20:43:03.880Z"},"bugs":{"url":"https://github.com/druxax/lint/issues"},"author":{"name":"Andrey Smirnov"},"license":"MIT","homepage":"https://github.com/druxax/lint#readme","keywords":["eslint","eslint-config","javascript","typescript","jsx","tsx","react","reactjs","linting","code-quality","prettier","eslint-config-prettier","typescript-eslint","react-hooks","eslint-plugin-react","code-style","static-analysis","eslint-flat-config","eslint-v9"],"repository":{"type":"git","url":"git+https://github.com/druxax/lint.git"},"description":"🚀 Ultimate ESLint Configuration: JavaScript & TypeScript Linting for React, JSX, TSX. Pre-configured with Prettier, React Hooks, and TypeScript support. ESLint 9 Flat Config ready!","maintainers":[{"name":"druxa","email":"druxa.xz@gmail.com"}],"readme":"# @druxax/lint\n\nA comprehensive ESLint configuration package that provides linting for JavaScript, TypeScript, JSX, and TSX files with carefully curated recommended rules and custom configurations.\n\n## What This Package Provides\n\n### 🛠️ Multi-Language Support\n- **JavaScript** (.js) - Modern JavaScript linting with recommended rules\n- **TypeScript** (.ts) - TypeScript-specific linting configurations\n- **JSX** (.jsx) - React JSX syntax support for JavaScript files (includes JS recommended)\n- **TSX** (.tsx) - React JSX syntax support for TypeScript files (includes TS recommended)\n\n### ⚛️ React Ecosystem Integration\n- **React 17+** with automatic version detection\n- **JSX Runtime** configuration for modern React\n- **React Hooks** with exhaustive-deps rule enforcement\n- **React Recommended** rules from the official ESLint plugin\n\n### 🔧 Custom Configuration Tiers\n- **Base Configurations** (`/js`, `/ts`, `/jsx`, `/tsx`) - Standard recommended rules\n- **Druxax Custom Rules** (`/druxax/*`) - Enhanced configurations with additional custom rules\n\n### 🔄 Prettier Compatibility\n- Seamless integration with Prettier for code formatting\n- Prevents conflicts between ESLint and Prettier rules\n- Supports Prettier v3.0.0+\n\n### 📦 Modular Architecture\n- **ESLint Flat Config** format (v9.x)\n- **ESM-only** package with modern JavaScript exports\n- **Extensible design** - easy to override or extend configurations\n\n## Installation\n\n### npm\n```bash\nnpm install -D @druxax/lint eslint@^9.0.0 @eslint/js@^9.0.0 typescript-eslint@^8.0.0 eslint-plugin-react@^7.0.0 eslint-plugin-react-hooks@^7.0.0 eslint-config-prettier@^10.0.0 eslint-plugin-prettier@^5.0.0 prettier@^3.0.0 globals@^16.0.0\n```\n\n### pnpm\n```bash\npnpm add -D @druxax/lint eslint@^9.0.0 @eslint/js@^9.0.0 typescript-eslint@^8.0.0 eslint-plugin-react@^7.0.0 eslint-plugin-react-hooks@^7.0.0 eslint-config-prettier@^10.0.0 eslint-plugin-prettier@^5.0.0 prettier@^3.0.0 globals@^16.0.0\n```\n\n### yarn\n```bash\nyarn add -D @druxax/lint eslint@^9.0.0 @eslint/js@^9.0.0 typescript-eslint@^8.0.0 eslint-plugin-react@^7.0.0 eslint-plugin-react-hooks@^7.0.0 eslint-config-prettier@^10.0.0 eslint-plugin-prettier@^5.0.0 prettier@^3.0.0 globals@^16.0.0\n```\n\n### bun\n```bash\nbun add -d @druxax/lint eslint@^9.0.0 @eslint/js@^9.0.0 typescript-eslint@^8.0.0 eslint-plugin-react@^7.0.0 eslint-plugin-react-hooks@^7.0.0 eslint-config-prettier@^10.0.0 eslint-plugin-prettier@^5.0.0 prettier@^3.0.0 globals@^16.0.0\n```\n\n## Peer Dependencies\n\nThis package requires the following peer dependencies to be installed:\n- `eslint@^9.0.0`\n- `@eslint/js@^9.0.0`\n- `typescript-eslint@^8.0.0`\n- `eslint-plugin-react@^7.0.0`\n- `eslint-plugin-react-hooks@^7.0.0`\n- `eslint-config-prettier@^10.0.0`\n- `eslint-plugin-prettier@^5.0.0`\n- `prettier@^3.0.0`\n- `globals@^16.0.0`\n\n## Configuration Hierarchy\n\nThe package follows a hierarchical configuration structure:\n\n```\n@druxax/lint/jsx → extends @druxax/lint/js\n@druxax/lint/tsx → extends @druxax/lint/ts\n```\n\nThis means:\n- **JSX configuration** includes all JavaScript recommended rules plus React-specific rules\n- **TSX configuration** includes all TypeScript recommended rules plus React-specific rules\n\n## Prettier Configuration\n\nTo customize Prettier formatting, create a `.prettierrc` file in your project root. The package includes a `.prettierrc.example` file with recommended settings:\n\n```json\n{\n  \"semi\": true,\n  \"singleQuote\": true,\n  \"tabWidth\": 2,\n  \"printWidth\": 80\n}\n```\n\nYou can copy this example and modify it according to your preferences:\n\n```bash\ncp node_modules/@druxax/lint/.prettierrc.example .prettierrc\n```\n\nOr create your own `.prettierrc` file with custom settings. The ESLint configuration will automatically respect your Prettier settings.\n\n## Available Exports\n\n| Export Path | Description |\n|------------|-------------|\n| `@druxax/lint/js` | Default recommended configuration for JavaScript files |\n| `@druxax/lint/ts` | Default recommended configuration for TypeScript files |\n| `@druxax/lint/jsx` | Default recommended configuration for JSX files (includes JS recommended) |\n| `@druxax/lint/tsx` | Default recommended configuration for TSX files (includes TS recommended) |\n| `@druxax/lint/druxax` | Custom Druxax rules entry (exports jsx, tsx) |\n| `@druxax/lint/druxax/jsx` | Enhanced JSX with custom rules (includes JS recommended) |\n| `@druxax/lint/druxax/tsx` | Enhanced TSX with custom rules (includes TS recommended) |\n\n## Usage Examples\n\n### JavaScript Project\n```javascript\n// eslint.config.js\nimport { defineConfig } from 'eslint/config';\nimport { js } from '@druxax/lint/js';\n\nexport default defineConfig([\n  {\n    extends: [js],\n  },\n]);\n```\n\n### TypeScript Project\n```javascript\n// eslint.config.js\nimport { defineConfig } from 'eslint/config';\nimport { ts } from '@druxax/lint/ts';\n\nexport default defineConfig([\n  {\n    extends: [ts],\n  },\n]);\n```\n\n### React JavaScript Project (JSX)\n```javascript\n// eslint.config.js\nimport { defineConfig } from 'eslint/config';\nimport { jsx } from '@druxax/lint/jsx';\n\nexport default defineConfig([\n  {\n    extends: [jsx],\n  },\n]);\n```\n\n### React TypeScript Project (TSX)\n```javascript\n// eslint.config.js\nimport { defineConfig } from 'eslint/config';\nimport { tsx } from '@druxax/lint/tsx';\n\nexport default defineConfig([\n  {\n    extends: [tsx],\n  },\n]);\n```\n\n### Mixed Project with Enhanced Rules\n```javascript\n// eslint.config.js\nimport { defineConfig } from 'eslint/config';\nimport { jsx } from '@druxax/lint/druxax/jsx';\nimport { tsx } from '@druxax/lint/druxax/tsx';\n\nexport default defineConfig([\n  {\n    files: ['**/*.jsx'],\n    extends: [jsx],\n  },\n  {\n    files: ['**/*.tsx'],\n    extends: [tsx],\n  },\n]);\n```\n\n### Mixed Project with Custom Rules\n```javascript\n// eslint.config.js\nimport { defineConfig } from 'eslint/config';\nimport { js } from '@druxax/lint/js';\nimport { ts } from '@druxax/lint/ts';\nimport { jsx } from '@druxax/lint/druxax/jsx';\nimport { tsx } from '@druxax/lint/druxax/tsx';\n\nexport default defineConfig([\n  {\n    files: ['**/*.js'],\n    extends: [js],\n  },\n  {\n    files: ['**/*.ts'],\n    extends: [ts],\n  },\n  {\n    files: ['**/*.jsx'],\n    extends: [jsx],\n    rules: {\n      'react/prop-types': 'error', // Enable prop-types for custom druxax JSX\n    },\n  },\n  {\n    files: ['**/*.tsx'],\n    extends: [tsx],\n    rules: {\n      'react/button-has-type': 'error',\n    },\n  },\n]);\n```\n\n### Basic React Project with Rule Override\n```javascript\n// eslint.config.js\nimport { defineConfig } from 'eslint/config';\nimport { jsx, tsx } from '@druxax/lint/druxax';\n\nexport default defineConfig([\n  {\n    extends: [jsx, tsx],\n    rules: {\n      'react/button-has-type': 'error',\n    },\n  },\n]);\n```\n\n## Key Features\n\n- ✅ **ESLint Flat Config** (v9.x) support\n- ✅ **React 18 Ready** with modern JSX transform\n- ✅ **TypeScript Strict** mode compatibility\n- ✅ **Prettier Integration** without conflicts\n- ✅ **ES Modules** only for modern projects\n- ✅ **Easy extension** with custom rule overrides\n- ✅ **Hierarchical configurations** (JSX includes JS, TSX includes TS)\n\n## Important Notes\n\n- This package uses ESLint's **flat config** system (v9+)\n- Configurations are designed to be **extended** using the `extends` property\n- JSX configuration automatically includes JavaScript recommended rules\n- TSX configuration automatically includes TypeScript recommended rules\n- You can easily **override rules** by adding them to your config object\n- Use `defineConfig` for better TypeScript support and IDE autocomplete\n\n## License\n\nMIT © Andrey Smirnov","readmeFilename":"README.md"}