Skip to content

Commit 60514b5

Browse files
migrate formatting to eslint v9 (#247)
Signed-off-by: Kangrui Johann Ye <[email protected]>
1 parent 0a3f8ea commit 60514b5

File tree

30 files changed

+346
-190
lines changed

30 files changed

+346
-190
lines changed

.eslintrc.format.js

Lines changed: 0 additions & 12 deletions
This file was deleted.

eslint.config.mjs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import tseslint from 'typescript-eslint';
1+
import {cloudflightTypescriptConfig} from '@cloudflight/eslint-plugin-typescript';
22
import {includeIgnoreFile} from '@eslint/compat';
33
import {dirname, resolve} from 'node:path';
44
import {fileURLToPath} from 'node:url';
5-
import { cloudflightTypescriptConfig } from '@cloudflight/eslint-plugin-typescript';
5+
import tseslint from 'typescript-eslint';
66

77
const filename = fileURLToPath(import.meta.url);
88
const directory = dirname(filename);
@@ -18,16 +18,15 @@ export default tseslint.config(
1818
'packages/eslint-plugin-typescript/src/configs/index.ts',
1919
'packages/eslint-plugin-typescript/src/configs/json.ts',
2020
'packages/eslint-plugin-typescript/src/configs/package.ts',
21-
'packages/eslint-plugin-typescript/src/configs/format.ts',
2221
'packages/eslint-plugin-typescript/src/configs/rxjs.ts',
2322
'packages/eslint-plugin-typescript/src/rules/package/*',
2423
'packages/eslint-plugin-typescript/src/rules/ts-config/*',
2524
'packages/eslint-plugin-typescript/src/rules/typescript/*.spec.ts',
2625
'scripts/*',
27-
'.eslintrc.format.js',
2826
'eslint.config.mjs',
27+
'eslint.format.mjs',
2928
'jest.config*.ts',
30-
]
29+
],
3130
},
3231
...cloudflightTypescriptConfig,
3332
{

eslint.format.mjs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import {cloudflightTypescriptFormatConfig} from '@cloudflight/eslint-plugin-typescript';
2+
import {includeIgnoreFile} from '@eslint/compat';
3+
import {dirname, resolve} from 'node:path';
4+
import {fileURLToPath} from 'node:url';
5+
import tseslint from 'typescript-eslint';
6+
7+
const filename = fileURLToPath(import.meta.url);
8+
const directory = dirname(filename);
9+
const gitignorePath = resolve(directory, '.gitignore');
10+
11+
export default tseslint.config(
12+
includeIgnoreFile(gitignorePath),
13+
...cloudflightTypescriptFormatConfig,
14+
);

package.json

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@cloudflight/eslint-plugin",
3-
"version": "1.0.0-rc9",
3+
"version": "1.0.0-rc10",
44
"private": true,
55
"volta": {
66
"node": "20.12.2",
@@ -16,7 +16,7 @@
1616
"description": "",
1717
"scripts": {
1818
"build": "yarn workspaces foreach -pA --topological-dev run build-package",
19-
"lint": "eslint .",
19+
"lint": "eslint . && eslint -c eslint.format.mjs .",
2020
"test": "yarn workspaces foreach -pA run test-package",
2121
"postinstall": "husky",
2222
"publish-workspaces": "node ./scripts/prepare.js && yarn workspaces foreach -A --no-private npm publish"
@@ -30,6 +30,7 @@
3030
"devDependencies": {
3131
"@eslint/compat": "1.2.0",
3232
"@eslint/js": "9.11.1",
33+
"@stylistic/eslint-plugin": "2.9.0",
3334
"@types/eslint": "9.6.1",
3435
"@types/eslint__js": "8.42.3",
3536
"@types/estree": "1.0.6",
@@ -47,6 +48,7 @@
4748
"eslint-plugin-jsx-a11y": "6.10.0",
4849
"eslint-plugin-n": "17.10.3",
4950
"eslint-plugin-no-unsanitized": "4.1.2",
51+
"eslint-plugin-perfectionist": "3.9.0",
5052
"eslint-plugin-react": "7.37.1",
5153
"eslint-plugin-react-hooks": "5.0.0",
5254
"eslint-plugin-rxjs": "5.0.3",
@@ -61,7 +63,7 @@
6163
"typescript-eslint": "8.8.0"
6264
},
6365
"lint-staged": {
64-
"*.js": "echo 'Not Implemented'",
65-
"*.ts": "echo 'Not Implemented'"
66+
"*.js": "eslint -c eslint.format.mjs --fix",
67+
"*.ts": "eslint -c eslint.format.mjs --fix"
6668
}
6769
}

packages/eslint-plugin-angular/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@cloudflight/eslint-plugin-angular",
3-
"version": "1.0.0-rc9",
3+
"version": "1.0.0-rc10",
44
"description": "Cloudflight eslint-plugin & eslint-config for angular",
55
"volta": {
66
"extends": "../../package.json"

packages/eslint-plugin-angular/src/index.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
import tseslint from 'typescript-eslint';
2-
import angular from 'angular-eslint';
31
import {cloudflightTypescriptConfig} from '@cloudflight/eslint-plugin-typescript';
4-
import {eslintRules} from './configs/eslint';
5-
import {typescriptEslintRules} from './configs/typescript-eslint';
2+
import angular from 'angular-eslint';
3+
import tseslint from 'typescript-eslint';
4+
65
import {angularEslintRules} from './configs/angular-eslint';
76
import {angularTemplateEslintRules} from './configs/angular-eslint-template';
7+
import {eslintRules} from './configs/eslint';
8+
import {typescriptEslintRules} from './configs/typescript-eslint';
89

910
export const cloudflightAngularTypescriptConfig = tseslint.config(
1011
...cloudflightTypescriptConfig,
@@ -19,7 +20,7 @@ export const cloudflightAngularTypescriptConfig = tseslint.config(
1920
...eslintRules,
2021
...typescriptEslintRules,
2122
...angularEslintRules,
22-
}
23+
},
2324
},
2425
);
2526

@@ -35,8 +36,8 @@ export const cloudflightAngularTemplateConfig = tseslint.config(
3536
...angularTemplateEslintRules,
3637
// todo: this should be its own config
3738
// ...formatAngularTemplateEslintRules,
38-
}
39-
}
39+
},
40+
},
4041
);
4142

