Skip to content

Commit 035beab

Browse files
chore(deps): upgrade ESLint v8 → v9 and migrate to flat config (#8769)
* chore(deps-dev): bump eslint from 8.57.1 to 9.26.0 Bumps [eslint](https://github.com/eslint/eslint) from 8.57.1 to 9.26.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/v9.26.0/CHANGELOG.md) - [Commits](eslint/eslint@v8.57.1...v9.26.0) --- updated-dependencies: - dependency-name: eslint dependency-version: 9.26.0 dependency-type: direct:development ... Signed-off-by: dependabot[bot] <support@github.com> * fix: update test to use exact string match for duration badge * fix: migrate to ESLint 9 flat config and upgrade plugins - Add eslint.config.mjs (flat config via FlatCompat) - Upgrade eslint-plugin-formatjs to ^4.14.0 (ESLint 9 support) - Upgrade eslint-plugin-import to ^2.31.0 (removed API fix) - Upgrade eslint-plugin-react to ^7.37.0 (removed API fix) - Upgrade eslint-plugin-react-hooks to ^5.2.0 (ESLint 9 compat) - Add @eslint/compat ^2.0.0 * chore: remove legacy .eslintrc files and update lint scripts - Remove 12 .eslintrc.json/.cjs files (now dead code with flat config) - Remove deprecated --ext flag from app lint scripts * fix: restore missing Standalone react-refresh config and vs-code test/ ignore - Add react-refresh plugin override for apps/Standalone (was in .eslintrc.cjs) - Add apps/vs-code-designer/src/test/** to global ignores (was in .eslintrc.json) * fix: relax performance threshold in dereference test for CI runners --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carlos Castro <ccastrotrejo@microsoft.com>
1 parent af1b22f commit 035beab

File tree

21 files changed

+2052
-1207
lines changed

21 files changed

+2052
-1207
lines changed

.eslintrc.json

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

apps/Standalone/.eslintrc.cjs

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

apps/Standalone/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
"build": "vite build",
5858
"dev": "vite --force",
5959
"e2e": "vite --config vite.e2e.config.ts",
60-
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
60+
"lint": "eslint . --report-unused-disable-directives --max-warnings 0",
6161
"preview": "vite preview"
6262
},
6363
"type": "module"

apps/iframe-app/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"test:watch": "vitest --watch",
1414
"test:coverage": "vitest --coverage",
1515
"test:multi-session": "tsx test-multi-session.ts",
16-
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
16+
"lint": "eslint . --report-unused-disable-directives --max-warnings 0",
1717
"type-check": "tsc --noEmit"
1818
},
1919
"dependencies": {

apps/vs-code-designer/.eslintrc.json

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

apps/vs-code-designer/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
"vscode:designer:pack": "pnpm run vscode:designer:pack:step1 && pnpm run vscode:designer:pack:step2",
6262
"vscode:designer:pack:step1": "cd ./dist && npm install",
6363
"vscode:designer:pack:step2": "cd ./dist && vsce package",
64-
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
64+
"lint": "eslint . --report-unused-disable-directives --max-warnings 0",
6565
"test:extension-unit": "vitest run --retry=3",
6666
"vscode:designer:e2e:ui": "pnpm run build:ui && cd dist && extest setup-and-run ../out/test/**/*.js --coverage",
6767
"vscode:designer:e2e:headless": "pnpm run build:ui && cd dist && extest setup-and-run ../out/test/**/*.js --coverage"

apps/vs-code-react/.eslintrc.json

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

apps/vs-code-react/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
"scripts": {
4343
"build": "vite build",
4444
"build:extension": "vite build --outDir ../../vs-code-designer/dist/vs-code-react",
45-
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
45+
"lint": "eslint . --report-unused-disable-directives --max-warnings 0",
4646
"test:extension-unit": "vitest run --retry=3"
4747
},
4848
"type": "module"

eslint.config.mjs

Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
import path from "node:path";
2+
import { fileURLToPath } from "node:url";
3+
import js from "@eslint/js";
4+
import { FlatCompat } from "@eslint/eslintrc";
5+
import reactRefresh from "eslint-plugin-react-refresh";
6+
7+
const __filename = fileURLToPath(import.meta.url);
8+
const __dirname = path.dirname(__filename);
9+
const compat = new FlatCompat({
10+
baseDirectory: __dirname,
11+
recommendedConfig: js.configs.recommended,
12+
allConfig: js.configs.all,
13+
});
14+
15+
export default [
16+
// Global ignores (replaces .eslintignore + sub-project ignorePatterns)
17+
{
18+
ignores: [
19+
"**/node_modules/**",
20+
"**/build/**",
21+
"**/dist/**",
22+
"**/__test__/**",
23+
"**/__tests__/**",
24+
"**/compiled-lang/**",
25+
"**/test-results/**",
26+
"**/coverage/**",
27+
"**/__mocks__/**",
28+
"Localize/**",
29+
"apps/vs-code-designer/src/test/**",
30+
"apps/vs-code-react/**/test/**",
31+
],
32+
},
33+
34+
// Root .eslintrc.json converted via FlatCompat
35+
...compat.config({
36+
parser: "@typescript-eslint/parser",
37+
plugins: ["formatjs", "react", "react-hooks", "@typescript-eslint"],
38+
settings: {
39+
react: {
40+
version: "detect",
41+
},
42+
},
43+
extends: ["eslint:recommended"],
44+
overrides: [
45+
{
46+
files: ["*.ts", "*.tsx"],
47+
extends: [
48+
"plugin:react/recommended",
49+
"plugin:react-hooks/recommended",
50+
"plugin:import/recommended",
51+
"plugin:import/typescript",
52+
],
53+
rules: {
54+
"no-unused-vars": "off",
55+
"no-redeclare": "off",
56+
"no-undef": "off",
57+
58+
"no-restricted-syntax": ["error", {
59+
selector: "TSEnumDeclaration",
60+
message: "Don't use enums.",
61+
}],
62+
63+
"react-hooks/exhaustive-deps": ["warn", {
64+
additionalHooks: "useDebouncedEffect",
65+
}],
66+
67+
"react/jsx-no-useless-fragment": [1, {
68+
allowExpressions: true,
69+
}],
70+
71+
"import/no-unresolved": "off",
72+
73+
"@typescript-eslint/no-unused-vars": ["error", {
74+
argsIgnorePattern: "^_",
75+
destructuredArrayIgnorePattern: "^_",
76+
caughtErrorsIgnorePattern: "^_",
77+
}],
78+
79+
"@typescript-eslint/explicit-module-boundary-types": "off",
80+
"@typescript-eslint/no-explicit-any": "off",
81+
82+
"@typescript-eslint/consistent-type-assertions": ["error", {
83+
assertionStyle: "as",
84+
}],
85+
86+
"@typescript-eslint/consistent-type-imports": [2, {
87+
prefer: "type-imports",
88+
disallowTypeAnnotations: true,
89+
}],
90+
91+
"formatjs/enforce-id": ["error", {
92+
idInterpolationPattern: "[sha512:contenthash:base64:6]",
93+
}],
94+
95+
"formatjs/enforce-placeholders": ["error", {
96+
ignoreList: ["foo"],
97+
}],
98+
99+
"no-param-reassign": "off",
100+
"formatjs/enforce-default-message": ["error", "literal"],
101+
"formatjs/enforce-description": ["error", "literal"],
102+
"formatjs/no-multiple-whitespaces": [1],
103+
"formatjs/no-multiple-plurals": ["error"],
104+
105+
"formatjs/no-complex-selectors": ["error", {
106+
limit: 4,
107+
}],
108+
109+
"react/react-in-jsx-scope": 0,
110+
"react/prop-types": 0,
111+
},
112+
},
113+
{
114+
files: ["*.json"],
115+
parser: "jsonc-eslint-parser",
116+
rules: {},
117+
},
118+
],
119+
}),
120+
121+
// VS Code apps: additional rule overrides (from apps/vs-code-react and apps/vs-code-designer .eslintrc.json)
122+
{
123+
files: [
124+
"apps/vs-code-react/src/**/*.ts",
125+
"apps/vs-code-react/src/**/*.tsx",
126+
"apps/vs-code-designer/src/**/*.ts",
127+
"apps/vs-code-designer/src/**/*.tsx",
128+
],
129+
rules: {
130+
"@typescript-eslint/no-explicit-any": "off",
131+
"@typescript-eslint/no-namespace": "off",
132+
"react-hooks/rules-of-hooks": "off",
133+
},
134+
},
135+
{
136+
files: [
137+
"apps/vs-code-react/src/**/*.js",
138+
"apps/vs-code-react/src/**/*.jsx",
139+
"apps/vs-code-designer/src/**/*.js",
140+
"apps/vs-code-designer/src/**/*.jsx",
141+
],
142+
rules: {
143+
"@typescript-eslint/no-require-imports": "off",
144+
},
145+
},
146+
147+
// Standalone app: react-refresh plugin (from apps/Standalone/.eslintrc.cjs)
148+
{
149+
files: [
150+
"apps/Standalone/src/**/*.ts",
151+
"apps/Standalone/src/**/*.tsx",
152+
],
153+
plugins: {
154+
"react-refresh": reactRefresh,
155+
},
156+
rules: {
157+
"react-refresh/only-export-components": ["warn", { allowConstantExport: true }],
158+
},
159+
},
160+
];

libs/chatbot/.eslintrc.json

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

0 commit comments

Comments
 (0)