diff --git a/package.json b/package.json index bc7d00c50..348f4a5aa 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,7 @@ "ejs": "^3.1.6", "enquirer": "^2.3.6", "esbuild": "~0.25.0", - "eslint": "^9.11.1", + "eslint": "^9.26.0", "eslint-config-skuba": "workspace:*", "execa": "^5.0.0", "fast-glob": "^3.3.2", diff --git a/packages/eslint-config-skuba/index.js b/packages/eslint-config-skuba/index.js index 857338672..5682e5e1e 100644 --- a/packages/eslint-config-skuba/index.js +++ b/packages/eslint-config-skuba/index.js @@ -1,3 +1,4 @@ +const { defineConfig, globalIgnores } = require('eslint/config'); const base = require('eslint-config-seek/base'); const extensions = require('eslint-config-seek/extensions'); const eslintPluginYml = require('eslint-plugin-yml'); @@ -5,10 +6,9 @@ const tseslint = require('typescript-eslint'); const { js: jsExtensions, ts: tsExtensions } = extensions; -module.exports = [ - { - name: 'skuba/ignores', - ignores: [ +module.exports = defineConfig([ + globalIgnores( + [ // Gantry resource files support non-standard syntax (Go templating) '**/.gantry/**/*.yaml', '**/.gantry/**/*.yml', @@ -26,8 +26,13 @@ module.exports = [ 'lib*/', 'tmp*/', ], + 'skuba/ignores', + ), + { + name: 'skuba/base', + + extends: [base], }, - ...base, { name: 'skuba/javascript', rules: { @@ -89,17 +94,14 @@ module.exports = [ ], }, }, - ...[ - ...tseslint.configs.recommendedTypeChecked, - ...tseslint.configs.stylisticTypeChecked, - ].map(({ plugins, ...config }) => ({ - ...config, - files: [`**/*.{${tsExtensions}}`], - })), { name: 'skuba/typescript', files: [`**/*.{${tsExtensions}}`], + extends: [ + tseslint.configs.recommendedTypeChecked, + tseslint.configs.stylisticTypeChecked, + ], rules: { '@typescript-eslint/consistent-type-exports': 'error', '@typescript-eslint/no-floating-promises': 'error', @@ -121,6 +123,7 @@ module.exports = [ }, }, { + name: 'skuba/javascript-overrides', files: [`**/*.{${jsExtensions}}`], rules: { @@ -172,8 +175,10 @@ module.exports = [ ], }, }, - ...eslintPluginYml.configs['flat/prettier'].map((config) => ({ - ...config, + { + name: 'skuba/yaml', files: ['**/*.{yaml,yml}'], - })), -]; + + extends: [eslintPluginYml.configs['flat/prettier']], + }, +]); diff --git a/packages/eslint-config-skuba/package.json b/packages/eslint-config-skuba/package.json index 2914c6cc9..bd882bde6 100644 --- a/packages/eslint-config-skuba/package.json +++ b/packages/eslint-config-skuba/package.json @@ -27,11 +27,11 @@ }, "dependencies": { "eslint-config-seek": "14.5.0", - "eslint-plugin-yml": "^1.14.0", - "typescript-eslint": "^8.26.0" + "eslint-plugin-yml": "^1.18.0", + "typescript-eslint": "^8.32.0" }, "devDependencies": { - "eslint": "^9.11.1", + "eslint": "^9.26.0", "typescript": "~5.8.0" }, "peerDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1965a45bc..50966f55f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -54,7 +54,7 @@ importers: specifier: ~0.25.0 version: 0.25.4 eslint: - specifier: ^9.11.1 + specifier: ^9.26.0 version: 9.26.0 eslint-config-skuba: specifier: workspace:* @@ -250,14 +250,14 @@ importers: specifier: 14.5.0 version: 14.5.0(@typescript-eslint/eslint-plugin@8.32.0(@typescript-eslint/parser@8.32.0(eslint@9.26.0)(typescript@5.8.3))(eslint@9.26.0)(typescript@5.8.3))(eslint@9.26.0)(jest@29.7.0(@types/node@22.15.17)(ts-node@10.9.2(@types/node@22.15.17)(typescript@5.8.3)))(typescript@5.8.3) eslint-plugin-yml: - specifier: ^1.14.0 + specifier: ^1.18.0 version: 1.18.0(eslint@9.26.0) typescript-eslint: - specifier: ^8.26.0 + specifier: ^8.32.0 version: 8.32.0(eslint@9.26.0)(typescript@5.8.3) devDependencies: eslint: - specifier: ^9.11.1 + specifier: ^9.26.0 version: 9.26.0 typescript: specifier: ~5.8.0 diff --git a/src/cli/configure/analysis/__snapshots__/project.test.ts.snap b/src/cli/configure/analysis/__snapshots__/project.test.ts.snap index 7a97fd906..175de6b0e 100644 --- a/src/cli/configure/analysis/__snapshots__/project.test.ts.snap +++ b/src/cli/configure/analysis/__snapshots__/project.test.ts.snap @@ -79,7 +79,14 @@ coverage "operation": "A", }, "eslint.config.js": { - "data": "module.exports = require('eslint-config-skuba'); + "data": "const { defineConfig } = require('eslint/config'); +const skuba = require('skuba/config/eslint'); + +module.exports = defineConfig([ + { + extends: [skuba], + }, +]); ", "operation": "A", }, diff --git a/template/base/_eslint.config.js b/template/base/_eslint.config.js index 35bf04c06..13b353638 100644 --- a/template/base/_eslint.config.js +++ b/template/base/_eslint.config.js @@ -1 +1,8 @@ -module.exports = require('eslint-config-skuba'); +const { defineConfig } = require('eslint/config'); +const skuba = require('skuba/config/eslint'); + +module.exports = defineConfig([ + { + extends: [skuba], + }, +]);