{"_id":"@acamarata/eslint-config","name":"@acamarata/eslint-config","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@acamarata/eslint-config","version":"0.1.0","description":"Shared ESLint flat configs for acamarata packages. TypeScript-aware, Prettier-compatible, with base, browser, node, and React variants.","author":{"name":"Aric Camarata"},"license":"MIT","type":"module","main":"./dist/index.cjs","module":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./package.json":"./package.json"},"sideEffects":false,"engines":{"node":">=20"},"scripts":{"build":"tsup","typecheck":"tsc --noEmit","pretest":"tsup","test":"node --test test/test.mjs","coverage":"node --test --experimental-test-coverage test/test.mjs","prepublishOnly":"tsup"},"peerDependencies":{"@typescript-eslint/eslint-plugin":">=8.0.0","@typescript-eslint/parser":">=8.0.0","eslint":">=9.0.0","eslint-config-prettier":">=9.0.0","eslint-plugin-react":">=7.0.0","eslint-plugin-react-hooks":">=5.0.0"},"peerDependenciesMeta":{"eslint-plugin-react":{"optional":true},"eslint-plugin-react-hooks":{"optional":true}},"devDependencies":{"@typescript-eslint/eslint-plugin":"^8.0.0","@typescript-eslint/parser":"^8.0.0","@types/node":"^22.0.0","eslint":"^9.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-react":"^7.0.0","eslint-plugin-react-hooks":"^5.0.0","tsup":"^8.4.0","typescript":"^5.8.0"},"repository":{"type":"git","url":"git+https://github.com/acamarata/eslint-config.git"},"homepage":"https://github.com/acamarata/eslint-config#readme","bugs":{"url":"https://github.com/acamarata/eslint-config/issues"},"keywords":["eslint","eslint-config","typescript","react","node","flat-config","acamarata","linting"],"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"packageManager":"pnpm@10.11.1","_id":"@acamarata/eslint-config@0.1.0","_nodeVersion":"24.6.0","_npmVersion":"11.5.1","dist":{"integrity":"sha512-St2TObpHKXBLBy1GPrXWlHzXCujJ7jaor6BuWRdLMTOjM56LPBDJx+898R7yFyI8Wi52VWNZdSTPxzHuyRAq+A==","shasum":"fcd1a9b3eff5fd44bdfd7f8ec5d827b1ccd7b2c3","tarball":"https://registry.npmjs.org/@acamarata/eslint-config/-/eslint-config-0.1.0.tgz","fileCount":10,"unpackedSize":31060,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDAxJsYlaGrPnAGjiAW71CBs9xCTp9Wa02lO1KFjffVcgIgP6qrM4zmYOhwK/vXurJhHOtrHqgxVHRaW1xjFq2HfGI="}]},"_npmUser":{"name":"acamarata","email":"alisalaah@gmail.com"},"directories":{},"maintainers":[{"name":"acamarata","email":"alisalaah@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eslint-config_0.1.0_1779990263407_0.23518848713995766"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-28T17:44:23.151Z","0.1.0":"2026-05-28T17:44:23.548Z","modified":"2026-05-28T17:44:23.727Z"},"maintainers":[{"name":"acamarata","email":"alisalaah@gmail.com"}],"description":"Shared ESLint flat configs for acamarata packages. TypeScript-aware, Prettier-compatible, with base, browser, node, and React variants.","homepage":"https://github.com/acamarata/eslint-config#readme","keywords":["eslint","eslint-config","typescript","react","node","flat-config","acamarata","linting"],"repository":{"type":"git","url":"git+https://github.com/acamarata/eslint-config.git"},"author":{"name":"Aric Camarata"},"bugs":{"url":"https://github.com/acamarata/eslint-config/issues"},"license":"MIT","readme":"# @acamarata/eslint-config\n\n[![npm version](https://img.shields.io/npm/v/@acamarata/eslint-config)](https://www.npmjs.com/package/@acamarata/eslint-config)\n[![CI](https://github.com/acamarata/eslint-config/actions/workflows/ci.yml/badge.svg)](https://github.com/acamarata/eslint-config/actions)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)\n\nShared ESLint flat configs for acamarata packages. Four named exports covering common project shapes: base, TypeScript, React, and Node.js.\n\nAll configs use ESLint's flat config format (eslint.config.js). ESLint 8's legacy `.eslintrc` format is not supported.\n\n## Install\n\n```sh\npnpm add -D @acamarata/eslint-config eslint eslint-config-prettier\n```\n\nFor TypeScript projects, also install the parser and plugin:\n\n```sh\npnpm add -D @typescript-eslint/eslint-plugin @typescript-eslint/parser\n```\n\nFor React projects, add the React plugins as well:\n\n```sh\npnpm add -D eslint-plugin-react eslint-plugin-react-hooks\n```\n\n## Peer dependencies\n\n| Peer | Required for | Version |\n|------|-------------|---------|\n| `eslint` | all configs | `>=9.0.0` |\n| `eslint-config-prettier` | all configs | `>=9.0.0` |\n| `@typescript-eslint/eslint-plugin` | `typescript` config | `>=8.0.0` |\n| `@typescript-eslint/parser` | `typescript` config | `>=8.0.0` |\n| `eslint-plugin-react` | `react` config | `>=7.0.0` (optional) |\n| `eslint-plugin-react-hooks` | `react` config | `>=5.0.0` (optional) |\n\n## Usage\n\n### Base (JS only)\n\n```js\n// eslint.config.js\nimport { base } from '@acamarata/eslint-config';\n\nexport default [...base];\n```\n\n### TypeScript\n\n```js\n// eslint.config.js\nimport tsParser from '@typescript-eslint/parser';\nimport tsPlugin from '@typescript-eslint/eslint-plugin';\nimport { typescript } from '@acamarata/eslint-config';\n\nexport default [\n  {\n    plugins: { '@typescript-eslint': tsPlugin },\n    languageOptions: { parser: tsParser },\n  },\n  ...typescript,\n];\n```\n\n### React\n\n```js\n// eslint.config.js\nimport tsParser from '@typescript-eslint/parser';\nimport tsPlugin from '@typescript-eslint/eslint-plugin';\nimport reactPlugin from 'eslint-plugin-react';\nimport reactHooksPlugin from 'eslint-plugin-react-hooks';\nimport { react } from '@acamarata/eslint-config';\n\nexport default [\n  {\n    plugins: {\n      '@typescript-eslint': tsPlugin,\n      react: reactPlugin,\n      'react-hooks': reactHooksPlugin,\n    },\n    languageOptions: { parser: tsParser },\n  },\n  ...react,\n];\n```\n\n### Node.js\n\n```js\n// eslint.config.js\nimport { node } from '@acamarata/eslint-config';\n\nexport default [...node];\n```\n\n## Exported configs\n\n| Export | Extends | Key rules |\n|--------|---------|-----------|\n| `base` | none | prefer-const, no-var, eqeqeq, no-unused-vars, no-console warn |\n| `typescript` | base | @typescript-eslint/no-explicit-any error, explicit-module-boundary-types, prefer-optional-chain |\n| `react` | typescript | react-hooks/exhaustive-deps error, react-hooks/rules-of-hooks error, jsx-key error |\n| `node` | base | no-console off (server/CLI code may log), no-process-exit error |\n\n## TypeScript strict mode\n\nThe `typescript` config sets `@typescript-eslint/no-explicit-any: 'error'`. Every `any` cast in your codebase needs an inline comment explaining why it is necessary. This is intentional: it keeps the type surface honest.\n\n## Compatibility\n\n- Node.js 20, 22, 24\n- ESLint 9 flat config only\n- TypeScript 5.x\n\n## Related packages\n\n- [@acamarata/tsconfig](https://github.com/acamarata/tsconfig) - shared TypeScript configs\n- [@acamarata/prettier-config](https://github.com/acamarata/prettier-config) - shared Prettier config\n\n## License\n\nMIT. See [LICENSE](./LICENSE).\n","readmeFilename":"README.md","_rev":"1-f0c683dfded08e916d829e26e3f9c452"}