{"_id":"@bota-apps/eslint-config","_rev":"3-34ff7ec65b6f41dd1e97f624309be5e3","name":"@bota-apps/eslint-config","dist-tags":{"latest":"0.3.1"},"versions":{"0.2.0":{"name":"@bota-apps/eslint-config","version":"0.2.0","author":{"name":"bota-apps"},"license":"MIT","_id":"@bota-apps/eslint-config@0.2.0","maintainers":[{"name":"bota-apps","email":"imusema.hassen@icloud.com"}],"homepage":"https://github.com/bota-apps/bota-apps#readme","bugs":{"url":"https://github.com/bota-apps/bota-apps/issues"},"dist":{"shasum":"0ed3694df0b2d77a3edb4eb3cd8d0468d833bd82","tarball":"https://registry.npmjs.org/@bota-apps/eslint-config/-/eslint-config-0.2.0.tgz","fileCount":5,"integrity":"sha512-VltikwQhg+0FLOBJIYJJJT21PgJ1Vz34rgjygpFQn/b6aqOWTJYLbZVJ/2XNL/mQdw5NLRzikJq1hXj1g9ZmTw==","signatures":[{"sig":"MEQCIGjcBBoIEpi8cNEExUQO4cH0dvz8lTZiKusRPx1r2wSWAiAavwZBPIxzhqoycYOYiYygFT0u/vEh/tz6Om3dor+Mtg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5658},"main":"./index.js","type":"module","_from":"file:bota-apps-eslint-config-0.2.0.tgz","exports":{".":"./index.js","./prettier":"./prettier.json","./tsconfig.json":"./tsconfig.json"},"_npmUser":{"name":"bota-apps","email":"imusema.hassen@icloud.com"},"_resolved":"/private/var/folders/wp/6cc4gkfd481b73439xdrv4wm0000gn/T/6186247e4d66e172d959644717faf6f0/bota-apps-eslint-config-0.2.0.tgz","_integrity":"sha512-VltikwQhg+0FLOBJIYJJJT21PgJ1Vz34rgjygpFQn/b6aqOWTJYLbZVJ/2XNL/mQdw5NLRzikJq1hXj1g9ZmTw==","repository":{"url":"git+https://github.com/bota-apps/bota-apps.git","type":"git","directory":"packages/eslint-config"},"_npmVersion":"10.9.8","description":"Shared flat ESLint config, Prettier config, and base tsconfig for @bota-apps repos and generated apps. Owns its lint plugins so consumers install one dev dependency.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@eslint/js":"^9.17.0","typescript-eslint":"^8.18.2","eslint-plugin-unicorn":"^56.0.1","eslint-config-prettier":"^9.1.0","eslint-plugin-react-hooks":"^5.1.0","eslint-plugin-unused-imports":"^4.1.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"eslint":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-config_0.2.0_1782838683353_0.24230515977386569","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@bota-apps/eslint-config","version":"0.3.0","author":{"name":"bota-apps"},"license":"MIT","_id":"@bota-apps/eslint-config@0.3.0","maintainers":[{"name":"bota-apps","email":"imusema.hassen@icloud.com"}],"homepage":"https://github.com/bota-apps/packages/tree/main/packages/eslint-config#readme","bugs":{"url":"https://github.com/bota-apps/packages/issues"},"dist":{"shasum":"b858754df270cf90c9325eb3fb7ff0cf5f6cc867","tarball":"https://registry.npmjs.org/@bota-apps/eslint-config/-/eslint-config-0.3.0.tgz","fileCount":6,"integrity":"sha512-pXpwrlXZDgiEVPi1DjXU1HG7sB+KUkQwl2mY9/O8DEuTw2g3tpKFAfClGab0CFc/oB0looMtjGj/ruwyGZ4HDA==","signatures":[{"sig":"MEUCIQDWnt2J3Yq/+zBJ5aymVkIW1xiaJ9iBxmS838Mg8EftNAIgQgAwEFJd79J3hcQFs9ximFBpm+Q2JRUHWt+ImcjI5wI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7681},"main":"./index.js","type":"module","_from":"file:bota-apps-eslint-config-0.3.0.tgz","engines":{"node":">=20"},"exports":{".":"./index.js","./prettier":"./prettier.json","./tsconfig.json":"./tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bed84329-5259-47fc-9d00-0b8896d9ff8d"}},"_resolved":"/tmp/849015f58557c8e3757a0d436c5d0241/bota-apps-eslint-config-0.3.0.tgz","_integrity":"sha512-pXpwrlXZDgiEVPi1DjXU1HG7sB+KUkQwl2mY9/O8DEuTw2g3tpKFAfClGab0CFc/oB0looMtjGj/ruwyGZ4HDA==","repository":{"url":"git+https://github.com/bota-apps/packages.git","type":"git","directory":"packages/eslint-config"},"_npmVersion":"11.18.0","description":"Shared flat ESLint config, Prettier config, and base tsconfig for @bota-apps repos and generated apps. Owns its lint plugins so consumers install one dev dependency.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@eslint/js":"^9.17.0","typescript-eslint":"^8.18.2","eslint-plugin-unicorn":"^56.0.1","eslint-config-prettier":"^9.1.0","eslint-plugin-react-hooks":"^5.1.0","eslint-plugin-unused-imports":"^4.1.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"eslint":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-config_0.3.0_1783061248120_0.2443555297944977","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@bota-apps/eslint-config","version":"0.3.1","description":"Shared flat ESLint config, Prettier config, and base tsconfig for @bota-apps repos and generated apps. Owns its lint plugins so consumers install one dev dependency.","keywords":["bota-apps","typescript","eslint","eslint-config","prettier","tsconfig","flat-config"],"license":"MIT","author":{"name":"Bota Apps","url":"https://github.com/bota-apps"},"type":"module","main":"./index.js","exports":{".":"./index.js","./prettier":"./prettier.json","./tsconfig.json":"./tsconfig.json"},"repository":{"type":"git","url":"git+https://github.com/bota-apps/packages.git","directory":"packages/eslint-config"},"homepage":"https://github.com/bota-apps/packages/tree/main/packages/eslint-config#readme","bugs":{"url":"https://github.com/bota-apps/packages/issues"},"publishConfig":{"access":"public"},"dependencies":{"@eslint/js":"^9.17.0","eslint-config-prettier":"^9.1.0","eslint-plugin-react-hooks":"^5.1.0","eslint-plugin-unicorn":"^56.0.1","eslint-plugin-unused-imports":"^4.1.4","typescript-eslint":"^8.18.2"},"peerDependencies":{"eslint":"^9.0.0"},"engines":{"node":">=20"},"_id":"@bota-apps/eslint-config@0.3.1","_integrity":"sha512-XbF/MCgK1hjYLSzuNLR5d2/J1vmi+JROzJM1Jo6utJi3trygSdtV06dgZE0RIFcfUoNiOlaDhTrGi8hv6b8bWA==","_resolved":"/tmp/3f5883625c5456f0101e56e54adcc685/bota-apps-eslint-config-0.3.1.tgz","_from":"file:bota-apps-eslint-config-0.3.1.tgz","_nodeVersion":"22.23.1","_npmVersion":"11.18.0","dist":{"integrity":"sha512-XbF/MCgK1hjYLSzuNLR5d2/J1vmi+JROzJM1Jo6utJi3trygSdtV06dgZE0RIFcfUoNiOlaDhTrGi8hv6b8bWA==","shasum":"10fe285de1affae4a17a2c3e2683da18c44e54af","tarball":"https://registry.npmjs.org/@bota-apps/eslint-config/-/eslint-config-0.3.1.tgz","fileCount":6,"unpackedSize":9675,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDaBuUIrf4DSLQE6KTA31RFQqwC+Gxlj4gPTaZAo9TR2AIgEDKvVJdeh+Q3eRc3YMvLrNBqFKPS2xXBsEP1EjMr4jo="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:691b9a70-aed0-4765-beb7-674529499796"}},"directories":{},"maintainers":[{"name":"bota-apps","email":"imusema.hassen@icloud.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eslint-config_0.3.1_1783319739741_0.1445270506812999"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-30T16:58:03.184Z","modified":"2026-07-06T06:35:40.039Z","0.2.0":"2026-06-30T16:58:03.468Z","0.3.0":"2026-07-03T06:47:28.257Z","0.3.1":"2026-07-06T06:35:39.930Z"},"bugs":{"url":"https://github.com/bota-apps/packages/issues"},"author":{"name":"Bota Apps","url":"https://github.com/bota-apps"},"license":"MIT","homepage":"https://github.com/bota-apps/packages/tree/main/packages/eslint-config#readme","repository":{"type":"git","url":"git+https://github.com/bota-apps/packages.git","directory":"packages/eslint-config"},"description":"Shared flat ESLint config, Prettier config, and base tsconfig for @bota-apps repos and generated apps. Owns its lint plugins so consumers install one dev dependency.","maintainers":[{"name":"bota-apps","email":"imusema.hassen@icloud.com"}],"readme":"# @bota-apps/eslint-config\n\nShared flat ESLint config, Prettier config, and base `tsconfig` for `@bota-apps`\nrepos and generated apps. It owns its lint plugins, so consumers install **one**\ndev dependency and get the same rules everywhere. This package ships plain\n`index.js` / `prettier.json` / `tsconfig.json` — there is no build step and no\n`dist/`.\n\n## Install\n\n```bash\npnpm add -D @bota-apps/eslint-config eslint\n# eslint ^9 is a peer dependency\n```\n\n## Usage\n\nThe default export is a flat config array — spread it and append your own overrides.\n\n`eslint.config.mjs`:\n\n```js\nimport bota from \"@bota-apps/eslint-config\";\n\nexport default [\n  ...bota,\n  {\n    rules: {\n      // app-specific overrides…\n    },\n  },\n];\n```\n\nBase TypeScript config — `tsconfig.json`:\n\n```json\n{ \"extends\": \"@bota-apps/eslint-config/tsconfig.json\" }\n```\n\nPrettier — reference it from `package.json` (or a `.prettierrc`):\n\n```json\n{ \"prettier\": \"@bota-apps/eslint-config/prettier\" }\n```\n\n## What the flat config enables\n\n- **`@eslint/js` + `typescript-eslint` recommended** as the baseline.\n- **`react-hooks`** — `rules-of-hooks` (error) and `exhaustive-deps` (warn).\n- **`unused-imports`** owns dead-code detection so it can auto-fix imports;\n  `no-unused-imports` is an error, unused vars warn (with `^_` ignore patterns).\n- **`@typescript-eslint/no-explicit-any`** (error) and\n  **`consistent-type-imports`** (works with `verbatimModuleSyntax`).\n- **`unicorn/filename-case`** — camelCase / PascalCase filenames (TanStack route\n  files, `.config.`, `.gen.`, and `vite-env.d.ts` are exempt).\n- **`@typescript-eslint/naming-convention`** — camelCase/PascalCase identifiers,\n  no `SCREAMING_SNAKE_CASE` (object property keys are exempt for external\n  contracts like ISO currency codes).\n- **Node globals** for `*.{mjs,cjs}`, `scripts/**`, and `*.config.*` files.\n- **`eslint-config-prettier`** applied last to disable conflicting formatting rules.\n\nApp-only conventions (no `className` in feature code, no raw HTML, no raw `fetch`)\nare intentionally **not** here — they belong in the generated app's own config,\nscoped to its feature directories.\n\n## Subpaths\n\n| Import                                   | What                                                            |\n| ---------------------------------------- | --------------------------------------------------------------- |\n| `@bota-apps/eslint-config`               | The flat ESLint config array (default export)                   |\n| `@bota-apps/eslint-config/prettier`      | Prettier options (`printWidth: 100`, double quotes, semicolons) |\n| `@bota-apps/eslint-config/tsconfig.json` | Base compiler options to `extends` from                         |\n\n## The Prettier options\n\n```json\n{\n  \"printWidth\": 100,\n  \"singleQuote\": false,\n  \"trailingComma\": \"all\",\n  \"tabWidth\": 2,\n  \"semi\": true\n}\n```\n\nPart of the [`@bota-apps` packages monorepo](https://github.com/bota-apps/packages).\n","readmeFilename":"README.md","keywords":["bota-apps","typescript","eslint","eslint-config","prettier","tsconfig","flat-config"]}