{"_id":"@boltz.one/eslint-config","_rev":"2-32c2414ade192b08e80e5876182d6d21","name":"@boltz.one/eslint-config","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@boltz.one/eslint-config","version":"0.1.0","license":"MIT","_id":"@boltz.one/eslint-config@0.1.0","maintainers":[{"name":"dknguyen","email":"dknguyen2304@gmail.com"}],"homepage":"https://github.com/boltz-one/core#readme","bugs":{"url":"https://github.com/boltz-one/core/issues"},"dist":{"shasum":"750fa4439bdceca04b87b0942c7fd6e6927ca050","tarball":"https://registry.npmjs.org/@boltz.one/eslint-config/-/eslint-config-0.1.0.tgz","fileCount":5,"integrity":"sha512-9JAoaMiZN9/kmaM46v2rVsHl7QIGbzjhi2R2cTe3m36AaOKRiV8dWYXckzlzAAo9kuZ6AWx5qkkNP+sxRgGVIg==","signatures":[{"sig":"MEUCIBUiesrXvmFMl7yCR7YY/r5YAa3ZSX64uTzCvEot2tsqAiEA66qVT0lqj4o64YtBY+t+WoycYmYKcS+6Y2gj9W12dfU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4842},"type":"module","exports":{"./base":"./base.js","./next-js":"./next.js","./react-internal":"./react-internal.js"},"gitHead":"0d5b40f528bb0e09fab2339801560a35a6b48c66","_npmUser":{"name":"dknguyen","email":"dknguyen2304@gmail.com"},"repository":{"url":"git+https://github.com/boltz-one/core.git","type":"git","directory":"packages/eslint-config"},"_npmVersion":"10.9.8","description":"ESLint config dùng chung cho monorepo Boltz One: base, next-js, react-internal","directories":{},"_nodeVersion":"22.22.3","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.1","globals":"^16.5.0","@eslint/js":"^9.39.1","typescript":"^5.9.2","typescript-eslint":"^8.50.0","eslint-plugin-react":"^7.37.5","eslint-plugin-turbo":"^2.7.1","eslint-config-prettier":"^10.1.1","eslint-plugin-only-warn":"^1.1.0","@next/eslint-plugin-next":"^16.2.0","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-config_0.1.0_1782009628927_0.0052871279865494","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@boltz.one/eslint-config","version":"0.1.1","description":"ESLint config dùng chung cho monorepo Boltz One: base, next-js, react-internal","type":"module","license":"MIT","repository":{"type":"git","url":"git+https://github.com/boltz-one/core.git","directory":"packages/eslint-config"},"exports":{"./base":"./base.js","./next-js":"./next.js","./react-internal":"./react-internal.js"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"dependencies":{"@eslint/js":"^9.39.1","@next/eslint-plugin-next":"^16.2.0","eslint-config-prettier":"^10.1.1","eslint-plugin-only-warn":"^1.1.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.2.0","eslint-plugin-turbo":"^2.7.1","globals":"^16.5.0","typescript-eslint":"^8.50.0"},"peerDependencies":{"eslint":"^9.39.1","typescript":">=5.9.2"},"devDependencies":{"eslint":"^9.39.1","typescript":"^5.9.2"},"_id":"@boltz.one/eslint-config@0.1.1","gitHead":"9d17d1155e5867b5d733347e63495ae345c35f0d","bugs":{"url":"https://github.com/boltz-one/core/issues"},"homepage":"https://github.com/boltz-one/core#readme","_nodeVersion":"22.22.3","_npmVersion":"10.9.8","dist":{"integrity":"sha512-2YRWzerpcDwFcfjP0py3vgVONRVN8J4P3KEShlNp5cuoMPsyoZZwkJXT6wV/KnFtg7x4EZh2MBLhxVydiCT4vA==","shasum":"8b52b226af990491fa107e75895dc0b16dbba4b6","tarball":"https://registry.npmjs.org/@boltz.one/eslint-config/-/eslint-config-0.1.1.tgz","fileCount":5,"unpackedSize":7842,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHi2+5S0LBcbKfz6VC9AkXxITl8BFhrCg1jVDDm5QYCUAiBSrgMxduojYpZhvgFaFiig2RXVGxSiXklQU4j1sV6m2A=="}]},"_npmUser":{"name":"dknguyen","email":"dknguyen2304@gmail.com"},"directories":{},"maintainers":[{"name":"dknguyen","email":"dknguyen2304@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eslint-config_0.1.1_1782010238856_0.4806553610634794"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-21T02:40:28.809Z","modified":"2026-06-21T02:50:39.116Z","0.1.0":"2026-06-21T02:40:29.081Z","0.1.1":"2026-06-21T02:50:38.998Z"},"bugs":{"url":"https://github.com/boltz-one/core/issues"},"license":"MIT","homepage":"https://github.com/boltz-one/core#readme","repository":{"type":"git","url":"git+https://github.com/boltz-one/core.git","directory":"packages/eslint-config"},"description":"ESLint config dùng chung cho monorepo Boltz One: base, next-js, react-internal","maintainers":[{"name":"dknguyen","email":"dknguyen2304@gmail.com"}],"readme":"# @boltz.one/eslint-config\n\nBộ ESLint config (flat config, ESLint v9+) dùng chung cho hệ sinh thái Boltz One.\nĐóng gói sẵn các plugin và rule thống nhất cho TypeScript, React, Next.js và\nTurborepo nên app/lib tiêu thụ chỉ cần `extends` một dòng.\n\n## Cài đặt\n\n```sh\nbun add -d @boltz.one/eslint-config eslint typescript\n# hoặc: npm i -D @boltz.one/eslint-config eslint typescript\n```\n\n`eslint` và `typescript` được khai báo là `peerDependencies` (consumer tự cài).\nToàn bộ plugin (`typescript-eslint`, `eslint-plugin-react`, `@next/eslint-plugin-next`, …)\nđã là `dependencies` của package nên được cài tự động — không cần khai báo thủ công.\n\n## Các config khả dụng\n\n| Entry point | Export | Dùng cho |\n| --- | --- | --- |\n| `@boltz.one/eslint-config/base` | `config` | Mọi package TypeScript (Node/library). Nền tảng cho 2 config còn lại. |\n| `@boltz.one/eslint-config/react-internal` | `config` | Thư viện/app React (không phải Next.js). |\n| `@boltz.one/eslint-config/next-js` | `nextJsConfig` | App Next.js. |\n\n### `base`\n\n- `@eslint/js` recommended + `typescript-eslint` recommended.\n- `eslint-config-prettier` (tắt các rule format xung đột với Prettier).\n- `eslint-plugin-turbo`: cảnh báo biến môi trường chưa khai báo trong `turbo.json`.\n- `eslint-plugin-only-warn`: hạ mọi lỗi xuống mức `warn` để DX mượt hơn.\n- `@typescript-eslint/no-unused-vars`: bỏ qua biến/tham số/error có tiền tố `_`.\n- Bỏ qua `dist/**`.\n\n### `react-internal`\n\nKế thừa `base` và bổ sung: `eslint-plugin-react` (flat recommended),\n`eslint-plugin-react-hooks`, globals `browser` + `serviceworker`, tắt\n`react/react-in-jsx-scope` và `react/no-unescaped-entities`.\n\n### `next-js`\n\nKế thừa `base` và bổ sung cấu hình React + `@next/eslint-plugin-next`\n(recommended + core-web-vitals), globals `serviceworker`, ignore mặc định của\nNext (`.next/**`, `out/**`, `build/**`, `next-env.d.ts`).\n\n## Sử dụng\n\nESLint v9 dùng flat config. Tạo `eslint.config.js` (hoặc `.mjs`) ở gốc package.\n\n**Package Node / library:**\n\n```js\nimport { config } from \"@boltz.one/eslint-config/base\";\n\n/** @type {import(\"eslint\").Linter.Config[]} */\nexport default config;\n```\n\n**Thư viện / app React:**\n\n```js\nimport { config } from \"@boltz.one/eslint-config/react-internal\";\n\n/** @type {import(\"eslint\").Linter.Config[]} */\nexport default config;\n```\n\n**App Next.js:**\n\n```js\nimport { nextJsConfig } from \"@boltz.one/eslint-config/next-js\";\n\n/** @type {import(\"eslint\").Linter.Config[]} */\nexport default nextJsConfig;\n```\n\nCó thể nối thêm rule riêng:\n\n```js\nimport { config } from \"@boltz.one/eslint-config/base\";\n\nexport default [\n  ...config,\n  {\n    rules: {\n      \"no-console\": \"warn\",\n    },\n  },\n];\n```\n\n## Script gợi ý\n\n```jsonc\n{\n  \"scripts\": {\n    \"lint\": \"eslint . --max-warnings 0\"\n  }\n}\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}