diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 913b9b30..5617d8e6 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -4,7 +4,13 @@ module.exports = { }, reportUnusedDisableDirectives: true, extends: [ - 'eslint-config-seekingalpha-base/prettier', + 'eslint-config-seekingalpha-base', 'eslint-config-seekingalpha-node', ], + rules: { + 'import/no-anonymous-default-export': 'off', + 'import/no-default-export': 'off', + 'import/extensions': 'off', + 'n/file-extension-in-import': 'off', + }, }; diff --git a/eslint-configs/eslint-config-seekingalpha-base/CHANGELOG.md b/eslint-configs/eslint-config-seekingalpha-base/CHANGELOG.md index cff879c5..78ea015b 100644 --- a/eslint-configs/eslint-config-seekingalpha-base/CHANGELOG.md +++ b/eslint-configs/eslint-config-seekingalpha-base/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log +## 9.0.0 - 2025-03-06 + +- [new] expose sharable flat config + ## 8.17.1 - 2025-03-06 - [breaking] removed separate prettier config diff --git a/eslint-configs/eslint-config-seekingalpha-base/flat.js b/eslint-configs/eslint-config-seekingalpha-base/flat.js index c5104048..b72c79fa 100644 --- a/eslint-configs/eslint-config-seekingalpha-base/flat.js +++ b/eslint-configs/eslint-config-seekingalpha-base/flat.js @@ -1,9 +1,24 @@ -// eslint-disable-next-line n/file-extension-in-import, import/extensions import esLintConfig from './rules/eslint/flat.js'; +import esLintPluginArrayFuncConfig from './rules/eslint-plugin-array-func/flat.js'; +import esLintPluginImport from './rules/eslint-plugin-import/flat.js'; +import esLintPluginPromise from './rules/eslint-plugin-promise/flat.js'; +import esLintPluginUnicorn from './rules/eslint-plugin-unicorn/flat.js'; -// eslint-disable-next-line import/no-default-export, import/no-anonymous-default-export export default { + plugins: { + ...esLintPluginArrayFuncConfig.plugins, + ...esLintPluginImport.plugins, + ...esLintPluginPromise.plugins, + ...esLintPluginUnicorn.plugins, + }, rules: { ...esLintConfig.rules, + ...esLintPluginArrayFuncConfig.rules, + ...esLintPluginImport.rules, + ...esLintPluginPromise.rules, + ...esLintPluginUnicorn.rules, + }, + settings: { + ...esLintPluginImport.settings, }, }; diff --git a/eslint-configs/eslint-config-seekingalpha-base/package.json b/eslint-configs/eslint-config-seekingalpha-base/package.json index bcb1d1bb..a704ab64 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": "8.17.1", + "version": "9.0.0", "description": "SeekingAlpha's sharable base ESLint config", "main": "index.js", "scripts": { diff --git a/eslint-configs/eslint-config-seekingalpha-base/rules/eslint-plugin-array-func/flat.js b/eslint-configs/eslint-config-seekingalpha-base/rules/eslint-plugin-array-func/flat.js new file mode 100644 index 00000000..84589b91 --- /dev/null +++ b/eslint-configs/eslint-config-seekingalpha-base/rules/eslint-plugin-array-func/flat.js @@ -0,0 +1,10 @@ +import pluginArrayFunc from 'eslint-plugin-array-func'; + +import config from './index.js'; + +export default { + plugins: { + 'array-func': pluginArrayFunc, + }, + rules: config.rules, +}; diff --git a/eslint-configs/eslint-config-seekingalpha-base/rules/eslint-plugin-import/flat.js b/eslint-configs/eslint-config-seekingalpha-base/rules/eslint-plugin-import/flat.js new file mode 100644 index 00000000..9ad0c359 --- /dev/null +++ b/eslint-configs/eslint-config-seekingalpha-base/rules/eslint-plugin-import/flat.js @@ -0,0 +1,21 @@ +import importPlugin from 'eslint-plugin-import'; + +import helpfulWarnings from './helpful-warnings.js'; +import moduleSystem from './module-systems.js'; +import staticAnalysis from './static-analysis.js'; +import styleGuide from './style-guide.js'; + +import config from './index.js'; + +export default { + plugins: { + import: importPlugin, + }, + rules: { + ...helpfulWarnings.rules, + ...moduleSystem.rules, + ...staticAnalysis.rules, + ...styleGuide.rules, + }, + settings: config.settings, +}; diff --git a/eslint-configs/eslint-config-seekingalpha-base/rules/eslint-plugin-promise/flat.js b/eslint-configs/eslint-config-seekingalpha-base/rules/eslint-plugin-promise/flat.js new file mode 100644 index 00000000..365a5386 --- /dev/null +++ b/eslint-configs/eslint-config-seekingalpha-base/rules/eslint-plugin-promise/flat.js @@ -0,0 +1,10 @@ +import promisePlugin from 'eslint-plugin-promise'; + +import config from './index.js'; + +export default { + plugins: { + promise: promisePlugin, + }, + rules: config.rules, +}; diff --git a/eslint-configs/eslint-config-seekingalpha-base/rules/eslint-plugin-unicorn/flat.js b/eslint-configs/eslint-config-seekingalpha-base/rules/eslint-plugin-unicorn/flat.js new file mode 100644 index 00000000..93b5408b --- /dev/null +++ b/eslint-configs/eslint-config-seekingalpha-base/rules/eslint-plugin-unicorn/flat.js @@ -0,0 +1,10 @@ +import eslintPluginUnicorn from 'eslint-plugin-unicorn'; + +import config from './index.js'; + +export default { + plugins: { + unicorn: eslintPluginUnicorn, + }, + rules: config.rules, +}; diff --git a/eslint-configs/eslint-config-seekingalpha-base/rules/eslint/flat.js b/eslint-configs/eslint-config-seekingalpha-base/rules/eslint/flat.js index d3901b90..b8ef03f5 100644 --- a/eslint-configs/eslint-config-seekingalpha-base/rules/eslint/flat.js +++ b/eslint-configs/eslint-config-seekingalpha-base/rules/eslint/flat.js @@ -1,11 +1,7 @@ -// eslint-disable-next-line n/file-extension-in-import, import/extensions import layout from './layout-and-formatting.js'; -// eslint-disable-next-line n/file-extension-in-import, import/extensions import problems from './possible-problems.js'; -// eslint-disable-next-line n/file-extension-in-import, import/extensions import suggestions from './suggestions.js'; -// eslint-disable-next-line import/no-default-export, import/no-anonymous-default-export export default { rules: { ...layout.rules, diff --git a/eslint-configs/eslint-config-seekingalpha-node/CHANGELOG.md b/eslint-configs/eslint-config-seekingalpha-node/CHANGELOG.md index de736fea..26d2abbc 100644 --- a/eslint-configs/eslint-config-seekingalpha-node/CHANGELOG.md +++ b/eslint-configs/eslint-config-seekingalpha-node/CHANGELOG.md @@ -1,5 +1,10 @@ # Change Log +## 7.0.0 - 2025-03-06 + +- [deps] update `eslint-plugin-n` to version `17.16.2` +- [new] flat config + ## 6.9.0 - 2025-03-03 - [deps] update `eslint-plugin-n` to version `17.16.1` diff --git a/eslint-configs/eslint-config-seekingalpha-node/README.md b/eslint-configs/eslint-config-seekingalpha-node/README.md index 950512bb..a3bb290d 100644 --- a/eslint-configs/eslint-config-seekingalpha-node/README.md +++ b/eslint-configs/eslint-config-seekingalpha-node/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@8.57.1 eslint-plugin-n@17.16.1 --save-dev + npm install eslint@8.57.1 eslint-plugin-n@17.16.2 --save-dev Install SeekingAlpha shareable ESLint: diff --git a/eslint-configs/eslint-config-seekingalpha-node/flat.js b/eslint-configs/eslint-config-seekingalpha-node/flat.js new file mode 100644 index 00000000..c9e992ae --- /dev/null +++ b/eslint-configs/eslint-config-seekingalpha-node/flat.js @@ -0,0 +1,6 @@ +import config from './rules/eslint-plugin-n/flat.js'; + +export default { + plugins: config.plugins, + rules: config.rules, +}; diff --git a/eslint-configs/eslint-config-seekingalpha-node/package.json b/eslint-configs/eslint-config-seekingalpha-node/package.json index e8f3faad..a2a8ab55 100644 --- a/eslint-configs/eslint-config-seekingalpha-node/package.json +++ b/eslint-configs/eslint-config-seekingalpha-node/package.json @@ -1,6 +1,6 @@ { "name": "eslint-config-seekingalpha-node", - "version": "6.9.0", + "version": "7.0.0", "description": "SeekingAlpha's sharable node.js ESLint config", "main": "index.js", "scripts": { @@ -50,11 +50,11 @@ }, "peerDependencies": { "eslint": "8.57.1", - "eslint-plugin-n": "17.16.1" + "eslint-plugin-n": "17.16.2" }, "devDependencies": { "eslint": "8.57.1", "eslint-find-rules": "5.0.0", - "eslint-plugin-n": "17.16.1" + "eslint-plugin-n": "17.16.2" } } diff --git a/eslint-configs/eslint-config-seekingalpha-node/rules/eslint-plugin-n/flat.js b/eslint-configs/eslint-config-seekingalpha-node/rules/eslint-plugin-n/flat.js new file mode 100644 index 00000000..8a646c31 --- /dev/null +++ b/eslint-configs/eslint-config-seekingalpha-node/rules/eslint-plugin-n/flat.js @@ -0,0 +1,11 @@ +import nodePlugin from 'eslint-plugin-n'; + +import config from './index.js'; + +export default { + plugins: { + // eslint-disable-next-line id-length + n: nodePlugin, + }, + rules: config.rules, +}; diff --git a/package.json b/package.json index d69fd809..ccfc6a8c 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "devDependencies": { "@seekingalpha/prettier-config-samw": "2.0.0", "eslint": "8.57.1", - "eslint-config-seekingalpha-base": "8.16.0", + "eslint-config-seekingalpha-base": "8.17.1", "eslint-config-seekingalpha-node": "6.9.0", "eslint-plugin-array-func": "4.0.0", "eslint-plugin-import": "2.31.0", diff --git a/prettier.config.js b/prettier.config.js index 03860409..684cd3b2 100644 --- a/prettier.config.js +++ b/prettier.config.js @@ -1,6 +1,5 @@ import config from '@seekingalpha/prettier-config-samw'; -// eslint-disable-next-line import/no-anonymous-default-export, import/no-default-export export default { ...config, };