@@ -5,73 +5,89 @@ const esmConfig = require("./configs/recommended-module")
55const cjsConfig = require ( "./configs/recommended-script" )
66const recommendedConfig = require ( "./configs/recommended" )
77
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+ */
4719
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 = {
5422 meta : {
5523 name : pkg . name ,
5624 version : pkg . version ,
5725 } ,
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+ } ,
5983}
6084
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 }
7591}
7692
77- module . exports = mod
93+ module . exports = plugin
0 commit comments