chore: Migrate part of the base packages to oxlint (#40253)

This commit is contained in:
Matsu
2026-10-05 06:18:31 +00:00
committed by GitHub
parent be2ee6f356
commit d6ec4c5546
27 changed files with 146 additions and 63 deletions
@@ -1,4 +0,0 @@
import { defineConfig } from 'eslint/config';
import { baseConfig } from '@n8n/eslint-config/base';
export default defineConfig(baseConfig);
@@ -0,0 +1,7 @@
import { baseConfig } from '@n8n/oxlint-config/base';
import { defineConfig } from 'oxlint';
export default defineConfig({
extends: [baseConfig],
options: { typeAware: true },
});
+5 -2
View File
@@ -9,8 +9,8 @@
"build:unchecked": "tsc -p tsconfig.build.json --noCheck",
"format": "biome format --write .",
"format:check": "biome ci .",
"lint": "eslint . --quiet",
"lint:fix": "eslint . --fix",
"lint": "oxlint --quiet",
"lint:fix": "oxlint --fix",
"watch": "tsc -p tsconfig.build.json --watch",
"test": "vitest run",
"test:unit": "vitest run",
@@ -23,6 +23,7 @@
"dist/**/*"
],
"devDependencies": {
"@n8n/oxlint-config": "workspace:*",
"@n8n/typescript-config": "workspace:*",
"@n8n/vitest-config": "workspace:*",
"@types/validator": "catalog:",
@@ -31,6 +32,8 @@
"vite": "catalog:",
"vitest": "catalog:",
"minifaker": "1.34.1",
"oxlint": "catalog:",
"oxlint-tsgolint": "catalog:",
"zod": "catalog:"
},
"dependencies": {
-1
View File
@@ -314,7 +314,6 @@ export const emptyChatModelsResponse: ChatModelsResponse = {
mistralCloud: { models: [] },
nvidia: { models: [] },
n8n: { models: [] },
// eslint-disable-next-line @typescript-eslint/naming-convention
'custom-agent': { models: [] },
};
-4
View File
@@ -1,4 +0,0 @@
import { defineConfig } from 'eslint/config';
import { baseConfig } from '@n8n/eslint-config/base';
export default defineConfig(baseConfig);
+7
View File
@@ -0,0 +1,7 @@
import { baseConfig } from '@n8n/oxlint-config/base';
import { defineConfig } from 'oxlint';
export default defineConfig({
extends: [baseConfig],
options: { typeAware: true },
});
+5 -2
View File
@@ -9,8 +9,8 @@
"build:unchecked": "tsc -p tsconfig.build.json --noCheck",
"format": "biome format --write .",
"format:check": "biome ci .",
"lint": "eslint . --quiet",
"lint:fix": "eslint . --fix",
"lint": "oxlint --quiet",
"lint:fix": "oxlint --fix",
"watch": "tsc -p tsconfig.build.json --watch",
"test": "vitest run",
"test:unit": "vitest run",
@@ -23,9 +23,12 @@
"dist/**/*"
],
"devDependencies": {
"@n8n/oxlint-config": "workspace:*",
"@n8n/typescript-config": "workspace:*",
"@n8n/vitest-config": "workspace:*",
"@vitest/coverage-v8": "catalog:",
"oxlint": "catalog:",
"oxlint-tsgolint": "catalog:",
"typescript": "catalog:typescript",
"vitest": "catalog:"
},
@@ -1,4 +0,0 @@
import { defineConfig } from 'eslint/config';
import { baseConfig } from '@n8n/eslint-config/base';
export default defineConfig(baseConfig);
@@ -0,0 +1,7 @@
import { baseConfig } from '@n8n/oxlint-config/base';
import { defineConfig } from 'oxlint';
export default defineConfig({
extends: [baseConfig],
options: { typeAware: true },
});
+5 -2
View File
@@ -9,8 +9,8 @@
"build:unchecked": "tsc -p tsconfig.build.json --noCheck",
"format": "biome format --write .",
"format:check": "biome ci .",
"lint": "eslint . --quiet",
"lint:fix": "eslint . --fix",
"lint": "oxlint --quiet",
"lint:fix": "oxlint --fix",
"watch": "tsc -p tsconfig.build.json --watch",
"test": "node -e \"process.exit(0)\""
},
@@ -21,7 +21,10 @@
"dist/**/*"
],
"devDependencies": {
"@n8n/oxlint-config": "workspace:*",
"@n8n/typescript-config": "workspace:*",
"oxlint": "catalog:",
"oxlint-tsgolint": "catalog:",
"typescript": "catalog:typescript"
},
"license": "LicenseRef-n8n-sustainable-use"
-1
View File
@@ -1,4 +1,3 @@
/* eslint-disable @typescript-eslint/naming-convention */
/**
* The durable scheduler's shared vocabulary: schedule definitions, recurrence
* kinds, misfire handling and the task lifecycle.
@@ -1,4 +0,0 @@
import { defineConfig } from 'eslint/config';
import { baseConfig } from '@n8n/eslint-config/base';
export default defineConfig(baseConfig);
@@ -0,0 +1,7 @@
import { baseConfig } from '@n8n/oxlint-config/base';
import { defineConfig } from 'oxlint';
export default defineConfig({
extends: [baseConfig],
options: { typeAware: true },
});
+5 -4
View File
@@ -9,8 +9,8 @@
"build:unchecked": "tsc -p tsconfig.build.json --noCheck",
"format": "biome format --write .",
"format:check": "biome ci .",
"lint": "eslint . --quiet",
"lint:fix": "eslint . --fix",
"lint": "oxlint --quiet",
"lint:fix": "oxlint --fix",
"watch": "tsc -p tsconfig.build.json --watch",
"test": "vitest run",
"test:unit": "vitest run",
@@ -30,11 +30,12 @@
"zod": "catalog:"
},
"devDependencies": {
"@n8n/eslint-config": "workspace:*",
"@n8n/oxlint-config": "workspace:*",
"@n8n/typescript-config": "workspace:*",
"@n8n/vitest-config": "workspace:*",
"@vitest/coverage-v8": "catalog:",
"eslint": "catalog:",
"oxlint": "catalog:",
"oxlint-tsgolint": "catalog:",
"typescript": "catalog:typescript",
"vite": "catalog:",
"vitest": "catalog:",
@@ -1,4 +0,0 @@
import { defineConfig } from 'eslint/config';
import { baseConfig } from '@n8n/eslint-config/base';
export default defineConfig(baseConfig);
@@ -0,0 +1,7 @@
import { baseConfig } from '@n8n/oxlint-config/base';
import { defineConfig } from 'oxlint';
export default defineConfig({
extends: [baseConfig],
options: { typeAware: true },
});
+5 -2
View File
@@ -9,8 +9,8 @@
"build:unchecked": "tsc -p tsconfig.build.json --noCheck",
"format": "biome format --write .",
"format:check": "biome ci .",
"lint": "eslint . --quiet",
"lint:fix": "eslint . --fix",
"lint": "oxlint --quiet",
"lint:fix": "oxlint --fix",
"watch": "tsc -p tsconfig.build.json --watch",
"test": "vitest run",
"test:unit": "vitest run",
@@ -26,9 +26,12 @@
"zod": "catalog:"
},
"devDependencies": {
"@n8n/oxlint-config": "workspace:*",
"@n8n/typescript-config": "workspace:*",
"@n8n/vitest-config": "workspace:*",
"@vitest/coverage-v8": "catalog:",
"oxlint": "catalog:",
"oxlint-tsgolint": "catalog:",
"typescript": "catalog:typescript",
"vite": "catalog:",
"vitest": "catalog:"
@@ -1,4 +1,3 @@
/* eslint-disable @typescript-eslint/naming-convention */
import {
PROJECT_ADMIN_ROLE_SLUG,
PROJECT_EDITOR_ROLE_SLUG,
@@ -62,6 +61,7 @@ const mapToRoleObject = <T extends keyof typeof ROLE_NAMES>(
(Object.keys(roles) as T[]).map((role) => ({
slug: role,
displayName: ROLE_NAMES[role],
// oxlint-disable-next-line typescript/no-deprecated
scopes: getRoleScopes(role),
description: ROLE_DESCRIPTIONS[role],
licensed: false,
@@ -1,4 +1,3 @@
/* eslint-disable @typescript-eslint/naming-convention */
import type {
CredentialSharingRole,
GlobalRole,
@@ -1,4 +0,0 @@
import { defineConfig } from 'eslint/config';
import { baseConfig } from '@n8n/eslint-config/base';
export default defineConfig({ ignores: ['bin/**'] }, baseConfig);
@@ -0,0 +1,8 @@
import { baseConfig } from '@n8n/oxlint-config/base';
import { defineConfig } from 'oxlint';
export default defineConfig({
extends: [baseConfig],
options: { typeAware: true },
ignorePatterns: ['bin/**'],
});
+5 -4
View File
@@ -9,8 +9,8 @@
"build:unchecked": "tsc -p tsconfig.build.json --noCheck",
"format": "biome format --write .",
"format:check": "biome ci .",
"lint": "eslint . --quiet",
"lint:fix": "eslint . --fix",
"lint": "oxlint --quiet",
"lint:fix": "oxlint --fix",
"watch": "tsc -p tsconfig.build.json --watch",
"catalog": "pnpm --silent build:unchecked && node bin/catalog.mjs",
"test": "vitest run",
@@ -28,12 +28,13 @@
"zod": "catalog:"
},
"devDependencies": {
"@n8n/eslint-config": "workspace:*",
"@n8n/oxlint-config": "workspace:*",
"@n8n/typescript-config": "workspace:*",
"@n8n/vitest-config": "workspace:*",
"@types/node": "catalog:",
"@vitest/coverage-v8": "catalog:",
"eslint": "catalog:",
"oxlint": "catalog:",
"oxlint-tsgolint": "catalog:",
"typescript": "catalog:typescript",
"vite": "catalog:",
"vitest": "catalog:"
@@ -110,13 +110,10 @@ describe('redactTelemetryProperties', () => {
});
it('catches kebab-case secret keys too', () => {
/* eslint-disable @typescript-eslint/naming-convention -- kebab-case keys
are the subject of this test */
expect(redactTelemetryProperties({ 'private-key': 'plain', 'api-key': 'plain' })).toEqual({
'private-key': '[REDACTED]',
'api-key': '[REDACTED]',
});
/* eslint-enable @typescript-eslint/naming-convention */
});
it('keeps properties that only describe a credential', () => {
@@ -189,7 +189,6 @@ export const INSTANCE_AI_TELEMETRY = defineTelemetryEvents({
'An eligible user reached the Instance AI empty state for the free-use nudge experiment, including the control variant.',
properties: z.object({
variant: freeNudgeVariant,
// eslint-disable-next-line @typescript-eslint/naming-convention -- PostHog feature property
'$feature/105_instance_ai_free_nudge': freeNudgeVariant,
}),
},
@@ -198,7 +197,6 @@ export const INSTANCE_AI_TELEMETRY = defineTelemetryEvents({
description: 'The user dismissed a visible Instance AI free-use nudge.',
properties: z.object({
variant: freeNudgeTreatmentVariant,
// eslint-disable-next-line @typescript-eslint/naming-convention -- PostHog feature property
'$feature/105_instance_ai_free_nudge': freeNudgeTreatmentVariant,
}),
},
@@ -210,7 +208,6 @@ export const INSTANCE_AI_TELEMETRY = defineTelemetryEvents({
properties: z.object({
workflow_id: z.string().nullable(),
variant: openWorkflowInAssistantVariant,
// eslint-disable-next-line @typescript-eslint/naming-convention -- PostHog feature property
'$feature/108_open_workflow_in_assistant': openWorkflowInAssistantVariant,
}),
},
@@ -220,7 +217,6 @@ export const INSTANCE_AI_TELEMETRY = defineTelemetryEvents({
properties: z.object({
method: z.enum(['got_it', 'never_show_again', 'close', 'settings_link']),
variant: openWorkflowInAssistantVariant,
// eslint-disable-next-line @typescript-eslint/naming-convention -- PostHog feature property
'$feature/108_open_workflow_in_assistant': openWorkflowInAssistantVariant,
}),
},
@@ -230,7 +226,6 @@ export const INSTANCE_AI_TELEMETRY = defineTelemetryEvents({
properties: z.object({
value: z.enum(['assistant', 'manual']),
variant: openWorkflowInAssistantVariant,
// eslint-disable-next-line @typescript-eslint/naming-convention -- PostHog feature property
'$feature/108_open_workflow_in_assistant': openWorkflowInAssistantVariant,
}),
},
@@ -241,7 +236,6 @@ export const INSTANCE_AI_TELEMETRY = defineTelemetryEvents({
workflow_id: z.string(),
thread_id: z.string().optional(),
variant: openWorkflowInAssistantVariant,
// eslint-disable-next-line @typescript-eslint/naming-convention -- PostHog feature property
'$feature/108_open_workflow_in_assistant': openWorkflowInAssistantVariant,
}),
},
@@ -257,7 +251,6 @@ export const INSTANCE_AI_TELEMETRY = defineTelemetryEvents({
'The Fix with Assistant button was shown inside a workflow error toast. Fires once for each toast that receives the button.',
properties: z.object({
variant: z.enum(['control', 'variant']),
// eslint-disable-next-line @typescript-eslint/naming-convention -- PostHog feature property
'$feature/119_surface_assistant_on_workflow_error': z.enum(['control', 'variant']),
}),
},
@@ -272,7 +265,6 @@ export const INSTANCE_AI_TELEMETRY = defineTelemetryEvents({
'Whether n8n Assistant was enabled. True opens the Assistant. False opens Assistant settings.',
),
variant: z.enum(['control', 'variant']),
// eslint-disable-next-line @typescript-eslint/naming-convention -- PostHog feature property
'$feature/119_surface_assistant_on_workflow_error': z.enum(['control', 'variant']),
}),
},
+50 -8
View File
@@ -1613,6 +1613,9 @@ importers:
specifier: 'catalog:'
version: 1.0.15
devDependencies:
'@n8n/oxlint-config':
specifier: workspace:*
version: link:../oxlint-config
'@n8n/typescript-config':
specifier: workspace:*
version: link:../typescript-config
@@ -1628,6 +1631,12 @@ importers:
minifaker:
specifier: 1.34.1
version: 1.34.1(patch_hash=bc707e2c34a2464da2c9c93ead33e80fd9883a00434ef64907ddc45208a08b33)
oxlint:
specifier: 'catalog:'
version: 1.78.0([email protected])
oxlint-tsgolint:
specifier: 'catalog:'
version: 0.21.1
typescript:
specifier: catalog:typescript
version: 7.0.2
@@ -2027,6 +2036,9 @@ importers:
specifier: workspace:*
version: link:../api-types
devDependencies:
'@n8n/oxlint-config':
specifier: workspace:*
version: link:../oxlint-config
'@n8n/typescript-config':
specifier: workspace:*
version: link:../typescript-config
@@ -2036,6 +2048,12 @@ importers:
'@vitest/coverage-v8':
specifier: 'catalog:'
version: 5.0.1(@vitest/[email protected])([email protected])
oxlint:
specifier: 'catalog:'
version: 1.78.0([email protected])
oxlint-tsgolint:
specifier: 'catalog:'
version: 0.21.1
typescript:
specifier: catalog:typescript
version: 7.0.2
@@ -2379,9 +2397,18 @@ importers:
packages/@n8n/constants:
devDependencies:
'@n8n/oxlint-config':
specifier: workspace:*
version: link:../oxlint-config
'@n8n/typescript-config':
specifier: workspace:*
version: link:../typescript-config
oxlint:
specifier: 'catalog:'
version: 1.78.0([email protected])
oxlint-tsgolint:
specifier: 'catalog:'
version: 0.21.1
typescript:
specifier: catalog:typescript
version: 7.0.2
@@ -3034,9 +3061,9 @@ importers:
specifier: workspace:*
version: link:../../workflow
devDependencies:
'@n8n/eslint-config':
'@n8n/oxlint-config':
specifier: workspace:*
version: link:../eslint-config
version: link:../oxlint-config
'@n8n/typescript-config':
specifier: workspace:*
version: link:../typescript-config
@@ -3046,9 +3073,12 @@ importers:
'@vitest/coverage-v8':
specifier: 'catalog:'
version: 5.0.1(@vitest/[email protected])([email protected])
eslint:
oxlint:
specifier: 'catalog:'
version: 9.29.0([email protected])(supports-color@8.1.1)
version: 1.78.0([email protected]1.1)
oxlint-tsgolint:
specifier: 'catalog:'
version: 0.21.1
typescript:
specifier: catalog:typescript
version: 7.0.2
@@ -4002,6 +4032,9 @@ importers:
specifier: 3.25.76
version: 3.25.76
devDependencies:
'@n8n/oxlint-config':
specifier: workspace:*
version: link:../oxlint-config
'@n8n/typescript-config':
specifier: workspace:*
version: link:../typescript-config
@@ -4011,6 +4044,12 @@ importers:
'@vitest/coverage-v8':
specifier: 'catalog:'
version: 5.0.1(@vitest/[email protected])([email protected])
oxlint:
specifier: 'catalog:'
version: 1.78.0([email protected])
oxlint-tsgolint:
specifier: 'catalog:'
version: 0.21.1
typescript:
specifier: catalog:typescript
version: 7.0.2
@@ -4281,9 +4320,9 @@ importers:
specifier: 3.25.76
version: 3.25.76
devDependencies:
'@n8n/eslint-config':
'@n8n/oxlint-config':
specifier: workspace:*
version: link:../eslint-config
version: link:../oxlint-config
'@n8n/typescript-config':
specifier: workspace:*
version: link:../typescript-config
@@ -4296,9 +4335,12 @@ importers:
'@vitest/coverage-v8':
specifier: 'catalog:'
version: 5.0.1(@vitest/[email protected])([email protected])
eslint:
oxlint:
specifier: 'catalog:'
version: 9.29.0([email protected])(supports-color@8.1.1)
version: 1.78.0([email protected]1.1)
oxlint-tsgolint:
specifier: 'catalog:'
version: 0.21.1
typescript:
specifier: catalog:typescript
version: 7.0.2
+4
View File
@@ -72,6 +72,10 @@
"src/rules/ai-node-package-json.test.ts"
],
"packages/@n8n/extension-sdk": ["src/backend/define.ts"],
"packages/@n8n/inbound-auth": [
"src/__tests__/trusted-source-config.test.ts",
"src/trusted-source-config.ts"
],
"packages/@n8n/imap": ["src/connection-options.test.ts", "src/connection-options.ts"],
"packages/@n8n/instance-ai": [
"evaluations/__tests__/agent-report-rendering.test.ts",
+18
View File
@@ -71,6 +71,9 @@
"@n8n/ai-workflow-builder#lint": {
"dependsOn": ["^build", "@n8n/oxlint-config#build"]
},
"@n8n/api-types#lint": {
"dependsOn": ["^build", "@n8n/oxlint-config#build"]
},
"@n8n/backend-common#lint": {
"dependsOn": ["^build", "@n8n/oxlint-config#build"]
},
@@ -86,6 +89,9 @@
"@n8n/blob-storage#lint": {
"dependsOn": ["^build", "@n8n/oxlint-config#build"]
},
"@n8n/chat-hub#lint": {
"dependsOn": ["^build", "@n8n/oxlint-config#build"]
},
"@n8n/cli#lint": {
"dependsOn": ["^build", "@n8n/oxlint-config#build"]
},
@@ -101,6 +107,9 @@
"@n8n/config#lint": {
"dependsOn": ["^build", "@n8n/oxlint-config#build"]
},
"@n8n/constants#lint": {
"dependsOn": ["^build", "@n8n/oxlint-config#build"]
},
"@n8n/crdt#lint": {
"dependsOn": ["^build", "@n8n/oxlint-config#build"]
},
@@ -122,6 +131,9 @@
"@n8n/imap#lint": {
"dependsOn": ["^build", "@n8n/oxlint-config#build"]
},
"@n8n/inbound-auth#lint": {
"dependsOn": ["^build", "@n8n/oxlint-config#build"]
},
"@n8n/instance-ai#lint": {
"dependsOn": ["^build", "@n8n/oxlint-config#build"]
},
@@ -143,6 +155,9 @@
"@n8n/playwright-janitor#lint": {
"dependsOn": ["^build", "@n8n/oxlint-config#build"]
},
"@n8n/permissions#lint": {
"dependsOn": ["^build", "@n8n/oxlint-config#build"]
},
"@n8n/rules-engine#lint": {
"dependsOn": ["^build", "@n8n/oxlint-config#build"]
},
@@ -155,6 +170,9 @@
"@n8n/task-runner#lint": {
"dependsOn": ["^build", "@n8n/oxlint-config#build"]
},
"@n8n/telemetry#lint": {
"dependsOn": ["^build", "@n8n/oxlint-config#build"]
},
"@n8n/test-impact#lint": {
"dependsOn": ["^build", "@n8n/oxlint-config#build"]
},