Skip to content

Commit bd7c98a

Browse files
committed
feat: add config "flat/all"
open questions: 1. need to add an equivalent eslintrc config? 2. need to add language options? fixes #400
1 parent 308c80c commit bd7c98a

8 files changed

+98
-25
lines changed

.eslint-doc-generatorrc.js

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ const config = {
88
"flat/recommended-module",
99
"flat/recommended",
1010
"flat/mixed-esm-and-cjs",
11+
"flat/all",
1112
],
1213
urlConfigs: "https://github.com/eslint-community/eslint-plugin-n#-configs",
1314
configEmoji: [

lib/all-rules.js

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/**
2+
* @fileoverview All rules in the plugin.
3+
* @author aladdin-add<[email protected]>
4+
* TODO: maybe auto-generated in the future?
5+
*/
6+
"use strict"
7+
8+
/** @import { Rule } from 'eslint' */
9+
10+
/** @type {Record<string, Rule.RuleModule> } */
11+
module.exports = {
12+
"callback-return": require("./rules/callback-return"),
13+
"exports-style": require("./rules/exports-style"),
14+
"file-extension-in-import": require("./rules/file-extension-in-import"),
15+
"global-require": require("./rules/global-require"),
16+
"handle-callback-err": require("./rules/handle-callback-err"),
17+
"no-callback-literal": require("./rules/no-callback-literal"),
18+
"no-deprecated-api": require("./rules/no-deprecated-api"),
19+
"no-exports-assign": require("./rules/no-exports-assign"),
20+
"no-extraneous-import": require("./rules/no-extraneous-import"),
21+
"no-extraneous-require": require("./rules/no-extraneous-require"),
22+
"no-missing-import": require("./rules/no-missing-import"),
23+
"no-missing-require": require("./rules/no-missing-require"),
24+
"no-mixed-requires": require("./rules/no-mixed-requires"),
25+
"no-new-require": require("./rules/no-new-require"),
26+
"no-path-concat": require("./rules/no-path-concat"),
27+
"no-process-env": require("./rules/no-process-env"),
28+
"no-process-exit": require("./rules/no-process-exit"),
29+
"no-restricted-import": require("./rules/no-restricted-import"),
30+
"no-restricted-require": require("./rules/no-restricted-require"),
31+
"no-sync": require("./rules/no-sync"),
32+
"no-unpublished-bin": require("./rules/no-unpublished-bin"),
33+
"no-unpublished-import": require("./rules/no-unpublished-import"),
34+
"no-unpublished-require": require("./rules/no-unpublished-require"),
35+
"no-unsupported-features/es-builtins": require("./rules/no-unsupported-features/es-builtins"),
36+
"no-unsupported-features/es-syntax": require("./rules/no-unsupported-features/es-syntax"),
37+
"no-unsupported-features/node-builtins": require("./rules/no-unsupported-features/node-builtins"),
38+
"prefer-global/buffer": require("./rules/prefer-global/buffer"),
39+
"prefer-global/console": require("./rules/prefer-global/console"),
40+
"prefer-global/process": require("./rules/prefer-global/process"),
41+
"prefer-global/text-decoder": require("./rules/prefer-global/text-decoder"),
42+
"prefer-global/text-encoder": require("./rules/prefer-global/text-encoder"),
43+
"prefer-global/url-search-params": require("./rules/prefer-global/url-search-params"),
44+
"prefer-global/url": require("./rules/prefer-global/url"),
45+
"prefer-node-protocol": require("./rules/prefer-node-protocol"),
46+
"prefer-promises/dns": require("./rules/prefer-promises/dns"),
47+
"prefer-promises/fs": require("./rules/prefer-promises/fs"),
48+
"process-exit-as-throw": require("./rules/process-exit-as-throw"),
49+
hashbang: require("./rules/hashbang"),
50+
51+
// Deprecated rules.
52+
"no-hide-core-modules": require("./rules/no-hide-core-modules"),
53+
shebang: require("./rules/shebang"),
54+
}

lib/configs/_commons.js

+24-20
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,26 @@
11
"use strict"
22

3-
/**
4-
* @type {import('eslint').Linter.RulesRecord}
5-
*/
6-
module.exports.commonRules = {
7-
"n/no-deprecated-api": "error",
8-
"n/no-extraneous-import": "error",
9-
"n/no-extraneous-require": "error",
10-
"n/no-exports-assign": "error",
11-
"n/no-missing-import": "error",
12-
"n/no-missing-require": "error",
13-
"n/no-process-exit": "error",
14-
"n/no-unpublished-bin": "error",
15-
"n/no-unpublished-import": "error",
16-
"n/no-unpublished-require": "error",
17-
"n/no-unsupported-features/es-builtins": "error",
18-
"n/no-unsupported-features/es-syntax": "error",
19-
"n/no-unsupported-features/node-builtins": "error",
20-
"n/process-exit-as-throw": "error",
21-
"n/hashbang": "error",
22-
}
3+
const rules = require("../all-rules")
4+
5+
/** @type {import('eslint').Linter.RulesRecord} */
6+
const recommendeRulesConfig = {}
7+
8+
/** @type {import('eslint').Linter.RulesRecord} */
9+
const allRulesConfig = {}
10+
11+
Object.keys(rules).map(ruleName => {
12+
const scopedRuleName = `n/${ruleName}`
13+
const rule = rules[ruleName]
14+
15+
// only add rules that are not deprecated
16+
if (rule?.meta?.deprecated !== true) {
17+
allRulesConfig[scopedRuleName] = "error"
18+
19+
if (rule?.meta?.docs?.recommended === true) {
20+
recommendeRulesConfig[scopedRuleName] = "error"
21+
}
22+
}
23+
})
24+
25+
exports.recommendeRulesConfig = recommendeRulesConfig
26+
exports.allRulesConfig = allRulesConfig

lib/configs/all.js

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/**
2+
* @fileoverview config for enabling all rules in the plugin.
3+
* @author aladdin-add<[email protected]>SS
4+
*/
5+
"use strict"
6+
7+
const { allRulesConfig } = require("./_commons")
8+
9+
exports.flat = {
10+
rules: allRulesConfig,
11+
}

lib/configs/recommended-module.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"use strict"
22

33
const globals = require("globals")
4-
const { commonRules } = require("./_commons")
4+
const { recommendeRulesConfig } = require("./_commons")
55

66
/**
77
* https://eslint.org/docs/latest/use/configure/configuration-files
@@ -25,7 +25,7 @@ module.exports.eslintrc = {
2525
sourceType: "module",
2626
},
2727
rules: {
28-
...commonRules,
28+
...recommendeRulesConfig,
2929
"n/no-unsupported-features/es-syntax": [
3030
"error",
3131
{ ignores: ["modules"] },

lib/configs/recommended-script.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"use strict"
22

33
const globals = require("globals")
4-
const { commonRules } = require("./_commons")
4+
const { recommendeRulesConfig } = require("./_commons")
55

66
/**
77
* https://eslint.org/docs/latest/use/configure/configuration-files
@@ -25,7 +25,7 @@ module.exports.eslintrc = {
2525
sourceType: "script",
2626
},
2727
rules: {
28-
...commonRules,
28+
...recommendeRulesConfig,
2929
"n/no-unsupported-features/es-syntax": ["error", { ignores: [] }],
3030
},
3131
}

lib/index.js

+3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ const pkg = require("../package.json")
44
const esmConfig = require("./configs/recommended-module")
55
const cjsConfig = require("./configs/recommended-script")
66
const recommendedConfig = require("./configs/recommended")
7+
const allRulesConfig = require("./configs/all")
78

89
/** @import { ESLint, Linter } from 'eslint' */
910

@@ -67,6 +68,7 @@ const base = {
6768
* 'flat/recommended-script': Linter.Config;
6869
* 'flat/recommended': Linter.Config;
6970
* 'flat/mixed-esm-and-cjs': Linter.Config[];
71+
* 'flat/all': Linter.Config;
7072
* }} Configs
7173
*/
7274

@@ -83,6 +85,7 @@ const configs = {
8385
{ files: ["**/*.mjs"], plugins: { n: base }, ...esmConfig.flat },
8486
{ files: ["**/*.cjs"], plugins: { n: base }, ...cjsConfig.flat },
8587
],
88+
"flat/all": { plugins: { n: base }, ...allRulesConfig.flat },
8689
}
8790

8891
/** @type {ESLint.Plugin & { configs: Configs }} */

lib/rules/no-process-exit.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ module.exports = {
1717
type: "suggestion",
1818
docs: {
1919
description: "disallow the use of `process.exit()`",
20-
recommended: false,
20+
recommended: true,
2121
url: "https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-process-exit.md",
2222
},
2323
fixable: null,

0 commit comments

Comments
 (0)