Skip to content
This repository was archived by the owner on Mar 7, 2025. It is now read-only.

Commit 960af44

Browse files
committed
Clean up generated rules and correctly create nested rule definitions
1 parent beaf26b commit 960af44

15 files changed

+296
-138
lines changed

scripts/generate-rule-files.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,10 @@ async function main(): Promise<void> {
8282

8383
const ruleProviderDir: string = path.resolve(rulesDir, pluginName);
8484

85+
if (fs.existsSync(ruleProviderDir)) {
86+
fs.rmSync(ruleProviderDir, { recursive: true, force: true });
87+
}
88+
8589
fs.mkdirSync(ruleProviderDir, { mode: 0o755, recursive: true });
8690

8791
const failedRules: string[] = [];
@@ -234,6 +238,12 @@ export type ${ruleNamePascalCase}Options = ${
234238
}
235239
`;
236240
ruleContent = format(ruleContent, PRETTIER_OPTIONS);
241+
if (nestedDepth > 1) {
242+
const subPath: string = rulePath.replace(/\/[\w-]+.d.ts$/, '');
243+
if (!fs.existsSync(subPath)) {
244+
fs.mkdirSync(rulePath.replace(/\/[\w-]+.d.ts$/, ''), { recursive: true });
245+
}
246+
}
237247
fs.writeFileSync(rulePath, ruleContent);
238248
} catch (error) {
239249
if (error instanceof Error) {

src/rules/eslint/no-empty-function.d.ts

Lines changed: 0 additions & 54 deletions
This file was deleted.

src/rules/node/index.d.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,15 @@ import type { NoUnsupportedFeaturesRule } from './no-unsupported-features';
2626
import type { NoUnsupportedFeaturesEsBuiltinsRule } from './no-unsupported-features/es-builtins';
2727
import type { NoUnsupportedFeaturesEsSyntaxRule } from './no-unsupported-features/es-syntax';
2828
import type { NoUnsupportedFeaturesNodeBuiltinsRule } from './no-unsupported-features/node-builtins';
29+
import type { PreferGlobalBufferRule } from './prefer-global/buffer';
30+
import type { PreferGlobalConsoleRule } from './prefer-global/console';
31+
import type { PreferGlobalProcessRule } from './prefer-global/process';
32+
import type { PreferGlobalTextDecoderRule } from './prefer-global/text-decoder';
33+
import type { PreferGlobalTextEncoderRule } from './prefer-global/text-encoder';
34+
import type { PreferGlobalUrlRule } from './prefer-global/url';
35+
import type { PreferGlobalUrlSearchParamsRule } from './prefer-global/url-search-params';
36+
import type { PreferPromisesDnsRule } from './prefer-promises/dns';
37+
import type { PreferPromisesFsRule } from './prefer-promises/fs';
2938
import type { ProcessExitAsThrowRule } from './process-exit-as-throw';
3039
import type { ShebangRule } from './shebang';
3140

@@ -58,6 +67,15 @@ export type NodeRules = CallbackReturnRule &
5867
NoUnsupportedFeaturesEsBuiltinsRule &
5968
NoUnsupportedFeaturesEsSyntaxRule &
6069
NoUnsupportedFeaturesNodeBuiltinsRule &
70+
PreferGlobalBufferRule &
71+
PreferGlobalConsoleRule &
72+
PreferGlobalProcessRule &
73+
PreferGlobalTextDecoderRule &
74+
PreferGlobalTextEncoderRule &
75+
PreferGlobalUrlSearchParamsRule &
76+
PreferGlobalUrlRule &
77+
PreferPromisesDnsRule &
78+
PreferPromisesFsRule &
6179
ProcessExitAsThrowRule &
6280
ShebangRule &
6381
NoHideCoreModulesRule &
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import type { RuleConfig } from '../../rule-config';
2+
3+
/**
4+
* Option.
5+
*/
6+
export type PreferGlobalBufferOption = 'always' | 'never';
7+
8+
/**
9+
* Options.
10+
*/
11+
export type PreferGlobalBufferOptions = [PreferGlobalBufferOption?];
12+
13+
/**
14+
* Enforce either `Buffer` or `require("buffer").Buffer`.
15+
*
16+
* @see [prefer-global/buffer](https://github.com/mysticatea/eslint-plugin-node/blob/v11.1.0/docs/rules/prefer-global/buffer.md)
17+
*/
18+
export type PreferGlobalBufferRuleConfig = RuleConfig<PreferGlobalBufferOptions>;
19+
20+
/**
21+
* Enforce either `Buffer` or `require("buffer").Buffer`.
22+
*
23+
* @see [prefer-global/buffer](https://github.com/mysticatea/eslint-plugin-node/blob/v11.1.0/docs/rules/prefer-global/buffer.md)
24+
*/
25+
export interface PreferGlobalBufferRule {
26+
/**
27+
* Enforce either `Buffer` or `require("buffer").Buffer`.
28+
*
29+
* @see [prefer-global/buffer](https://github.com/mysticatea/eslint-plugin-node/blob/v11.1.0/docs/rules/prefer-global/buffer.md)
30+
*/
31+
'node/prefer-global/buffer': PreferGlobalBufferRuleConfig;
32+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import type { RuleConfig } from '../../rule-config';
2+
3+
/**
4+
* Option.
5+
*/
6+
export type PreferGlobalConsoleOption = 'always' | 'never';
7+
8+
/**
9+
* Options.
10+
*/
11+
export type PreferGlobalConsoleOptions = [PreferGlobalConsoleOption?];
12+
13+
/**
14+
* Enforce either `console` or `require("console")`.
15+
*
16+
* @see [prefer-global/console](https://github.com/mysticatea/eslint-plugin-node/blob/v11.1.0/docs/rules/prefer-global/console.md)
17+
*/
18+
export type PreferGlobalConsoleRuleConfig = RuleConfig<PreferGlobalConsoleOptions>;
19+
20+
/**
21+
* Enforce either `console` or `require("console")`.
22+
*
23+
* @see [prefer-global/console](https://github.com/mysticatea/eslint-plugin-node/blob/v11.1.0/docs/rules/prefer-global/console.md)
24+
*/
25+
export interface PreferGlobalConsoleRule {
26+
/**
27+
* Enforce either `console` or `require("console")`.
28+
*
29+
* @see [prefer-global/console](https://github.com/mysticatea/eslint-plugin-node/blob/v11.1.0/docs/rules/prefer-global/console.md)
30+
*/
31+
'node/prefer-global/console': PreferGlobalConsoleRuleConfig;
32+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import type { RuleConfig } from '../../rule-config';
2+
3+
/**
4+
* Option.
5+
*/
6+
export type PreferGlobalProcessOption = 'always' | 'never';
7+
8+
/**
9+
* Options.
10+
*/
11+
export type PreferGlobalProcessOptions = [PreferGlobalProcessOption?];
12+
13+
/**
14+
* Enforce either `process` or `require("process")`.
15+
*
16+
* @see [prefer-global/process](https://github.com/mysticatea/eslint-plugin-node/blob/v11.1.0/docs/rules/prefer-global/process.md)
17+
*/
18+
export type PreferGlobalProcessRuleConfig = RuleConfig<PreferGlobalProcessOptions>;
19+
20+
/**
21+
* Enforce either `process` or `require("process")`.
22+
*
23+
* @see [prefer-global/process](https://github.com/mysticatea/eslint-plugin-node/blob/v11.1.0/docs/rules/prefer-global/process.md)
24+
*/
25+
export interface PreferGlobalProcessRule {
26+
/**
27+
* Enforce either `process` or `require("process")`.
28+
*
29+
* @see [prefer-global/process](https://github.com/mysticatea/eslint-plugin-node/blob/v11.1.0/docs/rules/prefer-global/process.md)
30+
*/
31+
'node/prefer-global/process': PreferGlobalProcessRuleConfig;
32+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import type { RuleConfig } from '../../rule-config';
2+
3+
/**
4+
* Option.
5+
*/
6+
export type PreferGlobalTextDecoderOption = 'always' | 'never';
7+
8+
/**
9+
* Options.
10+
*/
11+
export type PreferGlobalTextDecoderOptions = [PreferGlobalTextDecoderOption?];
12+
13+
/**
14+
* Enforce either `TextDecoder` or `require("util").TextDecoder`.
15+
*
16+
* @see [prefer-global/text-decoder](https://github.com/mysticatea/eslint-plugin-node/blob/v11.1.0/docs/rules/prefer-global/text-decoder.md)
17+
*/
18+
export type PreferGlobalTextDecoderRuleConfig = RuleConfig<PreferGlobalTextDecoderOptions>;
19+
20+
/**
21+
* Enforce either `TextDecoder` or `require("util").TextDecoder`.
22+
*
23+
* @see [prefer-global/text-decoder](https://github.com/mysticatea/eslint-plugin-node/blob/v11.1.0/docs/rules/prefer-global/text-decoder.md)
24+
*/
25+
export interface PreferGlobalTextDecoderRule {
26+
/**
27+
* Enforce either `TextDecoder` or `require("util").TextDecoder`.
28+
*
29+
* @see [prefer-global/text-decoder](https://github.com/mysticatea/eslint-plugin-node/blob/v11.1.0/docs/rules/prefer-global/text-decoder.md)
30+
*/
31+
'node/prefer-global/text-decoder': PreferGlobalTextDecoderRuleConfig;
32+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import type { RuleConfig } from '../../rule-config';
2+
3+
/**
4+
* Option.
5+
*/
6+
export type PreferGlobalTextEncoderOption = 'always' | 'never';
7+
8+
/**
9+
* Options.
10+
*/
11+
export type PreferGlobalTextEncoderOptions = [PreferGlobalTextEncoderOption?];
12+
13+
/**
14+
* Enforce either `TextEncoder` or `require("util").TextEncoder`.
15+
*
16+
* @see [prefer-global/text-encoder](https://github.com/mysticatea/eslint-plugin-node/blob/v11.1.0/docs/rules/prefer-global/text-encoder.md)
17+
*/
18+
export type PreferGlobalTextEncoderRuleConfig = RuleConfig<PreferGlobalTextEncoderOptions>;
19+
20+
/**
21+
* Enforce either `TextEncoder` or `require("util").TextEncoder`.
22+
*
23+
* @see [prefer-global/text-encoder](https://github.com/mysticatea/eslint-plugin-node/blob/v11.1.0/docs/rules/prefer-global/text-encoder.md)
24+
*/
25+
export interface PreferGlobalTextEncoderRule {
26+
/**
27+
* Enforce either `TextEncoder` or `require("util").TextEncoder`.
28+
*
29+
* @see [prefer-global/text-encoder](https://github.com/mysticatea/eslint-plugin-node/blob/v11.1.0/docs/rules/prefer-global/text-encoder.md)
30+
*/
31+
'node/prefer-global/text-encoder': PreferGlobalTextEncoderRuleConfig;
32+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import type { RuleConfig } from '../../rule-config';
2+
3+
/**
4+
* Option.
5+
*/
6+
export type PreferGlobalUrlSearchParamsOption = 'always' | 'never';
7+
8+
/**
9+
* Options.
10+
*/
11+
export type PreferGlobalUrlSearchParamsOptions = [PreferGlobalUrlSearchParamsOption?];
12+
13+
/**
14+
* Enforce either `URLSearchParams` or `require("url").URLSearchParams`.
15+
*
16+
* @see [prefer-global/url-search-params](https://github.com/mysticatea/eslint-plugin-node/blob/v11.1.0/docs/rules/prefer-global/url-search-params.md)
17+
*/
18+
export type PreferGlobalUrlSearchParamsRuleConfig = RuleConfig<PreferGlobalUrlSearchParamsOptions>;
19+
20+
/**
21+
* Enforce either `URLSearchParams` or `require("url").URLSearchParams`.
22+
*
23+
* @see [prefer-global/url-search-params](https://github.com/mysticatea/eslint-plugin-node/blob/v11.1.0/docs/rules/prefer-global/url-search-params.md)
24+
*/
25+
export interface PreferGlobalUrlSearchParamsRule {
26+
/**
27+
* Enforce either `URLSearchParams` or `require("url").URLSearchParams`.
28+
*
29+
* @see [prefer-global/url-search-params](https://github.com/mysticatea/eslint-plugin-node/blob/v11.1.0/docs/rules/prefer-global/url-search-params.md)
30+
*/
31+
'node/prefer-global/url-search-params': PreferGlobalUrlSearchParamsRuleConfig;
32+
}

src/rules/node/prefer-global/url.d.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import type { RuleConfig } from '../../rule-config';
2+
3+
/**
4+
* Option.
5+
*/
6+
export type PreferGlobalUrlOption = 'always' | 'never';
7+
8+
/**
9+
* Options.
10+
*/
11+
export type PreferGlobalUrlOptions = [PreferGlobalUrlOption?];
12+
13+
/**
14+
* Enforce either `URL` or `require("url").URL`.
15+
*
16+
* @see [prefer-global/url](https://github.com/mysticatea/eslint-plugin-node/blob/v11.1.0/docs/rules/prefer-global/url.md)
17+
*/
18+
export type PreferGlobalUrlRuleConfig = RuleConfig<PreferGlobalUrlOptions>;
19+
20+
/**
21+
* Enforce either `URL` or `require("url").URL`.
22+
*
23+
* @see [prefer-global/url](https://github.com/mysticatea/eslint-plugin-node/blob/v11.1.0/docs/rules/prefer-global/url.md)
24+
*/
25+
export interface PreferGlobalUrlRule {
26+
/**
27+
* Enforce either `URL` or `require("url").URL`.
28+
*
29+
* @see [prefer-global/url](https://github.com/mysticatea/eslint-plugin-node/blob/v11.1.0/docs/rules/prefer-global/url.md)
30+
*/
31+
'node/prefer-global/url': PreferGlobalUrlRuleConfig;
32+
}

0 commit comments

Comments
 (0)