@@ -5,73 +5,89 @@ const esmConfig = require("./configs/recommended-module")
5
5
const cjsConfig = require ( "./configs/recommended-script" )
6
6
const recommendedConfig = require ( "./configs/recommended" )
7
7
8
- const rules = {
9
- "callback-return" : require ( "./rules/callback-return" ) ,
10
- "exports-style" : require ( "./rules/exports-style" ) ,
11
- "file-extension-in-import" : require ( "./rules/file-extension-in-import" ) ,
12
- "global-require" : require ( "./rules/global-require" ) ,
13
- "handle-callback-err" : require ( "./rules/handle-callback-err" ) ,
14
- "no-callback-literal" : require ( "./rules/no-callback-literal" ) ,
15
- "no-deprecated-api" : require ( "./rules/no-deprecated-api" ) ,
16
- "no-exports-assign" : require ( "./rules/no-exports-assign" ) ,
17
- "no-extraneous-import" : require ( "./rules/no-extraneous-import" ) ,
18
- "no-extraneous-require" : require ( "./rules/no-extraneous-require" ) ,
19
- "no-missing-import" : require ( "./rules/no-missing-import" ) ,
20
- "no-missing-require" : require ( "./rules/no-missing-require" ) ,
21
- "no-mixed-requires" : require ( "./rules/no-mixed-requires" ) ,
22
- "no-new-require" : require ( "./rules/no-new-require" ) ,
23
- "no-path-concat" : require ( "./rules/no-path-concat" ) ,
24
- "no-process-env" : require ( "./rules/no-process-env" ) ,
25
- "no-process-exit" : require ( "./rules/no-process-exit" ) ,
26
- "no-restricted-import" : require ( "./rules/no-restricted-import" ) ,
27
- "no-restricted-require" : require ( "./rules/no-restricted-require" ) ,
28
- "no-sync" : require ( "./rules/no-sync" ) ,
29
- "no-unpublished-bin" : require ( "./rules/no-unpublished-bin" ) ,
30
- "no-unpublished-import" : require ( "./rules/no-unpublished-import" ) ,
31
- "no-unpublished-require" : require ( "./rules/no-unpublished-require" ) ,
32
- "no-unsupported-features/es-builtins" : require ( "./rules/no-unsupported-features/es-builtins" ) ,
33
- "no-unsupported-features/es-syntax" : require ( "./rules/no-unsupported-features/es-syntax" ) ,
34
- "no-unsupported-features/node-builtins" : require ( "./rules/no-unsupported-features/node-builtins" ) ,
35
- "prefer-global/buffer" : require ( "./rules/prefer-global/buffer" ) ,
36
- "prefer-global/console" : require ( "./rules/prefer-global/console" ) ,
37
- "prefer-global/process" : require ( "./rules/prefer-global/process" ) ,
38
- "prefer-global/text-decoder" : require ( "./rules/prefer-global/text-decoder" ) ,
39
- "prefer-global/text-encoder" : require ( "./rules/prefer-global/text-encoder" ) ,
40
- "prefer-global/url-search-params" : require ( "./rules/prefer-global/url-search-params" ) ,
41
- "prefer-global/url" : require ( "./rules/prefer-global/url" ) ,
42
- "prefer-node-protocol" : require ( "./rules/prefer-node-protocol" ) ,
43
- "prefer-promises/dns" : require ( "./rules/prefer-promises/dns" ) ,
44
- "prefer-promises/fs" : require ( "./rules/prefer-promises/fs" ) ,
45
- "process-exit-as-throw" : require ( "./rules/process-exit-as-throw" ) ,
46
- hashbang : require ( "./rules/hashbang" ) ,
8
+ /**
9
+ * @typedef {{
10
+ 'recommended-module': import('eslint').ESLint.ConfigData;
11
+ 'recommended-script': import('eslint').ESLint.ConfigData;
12
+ 'recommended': import('eslint').ESLint.ConfigData;
13
+ 'flat/recommended-module': import('eslint').Linter.FlatConfig;
14
+ 'flat/recommended-script': import('eslint').Linter.FlatConfig;
15
+ 'flat/recommended': import('eslint').Linter.FlatConfig;
16
+ 'flat/mixed-esm-and-cjs': import('eslint').Linter.FlatConfig[];
17
+ }} Configs
18
+ */
47
19
48
- // Deprecated rules.
49
- "no-hide-core-modules" : require ( "./rules/no-hide-core-modules" ) ,
50
- shebang : require ( "./rules/shebang" ) ,
51
- }
52
-
53
- const mod = {
20
+ /** @type {import('eslint').ESLint.Plugin & { configs: Configs } } */
21
+ const plugin = {
54
22
meta : {
55
23
name : pkg . name ,
56
24
version : pkg . version ,
57
25
} ,
58
- rules,
26
+ rules : /** @type {Record<string, import('eslint').Rule.RuleModule> } */ ( {
27
+ "callback-return" : require ( "./rules/callback-return" ) ,
28
+ "exports-style" : require ( "./rules/exports-style" ) ,
29
+ "file-extension-in-import" : require ( "./rules/file-extension-in-import" ) ,
30
+ "global-require" : require ( "./rules/global-require" ) ,
31
+ "handle-callback-err" : require ( "./rules/handle-callback-err" ) ,
32
+ "no-callback-literal" : require ( "./rules/no-callback-literal" ) ,
33
+ "no-deprecated-api" : require ( "./rules/no-deprecated-api" ) ,
34
+ "no-exports-assign" : require ( "./rules/no-exports-assign" ) ,
35
+ "no-extraneous-import" : require ( "./rules/no-extraneous-import" ) ,
36
+ "no-extraneous-require" : require ( "./rules/no-extraneous-require" ) ,
37
+ "no-missing-import" : require ( "./rules/no-missing-import" ) ,
38
+ "no-missing-require" : require ( "./rules/no-missing-require" ) ,
39
+ "no-mixed-requires" : require ( "./rules/no-mixed-requires" ) ,
40
+ "no-new-require" : require ( "./rules/no-new-require" ) ,
41
+ "no-path-concat" : require ( "./rules/no-path-concat" ) ,
42
+ "no-process-env" : require ( "./rules/no-process-env" ) ,
43
+ "no-process-exit" : require ( "./rules/no-process-exit" ) ,
44
+ "no-restricted-import" : require ( "./rules/no-restricted-import" ) ,
45
+ "no-restricted-require" : require ( "./rules/no-restricted-require" ) ,
46
+ "no-sync" : require ( "./rules/no-sync" ) ,
47
+ "no-unpublished-bin" : require ( "./rules/no-unpublished-bin" ) ,
48
+ "no-unpublished-import" : require ( "./rules/no-unpublished-import" ) ,
49
+ "no-unpublished-require" : require ( "./rules/no-unpublished-require" ) ,
50
+ "no-unsupported-features/es-builtins" : require ( "./rules/no-unsupported-features/es-builtins" ) ,
51
+ "no-unsupported-features/es-syntax" : require ( "./rules/no-unsupported-features/es-syntax" ) ,
52
+ "no-unsupported-features/node-builtins" : require ( "./rules/no-unsupported-features/node-builtins" ) ,
53
+ "prefer-global/buffer" : require ( "./rules/prefer-global/buffer" ) ,
54
+ "prefer-global/console" : require ( "./rules/prefer-global/console" ) ,
55
+ "prefer-global/process" : require ( "./rules/prefer-global/process" ) ,
56
+ "prefer-global/text-decoder" : require ( "./rules/prefer-global/text-decoder" ) ,
57
+ "prefer-global/text-encoder" : require ( "./rules/prefer-global/text-encoder" ) ,
58
+ "prefer-global/url-search-params" : require ( "./rules/prefer-global/url-search-params" ) ,
59
+ "prefer-global/url" : require ( "./rules/prefer-global/url" ) ,
60
+ "prefer-node-protocol" : require ( "./rules/prefer-node-protocol" ) ,
61
+ "prefer-promises/dns" : require ( "./rules/prefer-promises/dns" ) ,
62
+ "prefer-promises/fs" : require ( "./rules/prefer-promises/fs" ) ,
63
+ "process-exit-as-throw" : require ( "./rules/process-exit-as-throw" ) ,
64
+ hashbang : require ( "./rules/hashbang" ) ,
65
+
66
+ // Deprecated rules.
67
+ "no-hide-core-modules" : require ( "./rules/no-hide-core-modules" ) ,
68
+ shebang : require ( "./rules/shebang" ) ,
69
+ } ) ,
70
+ configs : {
71
+ "recommended-module" : { plugins : [ "n" ] , ...esmConfig . eslintrc } ,
72
+ "recommended-script" : { plugins : [ "n" ] , ...cjsConfig . eslintrc } ,
73
+ recommended : { plugins : [ "n" ] , ...recommendedConfig . eslintrc } ,
74
+ "flat/recommended-module" : { ...esmConfig . flat } ,
75
+ "flat/recommended-script" : { ...cjsConfig . flat } ,
76
+ "flat/recommended" : { ...recommendedConfig . flat } ,
77
+ "flat/mixed-esm-and-cjs" : [
78
+ { files : [ "**/*.js" ] , ...recommendedConfig . flat } ,
79
+ { files : [ "**/*.mjs" ] , ...esmConfig . flat } ,
80
+ { files : [ "**/*.cjs" ] , ...cjsConfig . flat } ,
81
+ ] ,
82
+ } ,
59
83
}
60
84
61
- // set configs, e.g. mod.configs["recommended-module"]
62
- // do not defined in the mod obj - to avoid circular dependency
63
- mod . configs = {
64
- "recommended-module" : { plugins : [ "n" ] , ...esmConfig . eslintrc } ,
65
- "recommended-script" : { plugins : [ "n" ] , ...cjsConfig . eslintrc } ,
66
- recommended : { plugins : [ "n" ] , ...recommendedConfig . eslintrc } ,
67
- "flat/recommended-module" : { plugins : { n : mod } , ...esmConfig . flat } ,
68
- "flat/recommended-script" : { plugins : { n : mod } , ...cjsConfig . flat } ,
69
- "flat/recommended" : { plugins : { n : mod } , ...recommendedConfig . flat } ,
70
- "flat/mixed-esm-and-cjs" : [
71
- { plugins : { n : mod } , files : [ "**/*.js" ] , ...recommendedConfig . flat } ,
72
- { plugins : { n : mod } , files : [ "**/*.mjs" ] , ...esmConfig . flat } ,
73
- { plugins : { n : mod } , files : [ "**/*.cjs" ] , ...cjsConfig . flat } ,
74
- ] ,
85
+ plugin . configs [ "flat/recommended-module" ] . plugins = { n : plugin }
86
+ plugin . configs [ "flat/recommended-script" ] . plugins = { n : plugin }
87
+ plugin . configs [ "flat/recommended" ] . plugins = { n : plugin }
88
+
89
+ for ( const config of plugin . configs [ "flat/mixed-esm-and-cjs" ] ) {
90
+ config . plugins = { n : plugin }
75
91
}
76
92
77
- module . exports = mod
93
+ module . exports = plugin
0 commit comments