From 535bdc177cdfc0fd6b040bf2b524406e10bdbc3a Mon Sep 17 00:00:00 2001 From: KingDarBoja Date: Sun, 6 Oct 2019 15:50:55 -0500 Subject: [PATCH 1/2] Implement no-submodule-imports converter --- src/rules/converters.ts | 2 ++ src/rules/converters/no-submodule-imports.ts | 28 +++++++++++++++ .../tests/no-submodule-imports.test.ts | 34 +++++++++++++++++++ 3 files changed, 64 insertions(+) create mode 100644 src/rules/converters/no-submodule-imports.ts create mode 100644 src/rules/converters/tests/no-submodule-imports.test.ts diff --git a/src/rules/converters.ts b/src/rules/converters.ts index 11b38357a..f980fd285 100644 --- a/src/rules/converters.ts +++ b/src/rules/converters.ts @@ -72,6 +72,7 @@ import { convertNoReturnAwait } from "./converters/no-return-await"; import { convertNoSparseArrays } from "./converters/no-sparse-arrays"; import { convertNoStringLiteral } from "./converters/no-string-literal"; import { convertNoStringThrow } from "./converters/no-string-throw"; +import { convertNoSubmoduleImports } from "./converters/no-submodule-imports"; import { convertNoSwitchCaseFallThrough } from "./converters/no-switch-case-fall-through"; import { convertNoThisAssignment } from "./converters/no-this-assignment"; import { convertNoTrailingWhitespace } from "./converters/no-trailing-whitespace"; @@ -190,6 +191,7 @@ export const converters = new Map([ ["no-sparse-arrays", convertNoSparseArrays], ["no-string-literal", convertNoStringLiteral], ["no-string-throw", convertNoStringThrow], + ["no-submodule-imports", convertNoSubmoduleImports], ["no-switch-case-fall-through", convertNoSwitchCaseFallThrough], ["no-this-assignment", convertNoThisAssignment], ["no-trailing-whitespace", convertNoTrailingWhitespace], diff --git a/src/rules/converters/no-submodule-imports.ts b/src/rules/converters/no-submodule-imports.ts new file mode 100644 index 000000000..94e62d008 --- /dev/null +++ b/src/rules/converters/no-submodule-imports.ts @@ -0,0 +1,28 @@ +import { RuleConverter } from "../converter"; + +export const convertNoSubmoduleImports: RuleConverter = tslintRule => { + const ruleArguments: string[] = []; + + if ( + !( + tslintRule.ruleArguments.length === 0 || + tslintRule.ruleArguments[0] === false || + tslintRule.ruleArguments.length < 2 + ) + ) { + ruleArguments.push(...tslintRule.ruleArguments); + } + + return { + rules: [ + { + ruleName: "import/no-internal-modules", + ...{ + ruleArguments: + ruleArguments.length > 0 ? [{ allow: ruleArguments }] : undefined, + }, + }, + ], + plugins: ["eslint-plugin-import"], + }; +}; diff --git a/src/rules/converters/tests/no-submodule-imports.test.ts b/src/rules/converters/tests/no-submodule-imports.test.ts new file mode 100644 index 000000000..07340b493 --- /dev/null +++ b/src/rules/converters/tests/no-submodule-imports.test.ts @@ -0,0 +1,34 @@ +import { convertNoSubmoduleImports } from "../no-submodule-imports"; + +describe(convertNoSubmoduleImports, () => { + test("conversion without arguments", () => { + const result = convertNoSubmoduleImports({ + ruleArguments: [], + }); + + expect(result).toEqual({ + rules: [ + { + ruleName: "import/no-internal-modules", + }, + ], + plugins: ["eslint-plugin-import"], + }); + }); + + test("conversion with arguments", () => { + const result = convertNoSubmoduleImports({ + ruleArguments: [true, "rxjs"], + }); + + expect(result).toEqual({ + rules: [ + { + ruleName: "import/no-internal-modules", + ruleArguments: [{ allow: [true, "rxjs"] }], + }, + ], + plugins: ["eslint-plugin-import"], + }); + }); +}); From 2498123a58045e3605e53664b66e3ba1db56b1c4 Mon Sep 17 00:00:00 2001 From: KingDarBoja Date: Sun, 6 Oct 2019 19:37:52 -0500 Subject: [PATCH 2/2] Add pattern to rule arguments on submodule imports --- src/rules/converters/no-submodule-imports.ts | 9 ++++++++- src/rules/converters/tests/no-submodule-imports.test.ts | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/rules/converters/no-submodule-imports.ts b/src/rules/converters/no-submodule-imports.ts index 94e62d008..31ffc9f01 100644 --- a/src/rules/converters/no-submodule-imports.ts +++ b/src/rules/converters/no-submodule-imports.ts @@ -10,7 +10,14 @@ export const convertNoSubmoduleImports: RuleConverter = tslintRule => { tslintRule.ruleArguments.length < 2 ) ) { - ruleArguments.push(...tslintRule.ruleArguments); + ruleArguments.push( + ...tslintRule.ruleArguments.map(ruleArg => { + if (typeof ruleArg === "string") { + return ruleArg.concat("/*"); + } + return ruleArg; + }), + ); } return { diff --git a/src/rules/converters/tests/no-submodule-imports.test.ts b/src/rules/converters/tests/no-submodule-imports.test.ts index 07340b493..dcb26c4f7 100644 --- a/src/rules/converters/tests/no-submodule-imports.test.ts +++ b/src/rules/converters/tests/no-submodule-imports.test.ts @@ -25,7 +25,7 @@ describe(convertNoSubmoduleImports, () => { rules: [ { ruleName: "import/no-internal-modules", - ruleArguments: [{ allow: [true, "rxjs"] }], + ruleArguments: [{ allow: [true, "rxjs/*"] }], }, ], plugins: ["eslint-plugin-import"],