{"_id":"@adrianub/eslint-config","_rev":"4-27cbd6eda9098217f8d9f782230bb8b8","name":"@adrianub/eslint-config","dist-tags":{"latest":"0.1.0"},"versions":{"0.0.1":{"name":"@adrianub/eslint-config","version":"0.0.1","keywords":["eslint-config"],"author":{"url":"https://github.com/adrian-ub/","name":"Adrián UB"},"license":"MIT","_id":"@adrianub/eslint-config@0.0.1","maintainers":[{"name":"adrianub","email":"ubaadrian@gmail.com"}],"homepage":"https://github.com/adrianub/eslint-config","bugs":{"url":"https://github.com/adrian-ub/eslint-config/issues"},"bin":{"eslint-config":"bin/index.js"},"dist":{"shasum":"2b09bc6a0d19529ffdd49a9132d472c0c6c49125","tarball":"https://registry.npmjs.org/@adrianub/eslint-config/-/eslint-config-0.0.1.tgz","fileCount":12,"integrity":"sha512-3pnOQ8f42QjdTADzpZ/HTwth3G66iUUp7Ms0LTYekwr2X3o9M/HFA9rfXcO3JwnwYCUk97lwQ7cVi8jIMSFiBw==","signatures":[{"sig":"MEYCIQDYuDH/56lhSRZ0ckzZENPlK0BxHeTa1YqNriPzL8QXsAIhALvfgW/mCJpi1QBxUyBfuQM9sPCUyOPo8ji3k2Do7+VB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adrianub%2feslint-config@0.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1582039},"main":"./dist/index.js","type":"module","_from":"file:adrianub-eslint-config-0.0.1.tgz","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"funding":"https://github.com/sponsors/adrian-ub","scripts":{"dev":"npx @eslint/config-inspector --config eslint.config.ts","lint":"eslint --flag unstable_ts_config .","stub":"tsup --format esm","test":"vitest","build":"nr typegen && tsup --format esm,cjs --clean --dts","watch":"tsup --format esm,cjs --watch","release":"bumpp && pnpm publish","typegen":"esno scripts/typegen.ts","typecheck":"tsc --noEmit","build:inspector":"pnpm build && npx @eslint/config-inspector build"},"_npmUser":{"name":"adrianub","email":"ubaadrian@gmail.com"},"_resolved":"/tmp/a0555cc33d6328bc34886ac2325e9873/adrianub-eslint-config-0.0.1.tgz","_integrity":"sha512-3pnOQ8f42QjdTADzpZ/HTwth3G66iUUp7Ms0LTYekwr2X3o9M/HFA9rfXcO3JwnwYCUk97lwQ7cVi8jIMSFiBw==","repository":{"url":"git+https://github.com/adrian-ub/eslint-config.git","type":"git"},"_npmVersion":"10.9.0","description":"Adrián UB's ESLint config","directories":{},"lint-staged":{"*":"eslint --flag unstable_ts_config --fix"},"resolutions":{"tsx":"^4.19.1","eslint":"^9.12.0","@typescript-eslint/utils":"^8.9.0","@eslint-community/eslint-utils":"^4.4.0"},"_nodeVersion":"22.10.0","dependencies":{"yargs":"^17.7.2","globals":"^15.11.0","local-pkg":"^0.5.0","picocolors":"^1.1.1","@clack/prompts":"^0.7.0","eslint-plugin-n":"^17.11.1","parse-gitignore":"^2.0.0","@eslint/markdown":"^6.2.0","eslint-plugin-vue":"^9.29.0","eslint-plugin-yml":"^1.14.0","vue-eslint-parser":"^9.4.3","@antfu/install-pkg":"^0.4.1","eslint-plugin-toml":"^0.11.1","toml-eslint-parser":"^0.10.0","yaml-eslint-parser":"^1.2.3","eslint-plugin-antfu":"^2.7.0","eslint-plugin-jsdoc":"^50.4.1","eslint-plugin-jsonc":"^2.16.0","jsonc-eslint-parser":"^2.4.0","eslint-plugin-regexp":"^2.6.0","@vitest/eslint-plugin":"^1.1.7","eslint-plugin-command":"^0.2.6","eslint-plugin-unicorn":"^56.0.0","eslint-plugin-import-x":"^4.3.1","eslint-merge-processors":"^0.1.0","@stylistic/eslint-plugin":"^2.9.0","eslint-flat-config-utils":"^0.4.0","@typescript-eslint/parser":"^8.9.0","eslint-plugin-no-only-tests":"^3.3.0","eslint-plugin-perfectionist":"^3.9.0","eslint-processor-vue-blocks":"^0.1.2","eslint-config-flat-gitignore":"^0.3.0","eslint-plugin-unused-imports":"^4.1.4","@typescript-eslint/eslint-plugin":"^8.9.0","@eslint-community/eslint-plugin-eslint-comments":"^4.4.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.1","vue":"^3.5.12","esno":"^4.8.0","jiti":"^2.3.3","tsup":"^8.3.0","bumpp":"^9.7.1","execa":"^9.4.1","eslint":"^9.12.0","rimraf":"^6.0.1","svelte":"^4.2.19","vitest":"^2.1.3","fs-extra":"^11.2.0","@antfu/ni":"^0.23.0","fast-glob":"^3.3.2","typescript":"^5.6.3","@types/node":"^22.7.5","lint-staged":"^15.2.10","@types/yargs":"^17.0.33","@types/prompts":"^2.4.9","eslint-typegen":"^0.3.2","@types/fs-extra":"^11.0.4","simple-git-hooks":"^2.11.1","astro-eslint-parser":"^1.0.3","eslint-plugin-astro":"^1.3.0","eslint-plugin-solid":"^0.14.3","@prettier/plugin-xml":"^3.4.1","eslint-plugin-format":"^0.1.2","eslint-plugin-svelte":"^2.45.1","svelte-eslint-parser":"^0.41.1","@unocss/eslint-plugin":"^0.62.4","prettier-plugin-astro":"^0.14.1","prettier-plugin-slidev":"^1.0.5","@adrianub/eslint-config":"0.0.1","@eslint/config-inspector":"^0.5.4","eslint-plugin-react-hooks":"^5.0.0","@eslint-react/eslint-plugin":"^1.15.0","eslint-plugin-react-refresh":"^0.4.12","@stylistic/eslint-plugin-migrate":"^2.9.0"},"peerDependencies":{"eslint":"^9.10.0","astro-eslint-parser":"^1.0.2","eslint-plugin-astro":"^1.2.0","eslint-plugin-solid":"^0.14.3","@prettier/plugin-xml":"^3.4.1","eslint-plugin-format":">=0.1.0","eslint-plugin-svelte":">=2.35.1","svelte-eslint-parser":">=0.37.0","@unocss/eslint-plugin":">=0.50.0","prettier-plugin-astro":"^0.13.0","prettier-plugin-slidev":"^1.0.5","eslint-plugin-react-hooks":"^5.0.0","@eslint-react/eslint-plugin":"^1.5.8","eslint-plugin-react-refresh":"^0.4.4"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"peerDependenciesMeta":{"astro-eslint-parser":{"optional":true},"eslint-plugin-astro":{"optional":true},"eslint-plugin-solid":{"optional":true},"@prettier/plugin-xml":{"optional":true},"eslint-plugin-format":{"optional":true},"eslint-plugin-svelte":{"optional":true},"svelte-eslint-parser":{"optional":true},"@unocss/eslint-plugin":{"optional":true},"prettier-plugin-astro":{"optional":true},"prettier-plugin-slidev":{"optional":true},"eslint-plugin-react-hooks":{"optional":true},"@eslint-react/eslint-plugin":{"optional":true},"eslint-plugin-react-refresh":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/eslint-config_0.0.1_1731426793344_0.36998585218415014","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"@adrianub/eslint-config","version":"0.0.2","keywords":["eslint-config"],"author":{"url":"https://github.com/adrian-ub/","name":"Adrián UB"},"license":"MIT","_id":"@adrianub/eslint-config@0.0.2","maintainers":[{"name":"adrianub","email":"ubaadrian@gmail.com"}],"homepage":"https://github.com/adrian-ub/eslint-config","bugs":{"url":"https://github.com/adrian-ub/eslint-config/issues"},"bin":{"eslint-config":"bin/index.js"},"dist":{"shasum":"540244cb64157d1309b977a46cf0ae2030b8d505","tarball":"https://registry.npmjs.org/@adrianub/eslint-config/-/eslint-config-0.0.2.tgz","fileCount":12,"integrity":"sha512-c9fgm4PpPV7pkjl2l2FFgOXsg4ttf21Lsmkj7ANtCP9FI8hIsgUm9FDIemw5UNzLWD54epq2Op55vYEDzl7f0g==","signatures":[{"sig":"MEQCIDM7IHHzIDyDvyPViZ8dIFoHKJv/mxxccbaBcyDmDFzQAiACuO+7aOQ+x7cKGxRkM6l44Vkk8Bh+hEbycNYMIVCjAQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adrianub%2feslint-config@0.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1589122},"main":"./dist/index.js","type":"module","_from":"file:adrianub-eslint-config-0.0.2.tgz","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"funding":"https://github.com/sponsors/adrian-ub","scripts":{"dev":"npx @eslint/config-inspector --config eslint.config.ts","lint":"eslint --flag unstable_ts_config .","stub":"tsup --format esm","test":"vitest","build":"nr typegen && tsup --format esm,cjs --clean --dts","watch":"tsup --format esm,cjs --watch","release":"bumpp && pnpm publish","typegen":"esno scripts/typegen.ts","typecheck":"tsc --noEmit","build:inspector":"pnpm build && npx @eslint/config-inspector build"},"_npmUser":{"name":"adrianub","email":"ubaadrian@gmail.com"},"_resolved":"/tmp/fd347c45c322d2b999f708c1a24c1452/adrianub-eslint-config-0.0.2.tgz","_integrity":"sha512-c9fgm4PpPV7pkjl2l2FFgOXsg4ttf21Lsmkj7ANtCP9FI8hIsgUm9FDIemw5UNzLWD54epq2Op55vYEDzl7f0g==","repository":{"url":"git+https://github.com/adrian-ub/eslint-config.git","type":"git"},"_npmVersion":"10.9.0","description":"Adrián UB's ESLint config","directories":{},"lint-staged":{"*":"eslint --flag unstable_ts_config --fix"},"resolutions":{"tsx":"^4.19.2","eslint":"^9.15.0","@typescript-eslint/utils":"^8.15.0","@eslint-community/eslint-utils":"^4.4.1"},"_nodeVersion":"22.11.0","dependencies":{"yargs":"^17.7.2","globals":"^15.12.0","local-pkg":"^0.5.0","picocolors":"^1.1.1","@clack/prompts":"^0.8.1","eslint-plugin-n":"^17.13.2","parse-gitignore":"^2.0.0","@eslint/markdown":"^6.2.1","eslint-plugin-vue":"^9.31.0","eslint-plugin-yml":"^1.15.0","vue-eslint-parser":"^9.4.3","@antfu/install-pkg":"^0.4.1","eslint-plugin-toml":"^0.11.1","toml-eslint-parser":"^0.10.0","yaml-eslint-parser":"^1.2.3","eslint-plugin-antfu":"^2.7.0","eslint-plugin-jsdoc":"^50.5.0","eslint-plugin-jsonc":"^2.18.2","jsonc-eslint-parser":"^2.4.0","eslint-plugin-regexp":"^2.7.0","@vitest/eslint-plugin":"^1.1.10","eslint-plugin-command":"^0.2.6","eslint-plugin-unicorn":"^56.0.0","eslint-plugin-import-x":"^4.4.2","eslint-merge-processors":"^0.1.0","@stylistic/eslint-plugin":"^2.10.1","eslint-flat-config-utils":"^0.4.0","@typescript-eslint/parser":"^8.15.0","eslint-plugin-no-only-tests":"^3.3.0","eslint-plugin-perfectionist":"^3.9.1","eslint-processor-vue-blocks":"^0.1.2","eslint-config-flat-gitignore":"^0.3.0","eslint-plugin-unused-imports":"^4.1.4","@typescript-eslint/eslint-plugin":"^8.15.0","@eslint-community/eslint-plugin-eslint-comments":"^4.4.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","vue":"^3.5.13","esno":"^4.8.0","jiti":"^2.4.0","tsup":"^8.3.5","bumpp":"^9.8.1","execa":"^9.5.1","eslint":"^9.15.0","rimraf":"^6.0.1","svelte":"^5.2.3","vitest":"^2.1.5","fs-extra":"^11.2.0","@antfu/ni":"^0.23.1","fast-glob":"^3.3.2","typescript":"^5.6.3","@types/node":"^22.9.0","lint-staged":"^15.2.10","@types/yargs":"^17.0.33","@types/prompts":"^2.4.9","eslint-typegen":"^0.3.2","@types/fs-extra":"^11.0.4","simple-git-hooks":"^2.11.1","astro-eslint-parser":"^1.1.0","eslint-plugin-astro":"^1.3.1","eslint-plugin-solid":"^0.14.4","@prettier/plugin-xml":"^3.4.1","eslint-plugin-format":"^0.1.2","eslint-plugin-svelte":"^2.46.0","svelte-eslint-parser":"^0.43.0","@unocss/eslint-plugin":"^0.64.1","prettier-plugin-astro":"^0.14.1","prettier-plugin-slidev":"^1.0.5","@adrianub/eslint-config":"0.0.2","@eslint/config-inspector":"^0.5.6","eslint-plugin-react-hooks":"^5.0.0","@eslint-react/eslint-plugin":"^1.16.1","eslint-plugin-react-refresh":"^0.4.14","@stylistic/eslint-plugin-migrate":"^2.10.1"},"peerDependencies":{"eslint":"^9.10.0","astro-eslint-parser":"^1.0.2","eslint-plugin-astro":"^1.2.0","eslint-plugin-solid":"^0.14.3","@prettier/plugin-xml":"^3.4.1","eslint-plugin-format":">=0.1.0","eslint-plugin-svelte":">=2.35.1","svelte-eslint-parser":">=0.37.0","@unocss/eslint-plugin":">=0.50.0","prettier-plugin-astro":"^0.13.0","prettier-plugin-slidev":"^1.0.5","eslint-plugin-react-hooks":"^5.0.0","@eslint-react/eslint-plugin":"^1.5.8","eslint-plugin-react-refresh":"^0.4.4"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"peerDependenciesMeta":{"astro-eslint-parser":{"optional":true},"eslint-plugin-astro":{"optional":true},"eslint-plugin-solid":{"optional":true},"@prettier/plugin-xml":{"optional":true},"eslint-plugin-format":{"optional":true},"eslint-plugin-svelte":{"optional":true},"svelte-eslint-parser":{"optional":true},"@unocss/eslint-plugin":{"optional":true},"prettier-plugin-astro":{"optional":true},"prettier-plugin-slidev":{"optional":true},"eslint-plugin-react-hooks":{"optional":true},"@eslint-react/eslint-plugin":{"optional":true},"eslint-plugin-react-refresh":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/eslint-config_0.0.2_1732251310941_0.7274925902278433","host":"s3://npm-registry-packages"}},"0.0.3":{"name":"@adrianub/eslint-config","version":"0.0.3","keywords":["eslint-config"],"author":{"url":"https://github.com/adrian-ub/","name":"Adrián UB"},"license":"MIT","_id":"@adrianub/eslint-config@0.0.3","maintainers":[{"name":"adrianub","email":"ubaadrian@gmail.com"}],"homepage":"https://github.com/adrian-ub/eslint-config","bugs":{"url":"https://github.com/adrian-ub/eslint-config/issues"},"bin":{"eslint-config":"bin/index.js"},"dist":{"shasum":"c9256b1fc67d73d0b4f9f6e0e4d86188c6d4534c","tarball":"https://registry.npmjs.org/@adrianub/eslint-config/-/eslint-config-0.0.3.tgz","fileCount":12,"integrity":"sha512-ik1cEi+As+Z6SqqDGd/nSxdjLNUk7Nn7/MF63tY0ZR8iI62zTWZIPjJx4z5zdjjsJRsMw/YAN0kUeO64DfXxbA==","signatures":[{"sig":"MEQCIHQhEIkUIz7pwvP55tYBYJGMsPhTH4fOAXO7aBgwBm8iAiB7xwl0VtOIUJBNnzfAyTAFb4GDlH3twj/ziHaaAJnlRQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adrianub%2feslint-config@0.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1588876},"main":"./dist/index.js","type":"module","_from":"file:adrianub-eslint-config-0.0.3.tgz","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"funding":"https://github.com/sponsors/adrian-ub","scripts":{"dev":"npx @eslint/config-inspector --config eslint.config.ts","lint":"eslint --flag unstable_ts_config .","stub":"tsup --format esm","test":"vitest","build":"nr typegen && tsup --format esm,cjs --clean --dts","watch":"tsup --format esm,cjs --watch","release":"bumpp && pnpm publish","typegen":"esno scripts/typegen.ts","typecheck":"tsc --noEmit","build:inspector":"pnpm build && npx @eslint/config-inspector build"},"_npmUser":{"name":"adrianub","email":"ubaadrian@gmail.com"},"_resolved":"/tmp/1ef55e2f534f211b72ecb993c4e2bd71/adrianub-eslint-config-0.0.3.tgz","_integrity":"sha512-ik1cEi+As+Z6SqqDGd/nSxdjLNUk7Nn7/MF63tY0ZR8iI62zTWZIPjJx4z5zdjjsJRsMw/YAN0kUeO64DfXxbA==","repository":{"url":"git+https://github.com/adrian-ub/eslint-config.git","type":"git"},"_npmVersion":"10.9.0","description":"Adrián UB's ESLint config","directories":{},"lint-staged":{"*":"eslint --flag unstable_ts_config --fix"},"resolutions":{"tsx":"^4.19.2","eslint":"^9.15.0","@typescript-eslint/utils":"^8.15.0","@eslint-community/eslint-utils":"^4.4.1"},"_nodeVersion":"22.11.0","dependencies":{"yargs":"^17.7.2","globals":"^15.12.0","local-pkg":"^0.5.0","picocolors":"^1.1.1","@clack/prompts":"^0.8.1","eslint-plugin-n":"^17.13.2","parse-gitignore":"^2.0.0","@eslint/markdown":"^6.2.1","eslint-plugin-vue":"^9.31.0","eslint-plugin-yml":"^1.15.0","vue-eslint-parser":"^9.4.3","@antfu/install-pkg":"^0.4.1","eslint-plugin-toml":"^0.11.1","toml-eslint-parser":"^0.10.0","yaml-eslint-parser":"^1.2.3","eslint-plugin-antfu":"^2.7.0","eslint-plugin-jsdoc":"^50.5.0","eslint-plugin-jsonc":"^2.18.2","jsonc-eslint-parser":"^2.4.0","eslint-plugin-regexp":"^2.7.0","@vitest/eslint-plugin":"^1.1.10","eslint-plugin-command":"^0.2.6","eslint-plugin-unicorn":"^56.0.0","eslint-plugin-import-x":"^4.4.2","eslint-merge-processors":"^0.1.0","@stylistic/eslint-plugin":"^2.10.1","eslint-flat-config-utils":"^0.4.0","@typescript-eslint/parser":"^8.15.0","eslint-plugin-no-only-tests":"^3.3.0","eslint-plugin-perfectionist":"^3.9.1","eslint-processor-vue-blocks":"^0.1.2","eslint-config-flat-gitignore":"^0.3.0","eslint-plugin-unused-imports":"^4.1.4","@typescript-eslint/eslint-plugin":"^8.15.0","@eslint-community/eslint-plugin-eslint-comments":"^4.4.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","vue":"^3.5.13","esno":"^4.8.0","jiti":"^2.4.0","tsup":"^8.3.5","bumpp":"^9.8.1","execa":"^9.5.1","eslint":"^9.15.0","rimraf":"^6.0.1","svelte":"^5.2.3","vitest":"^2.1.5","fs-extra":"^11.2.0","@antfu/ni":"^0.23.1","fast-glob":"^3.3.2","typescript":"^5.6.3","@types/node":"^22.9.0","lint-staged":"^15.2.10","@types/yargs":"^17.0.33","@types/prompts":"^2.4.9","eslint-typegen":"^0.3.2","@types/fs-extra":"^11.0.4","simple-git-hooks":"^2.11.1","astro-eslint-parser":"^1.1.0","eslint-plugin-astro":"^1.3.1","eslint-plugin-solid":"^0.14.4","@prettier/plugin-xml":"^3.4.1","eslint-plugin-format":"^0.1.2","eslint-plugin-svelte":"^2.46.0","svelte-eslint-parser":"^0.43.0","@unocss/eslint-plugin":"^0.64.1","prettier-plugin-astro":"^0.14.1","prettier-plugin-slidev":"^1.0.5","@adrianub/eslint-config":"0.0.3","@eslint/config-inspector":"^0.5.6","eslint-plugin-react-hooks":"^5.0.0","@eslint-react/eslint-plugin":"^1.16.1","eslint-plugin-react-refresh":"^0.4.14","@stylistic/eslint-plugin-migrate":"^2.10.1"},"peerDependencies":{"eslint":"^9.10.0","astro-eslint-parser":"^1.0.2","eslint-plugin-astro":"^1.2.0","eslint-plugin-solid":"^0.14.3","@prettier/plugin-xml":"^3.4.1","eslint-plugin-format":">=0.1.0","eslint-plugin-svelte":">=2.35.1","svelte-eslint-parser":">=0.37.0","@unocss/eslint-plugin":">=0.50.0","prettier-plugin-astro":"^0.13.0","prettier-plugin-slidev":"^1.0.5","eslint-plugin-react-hooks":"^5.0.0","@eslint-react/eslint-plugin":"^1.5.8","eslint-plugin-react-refresh":"^0.4.4"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"peerDependenciesMeta":{"astro-eslint-parser":{"optional":true},"eslint-plugin-astro":{"optional":true},"eslint-plugin-solid":{"optional":true},"@prettier/plugin-xml":{"optional":true},"eslint-plugin-format":{"optional":true},"eslint-plugin-svelte":{"optional":true},"svelte-eslint-parser":{"optional":true},"@unocss/eslint-plugin":{"optional":true},"prettier-plugin-astro":{"optional":true},"prettier-plugin-slidev":{"optional":true},"eslint-plugin-react-hooks":{"optional":true},"@eslint-react/eslint-plugin":{"optional":true},"eslint-plugin-react-refresh":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/eslint-config_0.0.3_1732251499106_0.7413611979758341","host":"s3://npm-registry-packages"}},"0.0.4":{"name":"@adrianub/eslint-config","version":"0.0.4","keywords":["eslint-config"],"author":{"url":"https://github.com/adrian-ub/","name":"Adrián UB"},"license":"MIT","_id":"@adrianub/eslint-config@0.0.4","maintainers":[{"name":"adrianub","email":"ubaadrian@gmail.com"}],"homepage":"https://github.com/adrian-ub/eslint-config","bugs":{"url":"https://github.com/adrian-ub/eslint-config/issues"},"bin":{"eslint-config":"bin/index.js"},"dist":{"shasum":"81e1e3e24dad87ffcc3cfb105a415bf0152abad7","tarball":"https://registry.npmjs.org/@adrianub/eslint-config/-/eslint-config-0.0.4.tgz","fileCount":12,"integrity":"sha512-dIWlOE/Dw+chHXu47bLJtOFDUURMtL3AKwmS97ekCX0+cz1dnq9zTwR6mUGtR70o7Ln13ZIZbanG3ut278Ll2w==","signatures":[{"sig":"MEUCIBgWzOKP6528W1vvoig7ed7OFgKRAZHi2Vew/ZFu10j2AiEAkUEP28p8v/1PNKmFyB91oQFCxgJg+NcoyQ9TcaTqAXU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adrianub%2feslint-config@0.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1288907},"main":"./dist/index.js","type":"module","_from":"file:adrianub-eslint-config-0.0.4.tgz","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"funding":"https://github.com/sponsors/adrian-ub","scripts":{"dev":"npx @eslint/config-inspector --config eslint.config.ts","lint":"eslint --flag unstable_ts_config .","stub":"tsup --format esm","test":"vitest","build":"nr typegen && tsup --format esm,cjs --clean --dts","watch":"tsup --format esm,cjs --watch","release":"bumpp && pnpm publish","typegen":"tsx scripts/typegen.ts","typecheck":"tsc --noEmit","build:inspector":"pnpm build && npx @eslint/config-inspector build"},"_npmUser":{"name":"adrianub","email":"ubaadrian@gmail.com"},"_resolved":"/tmp/75a1ee320e511d287f02bea99778b774/adrianub-eslint-config-0.0.4.tgz","_integrity":"sha512-dIWlOE/Dw+chHXu47bLJtOFDUURMtL3AKwmS97ekCX0+cz1dnq9zTwR6mUGtR70o7Ln13ZIZbanG3ut278Ll2w==","repository":{"url":"git+https://github.com/adrian-ub/eslint-config.git","type":"git"},"_npmVersion":"10.9.0","description":"Adrián UB's ESLint config","directories":{},"lint-staged":{"*":"eslint --flag unstable_ts_config --fix"},"resolutions":{"tsx":"^4.19.2","eslint":"^9.15.0","@typescript-eslint/utils":"^8.15.0","@eslint-community/eslint-utils":"^4.4.1"},"_nodeVersion":"22.11.0","dependencies":{"yargs":"^17.7.2","globals":"^15.12.0","local-pkg":"^0.5.0","picocolors":"^1.1.1","@clack/prompts":"^0.8.1","eslint-plugin-n":"^17.13.2","parse-gitignore":"^2.0.0","@eslint/markdown":"^6.2.1","eslint-plugin-yml":"^1.15.0","@antfu/install-pkg":"^0.4.1","eslint-plugin-toml":"^0.11.1","toml-eslint-parser":"^0.10.0","yaml-eslint-parser":"^1.2.3","eslint-plugin-antfu":"^2.7.0","eslint-plugin-jsdoc":"^50.5.0","eslint-plugin-jsonc":"^2.18.2","jsonc-eslint-parser":"^2.4.0","eslint-plugin-regexp":"^2.7.0","@vitest/eslint-plugin":"^1.1.10","eslint-plugin-command":"^0.2.6","eslint-plugin-unicorn":"^56.0.0","eslint-plugin-import-x":"^4.4.2","eslint-merge-processors":"^0.1.0","@stylistic/eslint-plugin":"^2.10.1","eslint-flat-config-utils":"^0.4.0","@typescript-eslint/parser":"^8.15.0","eslint-plugin-no-only-tests":"^3.3.0","eslint-plugin-perfectionist":"^3.9.1","eslint-config-flat-gitignore":"^0.3.0","eslint-plugin-unused-imports":"^4.1.4","@typescript-eslint/eslint-plugin":"^8.15.0","@eslint-community/eslint-plugin-eslint-comments":"^4.4.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","jiti":"^2.4.0","tsup":"^8.3.5","bumpp":"^9.8.1","execa":"^9.5.1","eslint":"^9.15.0","rimraf":"^6.0.1","vitest":"^2.1.5","fs-extra":"^11.2.0","@antfu/ni":"^0.23.1","fast-glob":"^3.3.2","typescript":"^5.6.3","@types/node":"^22.9.0","lint-staged":"^15.2.10","@types/yargs":"^17.0.33","@types/prompts":"^2.4.9","eslint-typegen":"^0.3.2","@types/fs-extra":"^11.0.4","simple-git-hooks":"^2.11.1","astro-eslint-parser":"^1.1.0","eslint-plugin-astro":"^1.3.1","@prettier/plugin-xml":"^3.4.1","eslint-plugin-format":"^0.1.2","@unocss/eslint-plugin":"^0.64.1","prettier-plugin-astro":"^0.14.1","prettier-plugin-slidev":"^1.0.5","@adrianub/eslint-config":"0.0.4","@eslint/config-inspector":"^0.5.6","@stylistic/eslint-plugin-migrate":"^2.10.1"},"peerDependencies":{"eslint":"^9.10.0","astro-eslint-parser":"^1.0.2","eslint-plugin-astro":"^1.2.0","@prettier/plugin-xml":"^3.4.1","eslint-plugin-format":">=0.1.0","@unocss/eslint-plugin":">=0.50.0","prettier-plugin-astro":"^0.14.0","prettier-plugin-slidev":"^1.0.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"peerDependenciesMeta":{"astro-eslint-parser":{"optional":true},"eslint-plugin-astro":{"optional":true},"@prettier/plugin-xml":{"optional":true},"eslint-plugin-format":{"optional":true},"@unocss/eslint-plugin":{"optional":true},"prettier-plugin-astro":{"optional":true},"prettier-plugin-slidev":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/eslint-config_0.0.4_1732941853175_0.4984109698695902","host":"s3://npm-registry-packages"}},"0.1.0":{"name":"@adrianub/eslint-config","type":"module","version":"0.1.0","description":"Adrián UB's ESLint config","author":{"name":"Adrián UB","url":"https://github.com/adrian-ub/"},"license":"MIT","funding":"https://github.com/sponsors/adrian-ub","homepage":"https://github.com/adrian-ub/eslint-config","repository":{"type":"git","url":"git+https://github.com/adrian-ub/eslint-config.git"},"keywords":["eslint-config"],"exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"main":"./dist/index.js","types":"./dist/index.d.ts","bin":{"eslint-config":"bin/index.js"},"peerDependencies":{"@eslint-react/eslint-plugin":"^1.19.0","@prettier/plugin-xml":"^3.4.1","@unocss/eslint-plugin":">=0.50.0","astro-eslint-parser":"^1.0.2","eslint":"^9.10.0","eslint-plugin-astro":"^1.2.0","eslint-plugin-format":">=0.1.0","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.4","eslint-plugin-solid":"^0.14.3","eslint-plugin-svelte":">=2.35.1","prettier-plugin-astro":"^0.14.0","prettier-plugin-slidev":"^1.0.5","svelte-eslint-parser":">=0.37.0"},"peerDependenciesMeta":{"@eslint-react/eslint-plugin":{"optional":true},"@prettier/plugin-xml":{"optional":true},"@unocss/eslint-plugin":{"optional":true},"astro-eslint-parser":{"optional":true},"eslint-plugin-astro":{"optional":true},"eslint-plugin-format":{"optional":true},"eslint-plugin-react-hooks":{"optional":true},"eslint-plugin-react-refresh":{"optional":true},"eslint-plugin-solid":{"optional":true},"eslint-plugin-svelte":{"optional":true},"prettier-plugin-astro":{"optional":true},"prettier-plugin-slidev":{"optional":true},"svelte-eslint-parser":{"optional":true}},"dependencies":{"@antfu/eslint-config":"^4.1.0","@antfu/install-pkg":"^1.0.0","@clack/prompts":"^0.9.1","@eslint-community/eslint-plugin-eslint-comments":"^4.4.1","@eslint/markdown":"^6.2.2","@stylistic/eslint-plugin":"^3.0.0","@typescript-eslint/eslint-plugin":"^8.21.0","@typescript-eslint/parser":"^8.21.0","@vitest/eslint-plugin":"^1.1.25","eslint-config-flat-gitignore":"^1.0.0","eslint-flat-config-utils":"^2.0.0","eslint-merge-processors":"^1.0.0","eslint-plugin-antfu":"^3.0.0","eslint-plugin-command":"^3.0.0","eslint-plugin-import-x":"^4.6.1","eslint-plugin-jsdoc":"^50.6.3","eslint-plugin-jsonc":"^2.19.1","eslint-plugin-n":"^17.15.1","eslint-plugin-no-only-tests":"^3.3.0","eslint-plugin-perfectionist":"^4.7.0","eslint-plugin-regexp":"^2.7.0","eslint-plugin-toml":"^0.12.0","eslint-plugin-unicorn":"^56.0.1","eslint-plugin-unused-imports":"^4.1.4","eslint-plugin-vue":"^9.32.0","eslint-plugin-yml":"^1.16.0","eslint-processor-vue-blocks":"^1.0.0","globals":"^15.14.0","jsonc-eslint-parser":"^2.4.0","local-pkg":"^1.0.0","parse-gitignore":"^2.0.0","picocolors":"^1.1.1","toml-eslint-parser":"^0.10.0","vue-eslint-parser":"^9.4.3","yaml-eslint-parser":"^1.2.3","yargs":"^17.7.2"},"devDependencies":{"@antfu/ni":"^23.2.0","@eslint-react/eslint-plugin":"^1.24.1","@eslint/config-inspector":"^1.0.0","@prettier/plugin-xml":"^3.4.1","@stylistic/eslint-plugin-migrate":"^3.0.0","@types/fs-extra":"^11.0.4","@types/node":"^22.10.10","@types/prompts":"^2.4.9","@types/yargs":"^17.0.33","@unocss/eslint-plugin":"^65.4.3","astro-eslint-parser":"^1.2.1","bumpp":"^10.0.1","eslint":"^9.19.0","eslint-plugin-astro":"^1.3.1","eslint-plugin-format":"^1.0.1","eslint-plugin-react-hooks":"^5.1.0","eslint-plugin-react-refresh":"^0.4.18","eslint-plugin-solid":"^0.14.5","eslint-plugin-svelte":"^2.46.1","eslint-typegen":"^1.0.0","execa":"^9.5.2","fast-glob":"^3.3.3","fs-extra":"^11.3.0","jiti":"^2.4.2","lint-staged":"^15.4.2","prettier-plugin-astro":"^0.14.1","prettier-plugin-slidev":"^1.0.5","rimraf":"^6.0.1","simple-git-hooks":"^2.11.1","svelte":"^5.19.3","svelte-eslint-parser":"^0.43.0","tsup":"^8.3.5","tsx":"^4.19.2","typescript":"^5.7.3","vitest":"^3.0.4","vue":"^3.5.13","@adrianub/eslint-config":"0.1.0"},"resolutions":{"@eslint-community/eslint-utils":"^4.4.1","@typescript-eslint/utils":"^8.21.0","eslint":"^9.19.0","tsx":"^4.19.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"lint-staged":{"*":"eslint --fix"},"scripts":{"build":"nr typegen && tsup --clean --dts","stub":"tsup","dev":"npx @eslint/config-inspector --config eslint.config.ts","build:inspector":"pnpm build && npx @eslint/config-inspector build","watch":"tsup --watch","lint":"eslint .","typegen":"tsx scripts/typegen.ts","release":"bumpp && pnpm publish","test":"vitest","typecheck":"tsc --noEmit"},"_id":"@adrianub/eslint-config@0.1.0","bugs":{"url":"https://github.com/adrian-ub/eslint-config/issues"},"_integrity":"sha512-kLVPjyvt03uXQ9QpfpDmaQyQ/uFs794X7rj1Jlh4dhdjHI5OgK9YT9EK+5L1gXd+7pMFcsLhLeEa/RvGC4z3OA==","_resolved":"/tmp/2faaeb592cb4f0d10ed75ccc02b7ff54/adrianub-eslint-config-0.1.0.tgz","_from":"file:adrianub-eslint-config-0.1.0.tgz","_nodeVersion":"22.13.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-kLVPjyvt03uXQ9QpfpDmaQyQ/uFs794X7rj1Jlh4dhdjHI5OgK9YT9EK+5L1gXd+7pMFcsLhLeEa/RvGC4z3OA==","shasum":"1fe42bf05fd1a1a7a8a3846700fa5a13e1ff42fe","tarball":"https://registry.npmjs.org/@adrianub/eslint-config/-/eslint-config-0.1.0.tgz","fileCount":8,"unpackedSize":746444,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adrianub%2feslint-config@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEMCHx8kZy32yRAau0HdDu20ga6qyXkS3re4Th9PhHgXQDcCICz3IUIdsN8XNMpFfK82sxYRwtXesRm50mmwf1fFQhtO"}]},"_npmUser":{"name":"adrianub","email":"ubaadrian@gmail.com"},"directories":{},"maintainers":[{"name":"adrianub","email":"ubaadrian@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eslint-config_0.1.0_1737909545209_0.5108448824184679"},"_hasShrinkwrap":false}},"time":{"created":"2024-11-12T15:53:13.234Z","modified":"2025-01-26T16:39:05.889Z","0.0.1":"2024-11-12T15:53:13.622Z","0.0.2":"2024-11-22T04:55:11.200Z","0.0.3":"2024-11-22T04:58:19.333Z","0.0.4":"2024-11-30T04:44:13.389Z","0.1.0":"2025-01-26T16:39:05.460Z"},"bugs":{"url":"https://github.com/adrian-ub/eslint-config/issues"},"author":{"name":"Adrián UB","url":"https://github.com/adrian-ub/"},"license":"MIT","homepage":"https://github.com/adrian-ub/eslint-config","keywords":["eslint-config"],"repository":{"type":"git","url":"git+https://github.com/adrian-ub/eslint-config.git"},"description":"Adrián UB's ESLint config","maintainers":[{"name":"adrianub","email":"ubaadrian@gmail.com"}],"readme":"# @adrianub/eslint-config\n\n[![npm version][npm-version-src]][npm-version-href]\n[![npm downloads][npm-downloads-src]][npm-downloads-href]\n[![JSDocs][jsdocs-src]][jsdocs-href]\n[![License][license-src]][license-href]\n\n- Auto fix for formatting (aimed to be used standalone **without** Prettier)\n- Reasonable defaults, best practices, only one line of config\n- Designed to work with TypeScript, JSX, Vue, JSON, YAML, Toml, Markdown, etc. Out-of-box.\n- Opinionated, but [very customizable](#customization)\n- [ESLint Flat config](https://eslint.org/docs/latest/use/configure/configuration-files-new), compose easily!\n- Optional [React](#react), [Svelte](#svelte), [UnoCSS](#unocss), [Astro](#astro), [Solid](#solid) support\n- Optional [formatters](#formatters) support for formatting CSS, HTML, XML, etc.\n- **Style principle**: Minimal for reading, stable for diff, consistent\n  - Sorted imports, dangling commas\n  - Single quotes, no semi\n  - Using [ESLint Stylistic](https://github.com/eslint-stylistic/eslint-stylistic)\n- Respects `.gitignore` by default\n- Requires ESLint v9.5.0+\n\n> [!NOTE]\n> This config extends from [antfu/eslint-config](https://github.com/antfu/eslint-config)\n\n## Usage\n\n### Starter Wizard\n\nWe provided a CLI tool to help you set up your project, or migrate from the legacy config to the new flat config with one command.\n\n```bash\npnpm dlx @adrianub/eslint-config@latest\n```\n\n### Manual Install\n\nIf you prefer to set up manually:\n\n```bash\npnpm i -D eslint @adrianub/eslint-config\n```\n\nAnd create `eslint.config.mjs` in your project root:\n\n```js\n// eslint.config.mjs\nimport adrianub from '@adrianub/eslint-config'\n\nexport default adrianub()\n```\n\n<details>\n<summary>\nCombined with legacy config:\n</summary>\n\nIf you still use some configs from the legacy eslintrc format, you can use the [`@eslint/eslintrc`](https://www.npmjs.com/package/@eslint/eslintrc) package to convert them to the flat config.\n\n```js\n// eslint.config.mjs\nimport adrianub from '@adrianub/eslint-config'\nimport { FlatCompat } from '@eslint/eslintrc'\n\nconst compat = new FlatCompat()\n\nexport default adrianub(\n  {\n    ignores: [],\n  },\n\n  // Legacy config\n  ...compat.config({\n    extends: [\n      'eslint:recommended',\n      // Other extends...\n    ],\n  })\n\n  // Other flat configs...\n)\n```\n\n> Note that `.eslintignore` no longer works in Flat config, see [customization](#customization) for more details.\n\n</details>\n\n### Add script for package.json\n\nFor example:\n\n```json\n{\n  \"scripts\": {\n    \"lint\": \"eslint .\",\n    \"lint:fix\": \"eslint . --fix\"\n  }\n}\n```\n\n## IDE Support (auto fix on save)\n\n<details>\n<summary>🟦 VS Code support</summary>\n\n<br>\n\nInstall [VS Code ESLint extension](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)\n\nAdd the following settings to your `.vscode/settings.json`:\n\n```jsonc\n{\n  // Disable the default formatter, use eslint instead\n  \"prettier.enable\": false,\n  \"editor.formatOnSave\": false,\n\n  // Auto fix\n  \"editor.codeActionsOnSave\": {\n    \"source.fixAll.eslint\": \"explicit\",\n    \"source.organizeImports\": \"never\"\n  },\n\n  // Silent the stylistic rules in you IDE, but still auto fix them\n  \"eslint.rules.customizations\": [\n    { \"rule\": \"style/*\", \"severity\": \"off\", \"fixable\": true },\n    { \"rule\": \"format/*\", \"severity\": \"off\", \"fixable\": true },\n    { \"rule\": \"*-indent\", \"severity\": \"off\", \"fixable\": true },\n    { \"rule\": \"*-spacing\", \"severity\": \"off\", \"fixable\": true },\n    { \"rule\": \"*-spaces\", \"severity\": \"off\", \"fixable\": true },\n    { \"rule\": \"*-order\", \"severity\": \"off\", \"fixable\": true },\n    { \"rule\": \"*-dangle\", \"severity\": \"off\", \"fixable\": true },\n    { \"rule\": \"*-newline\", \"severity\": \"off\", \"fixable\": true },\n    { \"rule\": \"*quotes\", \"severity\": \"off\", \"fixable\": true },\n    { \"rule\": \"*semi\", \"severity\": \"off\", \"fixable\": true }\n  ],\n\n  // Enable eslint for all supported languages\n  \"eslint.validate\": [\n    \"javascript\",\n    \"javascriptreact\",\n    \"typescript\",\n    \"typescriptreact\",\n    \"vue\",\n    \"html\",\n    \"markdown\",\n    \"json\",\n    \"jsonc\",\n    \"yaml\",\n    \"toml\",\n    \"xml\",\n    \"gql\",\n    \"graphql\",\n    \"astro\",\n    \"svelte\",\n    \"css\",\n    \"less\",\n    \"scss\",\n    \"pcss\",\n    \"postcss\"\n  ]\n}\n```\n\n</details>\n\n<details>\n<summary>🟩 Neovim Support</summary>\n\n<br>\n\nUpdate your configuration to use the following:\n\n```lua\nlocal customizations = {\n  { rule = 'style/*', severity = 'off', fixable = true },\n  { rule = 'format/*', severity = 'off', fixable = true },\n  { rule = '*-indent', severity = 'off', fixable = true },\n  { rule = '*-spacing', severity = 'off', fixable = true },\n  { rule = '*-spaces', severity = 'off', fixable = true },\n  { rule = '*-order', severity = 'off', fixable = true },\n  { rule = '*-dangle', severity = 'off', fixable = true },\n  { rule = '*-newline', severity = 'off', fixable = true },\n  { rule = '*quotes', severity = 'off', fixable = true },\n  { rule = '*semi', severity = 'off', fixable = true },\n}\n\nlocal lspconfig = require('lspconfig')\n-- Enable eslint for all supported languages\nlspconfig.eslint.setup(\n  {\n    filetypes = {\n      \"javascript\",\n      \"javascriptreact\",\n      \"javascript.jsx\",\n      \"typescript\",\n      \"typescriptreact\",\n      \"typescript.tsx\",\n      \"vue\",\n      \"html\",\n      \"markdown\",\n      \"json\",\n      \"jsonc\",\n      \"yaml\",\n      \"toml\",\n      \"xml\",\n      \"gql\",\n      \"graphql\",\n      \"astro\",\n      \"svelte\",\n      \"css\",\n      \"less\",\n      \"scss\",\n      \"pcss\",\n      \"postcss\"\n    },\n    settings = {\n      -- Silent the stylistic rules in you IDE, but still auto fix them\n      rulesCustomizations = customizations,\n    },\n  }\n)\n```\n\n### Neovim format on save\n\nThere's few ways you can achieve format on save in neovim:\n\n- `nvim-lspconfig` has a `EslintFixAll` command predefined, you can create a autocmd to call this command after saving file.\n\n```lua\nlspconfig.eslint.setup({\n  --- ...\n  on_attach = function(client, bufnr)\n    vim.api.nvim_create_autocmd(\"BufWritePre\", {\n      buffer = bufnr,\n      command = \"EslintFixAll\",\n    })\n  end,\n})\n```\n\n- Use [conform.nvim](https://github.com/stevearc/conform.nvim).\n- Use [none-ls](https://github.com/nvimtools/none-ls.nvim)\n- Use [nvim-lint](https://github.com/mfussenegger/nvim-lint)\n\n</details>\n\n## Customization\n\nNormally you only need to import the `adrianub` preset:\n\n```js\n// eslint.config.js\nimport adrianub from '@adrianub/eslint-config'\n\nexport default adrianub()\n```\n\nAnd that's it! Or you can configure each integration individually, for example:\n\n```js\n// eslint.config.js\nimport adrianub from '@adrianub/eslint-config'\n\nexport default adrianub({\n// Type of the project. 'lib' for libraries, the default is 'app'\n  type: 'lib',\n\n  // Enable stylistic formatting rules\n  // stylistic: true,\n\n  // Or customize the stylistic rules\n  stylistic: {\n    indent: 2, // 4, or 'tab'\n    quotes: 'single', // or 'double'\n  },\n\n  // TypeScript are autodetected, you can also explicitly enable them:\n  typescript: true,\n\n  // Disable jsonc and yaml support\n  jsonc: false,\n  yaml: false,\n\n  // `.eslintignore` is no longer supported in Flat config, use `ignores` instead\n  ignores: [\n    '**/fixtures',\n    // ...globs\n  ]\n})\n```\n\nThe `adrianub` factory function also accepts any number of arbitrary custom config overrides:\n\n```js\n// eslint.config.js\nimport adrianub from '@adrianub/eslint-config'\n\nexport default adrianub(\n  {\n    // Configures for antfu's config\n  },\n\n  // From the second arguments they are ESLint Flat Configs\n  // you can have multiple configs\n  {\n    files: ['**/*.ts'],\n    rules: {},\n  },\n  {\n    rules: {},\n  },\n)\n```\n\nGoing more advanced, you can also import fine-grained configs and compose them as you wish:\n\n<details>\n<summary>Advanced Example</summary>\n\nWe wouldn't recommend using this style in general unless you know exactly what they are doing, as there are shared options between configs and might need extra care to make them consistent.\n\n```js\n// eslint.config.js\nimport {\n  combine,\n  comments,\n  ignores,\n  imports,\n  javascript,\n  jsdoc,\n  jsonc,\n  markdown,\n  node,\n  sortPackageJson,\n  sortTsconfig,\n  stylistic,\n  toml,\n  typescript,\n  unicorn,\n  yaml,\n} from '@adrianub/eslint-config'\n\nexport default combine(\n  ignores(),\n  javascript(/* Options */),\n  comments(),\n  node(),\n  jsdoc(),\n  imports(),\n  unicorn(),\n  typescript(/* Options */),\n  stylistic(),\n  jsonc(),\n  yaml(),\n  toml(),\n  markdown(),\n)\n```\n\n</details>\n\nCheck out the [configs](https://github.com/adrian-ub/eslint-config/blob/main/src/configs) and [factory](https://github.com/adrian-ub/eslint-config/blob/main/src/factory.ts) for more details.\n\n> Thanks to [antfu/eslint-config](https://github.com/antfu/eslint-config) for the inspiration and reference.\n\n### Plugins Renaming\n\nSince flat config requires us to explicitly provide the plugin names (instead of the mandatory convention from npm package name), we renamed some plugins to make the overall scope more consistent and easier to write.\n\n| New Prefix | Original Prefix        | Source Plugin                                                                              |\n| ---------- | ---------------------- | ------------------------------------------------------------------------------------------ |\n| `import/*` | `import-x/*`           | [eslint-plugin-import-x](https://github.com/un-es/eslint-plugin-import-x)                  |\n| `node/*`   | `n/*`                  | [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n)                     |\n| `yaml/*`   | `yml/*`                | [eslint-plugin-yml](https://github.com/ota-meshi/eslint-plugin-yml)                        |\n| `ts/*`     | `@typescript-eslint/*` | [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint) |\n| `style/*`  | `@stylistic/*`         | [@stylistic/eslint-plugin](https://github.com/eslint-stylistic/eslint-stylistic)           |\n| `test/*`   | `vitest/*`             | [@vitest/eslint-plugin](https://github.com/vitest-dev/eslint-plugin-vitest)                |\n| `test/*`   | `no-only-tests/*`      | [eslint-plugin-no-only-tests](https://github.com/levibuzolic/eslint-plugin-no-only-tests)  |\n\nWhen you want to override rules, or disable them inline, you need to update to the new prefix:\n\n```diff\n-// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\n+// eslint-disable-next-line ts/consistent-type-definitions\ntype foo = { bar: 2 }\n```\n\n<details>\n<summary>Change back to original prefix</summary>\n\nIf you really want to use the original prefix, you can revert the plugin renaming by:\n\n```ts\nimport adrianub from '@adrianub/eslint-config'\n\nexport default adrianub()\n  .renamePlugins({\n    ts: '@typescript-eslint',\n    yaml: 'yml',\n    node: 'n',\n    // ...\n  })\n```\n\n</details>\n\n### Rules Overrides\n\nCertain rules would only be enabled in specific files, for example, `ts/*` rules would only be enabled in `.ts`. If you want to override the rules, you need to specify the file extension:\n\n```js\n// eslint.config.js\nimport adrianub from '@adrianub/eslint-config'\n\nexport default adrianub(\n  {\n    typescript: true\n  },\n  {\n    // Without `files`, they are general rules for all files\n    rules: {\n      'style/semi': ['error', 'never'],\n    },\n  }\n)\n```\n\nWe also provided the `overrides` options in each integration to make it easier:\n\n```js\n// eslint.config.js\nimport adrianub from '@adrianub/eslint-config'\n\nexport default adrianub({\n  typescript: {\n    overrides: {\n      'ts/consistent-type-definitions': ['error', 'interface'],\n    },\n  },\n  yaml: {\n    overrides: {\n      // ...\n    },\n  },\n})\n```\n\n### Config Composer\n\nThe factory function `antfu()` returns a [`FlatConfigComposer` object from `eslint-flat-config-utils`](https://github.com/antfu/eslint-flat-config-utils#composer) where you can chain the methods to compose the config even more flexibly.\n\n```js\n// eslint.config.js\nimport adrianub from '@adrianub/eslint-config'\n\nexport default adrianub()\n  .prepend(\n    // some configs before the main config\n  )\n  // overrides any named configs\n  .override(\n    'adrianub/imports',\n    {\n      rules: {\n        'import/order': ['error', { 'newlines-between': 'always' }],\n      }\n    }\n  )\n  // rename plugin prefixes\n  .renamePlugins({\n    'old-prefix': 'new-prefix',\n    // ...\n  })\n// ...\n```\n\n### Optional Configs\n\nWe provide some optional configs for specific use cases, that we don't include their dependencies by default.\n\n#### Formatters\n\nUse external formatters to format files that ESLint cannot handle yet (`.css`, `.html`, etc). Powered by [`eslint-plugin-format`](https://github.com/antfu/eslint-plugin-format).\n\n```js\n// eslint.config.js\nimport adrianub from '@adrianub/eslint-config'\n\nexport default adrianub({\n  formatters: {\n    /**\n     * Format CSS, LESS, SCSS files, also the `<style>` blocks\n     * By default uses Prettier\n     */\n    css: true,\n    /**\n     * Format HTML files\n     * By default uses Prettier\n     */\n    html: true,\n    /**\n     * Format Markdown files\n     * Supports Prettier and dprint\n     * By default uses Prettier\n     */\n    markdown: 'prettier'\n  }\n})\n```\n\nRunning `npx eslint` should prompt you to install the required dependencies, otherwise, you can install them manually:\n\n```bash\npnpm i -D eslint-plugin-format\n```\n\n### Optional Rules\n\nThis config also provides some optional plugins/rules for extended usage.\n\n#### `command`\n\nPowered by [`eslint-plugin-command`](https://github.com/antfu/eslint-plugin-command). It is not a typical rule for linting, but an on-demand micro-codemod tool that triggers by specific comments.\n\nFor a few triggers, for example:\n\n- `/// to-function` - converts an arrow function to a normal function\n- `/// to-arrow` - converts a normal function to an arrow function\n- `/// to-for-each` - converts a for-in/for-of loop to `.forEach()`\n- `/// to-for-of` - converts a `.forEach()` to a for-of loop\n- `/// keep-sorted` - sorts an object/array/interface\n- ... etc. - refer to the [documentation](https://github.com/antfu/eslint-plugin-command#built-in-commands)\n\nYou can add the trigger comment one line above the code you want to transform, for example (note the triple slash):\n\n<!-- eslint-skip -->\n\n```ts\n/// to-function\nconst foo = async (msg: string): void => {\n  console.log(msg)\n}\n```\n\nWill be transformed to this when you hit save with your editor or run `eslint . --fix`:\n\n```ts\nasync function foo(msg: string): void {\n  console.log(msg)\n}\n```\n\nThe command comments are usually one-off and will be removed along with the transformation.\n\n### Type Aware Rules\n\nYou can optionally enable the [type aware rules](https://typescript-eslint.io/linting/typed-linting/) by passing the options object to the `typescript` config:\n\n```js\n// eslint.config.js\nimport adrianub from '@adrianub/eslint-config'\n\nexport default adrianub({\n  typescript: {\n    tsconfigPath: 'tsconfig.json',\n  },\n})\n```\n\n### Editor Specific Disables\n\nSome rules are disabled when inside ESLint IDE integrations, namely [`unused-imports/no-unused-imports`](https://www.npmjs.com/package/eslint-plugin-unused-imports) [`test/no-only-tests`](https://github.com/levibuzolic/eslint-plugin-no-only-tests)\n\nThis is to prevent unused imports from getting removed by the IDE during refactoring to get a better developer experience. Those rules will be applied when you run ESLint in the terminal or [Lint Staged](#lint-staged). If you don't want this behavior, you can disable them:\n\n```js\n// eslint.config.js\nimport adrianub from '@adrianub/eslint-config'\n\nexport default adrianub({\n  isInEditor: false\n})\n```\n\n### Lint Staged\n\nIf you want to apply lint and auto-fix before every commit, you can add the following to your `package.json`:\n\n```json\n{\n  \"simple-git-hooks\": {\n    \"pre-commit\": \"pnpm lint-staged\"\n  },\n  \"lint-staged\": {\n    \"*\": \"eslint --fix\"\n  }\n}\n```\n\nand then\n\n```bash\npnpm i -D lint-staged simple-git-hooks\n\n// to active the hooks\nnpx simple-git-hooks\n```\n\n## View what rules are enabled\n\nI built a visual tool to help you view what rules are enabled in your project and apply them to what files, [@eslint/config-inspector](https://github.com/eslint/config-inspector)\n\nGo to your project root that contains `eslint.config.js` and run:\n\n```bash\nnpx @eslint/config-inspector\n```\n\n## FAQ\n\n### Prettier?\n\n[Why I don't use Prettier](https://antfu.me/posts/why-not-prettier)\n\nWell, you can still use Prettier to format files that are not supported well by ESLint yet, such as `.css`, `.html`, etc. See [formatters](#formatters) for more details.\n\n### How to format CSS?\n\nYou can opt-in to the [`formatters`](#formatters) feature to format your CSS. Note that it's only doing formatting, but not linting. If you want proper linting support, give [`stylelint`](https://stylelint.io/) a try.\n\n### Top-level Function Style, etc.\n\nI am a very opinionated person, so as this config. I prefer the top-level functions always using the function declaration over arrow functions; I prefer one-line if statements without braces and always wraps, and so on. I even wrote some custom rules to enforce them.\n\nI know they are not necessarily the popular opinions. If you really want to get rid of them, you can disable them with:\n\n```ts\nimport adrianub from '@adrianub/eslint-config'\n\nexport default adrianub({\n  lessOpinionated: true\n})\n```\n\n### I prefer XXX...\n\nSure, you can configure and override rules locally in your project to fit your needs. If that still does not work for you, you can always fork this repo and maintain your own.\n\n## Sponsors\n\n<p align=\"center\">\n  <a href=\"https://cdn.jsdelivr.net/gh/adrian-ub/static/sponsors.svg\">\n    <img src='https://cdn.jsdelivr.net/gh/adrian-ub/static/sponsors.svg'/>\n  </a>\n</p>\n\n## License\n\n[MIT](./LICENSE) License © 2024-PRESENT [Adrián UB](https://github.com/adrian-ub)\n\n<!-- Badges -->\n\n[npm-version-src]: https://img.shields.io/npm/v/@adrianub/eslint-config?style=flat&colorA=080f12&colorB=1fa669\n[npm-version-href]: https://npmjs.com/package/@adrianub/eslint-config\n[npm-downloads-src]: https://img.shields.io/npm/dm/@adrianub/eslint-config?style=flat&colorA=080f12&colorB=1fa669\n[npm-downloads-href]: https://npmjs.com/package/@adrianub/eslint-config\n[license-src]: https://img.shields.io/github/license/adrian-ub/eslint-config.svg?style=flat&colorA=080f12&colorB=1fa669\n[license-href]: https://github.com/adrian-ub/eslint-config/blob/main/LICENSE\n[jsdocs-src]: https://img.shields.io/badge/jsdocs-reference-080f12?style=flat&colorA=080f12&colorB=1fa669\n[jsdocs-href]: https://www.jsdocs.io/package/@adrianub/eslint-config\n","readmeFilename":"README.md"}