feat!: ESLint 9 Fixes (#307)

* chore: update postinstall scripts
* chore(lint): eslint automated fixes
* feat!: drop standard, sonarjs to work with eslint9

- This config allows arrow functions.

BREAKING CHANGES:

- Switches to eslint-config-eslint from eslint-config-standard.
- Also drops eslint-plugins-sonarjs because it doesn't work well
  with eslint9, and wants eslint8 and related plugins.
- Switches from eslint-plugin-prettier to eslint-config-prettier.
This commit is contained in:
Ismo Vuorinen
2024-11-25 03:35:13 +02:00
committed by GitHub
parent 006dc9b947
commit 6d6f4582dd
16 changed files with 1295 additions and 760 deletions

View File

@@ -1,9 +1,10 @@
'use strict'
const fs = require('fs')
const path = require('path')
// noinspection NpmUsedModulesInstalled
const process = require('process')
/* eslint no-console: "off", n/no-process-exit: "off" -- CLI app that gives users feedback */
const fs = require('node:fs')
const path = require('node:path')
const process = require('node:process')
const checkConfig = require('@ivuorinen/config-checker')
const foundConfig = checkConfig('browserslist')

View File

@@ -1,9 +1,11 @@
'use strict'
const fs = require('fs')
const path = require('path')
/* eslint no-console: "off", n/no-process-exit: "off", no-undefined: "off" -- CLI app that gives users feedback */
const fs = require('node:fs')
const path = require('node:path')
// noinspection NpmUsedModulesInstalled
const process = require('process')
const process = require('node:process')
const checkConfig = require('@ivuorinen/config-checker')
const foundConfig = checkConfig('commitlint')

View File

@@ -1,19 +1,18 @@
'use strict'
/* eslint no-console: "off" -- CLI app that gives users feedback */
const path = require('path')
const path = require('node:path')
const configChecker = require('..')
const assert = require('assert').strict
const assert = require('node:assert').strict
const configs = configChecker('test', path.join(__dirname, 'fixtures'))
/**
* Checks if an array contains a file.
*
* @param {string[]} configs - The array of configs to check.
* @param {string} file - The file to check for.
* @param {string[]} c The array of configs to check.
* @param {string} file The file to check for.
* @returns {boolean} - True if the array contains the file.
*/
const arrayContains = (configs = [], file = '') => configs.some(config => config === file)
const arrayContains = (c = [], file = '') => c.includes(file)
assert.ok(arrayContains(configs, '.testrc'))
assert.ok(arrayContains(configs, '.config/testrc.ts'))

View File

@@ -1,4 +1,4 @@
'use strict'
/* eslint no-console: "off" -- This is a cli app that generates cli output */
const configurationPaths = require('../lib/configuration-paths')
@@ -13,7 +13,7 @@ const mdTable = configItems.map(file => {
console.log('# Configuration files\n')
const header = 'Searched configuration files'
console.log('| ' + header + ' '.repeat(longestLine - header.length) + ' |')
console.log('| ' + '-'.repeat(longestLine) + ' |')
console.log(`| ${header}${' '.repeat(longestLine - header.length)} |`)
console.log(`| ${'-'.repeat(longestLine)} |`)
mdTable.forEach(line => console.log(line))

View File

@@ -1,15 +1,15 @@
'use strict'
/* eslint no-console: "off", n/no-process-exit: "off" -- CLI app that gives users feedback */
const fs = require('fs')
const path = require('path')
const fs = require('node:fs')
const path = require('node:path')
// noinspection NpmUsedModulesInstalled
const process = require('process')
const process = require('node:process')
const configurationPaths = require('./configuration-paths')
/**
* Checks for the existence of a configuration file.
* @param {string} moduleName - The name of the module to check for.
* @param {string} pathPrefix - The prefix to add to the path.
* @param {string} moduleName The name of the module to check for.
* @param {string} pathPrefix The prefix to add to the path.
* @returns {string[]} - The paths to the configuration files.
*/
const configChecker = (moduleName, pathPrefix = '') => {

View File

@@ -1,10 +1,8 @@
'use strict'
const path = require('path')
const path = require('node:path')
/**
* Returns an array of configuration paths.
* @param {string} moduleName - The name of the module to check for.
* @param {string} moduleName The name of the module to check for.
* @returns {string[]} - The paths to the configuration files.
*/
const configurationPaths = moduleName => {

View File

@@ -26,7 +26,7 @@ npm install @ivuorinen/eslint-config --save-dev
yarn add @ivuorinen/eslint-config --dev
```
After installing it, a _`.eslintrc.json`_ file will be created automatically in the project's root folder with the following configuration:
After installing it, a _`eslint.config.mjs`_ file will be created automatically in the project's root folder with the following configuration:
```json
{

View File

@@ -1,16 +1,32 @@
'use strict'
const globals = require('globals')
const configEslint = require('eslint-config-eslint')
const configPrettier = require('eslint-config-prettier')
const pluginImport = require('eslint-plugin-import')
const pluginJs = require('@eslint/js')
const standard = require('eslint-config-standard')
const pluginN = require('eslint-plugin-n')
const pluginPromise = require('eslint-plugin-promise')
const pluginImport = require('eslint-plugin-import')
const pluginPrettier = require('eslint-plugin-prettier')
const pluginSonarJS = require('eslint-plugin-sonarjs')
/**
* @type { import("eslint").Linter.Config[] } config eslint configuration.
*/
module.exports = [
...configEslint,
{
linterOptions: {
reportUnusedDisableDirectives: 'warn'
},
rules: {
'func-style': [
'error',
'declaration',
{
allowArrowFunctions: true
}
]
}
},
{
files: ['**/*.{js,mjs,cjs}'],
languageOptions: {
@@ -30,12 +46,10 @@ module.exports = [
plugins: {
n: pluginN,
import: pluginImport,
promise: pluginPromise,
prettier: pluginPrettier,
sonarjs: pluginSonarJS
},
rules: standard.rules
promise: pluginPromise
}
},
configPrettier,
{
ignores: ['coverage/', 'dist/', 'lib/', 'node_modules/']
}

View File

@@ -1,3 +1,5 @@
'use strict'
const jest = require('eslint-plugin-jest')
/**

View File

@@ -53,15 +53,15 @@
"dependencies": {
"@eslint/js": "^9",
"@ivuorinen/config-checker": "^1.1.8",
"eslint": "^9",
"eslint": "^9.15.0",
"eslint-config-eslint": "^11",
"eslint-config-prettier": "^9",
"eslint-config-standard": "^17",
"eslint-plugin-import": "^2",
"eslint-plugin-jest": "^28",
"eslint-plugin-n": "^17",
"eslint-plugin-promise": "^7",
"eslint-plugin-sonarjs": "^2",
"globals": "^15"
"globals": "^15",
"typescript": ">=4.2.0"
},
"gitHead": "23d15f15743fb59c1dbe658615ef2ed51c54d230"
}

View File

@@ -1,9 +1,10 @@
'use strict'
const fs = require('fs')
const path = require('path')
// noinspection NpmUsedModulesInstalled
const process = require('process')
/* eslint no-console: "off", n/no-process-exit: "off" -- CLI app that gives users feedback */
const fs = require('node:fs')
const path = require('node:path')
const process = require('node:process')
const checkConfig = require('@ivuorinen/config-checker')
const foundConfig = checkConfig('eslint')

File diff suppressed because it is too large Load Diff

View File

@@ -1,9 +1,11 @@
'use strict'
const fs = require('fs')
const path = require('path')
/* eslint no-console: "off", n/no-process-exit: "off", no-undefined: "off" -- CLI app that gives users feedback */
const fs = require('node:fs')
const path = require('node:path')
// noinspection NpmUsedModulesInstalled
const process = require('process')
const process = require('node:process')
const checkConfig = require('@ivuorinen/config-checker')
const foundConfig = checkConfig('markdownlint')

View File

@@ -1,9 +1,11 @@
'use strict'
const fs = require('fs')
const path = require('path')
/* eslint no-console: "off", n/no-process-exit: "off", no-undefined: "off" -- CLI app that gives users feedback */
const fs = require('node:fs')
const path = require('node:path')
// noinspection NpmUsedModulesInstalled
const process = require('process')
const process = require('node:process')
const checkConfig = require('@ivuorinen/config-checker')
const foundConfig = checkConfig('prettier')

View File

@@ -1,9 +1,11 @@
'use strict'
const fs = require('fs')
const path = require('path')
/* eslint no-console: "off", n/no-process-exit: "off", no-undefined: "off" -- CLI app that gives users feedback */
const fs = require('node:fs')
const path = require('node:path')
// noinspection NpmUsedModulesInstalled
const process = require('process')
const process = require('node:process')
const checkConfig = require('@ivuorinen/config-checker')
const foundConfig = checkConfig('release')

View File

@@ -1,9 +1,11 @@
'use strict'
const fs = require('fs')
const path = require('path')
/* eslint no-console: "off", n/no-process-exit: "off", no-undefined: "off" -- CLI app that gives users feedback */
const fs = require('node:fs')
const path = require('node:path')
// noinspection NpmUsedModulesInstalled
const process = require('process')
const process = require('node:process')
const checkConfig = require('@ivuorinen/config-checker')
const foundConfig = checkConfig('stylelint')