feat(eslint): add eslint flat config

This commit is contained in:
Shintaro Jokagi 2025-05-28 13:38:11 +12:00
parent 1937be58a6
commit 01f4dac75d
No known key found for this signature in database
GPG key ID: 0DDF8FA44C9A0DA8
16 changed files with 4607 additions and 2125 deletions

63
.eslint/import.ts Normal file
View file

@ -0,0 +1,63 @@
import type { Linter } from "eslint";
// @ts-expect-error - no types available
import importPlugin from "eslint-plugin-import";
import { sharedFiles } from "./shared";
export const importConfigArray: Linter.Config[] = [
{
name: "eslint/import",
files: sharedFiles,
plugins: {
import: importPlugin,
},
rules: {
...importPlugin.configs.recommended.rules,
...importPlugin.configs.typescript.rules,
"import/order": [
"error",
{
groups: [
"builtin",
"external",
"internal",
["parent", "sibling"],
"index",
"object",
"type",
],
"newlines-between": "always",
alphabetize: {
order: "asc",
caseInsensitive: true,
},
pathGroups: [
{
pattern: "@/**",
group: "internal",
position: "before",
},
],
pathGroupsExcludedImportTypes: ["builtin"],
},
],
"import/no-unresolved": "off", // TypeScript handles this
"import/no-duplicates": ["error", { "prefer-inline": true }],
"import/consistent-type-specifier-style": ["error", "prefer-inline"],
"import/first": "error",
"import/newline-after-import": "error",
"import/no-default-export": "off", // Allow default exports
},
settings: {
"import/resolver": {
typescript: {
alwaysTryTypes: true,
},
node: true,
},
"import/parsers": {
"@typescript-eslint/parser": [".ts", ".tsx"],
},
},
},
];