{"_id":"@bravobit/eslint-config","_rev":"3-2c9bcb784f2bc4f93e5b4602b1852f15","name":"@bravobit/eslint-config","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"@bravobit/eslint-config","version":"0.1.0","keywords":["eslint","eslintconfig","eslint-config","bravobit"],"license":"MIT","_id":"@bravobit/eslint-config@0.1.0","maintainers":[{"name":"stanvanheumen","email":"stanvanheumen@gmail.com"}],"homepage":"https://github.com/bravobit/eslint-config#readme","bugs":{"url":"https://github.com/bravobit/eslint-config/issues"},"dist":{"shasum":"f77c8faf87b1a9ac86a3c55dede6d512d6eac6fd","tarball":"https://registry.npmjs.org/@bravobit/eslint-config/-/eslint-config-0.1.0.tgz","fileCount":4,"integrity":"sha512-5ZTs2hWF9VVsdRz0pbv/oXhDc/E7RIFuUtC/l8MNDPKrPNxONE1hvwVZ4OAspVX9imY6n+FImdh6ncS8vqLgTg==","signatures":[{"sig":"MEQCIHDal7qHHh/qvoGtzk7yqfia3Gxw+uMoYXMs6ykaeIz3AiBzToYXTBqXrp7NXYJIjn8NgD4yUOgC06IXmX8WltywRQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7854},"main":"./index.js","type":"module","engines":{"node":"^20.19.0 || ^22.13.0 || >=24"},"exports":{".":"./index.js","./package.json":"./package.json"},"gitHead":"923b5e3ecfe113b9b70916a6b20d13398fc3042e","_npmUser":{"name":"stanvanheumen","email":"stanvanheumen@gmail.com"},"repository":{"url":"git+https://github.com/bravobit/eslint-config.git","type":"git"},"_npmVersion":"12.0.2","description":"Bravobit's shared ESLint flat config: stylistic conventions, type-checked typescript-eslint rules, and waterfall sorting for TypeScript and CSS/SCSS.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"typescript-eslint":"^8.67.0","@stylistic/eslint-plugin":"^5.10.0","@bravobit/eslint-plugin-waterfall":"^2.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"eslint":">=9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-config_0.1.0_1787225538627_0.7523825375948734","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@bravobit/eslint-config","version":"0.2.0","keywords":["eslint","eslintconfig","eslint-config","bravobit"],"license":"MIT","_id":"@bravobit/eslint-config@0.2.0","maintainers":[{"name":"stanvanheumen","email":"stanvanheumen@gmail.com"}],"homepage":"https://github.com/bravobit/eslint-config#readme","bugs":{"url":"https://github.com/bravobit/eslint-config/issues"},"dist":{"shasum":"1cc18d00f501d2e371334ce20038cea8bb7d62be","tarball":"https://registry.npmjs.org/@bravobit/eslint-config/-/eslint-config-0.2.0.tgz","fileCount":4,"integrity":"sha512-KLU/7hH8X4e5S/tyo9SfbJgOFB2wV1bvj8cTajQkzzI1DhlYLS1uQ1BuG/k0bSUGBS8VpLCDTl8P64bSPcTokQ==","signatures":[{"sig":"MEQCIFQvtGaPAopcOWiLoCDwDxTb41+ksLxEE8SMEWlHDLBOAiBl56Q0wUDQTeAV6iftGhxhIjt58ky+dFS2HhMU/vQanw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9594},"main":"./index.js","type":"module","engines":{"node":"^20.19.0 || ^22.13.0 || >=24"},"exports":{".":"./index.js","./package.json":"./package.json"},"gitHead":"9359ce297003b4d43881aa367385f44c6927d6f7","_npmUser":{"name":"stanvanheumen","email":"stanvanheumen@gmail.com"},"repository":{"url":"git+https://github.com/bravobit/eslint-config.git","type":"git"},"_npmVersion":"12.0.2","description":"Bravobit's shared ESLint flat config: stylistic conventions, type-checked typescript-eslint rules, and waterfall sorting for TypeScript and CSS/SCSS.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"typescript-eslint":"^8.67.0","@stylistic/eslint-plugin":"^5.10.0","@bravobit/eslint-plugin-waterfall":"^2.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"eslint":">=9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-config_0.2.0_1787227598454_0.8458927875306748","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@bravobit/eslint-config","version":"0.3.0","description":"Bravobit's shared ESLint flat config: stylistic conventions, type-checked typescript-eslint rules, and waterfall sorting for TypeScript and CSS/SCSS.","type":"module","license":"MIT","repository":{"type":"git","url":"git+https://github.com/bravobit/eslint-config.git"},"engines":{"node":"^20.19.0 || ^22.13.0 || >=24"},"publishConfig":{"access":"public"},"exports":{".":"./index.js","./package.json":"./package.json"},"main":"./index.js","keywords":["eslint","eslintconfig","eslint-config","bravobit"],"dependencies":{"@bravobit/eslint-plugin-waterfall":"^2.0.2","@stylistic/eslint-plugin":"^5.10.0","typescript-eslint":"^8.67.0"},"peerDependencies":{"eslint":">=9.0.0"},"gitHead":"4f730da0810d96aa3861bf95ead16594f1c1725e","_id":"@bravobit/eslint-config@0.3.0","bugs":{"url":"https://github.com/bravobit/eslint-config/issues"},"homepage":"https://github.com/bravobit/eslint-config#readme","_nodeVersion":"24.18.0","_npmVersion":"12.0.2","dist":{"integrity":"sha512-sePajEdxPB39Im1n1rPplKMLY026SjR/R30UFUZpWkzFyMfC++mC59Yqf/SmOHg9BdkLUcqV0uv8chV+6G59+w==","shasum":"7a9c3f26821bdbe8b461c1d72ed93782701cba72","tarball":"https://registry.npmjs.org/@bravobit/eslint-config/-/eslint-config-0.3.0.tgz","fileCount":4,"unpackedSize":9649,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDhWDhE+Av/WN59VLyRIzcQFVF0G9gg/MSUI+j3vwhheQIhAJk9We1YLSfTTqVsGxuoJ0/h8ZfkWMyC+9yerCffWxgH"}]},"_npmUser":{"name":"stanvanheumen","email":"stanvanheumen@gmail.com"},"directories":{},"maintainers":[{"name":"stanvanheumen","email":"stanvanheumen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eslint-config_0.3.0_1787228201254_0.884317462130898"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-20T11:32:18.434Z","modified":"2026-08-20T12:16:41.652Z","0.1.0":"2026-08-20T11:32:18.758Z","0.2.0":"2026-08-20T12:06:38.593Z","0.3.0":"2026-08-20T12:16:41.426Z"},"bugs":{"url":"https://github.com/bravobit/eslint-config/issues"},"license":"MIT","homepage":"https://github.com/bravobit/eslint-config#readme","keywords":["eslint","eslintconfig","eslint-config","bravobit"],"repository":{"type":"git","url":"git+https://github.com/bravobit/eslint-config.git"},"description":"Bravobit's shared ESLint flat config: stylistic conventions, type-checked typescript-eslint rules, and waterfall sorting for TypeScript and CSS/SCSS.","maintainers":[{"name":"stanvanheumen","email":"stanvanheumen@gmail.com"}],"readme":"# @bravobit/eslint-config\n\nBravobit's shared ESLint flat config. One import gives you:\n\n- **Formatting** via [`@stylistic/eslint-plugin`](https://eslint.style) — 4-space indent, single quotes, semicolons, no spaces inside braces/brackets/parens (`{inject}`, `['token']`, `next('completed')`), no trailing commas, `x => ...` arrow parens, padded class bodies, `1tbs` braces, operators at the start of wrapped lines, and more. Everything is auto-fixable.\n- **Consistency** — `const` over `let`/`var`, `===`, object shorthand, template literals over string concatenation, `interface` over `type`, `string[]` over `Array<string>`, no redundant type annotations (`count: number = 0`), generics on the constructor (`new Map<string, number>()`), `readonly` on never-reassigned private members, `a?.b` over `a && a.b`, and no yoda conditions (`value === undefined` over `undefined === value`). All auto-fixable except `===`.\n- **Type-aware linting** via [`typescript-eslint`](https://typescript-eslint.io) `recommendedTypeChecked` — floating promises, misused promises, await of non-thenables, etc. The `no-unsafe-*` family is off by default until `any` boundaries are typed; re-enable it per project as modules get cleaned up.\n- **Waterfall sorting** via [`@bravobit/eslint-plugin-waterfall`](https://github.com/bravobit/eslint-plugin-waterfall) for imports and CSS/SCSS declarations.\n\n## Install\n\n```bash\nnpm install --save-dev eslint @bravobit/eslint-config\n```\n\nThe plugins (`@stylistic/eslint-plugin`, `typescript-eslint`, `@bravobit/eslint-plugin-waterfall`) come along as dependencies — no need to install them separately.\n\n## Use\n\n`eslint.config.mjs`:\n\n```js\nimport {defineConfig, globalIgnores} from 'eslint/config';\nimport bravobit from '@bravobit/eslint-config';\n\nexport default defineConfig(\n    globalIgnores(['deployment/', 'scripts/']), // project-specific extras; dist/, coverage/ and .angular/ are already ignored\n    bravobit\n);\n```\n\nType-aware rules use typescript-eslint's `projectService`, which finds the nearest `tsconfig.json` automatically — no per-project parser configuration needed.\n\n## Override\n\nFlat config merges left to right, so append a block to tighten or loosen rules per project:\n\n```js\nexport default defineConfig(\n    bravobit,\n    {\n        files: ['src/app/payments/**/*.ts'],\n        rules: {\n            // e.g. re-enable the unsafe family for a cleaned-up module\n            '@typescript-eslint/no-unsafe-assignment': 'warn'\n        }\n    }\n);\n```\n","readmeFilename":"README.md"}