Migrate compliance-portal to the global ESLint config

The compliance-portal app still carried the per-workspace ESLint
scaffold that the rest of the monorepo dropped when linting was
centralized into the root eslint.config.mjs. It defined its own
local config, lint script, and lint-only devDeps, and was not
covered by the root lint script, so it was never linted.

Remove the local eslint.config.mjs, the lint script, and the
eslint/@probo/eslint-config devDeps, then add the app to the root
appDirs so the shared ts, react, and relay rule sets apply to it.

Replace the explicit per-directory list in the root lint script
with a bare `eslint .`, which the root config was already designed
for via its globalIgnores. Ignore pkg/** so the vendored minified
JS under the Go tree is not linted.

Signed-off-by: Émile Ré <emile@probo.com>
This commit is contained in:
Émile Ré
2026-06-19 17:41:03 +02:00
parent 5bc6452eb6
commit c9cc46d359
5 changed files with 80 additions and 17 deletions

View File

@@ -1,12 +0,0 @@
import { configs } from "@probo/eslint-config";
import { defineConfig } from "eslint/config";
export default defineConfig([
configs.base,
configs.ts,
configs.imports,
configs.react,
configs.relay,
configs.stylistic,
configs.languageOptions.browser,
]);

View File

@@ -6,7 +6,6 @@
"scripts": {
"dev": "vite --port 5175",
"build": "tsc -b && vite build",
"lint": "eslint . --concurrency 2",
"check": "tsc --noEmit -p tsconfig.app.json",
"preview": "vite preview"
},
@@ -20,7 +19,6 @@
"relay-runtime": "^21.0.1"
},
"devDependencies": {
"@probo/eslint-config": "1.0.0",
"@probo/eslint-plugin-relay-types": "^1.0.0",
"@tailwindcss/vite": "^4.3.1",
"@types/node": "^25.9.3",
@@ -30,7 +28,6 @@
"@types/relay-runtime": "^20.1.1",
"@vitejs/plugin-react": "^6.0.2",
"babel-plugin-relay": "^21.0.1",
"eslint": "^10.5.0",
"graphql": "^17.0.1",
"tailwindcss": "^4.3.1",
"typescript": "~6.0.3",

View File

@@ -4,7 +4,7 @@ import { defineConfig, globalIgnores } from "eslint/config";
// Workspaces that are linted by this root config. Each gets the shared rule
// sets below; everything else is ignored so a bare `eslint .` keeps the same
// scope as the previous per-workspace configs.
const appDirs = ["apps/console/**", "apps/trust/**"];
const appDirs = ["apps/console/**", "apps/trust/**", "apps/compliance-portal/**"];
const reactDirs = [...appDirs, "packages/ui/**"];
const lintedDirs = [...reactDirs, "packages/eslint-config/**"];
@@ -14,6 +14,7 @@ export default defineConfig([
configs.base,
globalIgnores([
"examples/**",
"pkg/**",
"packages/coredata/**",
"packages/cookie-banner/**",
"packages/emails/**",

77
package-lock.json generated
View File

@@ -25,6 +25,61 @@
"npm": "^11.8.0"
}
},
"apps/compliance-portal": {
"name": "@probo/compliance-portal",
"version": "0.0.0",
"dependencies": {
"@probo/ui": "1.0.0",
"clsx": "^2.1.1",
"react": "^19.2.7",
"react-dom": "^19.2.7",
"react-relay": "^21.0.1",
"react-router": "^8.0.0",
"relay-runtime": "^21.0.1"
},
"devDependencies": {
"@probo/eslint-plugin-relay-types": "^1.0.0",
"@tailwindcss/vite": "^4.3.1",
"@types/node": "^25.9.3",
"@types/react": "^19.2.17",
"@types/react-dom": "^19.2.3",
"@types/react-relay": "^18.2.1",
"@types/relay-runtime": "^20.1.1",
"@vitejs/plugin-react": "^6.0.2",
"babel-plugin-relay": "^21.0.1",
"graphql": "^17.0.1",
"tailwindcss": "^4.3.1",
"typescript": "~6.0.3",
"vite": "^8.0.16"
}
},
"apps/compliance-portal/node_modules/@types/node": {
"version": "25.9.4",
"resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.4.tgz",
"integrity": "sha512-dszCsrKb5U7ZsVZBWiHFklTloVl0mSEnWH/iZXfZUlI4rzCUnsvGmgqfuVRHL54ugE7/wRuxEIXRa2iMZ+BG6g==",
"dev": true,
"license": "MIT",
"dependencies": {
"undici-types": ">=7.24.0 <7.24.7"
}
},
"apps/compliance-portal/node_modules/graphql": {
"version": "17.0.1",
"resolved": "https://registry.npmjs.org/graphql/-/graphql-17.0.1.tgz",
"integrity": "sha512-8eWbg5Zcv/8o20nzEjHUGPTj20MLFJjc5kagbIPxbaeGxvFwpitJhemEC/k17n5+UD4M/9ea5rTuce78mELujQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": "^22.0.0 || ^24.0.0 || ^25.0.0 || >=26.0.0"
}
},
"apps/compliance-portal/node_modules/undici-types": {
"version": "7.24.6",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz",
"integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==",
"dev": true,
"license": "MIT"
},
"apps/console": {
"name": "@probo/console",
"version": "0.0.0",
@@ -3843,6 +3898,10 @@
"integrity": "sha512-WcfKz2GNn2vfDX8vXmJYbKxegPxVWHuDQ/pHdAn0HoZDXDFnEp/+x3qBQA+fEvtbPjjtjgAt2wIgJMlM7asx7g==",
"license": "MIT"
},
"node_modules/@probo/compliance-portal": {
"resolved": "apps/compliance-portal",
"link": true
},
"node_modules/@probo/console": {
"resolved": "apps/console",
"link": true
@@ -6831,6 +6890,24 @@
"@types/react": "^19.2.0"
}
},
"node_modules/@types/react-relay": {
"version": "18.2.1",
"resolved": "https://registry.npmjs.org/@types/react-relay/-/react-relay-18.2.1.tgz",
"integrity": "sha512-KgmFapsxAylhxcFfaAv5GZZJhTHnDvV8IDZVsUm5afpJUvgZC1Y68ssfOGsFfiFY/2EhxHM/YPfpdKbfmF3Ecg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/react": "*",
"@types/relay-runtime": "*"
}
},
"node_modules/@types/relay-runtime": {
"version": "20.1.1",
"resolved": "https://registry.npmjs.org/@types/relay-runtime/-/relay-runtime-20.1.1.tgz",
"integrity": "sha512-loM2iJteknnJcsxrynmBVb7pIDkSkJUuCMnAa/oDFcrvaxkDvq8iy0J2UshMdDy14iJJocDblXeAu7c6Q1+Ucw==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/resolve": {
"version": "1.20.6",
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.6.tgz",

View File

@@ -13,7 +13,7 @@
"scripts": {
"build": "turbo run build",
"dev": "turbo run dev",
"lint": "eslint apps/console apps/trust packages/ui packages/eslint-config --concurrency auto && npm -w @probo/n8n-nodes-probo run lint",
"lint": "eslint . --concurrency auto && npm -w @probo/n8n-nodes-probo run lint",
"check": "turbo run check",
"relay": "relay-compiler"
},