www/.eslint/import.ts
2025-05-28 13:43:44 +12:00

64 lines
1.6 KiB
TypeScript

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'],
},
},
},
]