Skip to content

Commit 9d743b2

Browse files
authored
feat: migrate repo to eslint v9 (#5476)
* feat: upgrade `eslint` config to `flat` config * chore: upgrade `eslint` to `v9` * chore: update `pnpm` lockfile * chore: migrate `apps/docs` to eslint `flat` config * chore: migrate `apps/frontend` to eslint `flat` config * chore: disable unnecessary `eslint-disable-*` comments * fix: ignore auto `generated` files * fix: remove `deprecated` lint option * chore: migrate `apps/hasura-clickhouse` to eslint `flat` config * chore: migrate `apps/hasura2` to eslint `flat` config * chore: migrate `lib/oss-artifact-validators` to eslint `flat` config * chore: migrate `lib/utils` to eslint `flat` config * chore: migrate `ops/external-prs` to eslint `flat` config * chore: migrate `ops/github-app-utils` to eslint `flat` config
1 parent 1c31ce1 commit 9d743b2

File tree

25 files changed

+356
-433
lines changed

25 files changed

+356
-433
lines changed

.eslintrc.js

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

.lintstagedrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"**/!(.eslintrc)*.{js,jsx,ts,tsx,sol}": [
3-
"eslint --fix --ignore-path .gitignore --max-warnings 0",
3+
"eslint --fix --max-warnings 0 --no-ignore",
44
"prettier --ignore-path .gitignore --write",
55
"prettier --ignore-path .gitignore --log-level warn --check"
66
],

apps/docs/.eslintrc.json

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

apps/docs/eslint.config.mjs

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,8 @@
11
import path from "node:path";
2-
import { fileURLToPath } from "node:url";
3-
import js from "@eslint/js";
4-
import { FlatCompat } from "@eslint/eslintrc";
52
import { includeIgnoreFile } from "@eslint/compat";
3+
import rootConfig from "../../eslint.config.mjs";
64

7-
const __filename = fileURLToPath(import.meta.url);
8-
const __dirname = path.dirname(__filename);
9-
const gitignorePath = path.resolve(__dirname, ".gitignore");
10-
const compat = new FlatCompat({
11-
baseDirectory: __dirname,
12-
recommendedConfig: js.configs.recommended,
13-
allConfig: js.configs.all
14-
});
5+
const gitignorePath = path.resolve(new URL(".", import.meta.url).pathname, ".gitignore");
156

167
export default [
178
includeIgnoreFile(gitignorePath),
@@ -32,13 +23,13 @@ export default [
3223
"**/yarn-debug.log*",
3324
"**/yarn-error.log*",
3425
],
35-
}, ...compat.extends("../../.eslintrc.js"), {
26+
}, ...rootConfig, {
3627
languageOptions: {
3728
ecmaVersion: 5,
3829
sourceType: "script",
3930

4031
parserOptions: {
41-
project: ["./apps/docs/tsconfig.json"],
32+
project: ["./tsconfig.json"],
4233
},
4334
},
4435

apps/docs/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"write-heading-ids": "docusaurus write-heading-ids",
1818
"lint": "pnpm lint:eslint && pnpm lint:prettier",
1919
"lint:eslint": "eslint --max-warnings 0 .",
20-
"lint:prettier": "prettier --ignore-path ../../.gitignore --ignore-path .gitignore --ignore-path .prettierignore --log-level warn --check **/*.{js,jsx,ts,tsx,sol,md,json}",
20+
"lint:prettier": "prettier --ignore-path ../../.gitignore --ignore-path .gitignore --ignore-path .prettierignore --log-level warn --check **/*.{js,ts,tsx,md,json}",
2121
"plasmic:update": "pnpm update @plasmicapp/cli @plasmicapp/react-web",
2222
"plasmic:sync": "pnpm plasmic sync --yes --force",
2323
"update:deps": "ncu -i"

apps/frontend/components/widgets/oso-navbar.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,6 @@ const DEFAULT_MENU_ITEMS: NavBarItem[] = [
127127
},
128128
];
129129

130-
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
131130
type OsoNavbarProps = {
132131
className?: string; // Plasmic CSS class
133132
menuItems?: NavBarItem[]; // Override default menu items

apps/frontend/eslint.config.mjs

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
import { defineConfig } from "eslint/config";
2+
import { includeIgnoreFile } from "@eslint/compat";
3+
import noRelativeImportPaths from "eslint-plugin-no-relative-import-paths";
4+
import tsParser from "@typescript-eslint/parser";
5+
import path from "node:path";
6+
import { fileURLToPath } from "node:url";
7+
import js from "@eslint/js";
8+
import { FlatCompat } from "@eslint/eslintrc";
9+
import { fixupConfigRules } from "@eslint/compat";
10+
import rootConfig from "../../eslint.config.mjs";
11+
import { resolveFlatConfig } from "@leancodepl/resolve-eslint-flat-config";
12+
13+
const __filename = fileURLToPath(import.meta.url);
14+
const __dirname = path.dirname(__filename);
15+
const gitignorePath = fileURLToPath(new URL(".gitignore", import.meta.url));
16+
const compat = new FlatCompat({
17+
baseDirectory: __dirname,
18+
recommendedConfig: js.configs.recommended,
19+
allConfig: js.configs.all,
20+
});
21+
22+
export default defineConfig(resolveFlatConfig([
23+
...rootConfig,
24+
includeIgnoreFile(gitignorePath),
25+
{
26+
ignores: ["lib/graphql/generated/**"],
27+
},
28+
...fixupConfigRules(compat.extends(
29+
"next/core-web-vitals",
30+
"plugin:storybook/recommended",
31+
)),
32+
{
33+
files: ["*.mjs", "*.js"],
34+
rules: {
35+
"@typescript-eslint/no-misused-promises": "off",
36+
"@typescript-eslint/no-floating-promises": "off",
37+
},
38+
},
39+
{
40+
files: ["**/*.{ts,tsx}"],
41+
42+
plugins: {
43+
"no-relative-import-paths": noRelativeImportPaths,
44+
},
45+
46+
languageOptions: {
47+
parser: tsParser,
48+
ecmaVersion: "latest",
49+
sourceType: "module",
50+
51+
parserOptions: {
52+
project: true,
53+
projectService: {
54+
allowDefaultProject: ["*.mjs"],
55+
},
56+
},
57+
},
58+
59+
rules: {
60+
"react-hooks/exhaustive-deps": "off",
61+
62+
"no-restricted-syntax": ["error", {
63+
selector: "Property[key.name='preview'][value.value=true]",
64+
message: "Make sure to turn 'preview' off before committing.",
65+
}],
66+
67+
"no-relative-import-paths/no-relative-import-paths": ["error", {
68+
rootDir: ".",
69+
prefix: "@",
70+
}],
71+
},
72+
},
73+
]));

apps/frontend/lib/clients/cloudflare-r2.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,6 @@ async function putObject(loc: ObjectLocation, body: ReadableStream) {
107107
partNumber++;
108108
};
109109

110-
// eslint-disable-next-line no-constant-condition
111110
while (true) {
112111
const { done, value } = await reader.read();
113112

apps/frontend/package.json

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
"dev": "pnpm codegen && next dev",
1414
"graphql:codegen": "dotenv -e .env.local -- graphql-codegen --require tsconfig-paths/register --config ./lib/graphql/codegen.ts && prettier --write ./lib/graphql/codegen.ts",
1515
"graphql:rover": "rover supergraph compose --elv2-license 'accept' --config ./supergraph-config.yaml > ./app/api/v1/graphql/supergraph.graphql",
16-
"lint": "tsc --noEmit && next lint && pnpm lint:eslint && pnpm lint:prettier",
17-
"lint:eslint": "eslint --ignore-path ../../.gitignore --ignore-path .gitignore --max-warnings 0 . --fix",
18-
"lint:prettier": "prettier --ignore-path ../../.gitignore --ignore-path .gitignore --log-level warn --check **/*.{js,jsx,ts,tsx,sol,md,json}",
16+
"lint": "tsc --noEmit && pnpm lint:eslint && pnpm lint:prettier",
17+
"lint:eslint": "eslint --max-warnings 0 . --fix",
18+
"lint:prettier": "prettier --ignore-path ../../.gitignore --ignore-path .gitignore --log-level warn --check **/*.{js,ts,tsx,md,json}",
1919
"start": "next start",
2020
"start-debug": "NODE_OPTIONS='--inspect' next dev",
2121
"supabase:codegen": "pnpm supabase:gentypes && pnpm supabase:zod",
@@ -125,9 +125,12 @@
125125
"devDependencies": {
126126
"@apollo/rover": "^0.35.0",
127127
"@chromatic-com/storybook": "^4.1.0",
128+
"@eslint/eslintrc": "^3.3.1",
129+
"@eslint/js": "^9.38.0",
128130
"@graphql-codegen/cli": "^5.0.7",
129131
"@graphql-codegen/client-preset": "^4.8.3",
130132
"@graphql-typed-document-node/core": "^3.2.0",
133+
"@leancodepl/resolve-eslint-flat-config": "^9.6.5",
131134
"@parcel/watcher": "^2.5.1",
132135
"@storybook/addon-a11y": "^9.1.2",
133136
"@storybook/addon-docs": "^9.1.2",

apps/hasura-clickhouse/.eslintrc.json

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

0 commit comments

Comments
 (0)