4243
export const cloudflightAngularConfig = tseslint.config(

packages/eslint-plugin-node/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@cloudflight/eslint-plugin-node",
3-
"version": "1.0.0-rc9",
3+
"version": "1.0.0-rc10",
44
"description": "Cloudflight eslint-plugin & eslint-config for node",
55
"volta": {
66
"extends": "../../package.json"

packages/eslint-plugin-node/src/configs/security.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ function warningEntryToError(value: TSESLint.Linter.RuleEntry): TSESLint.Linter.
1919
function warningLevelToError(level: TSESLint.Linter.RuleLevel): TSESLint.Linter.RuleLevel {
2020
if (level === 'warn') {
2121
return 'error';
22-
} else if (level === 1) {
22+
}
23+
else if (level === 1) {
2324
return 'error';
2425
}
2526

packages/eslint-plugin-node/src/index.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
import tseslint from 'typescript-eslint';
2-
import { cloudflightTypescriptConfig } from '@cloudflight/eslint-plugin-typescript';
1+
import {cloudflightTypescriptConfig} from '@cloudflight/eslint-plugin-typescript';
2+
import pluginNode from 'eslint-plugin-n';
33
import nounsanitized from 'eslint-plugin-no-unsanitized';
44
import pluginSecurity from 'eslint-plugin-security';
5-
import pluginNode from 'eslint-plugin-n';
6-
import {securityRules} from './configs/security';
7-
import {nodeRules} from './configs/node';
5+
import tseslint from 'typescript-eslint';
6+
87
import {importEslintRules} from './configs/import';
8+
import {nodeRules} from './configs/node';
9+
import {securityRules} from './configs/security';
910

1011
export const cloudflightNodeConfig = tseslint.config(
1112
...cloudflightTypescriptConfig,
@@ -21,6 +22,6 @@ export const cloudflightNodeConfig = tseslint.config(
2122
...nodeRules,
2223
...securityRules,
2324
...importEslintRules,
24-
}
25+
},
2526
},
2627
);

packages/eslint-plugin-react/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@cloudflight/eslint-plugin-react",
3-
"version": "1.0.0-rc9",
3+
"version": "1.0.0-rc10",
44
"description": "Cloudflight eslint-plugin & eslint-config for React",
55
"volta": {
66
"extends": "../../package.json"

packages/eslint-plugin-react/src/index.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
1-
import tseslint from 'typescript-eslint';
1+
import type {TSESLint} from '@typescript-eslint/utils';
2+
23
import {
34
cloudflightTypescriptBaseConfig,
45
cloudflightTypescriptConfig, cloudflightTypescriptDisableTypeCheckedConfig,
5-
cloudflightTypescriptImportConfig
6+
cloudflightTypescriptImportConfig,
67
} from '@cloudflight/eslint-plugin-typescript';
7-
import type {TSESLint} from '@typescript-eslint/utils';
88
import * as tsParser from '@typescript-eslint/parser';
9+
import jsxA11y from 'eslint-plugin-jsx-a11y';
10+
import tseslint from 'typescript-eslint';
911
// see https://github.com/jsx-eslint/eslint-plugin-react/issues/3838
1012
// eslint-disable-next-line import-x/default
1113
import react from 'eslint-plugin-react';
1214
import pluginReactHooks from 'eslint-plugin-react-hooks';
13-
import jsxA11y from 'eslint-plugin-jsx-a11y';
15+
1416
import {reactRules} from './configs/react';
1517

1618
export const cloudflightReactConfig = tseslint.config(
@@ -51,7 +53,7 @@ export const cloudflightReactConfig = tseslint.config(
5153
rules: {
5254
...pluginReactHooks.configs.recommended.rules,
5355
...reactRules,
54-
}
56+
},
5557
},
5658
{
5759
files: ['**/*.{js,jsx,mjs,cjs}'],

packages/eslint-plugin-typescript/README.md

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -73,24 +73,26 @@ In your `package.json` add the following:
7373
}
7474
```
7575

76-
Create a new file called `.eslintrc.format.js` and add the following:
76+
Create a new file called `eslint.format.mjs` and add the following:
7777

78-
```
79-
require('@rushstack/eslint-patch/modern-module-resolution');
80-
81-
module.exports = {
82-
root: true,
83-
plugins: ['@cloudflight/typescript'],
84-
extends: ['plugin:@cloudflight/typescript/formatting'],
85-
ignorePatterns: ['jest.config*.ts'],
86-
env: {
87-
es6: true,
88-
node: true,
89-
},
90-
};
78+
```ts
79+
import tseslint from 'typescript-eslint';
80+
import {includeIgnoreFile} from '@eslint/compat';
81+
import {dirname, resolve} from 'node:path';
82+
import {fileURLToPath} from 'node:url';
83+
import {cloudflightTypescriptFormatConfig} from '@cloudflight/eslint-plugin-typescript';
84+
85+
const filename = fileURLToPath(import.meta.url);
86+
const directory = dirname(filename);
87+
const gitignorePath = resolve(directory, '.gitignore');
88+
89+
export default tseslint.config(
90+
includeIgnoreFile(gitignorePath),
91+
...cloudflightTypescriptFormatConfig,
92+
);
9193
```
9294

93-
With the command `eslint . --config .eslintrc.format.js` your project can be checked for formatting violations.
95+
With the command `eslint -c eslint.format.mjs .` your project can be checked for formatting violations.
9496

9597
### Pre-Commit Hook
9698

@@ -102,7 +104,7 @@ To automatically format your code before committing, set up [husky](https://typi
102104
{
103105
// ...
104106
"lint-staged": {
105-
"*.ts": "eslint --config .eslintrc.format.cjs --fix"
107+
"*.ts": "eslint -c eslint.format.mjs --fix"
106108
}
107109
}
108110
```

packages/eslint-plugin-typescript/jest.config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type {Config} from 'jest';
2+
23
import {baseJestConfig} from '../../jest.config.base';
34

45
const jestConfig: Config = {

packages/eslint-plugin-typescript/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@cloudflight/eslint-plugin-typescript",
3-
"version": "1.0.0-rc9",
3+
"version": "1.0.0-rc10",
44
"description": "Cloudflight eslint-plugin & eslint-config for typescript",
55
"volta": {
66
"extends": "../../package.json"

packages/eslint-plugin-typescript/src/configs/custom.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {TSESLint} from '@typescript-eslint/utils';
1+
import type {TSESLint} from '@typescript-eslint/utils';
22

33
import {NoMomentJsRuleName} from '../rules/typescript/no-moment-js';
44
import {NoOnEventAssignName} from '../rules/typescript/no-on-event-assign';

packages/eslint-plugin-typescript/src/configs/eslint.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {TSESLint} from '@typescript-eslint/utils';
1+
import type {TSESLint} from '@typescript-eslint/utils';
22

33
export const eslintRules: TSESLint.Linter.RulesRecord = {
44
complexity: ['error', {max: 20}],

0 commit comments

Comments
 (0)