Skip to content

Commit

Permalink
feat!: upgrade typescript-eslint v7
Browse files Browse the repository at this point in the history
  • Loading branch information
sxzz committed Feb 19, 2024
1 parent 276e7f1 commit c6af273
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 73 deletions.
7 changes: 3 additions & 4 deletions package.json
Expand Up @@ -35,11 +35,9 @@
"prepublishOnly": "pnpm run build"
},
"peerDependencies": {
"eslint": "^8.0.0"
"eslint": "^8.56.0"
},
"dependencies": {
"@typescript-eslint/eslint-plugin": "^7.0.1",
"@typescript-eslint/parser": "^7.0.1",
"@unocss/eslint-plugin": "^0.58.5",
"eslint-config-prettier": "^9.1.0",
"eslint-define-config": "^1.24.1",
Expand All @@ -58,6 +56,7 @@
"jsonc-eslint-parser": "^2.4.0",
"local-pkg": "^0.5.0",
"prettier": "^3.2.5",
"typescript-eslint": "^7.0.1",
"vue-eslint-parser": "^9.4.2",
"yaml-eslint-parser": "^1.2.2"
},
Expand All @@ -71,7 +70,7 @@
"typescript": "^5.3.3"
},
"engines": {
"node": ">=16.14.0"
"node": "^18.18.0 || >=20.0.0"
},
"prettier": "@sxzz/prettier-config"
}
32 changes: 23 additions & 9 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

87 changes: 42 additions & 45 deletions src/configs/typescript.ts
@@ -1,59 +1,56 @@
import { GLOB_JS, GLOB_TS, GLOB_TSX } from '../globs'
import { parserTypeScript, pluginAntfu, pluginTypeScript } from '../plugins'
import { tseslint } from '../plugins'
import { restrictedSyntaxJs } from './javascript'
import type { FlatESLintConfigItem } from 'eslint-define-config'
import type { FlatESLintConfigItem, Rules } from 'eslint-define-config'

export const typescriptRules: Rules = {
'@typescript-eslint/ban-ts-comment': 'off',
'@typescript-eslint/ban-types': 'off',
'@typescript-eslint/consistent-type-assertions': [
'error',
{
assertionStyle: 'as',
objectLiteralTypeAssertions: 'allow-as-parameter',
},
],
'@typescript-eslint/consistent-type-imports': [
'error',
{ disallowTypeAnnotations: false, fixStyle: 'inline-type-imports' },
],
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-import-type-side-effects': 'error',
'@typescript-eslint/no-non-null-assertion': 'off',
'@typescript-eslint/no-redeclare': 'error',

// handled by unused-imports/no-unused-imports
'@typescript-eslint/no-unused-vars': 'off',

'@typescript-eslint/prefer-as-const': 'warn',
'@typescript-eslint/prefer-literal-enum-member': [
'error',
{ allowBitwiseExpressions: true },
],

'no-restricted-syntax': [
'error',
...restrictedSyntaxJs,
'TSEnumDeclaration[const=true]',
],
}

export const typescript: FlatESLintConfigItem[] = [
{
...(tseslint.config({
extends: [...tseslint.configs.recommended],
files: [GLOB_TS, GLOB_TSX],
languageOptions: {
parser: parserTypeScript,
parser: tseslint.parser,
parserOptions: {
sourceType: 'module',
},
},
plugins: {
'@typescript-eslint': pluginTypeScript,
antfu: pluginAntfu,
},
rules: {
...pluginTypeScript.configs['eslint-recommended'].overrides![0].rules,
...pluginTypeScript.configs.strict.rules,

'@typescript-eslint/ban-ts-comment': 'off',
'@typescript-eslint/ban-types': 'off',
'@typescript-eslint/consistent-type-assertions': [
'error',
{
assertionStyle: 'as',
objectLiteralTypeAssertions: 'allow-as-parameter',
},
],
'@typescript-eslint/consistent-type-imports': [
'error',
{ disallowTypeAnnotations: false, fixStyle: 'inline-type-imports' },
],
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-import-type-side-effects': 'error',
'@typescript-eslint/no-non-null-assertion': 'off',
'@typescript-eslint/no-redeclare': 'error',

// handled by unused-imports/no-unused-imports
'@typescript-eslint/no-unused-vars': 'off',
rules: typescriptRules,
}) as FlatESLintConfigItem[]),

'@typescript-eslint/prefer-as-const': 'warn',
'@typescript-eslint/prefer-literal-enum-member': [
'error',
{ allowBitwiseExpressions: true },
],

'no-restricted-syntax': [
'error',
...restrictedSyntaxJs,
'TSEnumDeclaration[const=true]',
],
},
},
{
files: ['**/*.d.ts'],
rules: {
Expand Down
16 changes: 4 additions & 12 deletions src/configs/vue.ts
@@ -1,8 +1,7 @@
import { getPackageInfoSync } from 'local-pkg'
import tsPlugin from '@typescript-eslint/eslint-plugin'
import { GLOB_VUE } from '../globs'
import { parserVue, pluginVue } from '../plugins'
import { typescript } from './typescript'
import { parserVue, pluginVue, tseslint } from '../plugins'
import { typescriptRules } from './typescript'
import type { FlatESLintConfigItem, Rules } from 'eslint-define-config'

export function getVueVersion() {
Expand Down Expand Up @@ -110,19 +109,12 @@ export const vue: FlatESLintConfigItem[] = [
},
},
plugins: {
'@typescript-eslint': tsPlugin,
'@typescript-eslint': tseslint.plugin,
vue: pluginVue,
},
processor: pluginVue.processors['.vue'],
rules: {
...typescript[0].rules,
},
},
{
plugins: {
vue: pluginVue,
},
rules: {
...typescriptRules,
...(isVue3 ? vue3Rules : vue2Rules),
...vueCustomRules,
},
Expand Down
5 changes: 2 additions & 3 deletions src/plugins.ts
Expand Up @@ -19,8 +19,8 @@ export const pluginComments = interopDefault(_pluginComments)
import * as _pluginMarkdown from 'eslint-plugin-markdown'
export const pluginMarkdown = interopDefault(_pluginMarkdown)

import * as _pluginTypeScript from '@typescript-eslint/eslint-plugin'
export const pluginTypeScript = interopDefault(_pluginTypeScript)
import tseslint from 'typescript-eslint'
export { tseslint }

// @ts-expect-error missing types
import * as _pluginUnicorn from 'eslint-plugin-unicorn'
Expand Down Expand Up @@ -51,7 +51,6 @@ export * as pluginYml from 'eslint-plugin-yml'
// @ts-expect-error missing types
export * as pluginSortKeys from 'eslint-plugin-sort-keys'

export * as parserTypeScript from '@typescript-eslint/parser'
export * as parserVue from 'vue-eslint-parser'
export * as parserYml from 'yaml-eslint-parser'
export * as parserJsonc from 'jsonc-eslint-parser'

0 comments on commit c6af273

Please sign in to comment.