Skip to content

Commit 882db34

Browse files
author
Josh Goldberg
authored
Standardized around alphabetization and blank arrays (#259)
* Standardized around alphabetization and blank arrays * Dialed back on a triple-equals change
1 parent 8fb0861 commit 882db34

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+237
-298
lines changed

src/reporting/reportConversionResults.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ const logNotices = (converted: Map<string, ESLintRuleOptions>, logger: Logger) =
100100
ruleOptions => ruleOptions.notices && ruleOptions.notices.length >= 1,
101101
) as RuleWithNotices[];
102102

103-
if (rulesWithNotices.length > 0) {
103+
if (rulesWithNotices.length !== 0) {
104104
logger.stdout.write(chalk.yellowBright(`📢 ${rulesWithNotices.length} ESLint`));
105105
logger.stdout.write(
106106
chalk.yellowBright(rulesWithNotices.length === 1 ? ` rule behaves` : ` rules behave`),
@@ -109,11 +109,12 @@ const logNotices = (converted: Map<string, ESLintRuleOptions>, logger: Logger) =
109109
chalk.yellowBright(` differently from their TSLint counterparts: 📢${EOL}`),
110110
);
111111

112-
rulesWithNotices.forEach(rule => {
112+
for (const rule of rulesWithNotices) {
113113
logger.stdout.write(chalk.yellow(`* ${rule.ruleName}:${EOL}`));
114-
rule.notices.forEach(notice => {
114+
115+
for (const notice of rule.notices) {
115116
logger.stdout.write(chalk.yellow(` - ${notice}${EOL}`));
116-
});
117-
});
117+
}
118+
}
118119
}
119120
};

