From e18afc84ccee5078feadfb776867f42f72f67731 Mon Sep 17 00:00:00 2001 From: Matsu Date: Mon, 5 Oct 2026 10:04:49 +0300 Subject: [PATCH] chore: Migrate remaining simple base packages to Oxlint (#40255) --- .../@n8n/json-schema-to-zod/eslint.config.mjs | 24 ----------------- .../@n8n/json-schema-to-zod/oxlint.config.mts | 23 ++++++++++++++++ packages/@n8n/json-schema-to-zod/package.json | 7 +++-- .../mcp-browser-extension/eslint.config.mjs | 21 --------------- .../mcp-browser-extension/oxlint.config.mts | 21 +++++++++++++++ .../@n8n/mcp-browser-extension/package.json | 7 +++-- packages/@n8n/tournament/eslint.config.mjs | 20 -------------- packages/@n8n/tournament/oxlint.config.mts | 14 ++++++++++ packages/@n8n/tournament/package.json | 9 ++++--- pnpm-lock.yaml | 27 +++++++++++++++++++ turbo.json | 9 +++++++ 11 files changed, 110 insertions(+), 72 deletions(-) delete mode 100644 packages/@n8n/json-schema-to-zod/eslint.config.mjs create mode 100644 packages/@n8n/json-schema-to-zod/oxlint.config.mts delete mode 100644 packages/@n8n/mcp-browser-extension/eslint.config.mjs create mode 100644 packages/@n8n/mcp-browser-extension/oxlint.config.mts delete mode 100644 packages/@n8n/tournament/eslint.config.mjs create mode 100644 packages/@n8n/tournament/oxlint.config.mts diff --git a/packages/@n8n/json-schema-to-zod/eslint.config.mjs b/packages/@n8n/json-schema-to-zod/eslint.config.mjs deleted file mode 100644 index 277a725988b..00000000000 --- a/packages/@n8n/json-schema-to-zod/eslint.config.mjs +++ /dev/null @@ -1,24 +0,0 @@ -import { defineConfig } from 'eslint/config'; -import { baseConfig } from '@n8n/eslint-config/base'; - -export default defineConfig( - baseConfig, - { - rules: { - 'import-x/no-cycle': 'off', - complexity: 'error', - - // TODO: Remove this - 'no-constant-condition': 'warn', - }, - }, - { - files: ['**/*.test.ts'], - rules: { - '@typescript-eslint/no-unused-expressions': 'warn', - '@typescript-eslint/naming-convention': 'warn', - '@typescript-eslint/no-unsafe-assignment': 'warn', - '@typescript-eslint/ban-ts-comment': 'off', - }, - }, -); diff --git a/packages/@n8n/json-schema-to-zod/oxlint.config.mts b/packages/@n8n/json-schema-to-zod/oxlint.config.mts new file mode 100644 index 00000000000..49546611127 --- /dev/null +++ b/packages/@n8n/json-schema-to-zod/oxlint.config.mts @@ -0,0 +1,23 @@ +import { baseConfig } from '@n8n/oxlint-config/base'; +import { defineConfig } from 'oxlint'; + +export default defineConfig({ + extends: [baseConfig], + options: { typeAware: true }, + rules: { + 'import/no-cycle': 'off', + complexity: 'error', + 'no-constant-condition': 'off', + 'typescript/no-deprecated': 'off', + }, + overrides: [ + { + files: ['**/*.test.ts'], + rules: { + 'typescript/no-unused-expressions': 'off', + 'typescript/no-unsafe-assignment': 'off', + 'typescript/ban-ts-comment': 'off', + }, + }, + ], +}); diff --git a/packages/@n8n/json-schema-to-zod/package.json b/packages/@n8n/json-schema-to-zod/package.json index 2ef25e97ea8..8b8aae45c9b 100644 --- a/packages/@n8n/json-schema-to-zod/package.json +++ b/packages/@n8n/json-schema-to-zod/package.json @@ -21,8 +21,8 @@ "dev": "tsc -w", "format": "biome format --write src", "format:check": "biome ci src", - "lint": "eslint src --quiet", - "lint:fix": "eslint src --fix", + "lint": "oxlint src --quiet", + "lint:fix": "oxlint src --fix", "build:types": "tsc -p tsconfig.types.json", "build:cjs": "tsc -p tsconfig.cjs.json && node postcjs.cjs", "build:esm": "tsc -p tsconfig.esm.json && node postesm.cjs", @@ -64,11 +64,14 @@ "zod": "catalog:" }, "devDependencies": { + "@n8n/oxlint-config": "workspace:*", "@n8n/typescript-config": "workspace:*", "@types/json-schema": "catalog:", "zod": "catalog:", "@n8n/vitest-config": "workspace:*", "@vitest/coverage-v8": "catalog:", + "oxlint": "catalog:", + "oxlint-tsgolint": "catalog:", "typescript": "catalog:typescript", "vitest": "catalog:" } diff --git a/packages/@n8n/mcp-browser-extension/eslint.config.mjs b/packages/@n8n/mcp-browser-extension/eslint.config.mjs deleted file mode 100644 index 949b8d0d25c..00000000000 --- a/packages/@n8n/mcp-browser-extension/eslint.config.mjs +++ /dev/null @@ -1,21 +0,0 @@ -import { defineConfig } from 'eslint/config'; -import { baseConfig } from '@n8n/eslint-config/base'; - -export default defineConfig( - { - ignores: ['vite.*.config.mts', 'vitest.config.mts', 'scripts/**'], - }, - baseConfig, - { - rules: { - 'unicorn/filename-case': ['error', { case: 'camelCase' }], - }, - }, - { - files: ['src/**/*.test.ts', 'src/__tests__/**/*.ts'], - rules: { - 'n8n-local-rules/no-uncaught-json-parse': 'off', - '@typescript-eslint/no-unsafe-assignment': 'off', - }, - }, -); diff --git a/packages/@n8n/mcp-browser-extension/oxlint.config.mts b/packages/@n8n/mcp-browser-extension/oxlint.config.mts new file mode 100644 index 00000000000..507ca01eb93 --- /dev/null +++ b/packages/@n8n/mcp-browser-extension/oxlint.config.mts @@ -0,0 +1,21 @@ +import { baseConfig } from '@n8n/oxlint-config/base'; +import { defineConfig } from 'oxlint'; + +export default defineConfig({ + extends: [baseConfig], + options: { typeAware: true }, + ignorePatterns: ['vite.*.config.mts', 'vitest.config.mts', 'scripts/**', '**/*.vue'], + rules: { + 'typescript/no-deprecated': 'off', + 'unicorn/filename-case': ['error', { case: 'camelCase' }], + }, + overrides: [ + { + files: ['src/**/*.test.ts', 'src/__tests__/**/*.ts'], + rules: { + 'n8n-local-rules/no-uncaught-json-parse': 'off', + 'typescript/no-unsafe-assignment': 'off', + }, + }, + ], +}); diff --git a/packages/@n8n/mcp-browser-extension/package.json b/packages/@n8n/mcp-browser-extension/package.json index ed23cac376a..38b3988a55c 100644 --- a/packages/@n8n/mcp-browser-extension/package.json +++ b/packages/@n8n/mcp-browser-extension/package.json @@ -9,8 +9,8 @@ "build:unchecked": "pnpm run build", "bundle": "pnpm build && node scripts/bundle.mjs", "typecheck": "tsc --noEmit", - "lint": "eslint . --quiet", - "lint:fix": "eslint . --fix", + "lint": "oxlint --quiet", + "lint:fix": "oxlint --fix", "test": "vitest run", "test:unit": "vitest run", "test:dev": "vitest", @@ -23,11 +23,14 @@ }, "devDependencies": { "@iconify-json/lucide": "catalog:", + "@n8n/oxlint-config": "workspace:*", "@n8n/typescript-config": "workspace:*", "@n8n/vitest-config": "workspace:*", "@types/chrome": "0.0.300", "@vitejs/plugin-vue": "catalog:frontend", "@vue/test-utils": "catalog:frontend", + "oxlint": "catalog:", + "oxlint-tsgolint": "catalog:", "unplugin-icons": "catalog:frontend", "@typescript/native": "catalog:typescript-tooling", "typescript": "catalog:typescript-tooling", diff --git a/packages/@n8n/tournament/eslint.config.mjs b/packages/@n8n/tournament/eslint.config.mjs deleted file mode 100644 index bff86050fe4..00000000000 --- a/packages/@n8n/tournament/eslint.config.mjs +++ /dev/null @@ -1,20 +0,0 @@ -import { defineConfig } from 'eslint/config'; -import { baseConfig } from '@n8n/eslint-config/base'; - -export default defineConfig( - baseConfig, - { - rules: { - '@typescript-eslint/no-restricted-types': 'off', - '@typescript-eslint/no-implied-eval': 'off', - '@typescript-eslint/no-explicit-any': 'off', - }, - }, - { - // Debt: the base layer enforces kebab-case filenames and this package has - // 12 files that predate it. Rename them, then delete this block. - rules: { - 'unicorn/filename-case': 'off', - }, - }, -); diff --git a/packages/@n8n/tournament/oxlint.config.mts b/packages/@n8n/tournament/oxlint.config.mts new file mode 100644 index 00000000000..e4507d5d142 --- /dev/null +++ b/packages/@n8n/tournament/oxlint.config.mts @@ -0,0 +1,14 @@ +import { baseConfig } from '@n8n/oxlint-config/base'; +import { defineConfig } from 'oxlint'; + +export default defineConfig({ + extends: [baseConfig], + options: { typeAware: true }, + rules: { + 'typescript/no-deprecated': 'off', + 'typescript/no-restricted-types': 'off', + 'typescript/no-implied-eval': 'off', + 'typescript/no-explicit-any': 'off', + 'unicorn/filename-case': 'off', + }, +}); diff --git a/packages/@n8n/tournament/package.json b/packages/@n8n/tournament/package.json index cc4a9de1a18..03c7645323a 100644 --- a/packages/@n8n/tournament/package.json +++ b/packages/@n8n/tournament/package.json @@ -22,8 +22,8 @@ "test": "vitest run", "test:unit": "vitest run", "test:dev": "vitest --silent=false", - "lint": "eslint src --quiet", - "lint:fix": "eslint src --fix", + "lint": "oxlint src --quiet", + "lint:fix": "oxlint src --fix", "format": "biome format --write .", "format:check": "biome ci ." }, @@ -38,9 +38,12 @@ "author": "", "license": "Apache-2.0", "devDependencies": { - "@types/node": "^18.13.0", + "@n8n/oxlint-config": "workspace:*", "@n8n/vitest-config": "workspace:*", + "@types/node": "^18.13.0", "@vitest/coverage-v8": "catalog:", + "oxlint": "catalog:", + "oxlint-tsgolint": "catalog:", "vite": "catalog:", "vitest": "catalog:", "typescript": "catalog:typescript" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3b9503bf1c2..2a8f59aeb31 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3251,6 +3251,9 @@ importers: packages/@n8n/json-schema-to-zod: devDependencies: + '@n8n/oxlint-config': + specifier: workspace:* + version: link:../oxlint-config '@n8n/typescript-config': specifier: workspace:* version: link:../typescript-config @@ -3263,6 +3266,12 @@ importers: '@vitest/coverage-v8': specifier: 'catalog:' version: 5.0.1(@vitest/browser@5.0.1)(vitest@5.0.1) + oxlint: + specifier: 'catalog:' + version: 1.78.0(oxlint-tsgolint@0.21.1) + oxlint-tsgolint: + specifier: 'catalog:' + version: 0.21.1 typescript: specifier: catalog:typescript version: 7.0.2 @@ -3489,6 +3498,9 @@ importers: '@iconify-json/lucide': specifier: 'catalog:' version: 1.2.114 + '@n8n/oxlint-config': + specifier: workspace:* + version: link:../oxlint-config '@n8n/typescript-config': specifier: workspace:* version: link:../typescript-config @@ -3507,6 +3519,12 @@ importers: '@vue/test-utils': specifier: catalog:frontend version: 2.4.6 + oxlint: + specifier: 'catalog:' + version: 1.78.0(oxlint-tsgolint@0.21.1) + oxlint-tsgolint: + specifier: 'catalog:' + version: 0.21.1 typescript: specifier: catalog:typescript-tooling version: '@typescript/typescript6@6.0.2' @@ -4384,6 +4402,9 @@ importers: specifier: ^0.22.0 version: 0.22.0 devDependencies: + '@n8n/oxlint-config': + specifier: workspace:* + version: link:../oxlint-config '@n8n/vitest-config': specifier: workspace:* version: link:../vitest-config @@ -4393,6 +4414,12 @@ importers: '@vitest/coverage-v8': specifier: 'catalog:' version: 5.0.1(@vitest/browser@5.0.1)(vitest@5.0.1) + oxlint: + specifier: 'catalog:' + version: 1.78.0(oxlint-tsgolint@0.21.1) + oxlint-tsgolint: + specifier: 'catalog:' + version: 0.21.1 typescript: specifier: catalog:typescript version: 7.0.2 diff --git a/turbo.json b/turbo.json index 95e33ff99dd..a79433f98d9 100644 --- a/turbo.json +++ b/turbo.json @@ -143,12 +143,18 @@ "@n8n/instance-ai#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, + "@n8n/json-schema-to-zod#lint": { + "dependsOn": ["^build", "@n8n/oxlint-config#build"] + }, "@n8n/local-gateway#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, "@n8n/mcp-browser#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, + "@n8n/mcp-browser-extension#lint": { + "dependsOn": ["^build", "@n8n/oxlint-config#build"] + }, "@n8n/node-cli#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, @@ -179,6 +185,9 @@ "@n8n/task-runner#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] }, + "@n8n/tournament#lint": { + "dependsOn": ["^build", "@n8n/oxlint-config#build"] + }, "@n8n/telemetry#lint": { "dependsOn": ["^build", "@n8n/oxlint-config#build"] },