diff --git a/eslint-configs/eslint-config-seekingalpha-base/CHANGELOG.md b/eslint-configs/eslint-config-seekingalpha-base/CHANGELOG.md index 78864cbb..8cce1ec8 100644 --- a/eslint-configs/eslint-config-seekingalpha-base/CHANGELOG.md +++ b/eslint-configs/eslint-config-seekingalpha-base/CHANGELOG.md @@ -1,5 +1,14 @@ # Change Log +## 11.1.0 - 2025-03-09 + +- [deps] update `eslint-plugin-unicorn` to version `57.0.0` +- [breaking] enable `unicorn/consistent-assert` rule +- [breaking] enable `unicorn/consistent-date-clone` rule +- [breaking] enable `unicorn/no-accessor-recursion` rule +- [breaking] enable `unicorn/no-instanceof-builtins` rule +- [breaking] enable `unicorn/no-named-default` rule + ## 11.0.0 - 2025-03-09 - [deps] update `eslint` to version `9.22.0` diff --git a/eslint-configs/eslint-config-seekingalpha-base/README.md b/eslint-configs/eslint-config-seekingalpha-base/README.md index 295d9a62..a0805fba 100644 --- a/eslint-configs/eslint-config-seekingalpha-base/README.md +++ b/eslint-configs/eslint-config-seekingalpha-base/README.md @@ -6,7 +6,7 @@ This package includes the shareable ESLint config used by [SeekingAlpha](https:/ Install ESLint and all [Peer Dependencies](https://nodejs.org/en/blog/npm/peer-dependencies/): - npm install eslint@9.22.0 eslint-plugin-array-func@5.0.2 eslint-plugin-import@2.31.0 eslint-plugin-promise@7.2.1 eslint-plugin-unicorn@56.0.1 --save-dev + npm install eslint@9.22.0 eslint-plugin-array-func@5.0.2 eslint-plugin-import@2.31.0 eslint-plugin-promise@7.2.1 eslint-plugin-unicorn@57.0.0 --save-dev Install SeekingAlpha shareable ESLint: diff --git a/eslint-configs/eslint-config-seekingalpha-base/package.json b/eslint-configs/eslint-config-seekingalpha-base/package.json index f4306956..9cf74d7f 100644 --- a/eslint-configs/eslint-config-seekingalpha-base/package.json +++ b/eslint-configs/eslint-config-seekingalpha-base/package.json @@ -1,6 +1,6 @@ { "name": "eslint-config-seekingalpha-base", - "version": "11.0.0", + "version": "11.1.0", "description": "SeekingAlpha's sharable base ESLint config", "main": "index.js", "type": "module", @@ -52,7 +52,7 @@ "eslint-plugin-array-func": "5.0.2", "eslint-plugin-import": "2.31.0", "eslint-plugin-promise": "7.2.1", - "eslint-plugin-unicorn": "56.0.1" + "eslint-plugin-unicorn": "57.0.0" }, "devDependencies": { "eslint": "9.22.0", @@ -60,6 +60,6 @@ "eslint-plugin-array-func": "5.0.2", "eslint-plugin-import": "2.31.0", "eslint-plugin-promise": "7.2.1", - "eslint-plugin-unicorn": "56.0.1" + "eslint-plugin-unicorn": "57.0.0" } } diff --git a/eslint-configs/eslint-config-seekingalpha-base/rules/eslint-plugin-unicorn/index.js b/eslint-configs/eslint-config-seekingalpha-base/rules/eslint-plugin-unicorn/index.js index 1ced167f..748272db 100644 --- a/eslint-configs/eslint-config-seekingalpha-base/rules/eslint-plugin-unicorn/index.js +++ b/eslint-configs/eslint-config-seekingalpha-base/rules/eslint-plugin-unicorn/index.js @@ -16,6 +16,12 @@ export default { }, ], + // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/consistent-assert.md + 'unicorn/consistent-assert': 'error', + + // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/consistent-date-clone.md + 'unicorn/consistent-date-clone': 'error', + // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/consistent-destructuring.md 'unicorn/consistent-destructuring': 'error', @@ -55,9 +61,6 @@ export default { */ 'unicorn/filename-case': 'off', - // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/import-index.md - 'unicorn/import-index': 'error', - // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/import-style.md 'unicorn/import-style': 'off', @@ -67,6 +70,9 @@ export default { // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/no-abusive-eslint-disable.md 'unicorn/no-abusive-eslint-disable': 'error', + // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-accessor-recursion.md + 'unicorn/no-accessor-recursion': 'error', + /* * https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-anonymous-default-export.md * Duplicates import/no-anonymous-default-export @@ -112,6 +118,9 @@ export default { // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/no-instanceof-array.md 'unicorn/no-instanceof-array': 'error', + // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-instanceof-builtins.md + 'unicorn/no-instanceof-builtins': 'error', + // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-invalid-fetch-options.md 'unicorn/no-invalid-fetch-options': 'error', @@ -133,6 +142,9 @@ export default { // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-magic-array-flat-depth.md 'unicorn/no-magic-array-flat-depth': 'error', + // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-named-default.md + 'unicorn/no-named-default': 'error', + // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-negation-in-equality-check.md 'unicorn/no-negation-in-equality-check': 'error', diff --git a/eslint-configs/eslint-config-seekingalpha-base/rules/eslint/suggestions.js b/eslint-configs/eslint-config-seekingalpha-base/rules/eslint/suggestions.js index f38805d9..d1ab520e 100644 --- a/eslint-configs/eslint-config-seekingalpha-base/rules/eslint/suggestions.js +++ b/eslint-configs/eslint-config-seekingalpha-base/rules/eslint/suggestions.js @@ -186,8 +186,10 @@ export default { 'new-cap': [ 'error', { - newIsCap: true, // eslint-disable-line unicorn/no-keyword-prefix - newIsCapExceptions: [], // eslint-disable-line unicorn/no-keyword-prefix + // eslint-disable-next-line unicorn/no-keyword-prefix + newIsCap: true, + // eslint-disable-next-line unicorn/no-keyword-prefix + newIsCapExceptions: [], capIsNew: false, capIsNewExceptions: [], properties: true, diff --git a/eslint-configs/eslint-config-seekingalpha-typescript/index.js b/eslint-configs/eslint-config-seekingalpha-typescript/index.js index af6a46c9..b3d93995 100644 --- a/eslint-configs/eslint-config-seekingalpha-typescript/index.js +++ b/eslint-configs/eslint-config-seekingalpha-typescript/index.js @@ -1,4 +1,3 @@ -// eslint-disable-next-line import/no-unresolved import typescriptEslint from 'typescript-eslint'; import disableConfig from './rules/disable-recommended-eslint-rules/index.js'; diff --git a/eslint.config.js b/eslint.config.js index 51ee9fc9..d3535b98 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,28 +1,32 @@ -import globals from 'globals'; +import { defineConfig } from 'eslint/config'; import baseConfig from 'eslint-config-seekingalpha-base'; import nodeConfig from 'eslint-config-seekingalpha-node'; -export default { - languageOptions: { - sourceType: 'module', - globals: { - ...globals.node, +export default defineConfig([ + { + linterOptions: { + reportUnusedDisableDirectives: 'warn', + reportUnusedInlineConfigs: 'error', }, }, - linterOptions: { - reportUnusedDisableDirectives: true, - }, - plugins: { - ...baseConfig.plugins, - ...nodeConfig.plugins, - }, - rules: { - ...baseConfig.rules, - ...nodeConfig.rules, - 'import/no-anonymous-default-export': 'off', - 'import/no-default-export': 'off', - 'import/extensions': 'off', - 'n/file-extension-in-import': 'off', + { + languageOptions: { + sourceType: 'module', + }, + plugins: { + ...baseConfig.plugins, + ...nodeConfig.plugins, + }, + rules: { + ...baseConfig.rules, + ...nodeConfig.rules, + 'import/no-anonymous-default-export': 'off', + 'import/no-default-export': 'off', + 'import/no-unresolved': 'off', + 'import/extensions': 'off', + 'n/file-extension-in-import': 'off', + 'n/no-missing-import': 'off', + }, + settings: baseConfig.settings, }, - settings: baseConfig.settings, -}; +]); diff --git a/package.json b/package.json index 4c5dd0e3..903976a2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "seekingalpha-javascript-style", - "version": "8.0.0", + "version": "9.0.0", "description": "Set of linting rules, guides and best practices for best Javascript code", "main": "index.js", "type": "module", @@ -46,15 +46,14 @@ }, "devDependencies": { "@seekingalpha/prettier-config-samw": "2.0.0", - "eslint": "8.57.1", - "eslint-config-seekingalpha-base": "10.0.0", - "eslint-config-seekingalpha-node": "8.0.0", + "eslint": "9.22.0", + "eslint-config-seekingalpha-base": "11.0.0", + "eslint-config-seekingalpha-node": "9.0.0", "eslint-plugin-array-func": "5.0.2", "eslint-plugin-import": "2.31.0", "eslint-plugin-n": "17.16.2", "eslint-plugin-promise": "7.2.1", "eslint-plugin-unicorn": "56.0.1", - "globals": "16.0.0", "husky": "9.1.7", "lint-staged": "15.4.3", "prettier": "3.5.3"