src/rules/converters/comment-format.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,13 @@ export const convertCommentFormat: RuleConverter = tslintRule => {
1212
const spaceCommentRuleArguments: string[] = [];
1313
const capitalizedNotices: string[] = [];
1414

15-
const hasCheckSpace = tslintRule.ruleArguments.includes("check-space");
16-
const hasCheckLowercase = tslintRule.ruleArguments.includes("check-lowercase");
17-
const hasCheckUppercase = tslintRule.ruleArguments.includes("check-uppercase");
18-
19-
if (!hasCheckSpace) {
15+
if (!tslintRule.ruleArguments.includes("check-space")) {
2016
spaceCommentRuleArguments.push("never");
2117
}
2218

23-
if (hasCheckUppercase) {
19+
if (tslintRule.ruleArguments.includes("check-uppercase")) {
2420
capitalizedRuleArguments.push("always");
25-
} else if (hasCheckLowercase) {
21+
} else if (tslintRule.ruleArguments.includes("check-lowercase")) {
2622
capitalizedRuleArguments.push("never");
2723
}
2824

@@ -41,12 +37,16 @@ export const convertCommentFormat: RuleConverter = tslintRule => {
4137
rules: [
4238
{
4339
ruleName: "capitalized-comments",
44-
ruleArguments: capitalizedRuleArguments,
45-
notices: capitalizedNotices,
40+
...(capitalizedRuleArguments.length !== 0 && {
41+
ruleArguments: capitalizedRuleArguments,
42+
}),
43+
...(capitalizedNotices.length !== 0 && { notices: capitalizedNotices }),
4644
},
4745
{
4846
ruleName: "spaced-comment",
49-
ruleArguments: spaceCommentRuleArguments,
47+
...(spaceCommentRuleArguments.length !== 0 && {
48+
ruleArguments: spaceCommentRuleArguments,
49+
}),
5050
},
5151
],
5252
};

src/rules/converters/curly.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ export const convertCurly: RuleConverter = tslintRule => {
1212
}
1313

1414
return {
15-
rules: [{ ruleArguments, ruleName: "curly" }],
15+
rules: [
16+
{
17+
...(ruleArguments.length !== 0 && { ruleArguments }),
18+
ruleName: "curly",
19+
},
20+
],
1621
};
1722
};

src/rules/converters/file-name-casing.ts

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export const convertFileNameCasing: RuleConverter = tslintRule => {
2424

2525
const collectArguments = (ruleArguments: any[]) => {
2626
const notices: string[] = [];
27-
const foundCases: { [k: string]: boolean } = {};
27+
const cases: Record<string, boolean> = {};
2828

2929
if (ruleArguments.length === 0 || ruleArguments[0] === false || ruleArguments.length < 2) {
3030
return undefined;
@@ -35,7 +35,7 @@ const collectArguments = (ruleArguments: any[]) => {
3535
if (casings === "ignore") {
3636
notices.push(IGNORE_CASE_NOTICE);
3737
} else {
38-
foundCases[CASES_MAP[casings]] = true;
38+
cases[CASES_MAP[casings]] = true;
3939
}
4040
}
4141

@@ -45,17 +45,19 @@ const collectArguments = (ruleArguments: any[]) => {
4545
if (casings[casing] === "ignore") {
4646
notices.push(IGNORE_CASE_NOTICE);
4747
} else {
48-
foundCases[CASES_MAP[casings[casing]]] = true;
48+
cases[CASES_MAP[casings[casing]]] = true;
4949
}
5050
}
5151
}
5252

5353
return {
54-
...(notices.length > 0 && { notices }),
55-
ruleArguments: [
56-
{
57-
cases: foundCases,
58-
},
59-
],
54+
...(notices.length !== 0 && { notices }),
55+
...(Object.keys(cases).length !== 0 && {
56+
ruleArguments: [
57+
{
58+
cases,
59+
},
60+
],
61+
}),
6062
};
6163
};

src/rules/converters/max-line-length.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,12 @@ const collectArguments = (ruleArguments: any[]) => {
3131
return {
3232
ruleArguments: [
3333
{
34-
...("limit" in argument && { code: argument.limit }),
35-
...("ignore-pattern" in argument && { ignorePattern: argument["ignore-pattern"] }),
36-
...("check-strings" in argument && { ignoreStrings: !argument["check-strings"] }),
3734
...("check-regex" in argument && {
3835
ignoreRegExpLiterals: !argument["check-regex"],
3936
}),
37+
...("check-strings" in argument && { ignoreStrings: !argument["check-strings"] }),
38+
...("ignore-pattern" in argument && { ignorePattern: argument["ignore-pattern"] }),
39+
...("limit" in argument && { code: argument.limit }),
4040
},
4141
],
4242
};

src/rules/converters/member-access.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,16 @@ export enum MemberAccessArguments {
1414

1515
type MemberAccessSchema = {
1616
accessibility: string;
17-
overrides?: { [key: string]: string };
17+
overrides?: Record<string, string>;
1818
};
1919

2020
export const convertMemberAccess: RuleConverter = tslintRule => {
21-
const tslintRuleArguments = tslintRule.ruleArguments;
2221
const schema: MemberAccessSchema = {
2322
accessibility: AccessibilityLevel.Explicit,
2423
};
2524

26-
if (tslintRuleArguments.length >= 2 || tslintRuleArguments[0] === true) {
27-
tslintRuleArguments.forEach(ruleArg => {
25+
if (tslintRule.ruleArguments.length >= 2 || tslintRule.ruleArguments[0] === true) {
26+
for (const ruleArg of tslintRule.ruleArguments) {
2827
if (typeof ruleArg === "string") {
2928
switch (ruleArg) {
3029
case MemberAccessArguments.NoPublic:
@@ -50,14 +49,14 @@ export const convertMemberAccess: RuleConverter = tslintRule => {
5049
break;
5150
}
5251
}
53-
});
52+
}
5453
}
5554

5655
return {
5756
rules: [
5857
{
59-
ruleName: "@typescript-eslint/explicit-member-accessibility",
6058
ruleArguments: [schema],
59+
ruleName: "@typescript-eslint/explicit-member-accessibility",
6160
},
6261
],
6362
};

src/rules/converters/no-empty.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ const convertNoEmptyRule = (tslintRule: RuleConverterOptions) => {
2323
};
2424

2525
const convertNoEmptyFunctionRule = (tslintRule: RuleConverterOptions) => {
26-
return !tslintRule.ruleArguments.includes("allow-empty-functions")
27-
? {
26+
return tslintRule.ruleArguments.includes("allow-empty-functions")
27+
? undefined
28+
: {
2829
ruleName: "@typescript-eslint/no-empty-function",
29-
}
30-
: undefined;
30+
};
3131
};

src/rules/converters/no-implicit-dependencies.ts

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,29 @@
11
import { RuleConverter } from "../converter";
22

3+
type ExtraneousDependenciesArgument = Partial<
4+
Record<"devDependencies" | "optionalDependencies", boolean>
5+
>;
6+
37
export const convertNoImplicitDependencies: RuleConverter = tslintRule => {
4-
const ruleArgs: {
5-
[eslintOption in "devDependencies" | "optionalDependencies"]?: boolean;
6-
}[] = [];
8+
const ruleArguments: ExtraneousDependenciesArgument[] = [];
79
const notices: string[] = [];
810

9-
tslintRule.ruleArguments.forEach(element => {
11+
for (const element of tslintRule.ruleArguments) {
1012
if (element === "dev") {
11-
ruleArgs.push({ devDependencies: false });
13+
ruleArguments.push({ devDependencies: false });
1214
} else if (element === "optional") {
13-
ruleArgs.push({ optionalDependencies: false });
15+
ruleArguments.push({ optionalDependencies: false });
1416
} else {
1517
notices.push("ESLint does not support whitelisting modules");
1618
}
17-
});
19+
}
1820

1921
return {
2022
rules: [
2123
{
24+
...(notices.length !== 0 && { notices }),
25+
...(ruleArguments.length !== 0 && { ruleArguments }),
2226
ruleName: "import/no-extraneous-dependencies",
23-
...(ruleArgs.length > 0 && { ruleArguments: ruleArgs }),
24-
...(notices.length > 0 && { notices }),
2527
},
2628
],
2729

src/rules/converters/no-import-side-effect.ts

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,15 @@
11
import { RuleConverter } from "../converter";
22

33
export const convertNoImportSideEffect: RuleConverter = tsLintRule => {
4-
const notices = [];
5-
6-
if (tsLintRule.ruleArguments.length > 0) {
7-
notices.push(
8-
"ESLint's no-import-side-effect now accepts a glob pattern for ignores; you'll need to manually convert your ignore-module settings.",
9-
);
10-
}
11-
124
return {
135
rules: [
146
{
15-
ruleArguments: [],
167
ruleName: "no-import-side-effect",
17-
notices: notices,
8+
...(tsLintRule.ruleArguments.length !== 0 && {
9+
notices: [
10+
"ESLint's no-import-side-effect now accepts a glob pattern for ignores; you'll need to manually convert your ignore-module settings.",
11+
],
12+
}),
1813
},
1914
],
2015
};

src/rules/converters/no-magic-numbers.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,12 @@ const collectArgumentsAndNotices = (ruleArguments: any[]) => {
2626
};
2727
}
2828

29-
const [argument] = ruleArguments;
30-
3129
return {
32-
...("ignore-jsx" in argument && {
30+
...("ignore-jsx" in ruleArguments[0] && {
3331
notices: ["JSX syntax will no longer be ignored."],
3432
}),
35-
...("allowed-numbers" in argument && {
36-
ruleArguments: [{ ignore: argument["allowed-numbers"] }],
33+
...("allowed-numbers" in ruleArguments[0] && {
34+
ruleArguments: [{ ignore: ruleArguments[0]["allowed-numbers"] }],
3735
}),
3836
};
3937
};

0 commit comments

Comments
 (0)